donaldp 2002/10/30 15:47:01
Modified: loader/src/java/org/apache/excalibur/loader/builder
LoaderBuilder.java
Log:
Add some javadocs and make sure all joins are added even if they are leafs
Revision Changes Path
1.3 +79 -26
jakarta-avalon-excalibur/loader/src/java/org/apache/excalibur/loader/builder/LoaderBuilder.java
Index: LoaderBuilder.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-excalibur/loader/src/java/org/apache/excalibur/loader/builder/LoaderBuilder.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- LoaderBuilder.java 28 Oct 2002 02:08:48 -0000 1.2
+++ LoaderBuilder.java 30 Oct 2002 23:47:01 -0000 1.3
@@ -27,38 +27,91 @@
*/
public class LoaderBuilder
{
- public Map buildClassLoaders( final ClassLoaderSetMetaData set,
- final LoaderResolver policy,
+ /**
+ * Build a map of all the classloaders defined by
+ * the metadata.
+ *
+ * @param metadata the metadata
+ * @param resolver the reoslver to use to resolve files/urls etc
+ * @param predefined the map containing all the predefined classloaders.
+ * @return the map of created classloaders
+ * @throws Exception if unable to create some classloaders
+ */
+ public Map buildClassLoaders( final ClassLoaderSetMetaData metadata,
+ final LoaderResolver resolver,
final Map predefined )
throws Exception
{
final HashMap classLoaders = new HashMap();
- addPredefined( set.getPredefined(), predefined, classLoaders );
- addAllClassLoaders( set, policy, classLoaders );
+ addPredefined( metadata.getPredefined(), predefined, classLoaders );
+ addAllClassLoaders( metadata, resolver, classLoaders );
+ addAllJoins( metadata, resolver, classLoaders );
return classLoaders;
}
- private void addAllClassLoaders( final ClassLoaderSetMetaData set,
- final LoaderResolver policy,
+ /**
+ * Add all the classloaders to the result metaData.
+ *
+ * @param metaData the metadata
+ * @param resolver the resolver to use
+ * @param classLoaders the result map of classloaders
+ * @throws Exception if unable to create the classloaders
+ */
+ private void addAllClassLoaders( final ClassLoaderSetMetaData metaData,
+ final LoaderResolver resolver,
final Map classLoaders )
throws Exception
{
- final ClassLoaderMetaData[] classLoaderDefs = set.getClassLoaders();
+ final ClassLoaderMetaData[] classLoaderDefs = metaData.getClassLoaders();
for( int i = 0; i < classLoaderDefs.length; i++ )
{
final String name = classLoaderDefs[ i ].getName();
- processClassLoader( name, set, policy, classLoaders );
+ processClassLoader( name, metaData, resolver, classLoaders );
+ final ClassLoader classLoader =
+ buildRegularClassLoader( classLoaderDefs[ i ], resolver,
classLoaders );
+ classLoaders.put( name, classLoader );
+ }
+ }
+
+ /**
+ * Add all the classloaders to the result metaData.
+ *
+ * @param metaData the metadata
+ * @param resolver the resolver to use
+ * @param classLoaders the result map of classloaders
+ * @throws Exception if unable to create the classloaders
+ */
+ private void addAllJoins( final ClassLoaderSetMetaData metaData,
+ final LoaderResolver resolver,
+ final Map classLoaders )
+ throws Exception
+ {
+ final JoinMetaData[] joins = metaData.getJoins();
+ for( int i = 0; i < joins.length; i++ )
+ {
+ final String name = joins[ i ].getName();
+ processClassLoader( name, metaData, resolver, classLoaders );
final ClassLoader classLoader =
- buildRegularClassLoader( classLoaderDefs[ i ], policy, classLoaders
);
+ buildJoinClassLoader( joins[ i ], resolver, classLoaders );
classLoaders.put( name, classLoader );
}
}
+ /**
+ * Process a ClassLoader entry, create ClassLoader and add
+ * it to result map.
+ *
+ * @param name the name of classloader
+ * @param set the set of metatadata
+ * @param resolver the resolver for construction
+ * @param classLoaders the result map of classloaders
+ * @throws Exception if unable to process classloader
+ */
private void processClassLoader( final String name,
final ClassLoaderSetMetaData set,
- final LoaderResolver policy,
+ final LoaderResolver resolver,
final Map classLoaders )
throws Exception
{
@@ -73,11 +126,11 @@
//Make sure parent classloader is built
processClassLoader( regular.getParent(),
set,
- policy,
+ resolver,
classLoaders );
final ClassLoader classLoader =
- buildRegularClassLoader( regular, policy, classLoaders );
+ buildRegularClassLoader( regular, resolver, classLoaders );
classLoaders.put( name, classLoader );
}
else
@@ -88,10 +141,10 @@
final String[] names = join.getClassloaders();
for( int i = 0; i < names.length; i++ )
{
- processClassLoader( names[ i ], set, policy, classLoaders );
+ processClassLoader( names[ i ], set, resolver, classLoaders );
}
final ClassLoader classLoader =
- buildJoinClassLoader( join, policy, classLoaders );
+ buildJoinClassLoader( join, resolver, classLoaders );
classLoaders.put( name, classLoader );
}
}
@@ -100,12 +153,12 @@
* Create a Join ClassLoader.
*
* @param join the metadata
- * @param policy the policy to use to resolve URLs etc
+ * @param resolver the resolver to use to resolve URLs etc
* @param classLoaders the already created ClassLoaders
* @return the created JoinClassLoader
*/
private ClassLoader buildJoinClassLoader( final JoinMetaData join,
- final LoaderResolver policy,
+ final LoaderResolver resolver,
final Map classLoaders )
throws Exception
{
@@ -119,7 +172,7 @@
final ClassLoader[] elements =
(ClassLoader[])list.toArray( new ClassLoader[ list.size() ] );
- return policy.createJoinClassLoader( elements );
+ return resolver.createJoinClassLoader( elements );
}
/**
@@ -127,13 +180,13 @@
* and filesets fully resolved.
*
* @param metaData the classloader definition
- * @param policy the policy to use when creating URLs/Extensions etc
+ * @param resolver the resolver to use when creating URLs/Extensions etc
* @param classLoaders the already created ClassLoaders
* @return the created ClassLoader
* @throws Exception if unable to create ClassLoader
*/
private ClassLoader buildRegularClassLoader( final ClassLoaderMetaData metaData,
- final LoaderResolver policy,
+ final LoaderResolver resolver,
final Map classLoaders )
throws Exception
{
@@ -146,7 +199,7 @@
final String[] entrys = metaData.getEntrys();
for( int i = 0; i < entrys.length; i++ )
{
- final URL url = policy.resolveURL( entrys[ i ] );
+ final URL url = resolver.resolveURL( entrys[ i ] );
urlSet.add( url );
}
@@ -159,9 +212,9 @@
final String[] includes = fileset.getIncludes();
final String[] excludes = fileset.getExcludes();
final URL[] urls =
- policy.resolveFileSet( baseDirectory,
- includes,
- excludes );
+ resolver.resolveFileSet( baseDirectory,
+ includes,
+ excludes );
for( int j = 0; j < urls.length; j++ )
{
urlSet.add( urls[ j ] );
@@ -171,12 +224,12 @@
final Extension[] extensions = metaData.getExtensions();
for( int i = 0; i < extensions.length; i++ )
{
- final URL url = policy.resolveExtension( extensions[ i ] );
+ final URL url = resolver.resolveExtension( extensions[ i ] );
urlSet.add( url );
}
final URL[] urls = (URL[])urlSet.toArray( new URL[ urlSet.size() ] );
- return policy.createClassLoader( parent, urls );
+ return resolver.createClassLoader( parent, urls );
}
/**
--
To unsubscribe, e-mail: <mailto:avalon-cvs-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:avalon-cvs-help@;jakarta.apache.org>