KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > codehaus > loom > classman > test > IntegrationTestCase


1 /*
2  * Copyright (C) The Spice Group. All rights reserved.
3  *
4  * This software is published under the terms of the Spice
5  * Software License version 1.1, a copy of which has been included
6  * with this distribution in the LICENSE.txt file.
7  */

8 package org.codehaus.loom.classman.test;
9
10 import java.io.File JavaDoc;
11 import java.net.URL JavaDoc;
12 import java.net.URLClassLoader JavaDoc;
13 import java.util.HashMap JavaDoc;
14 import java.util.Map JavaDoc;
15
16 import org.codehaus.loom.classman.builder.LoaderBuilder;
17 import org.codehaus.loom.classman.builder.SimpleLoaderResolver;
18 import org.codehaus.loom.classman.metadata.ClassLoaderSetMetaData;
19 import org.codehaus.loom.classman.verifier.ClassLoaderVerifier;
20
21 /**
22  *
23  * @author Peter Donald
24  * @version $Revision: 1.1 $ $Date: 2004/04/19 22:19:24 $
25  */

26 public class IntegrationTestCase
27     extends AbstractLoaderTestCase
28 {
29     public void testPresence()
30         throws Exception JavaDoc
31     {
32         final Map JavaDoc map = buildClassLoaders( "config1.xml" );
33
34         assertPresent( map, "LOADER_1" );
35         assertPresent( map, "LOADER_2" );
36         assertPresent( map, "LOADER_3" );
37         assertPresent( map, "LOADER_4" );
38         assertPresent( map, "LOADER_5" );
39         assertPresent( map, "LOADER_6" );
40         assertPresent( map, "JOIN_1" );
41
42         final String JavaDoc[] files1 = new String JavaDoc[]{"cl1.jar"};
43         final String JavaDoc[] files2 = new String JavaDoc[]{"cl2.jar"};
44         final String JavaDoc[] files3 = new String JavaDoc[]{"cl1.jar", "cl2.jar"};
45         final String JavaDoc[] files4 =
46             new String JavaDoc[]{"SAR-INF/lib/cl3.jar", "SAR-INF/lib/cl4.jar"};
47         final String JavaDoc[] files5 = new String JavaDoc[]{"SAR-INF/lib/cl4.jar"};
48         final String JavaDoc[] files6 = new String JavaDoc[]{"SAR-INF/lib/cl4.jar"};
49
50         assertURLsPresent( map, "LOADER_1", files1 );
51         assertURLsPresent( map, "LOADER_2", files2 );
52         assertURLsPresent( map, "LOADER_3", files3 );
53         assertURLsPresent( map, "LOADER_4", files4 );
54         assertURLsPresent( map, "LOADER_5", files5 );
55         assertURLsPresent( map, "LOADER_6", files6 );
56
57         assertClassPresent( map, "LOADER_1", DataConstants.DATA1_CLASS );
58         assertClassPresent( map, "LOADER_1", DataConstants.DATA1_CLASS2 );
59         assertClassPresent( map, "LOADER_2", DataConstants.DATA2_CLASS );
60         assertClassPresent( map, "LOADER_3", DataConstants.DATA1_CLASS );
61         assertClassPresent( map, "LOADER_3", DataConstants.DATA1_CLASS2 );
62         assertClassPresent( map, "LOADER_3", DataConstants.DATA2_CLASS );
63         assertClassPresent( map, "LOADER_4", DataConstants.DATA1_CLASS );
64         assertClassPresent( map, "LOADER_4", DataConstants.DATA1_CLASS2 );
65         assertClassPresent( map, "LOADER_4", DataConstants.DATA3_CLASS );
66         assertClassPresent( map, "LOADER_4", DataConstants.DATA4_CLASS );
67         assertClassPresent( map, "LOADER_5", DataConstants.DATA1_CLASS );
68         assertClassPresent( map, "LOADER_5", DataConstants.DATA1_CLASS2 );
69         assertClassPresent( map, "LOADER_5", DataConstants.DATA4_CLASS );
70         assertClassPresent( map, "LOADER_6", DataConstants.DATA1_CLASS );
71         assertClassPresent( map, "LOADER_6", DataConstants.DATA1_CLASS2 );
72         assertClassPresent( map, "LOADER_6", DataConstants.DATA4_CLASS );
73         assertClassPresent( map, "JOIN_1", DataConstants.DATA1_CLASS );
74         assertClassPresent( map, "JOIN_1", DataConstants.DATA1_CLASS2 );
75         assertClassPresent( map, "JOIN_1", DataConstants.DATA2_CLASS );
76     }
77
78     private void assertClassPresent( final Map JavaDoc map,
79                                      final String JavaDoc name,
80                                      final String JavaDoc classname )
81     {
82         final ClassLoader JavaDoc classLoader = (ClassLoader JavaDoc)map.get( name );
83         try
84         {
85             classLoader.loadClass( classname );
86         }
87         catch( ClassNotFoundException JavaDoc e )
88         {
89             fail( "Unable to load " + classname + " from " +
90                   name + " classloader" );
91         }
92     }
93
94     private void assertURLsPresent( final Map JavaDoc map,
95                                     final String JavaDoc name,
96                                     final String JavaDoc[] files )
97     {
98         final URLClassLoader JavaDoc classLoader = (URLClassLoader JavaDoc)map.get( name );
99         final URL JavaDoc[] urls = classLoader.getURLs();
100
101         assertEquals( "URL count:", files.length, urls.length );
102         for( int i = 0; i < urls.length; i++ )
103         {
104             final URL JavaDoc url = urls[ i ];
105             final String JavaDoc file = files[ i ];
106             assertTrue( "url=" + url + " ends with " + file,
107                         url.getFile().endsWith( file ) );
108         }
109     }
110
111     private void assertPresent( final Map JavaDoc map,
112                                 final String JavaDoc name )
113     {
114         assertTrue( "map.containsKey( '" + name + "' )",
115                     map.containsKey( name ) );
116         /*
117         final Object object = map.get( name );
118         if( object instanceof URLClassLoader )
119         {
120             final URLClassLoader classLoader = (URLClassLoader)object;
121             final URL[] urls = classLoader.getURLs();
122             System.out.println( name + ": " + Arrays.asList( urls ) );
123         }
124         */

125     }
126
127     private Map JavaDoc buildClassLoaders( final String JavaDoc resource )
128         throws Exception JavaDoc
129     {
130         final ClassLoaderSetMetaData metaData =
131             buildFromResource( resource );
132         final ClassLoaderVerifier verifier = new ClassLoaderVerifier();
133         verifier.verifyClassLoaderSet( metaData );
134         final LoaderBuilder builder = new LoaderBuilder();
135         final HashMap JavaDoc predefined = new HashMap JavaDoc();
136         predefined.put( "*system*", ClassLoader.getSystemClassLoader() );
137         final File JavaDoc baseDirectory = getBaseDirectory();
138         final SimpleLoaderResolver resolver =
139             new SimpleLoaderResolver( baseDirectory );
140         return builder.buildClassLoaders( metaData, resolver, predefined );
141     }
142 }
143
Popular Tags