View Javadoc
1   package org.apache.maven.plugin.surefire.extensions;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *     http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  import org.apache.maven.plugin.surefire.log.api.ConsoleLogger;
23  import org.apache.maven.plugin.surefire.report.ConsoleReporter;
24  import org.apache.maven.plugin.surefire.report.FileReporter;
25  import org.apache.maven.plugin.surefire.report.TestSetStats;
26  import org.apache.maven.plugin.surefire.report.WrappedReportEntry;
27  import org.apache.maven.surefire.extensions.StatelessTestsetInfoConsoleReportEventListener;
28  import org.apache.maven.surefire.extensions.StatelessTestsetInfoFileReportEventListener;
29  import org.apache.maven.surefire.extensions.StatelessTestsetInfoReporter;
30  import org.apache.maven.surefire.api.util.ReflectionUtils;
31  
32  import java.io.File;
33  import java.nio.charset.Charset;
34  
35  /**
36   * Default implementation for extension of
37   * {@link StatelessTestsetInfoFileReportEventListener test-set event listener for stateless file and console reporter}
38   * in plugin. Signatures can be changed between major, minor versions or milestones.
39   * <br>
40   * Builds {@link StatelessTestsetInfoFileReportEventListener listeners}.
41   * The listener handles <em>testSetCompleted</em> event.
42   *
43   * @author <a href="mailto:tibordigana@apache.org">Tibor Digana (tibor17)</a>
44   * @since 3.0.0-M4
45   */
46  public class SurefireStatelessTestsetInfoReporter
47          extends StatelessTestsetInfoReporter<WrappedReportEntry, TestSetStats>
48  {
49      @Override
50      public StatelessTestsetInfoConsoleReportEventListener<WrappedReportEntry, TestSetStats> createListener(
51              ConsoleLogger logger )
52      {
53          return new ConsoleReporter( logger, false, false );
54      }
55  
56      @Override
57      public StatelessTestsetInfoFileReportEventListener<WrappedReportEntry, TestSetStats> createListener(
58              File reportsDirectory, String reportNameSuffix, Charset encoding )
59      {
60          return new FileReporter( reportsDirectory, reportNameSuffix, encoding, false, false, false );
61      }
62  
63      @Override
64      public Object clone( ClassLoader target )
65      {
66          try
67          {
68              Class<?> cls = ReflectionUtils.reloadClass( target, this );
69              Object clone = cls.newInstance();
70  
71              cls.getMethod( "setDisable", boolean.class )
72                      .invoke( clone, isDisable() );
73  
74              return clone;
75          }
76          catch ( ReflectiveOperationException e )
77          {
78              throw new IllegalStateException( e.getLocalizedMessage() );
79          }
80      }
81  
82      @Override
83      public String toString()
84      {
85          return "SurefireStatelessTestsetInfoReporter{disable=" + isDisable() + "}";
86      }
87  }