1 package org.apache.maven.surefire;
2
3 import org.apache.maven.surefire.battery.JUnitBattery;
4
5 import java.lang.reflect.Constructor;
6 import java.lang.reflect.Modifier;
7
8 /***
9 * @author Jason van Zyl
10 * @version $Id: SurefireUtils.java 359692 2005-12-29 03:08:44Z brett $
11 */
12 public class SurefireUtils
13 {
14 public static Object instantiateBattery( Object[] holder, ClassLoader loader )
15 throws Exception
16 {
17 Class testClass;
18
19 Class batteryClass;
20
21 try
22 {
23 testClass = loader.loadClass( (String) holder[0] );
24
25 batteryClass = loader.loadClass( "org.apache.maven.surefire.battery.Battery" );
26 }
27 catch ( Exception e )
28 {
29 return null;
30 }
31
32 if ( Modifier.isAbstract( testClass.getModifiers() ) )
33 {
34 return null;
35 }
36
37 Object battery = null;
38
39 if ( batteryClass.isAssignableFrom( testClass ) )
40 {
41 if ( holder[1] != null )
42 {
43 Object[] params = (Object[]) holder[1];
44
45 Class[] paramTypes = new Class[params.length];
46
47 for ( int j = 0; j < params.length; j++ )
48 {
49 paramTypes[j] = params[j].getClass();
50 }
51
52 Constructor constructor = testClass.getConstructor( paramTypes );
53
54 battery = constructor.newInstance( params );
55 }
56 else
57 {
58 battery = testClass.newInstance();
59 }
60 }
61 else
62 {
63 battery = new JUnitBattery( testClass, loader );
64 }
65
66 return battery;
67 }
68 }