1   package org.apache.maven.surefire.booter;
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  public class ClasspathConfiguration
31  {
32      public static final String CHILD_DELEGATION = "childDelegation";
33  
34      public static final String ENABLE_ASSERTIONS = "enableAssertions";
35  
36      public static final String CLASSPATH = "classPathUrl.";
37  
38      public static final String SUREFIRE_CLASSPATH = "surefireClassPathUrl.";
39  
40      private final Classpath classpathUrls;
41  
42      private final Classpath surefireClasspathUrls;
43  
44      
45  
46  
47      private final Classpath inprocClasspath;
48  
49      
50  
51  
52  
53      private final boolean enableAssertions;
54  
55      
56      private final boolean childDelegation;
57  
58      public ClasspathConfiguration( boolean enableAssertions, boolean childDelegation )
59      {
60          this( Classpath.emptyClasspath(), Classpath.emptyClasspath(), Classpath.emptyClasspath(), enableAssertions,
61                childDelegation );
62      }
63  
64      ClasspathConfiguration( PropertiesWrapper properties )
65      {
66          this( properties.getClasspath( CLASSPATH ), properties.getClasspath( SUREFIRE_CLASSPATH ),
67                Classpath.emptyClasspath(),
68                properties.getBooleanProperty( ENABLE_ASSERTIONS ), properties.getBooleanProperty( CHILD_DELEGATION ) );
69      }
70  
71      public ClasspathConfiguration( Classpath testClasspath, Classpath surefireClassPathUrls, Classpath inprocClasspath,
72                                     boolean enableAssertions, boolean childDelegation )
73      {
74          this.enableAssertions = enableAssertions;
75          this.childDelegation = childDelegation;
76          this.inprocClasspath = inprocClasspath;
77          this.classpathUrls = testClasspath;
78          this.surefireClasspathUrls = surefireClassPathUrls;
79      }
80  
81      public ClassLoader createMergedClassLoader()
82          throws SurefireExecutionException
83      {
84          return Classpath.join( inprocClasspath, classpathUrls )
85              .createClassLoader( null, this.childDelegation, enableAssertions, "test" );
86      }
87  
88      public Classpath getProviderClasspath()
89      {
90          return surefireClasspathUrls;
91      }
92  
93  
94          public Classpath getTestClasspath()
95      {
96          return classpathUrls;
97      }
98  
99      public void trickClassPathWhenManifestOnlyClasspath()
100         throws SurefireExecutionException
101     {
102             System.setProperty( "surefire.real.class.path", System.getProperty( "java.class.path" ) );
103             getTestClasspath().writeToSystemProperty( "java.class.path" );
104     }
105 
106     public boolean isEnableAssertions()
107     {
108         return enableAssertions;
109     }
110 
111     public boolean isChildDelegation()
112     {
113         return childDelegation;
114     }
115 }