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>

Reply via email to