1 package org.apache.maven.plugin.surefire;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.File;
23 import java.lang.reflect.Constructor;
24 import org.apache.maven.plugin.surefire.report.DefaultReporterFactory;
25 import org.apache.maven.surefire.util.ReflectionUtils;
26 import org.apache.maven.surefire.util.SurefireReflectionException;
27
28
29
30
31 public class CommonReflector
32 {
33 private final Class<?> startupReportConfiguration;
34
35 private final ClassLoader surefireClassLoader;
36
37 public CommonReflector( ClassLoader surefireClassLoader )
38 {
39 this.surefireClassLoader = surefireClassLoader;
40
41 try
42 {
43 startupReportConfiguration = surefireClassLoader.loadClass( StartupReportConfiguration.class.getName() );
44 }
45 catch ( ClassNotFoundException e )
46 {
47 throw new SurefireReflectionException( e );
48 }
49 }
50
51 public Object createReportingReporterFactory( StartupReportConfiguration startupReportConfiguration )
52 {
53 Class<?>[] args = new Class[]{ this.startupReportConfiguration };
54 Object src = createStartupReportConfiguration( startupReportConfiguration );
55 Object[] params = new Object[]{ src };
56 return ReflectionUtils.instantiateObject( DefaultReporterFactory.class.getName(), args, params,
57 surefireClassLoader );
58 }
59
60
61 Object createStartupReportConfiguration( StartupReportConfiguration reporterConfiguration )
62 {
63 Constructor<?> constructor = ReflectionUtils.getConstructor( this.startupReportConfiguration,
64 new Class[]{ boolean.class, boolean.class,
65 String.class, boolean.class, boolean.class,
66 File.class, boolean.class, String.class,
67 String.class, boolean.class } );
68
69 final Object[] params = { reporterConfiguration.isUseFile(), reporterConfiguration.isPrintSummary(),
70 reporterConfiguration.getReportFormat(), reporterConfiguration.isRedirectTestOutputToFile(),
71 reporterConfiguration.isDisableXmlReport(), reporterConfiguration.getReportsDirectory(),
72 reporterConfiguration.isTrimStackTrace(), reporterConfiguration.getReportNameSuffix(),
73 reporterConfiguration.getConfigurationHash(), reporterConfiguration.isRequiresRunHistory() };
74 return ReflectionUtils.newInstance( constructor, params );
75 }
76
77 }