1 8 package org.codehaus.loom.classman.test; 9 10 import java.io.File ; 11 import java.net.URL ; 12 import java.net.URLClassLoader ; 13 import java.util.HashMap ; 14 import java.util.Map ; 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 26 public class IntegrationTestCase 27 extends AbstractLoaderTestCase 28 { 29 public void testPresence() 30 throws Exception 31 { 32 final Map 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 [] files1 = new String []{"cl1.jar"}; 43 final String [] files2 = new String []{"cl2.jar"}; 44 final String [] files3 = new String []{"cl1.jar", "cl2.jar"}; 45 final String [] files4 = 46 new String []{"SAR-INF/lib/cl3.jar", "SAR-INF/lib/cl4.jar"}; 47 final String [] files5 = new String []{"SAR-INF/lib/cl4.jar"}; 48 final String [] files6 = new String []{"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 map, 79 final String name, 80 final String classname ) 81 { 82 final ClassLoader classLoader = (ClassLoader )map.get( name ); 83 try 84 { 85 classLoader.loadClass( classname ); 86 } 87 catch( ClassNotFoundException e ) 88 { 89 fail( "Unable to load " + classname + " from " + 90 name + " classloader" ); 91 } 92 } 93 94 private void assertURLsPresent( final Map map, 95 final String name, 96 final String [] files ) 97 { 98 final URLClassLoader classLoader = (URLClassLoader )map.get( name ); 99 final URL [] 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 url = urls[ i ]; 105 final String file = files[ i ]; 106 assertTrue( "url=" + url + " ends with " + file, 107 url.getFile().endsWith( file ) ); 108 } 109 } 110 111 private void assertPresent( final Map map, 112 final String name ) 113 { 114 assertTrue( "map.containsKey( '" + name + "' )", 115 map.containsKey( name ) ); 116 125 } 126 127 private Map buildClassLoaders( final String resource ) 128 throws Exception 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 predefined = new HashMap (); 136 predefined.put( "*system*", ClassLoader.getSystemClassLoader() ); 137 final File baseDirectory = getBaseDirectory(); 138 final SimpleLoaderResolver resolver = 139 new SimpleLoaderResolver( baseDirectory ); 140 return builder.buildClassLoaders( metaData, resolver, predefined ); 141 } 142 } 143 | Popular Tags |