donaldp     2002/09/16 04:57:16

  Modified:    loader/src/java/org/apache/excalibur/loader/reader
                        ClassLoaderSetBuilder.java
               loader/src/test/org/apache/excalibur/loader/test
                        AbstractLoaderTestCase.java
  Log:
  Update builder to use the icky w3c DOM rather than Avalon configuration. This 
means oness less dependency and the library can be used without adding any 
extra classes on jdk1.4
  
  Revision  Changes    Path
  1.2       +84 -57    
jakarta-avalon-excalibur/loader/src/java/org/apache/excalibur/loader/reader/ClassLoaderSetBuilder.java
  
  Index: ClassLoaderSetBuilder.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/loader/src/java/org/apache/excalibur/loader/reader/ClassLoaderSetBuilder.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ClassLoaderSetBuilder.java        16 Sep 2002 08:15:16 -0000      1.1
  +++ ClassLoaderSetBuilder.java        16 Sep 2002 11:57:16 -0000      1.2
  @@ -9,11 +9,12 @@
   
   import java.util.ArrayList;
   import org.apache.avalon.excalibur.extension.Extension;
  -import org.apache.avalon.framework.configuration.Configuration;
   import org.apache.excalibur.loader.metadata.ClassLoaderMetaData;
   import org.apache.excalibur.loader.metadata.ClassLoaderSetMetaData;
   import org.apache.excalibur.loader.metadata.FileSetMetaData;
   import org.apache.excalibur.loader.metadata.JoinMetaData;
  +import org.w3c.dom.Element;
  +import org.w3c.dom.NodeList;
   
   /**
    * This class builds a [EMAIL PROTECTED] ClassLoaderSetMetaData} object from
  @@ -24,11 +25,16 @@
    */
   public class ClassLoaderSetBuilder
   {
  -    public ClassLoaderSetMetaData build( final Configuration config )
  +    public ClassLoaderSetMetaData build( final Element config )
           throws Exception
       {
           final String defaultClassLoader =
               config.getAttribute( "default" );
  +        if( isUnspecified( defaultClassLoader ) )
  +        {
  +            final String message = "Default classloader not specified.";
  +            throw new Exception( message );
  +        }
   
           final String version =
               config.getAttribute( "version" );
  @@ -38,160 +44,177 @@
               throw new Exception( message );
           }
   
  -        final Configuration[] joinConfigs =
  -            config.getChildren( "join" );
  +        final NodeList joinConfigs =
  +            config.getElementsByTagName( "join" );
           final JoinMetaData[] joins = buildJoins( joinConfigs );
   
  -        final Configuration[] clConfigs =
  -            config.getChildren( "classloader" );
  +        final NodeList clConfigs =
  +            config.getElementsByTagName( "classloader" );
   
           final ClassLoaderMetaData[] classloaders =
               buildClassLoaders( clConfigs );
   
   
  -        final Configuration[] predefinedConfigs =
  -            config.getChildren( "predefined" );
  +        final NodeList predefinedConfigs =
  +            config.getElementsByTagName( "predefined" );
   
           final String[] predefined =
               buildPredefined( predefinedConfigs );
   
           return new ClassLoaderSetMetaData( defaultClassLoader,
  -                                      predefined,
  -                                      classloaders,
  -                                      joins );
  +                                           predefined,
  +                                           classloaders,
  +                                           joins );
  +    }
  +
  +    private boolean isUnspecified( final String defaultClassLoader )
  +    {
  +        return "".equals( defaultClassLoader );
       }
   
  -    private String[] buildPredefined( final Configuration[] configs )
  +    private String[] buildPredefined( final NodeList configs )
           throws Exception
       {
           final ArrayList predefines = new ArrayList();
   
  -        for( int i = 0; i < configs.length; i++ )
  +        final int length = configs.getLength();
  +        for( int i = 0; i < length; i++ )
           {
  -            final String predefined = configs[ i ].getAttribute( "name" );
  +            final Element element = (Element)configs.item( i );
  +            final String predefined = element.getAttribute( "name" );
               predefines.add( predefined );
           }
   
           return (String[])predefines.toArray( new String[ predefines.size() ] 
);
       }
   
  -    private ClassLoaderMetaData[] buildClassLoaders( Configuration[] configs 
)
  +    private ClassLoaderMetaData[] buildClassLoaders( final NodeList configs )
           throws Exception
       {
           final ArrayList loaders = new ArrayList();
  +        final int length = configs.getLength();
   
  -        for( int i = 0; i < configs.length; i++ )
  +        for( int i = 0; i < length; i++ )
           {
  -            final ClassLoaderMetaData loader = buildLoader( configs[ i ] );
  +            final Element item = (Element)configs.item( i );
  +            final ClassLoaderMetaData loader = buildLoader( item );
               loaders.add( loader );
           }
   
           return (ClassLoaderMetaData[])loaders.toArray( new 
ClassLoaderMetaData[ loaders.size() ] );
       }
   
  -    private ClassLoaderMetaData buildLoader( final Configuration config )
  +    private ClassLoaderMetaData buildLoader( final Element config )
           throws Exception
       {
           final String name = config.getAttribute( "name" );
           final String parent = config.getAttribute( "parent" );
   
           final String[] entrys =
  -            buildEntrys( config.getChildren( "entry" ) );
  +            buildEntrys( config.getElementsByTagName( "entry" ) );
           final Extension[] extensions =
  -            buildExtensions( config.getChildren( "extension" ) );
  +            buildExtensions( config.getElementsByTagName( "extension" ) );
           final FileSetMetaData[] fileSets =
  -            buildFileSets( config.getChildren( "fileset" ) );
  +            buildFileSets( config.getElementsByTagName( "fileset" ) );
           return new ClassLoaderMetaData( name, parent, entrys,
  -                                   extensions, fileSets );
  +                                        extensions, fileSets );
       }
   
  -    private Extension[] buildExtensions( final Configuration[] configs )
  +    private Extension[] buildExtensions( final NodeList configs )
           throws Exception
       {
           final ArrayList extensions = new ArrayList();
   
  -        for( int i = 0; i < configs.length; i++ )
  +        final int length = configs.getLength();
  +        for( int i = 0; i < length; i++ )
           {
               final Extension extension =
  -                buildExtension( configs[ i ] );
  +                buildExtension( (Element)configs.item( i ) );
               extensions.add( extension );
           }
   
           return (Extension[])extensions.toArray( new Extension[ 
extensions.size() ] );
       }
   
  -    private Extension buildExtension( final Configuration config )
  +    private Extension buildExtension( final Element config )
           throws Exception
       {
  -        final String name =
  -            config.getAttribute( "name" );
  +        final String name = config.getAttribute( "name" );
  +        if( isUnspecified( name ) )
  +        {
  +            final String message = "Missing name from extension";
  +            throw new Exception( message );
  +        }
           final String specVersion =
  -            config.getAttribute( "specification-version", null );
  +            config.getAttribute( "specification-version" );
           final String specVendor =
  -            config.getAttribute( "specification-vendor", null );
  +            config.getAttribute( "specification-vendor" );
           final String implVersion =
  -            config.getAttribute( "implementation-version", null );
  +            config.getAttribute( "implementation-version" );
           final String implVendor =
  -            config.getAttribute( "implementation-vendor", null );
  +            config.getAttribute( "implementation-vendor" );
           final String implVendorID =
  -            config.getAttribute( "implementation-vendor-id", null );
  +            config.getAttribute( "implementation-vendor-id" );
           final String implURL =
  -            config.getAttribute( "implementation-url", null );
  +            config.getAttribute( "implementation-url" );
   
           return new Extension( name, specVersion, specVendor,
                                 implVersion, implVendor, implVendorID,
                                 implURL );
       }
   
  -    private FileSetMetaData[] buildFileSets( final Configuration[] configs )
  +    private FileSetMetaData[] buildFileSets( final NodeList configs )
           throws Exception
       {
           final ArrayList fileSets = new ArrayList();
   
  -        for( int i = 0; i < configs.length; i++ )
  +        final int length = configs.getLength();
  +        for( int i = 0; i < length; i++ )
           {
               final FileSetMetaData fileSet =
  -                buildFileSet( configs[ i ] );
  +                buildFileSet( (Element)configs.item( i ) );
               fileSets.add( fileSet );
           }
   
           return (FileSetMetaData[])fileSets.toArray( new FileSetMetaData[ 
fileSets.size() ] );
       }
   
  -    private FileSetMetaData buildFileSet( Configuration config )
  +    private FileSetMetaData buildFileSet( final Element config )
           throws Exception
       {
           final String dir = config.getAttribute( "dir" );
           final String[] includes =
  -            buildSelectors( config.getChildren( "include" ) );
  +            buildSelectors( config.getElementsByTagName( "include" ) );
           final String[] excludes =
  -            buildSelectors( config.getChildren( "exclude" ) );
  +            buildSelectors( config.getElementsByTagName( "exclude" ) );
           return new FileSetMetaData( dir, includes, excludes );
       }
   
  -    private String[] buildSelectors( Configuration[] configs )
  +    private String[] buildSelectors( final NodeList configs )
           throws Exception
       {
           final ArrayList selectors = new ArrayList();
   
  -        for( int i = 0; i < configs.length; i++ )
  +        final int length = configs.getLength();
  +        for( int i = 0; i < length; i++ )
           {
  -            final String name =
  -                configs[ i ].getAttribute( "name" );
  +            final Element element = (Element)configs.item( i );
  +            final String name = element.getAttribute( "name" );
               selectors.add( name );
           }
   
           return (String[])selectors.toArray( new String[ selectors.size() ] );
       }
   
  -    private String[] buildEntrys( final Configuration[] configs )
  +    private String[] buildEntrys( final NodeList configs )
           throws Exception
       {
           final ArrayList entrys = new ArrayList();
   
  -        for( int i = 0; i < configs.length; i++ )
  +        final int length = configs.getLength();
  +        for( int i = 0; i < length; i++ )
           {
  -            final Configuration config = configs[ i ];
  +            final Element config = (Element)configs.item( i );
               final String entry = config.getAttribute( "location" );
               entrys.add( entry );
           }
  @@ -199,39 +222,43 @@
           return (String[])entrys.toArray( new String[ entrys.size() ] );
       }
   
  -    private JoinMetaData[] buildJoins( final Configuration[] configs )
  +    private JoinMetaData[] buildJoins( final NodeList configs )
           throws Exception
       {
           final ArrayList joins = new ArrayList();
   
  -        for( int i = 0; i < configs.length; i++ )
  +        final int length = configs.getLength();
  +        for( int i = 0; i < length; i++ )
           {
  -            final JoinMetaData join = buildJoin( configs[ i ] );
  +            final Element config = (Element)configs.item( i );
  +            final JoinMetaData join = buildJoin( config );
               joins.add( join );
           }
   
           return (JoinMetaData[])joins.toArray( new JoinMetaData[ joins.size() 
] );
       }
   
  -    private JoinMetaData buildJoin( final Configuration config )
  +    private JoinMetaData buildJoin( final Element config )
           throws Exception
       {
           final String name = config.getAttribute( "name" );
  -        final Configuration[] children =
  -            config.getChildren( "classloader-ref" );
  +        final NodeList children =
  +            config.getElementsByTagName( "classloader-ref" );
           final String[] classloaders =
               buildClassLoaderRefs( children );
           return new JoinMetaData( name, classloaders );
       }
   
  -    private String[] buildClassLoaderRefs( final Configuration[] configs )
  +    private String[] buildClassLoaderRefs( final NodeList configs )
           throws Exception
       {
           final ArrayList refs = new ArrayList();
   
  -        for( int i = 0; i < configs.length; i++ )
  +        final int length = configs.getLength();
  +        for( int i = 0; i < length; i++ )
           {
  -            final String ref = configs[ i ].getAttribute( "name" );
  +            final Element element = (Element)configs.item( i );
  +            final String ref = element.getAttribute( "name" );
               refs.add( ref );
           }
   
  
  
  
  1.5       +13 -9     
jakarta-avalon-excalibur/loader/src/test/org/apache/excalibur/loader/test/AbstractLoaderTestCase.java
  
  Index: AbstractLoaderTestCase.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/loader/src/test/org/apache/excalibur/loader/test/AbstractLoaderTestCase.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- AbstractLoaderTestCase.java       16 Sep 2002 08:15:17 -0000      1.4
  +++ AbstractLoaderTestCase.java       16 Sep 2002 11:57:16 -0000      1.5
  @@ -8,11 +8,12 @@
   package org.apache.excalibur.loader.test;
   
   import java.io.InputStream;
  +import javax.xml.parsers.DocumentBuilder;
  +import javax.xml.parsers.DocumentBuilderFactory;
   import junit.framework.TestCase;
  -import org.apache.avalon.framework.configuration.Configuration;
  -import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder;
  -import org.apache.excalibur.loader.reader.ClassLoaderSetBuilder;
   import org.apache.excalibur.loader.metadata.ClassLoaderSetMetaData;
  +import org.apache.excalibur.loader.reader.ClassLoaderSetBuilder;
  +import org.w3c.dom.Document;
   
   /**
    *
  @@ -28,8 +29,8 @@
           try
           {
               final ClassLoaderSetBuilder builder = new 
ClassLoaderSetBuilder();
  -            final Configuration config = load( stream );
  -            return builder.build( config );
  +            final Document config = load( stream );
  +            return builder.build( config.getDocumentElement() );
           }
           catch( final Exception e )
           {
  @@ -38,11 +39,14 @@
           }
       }
   
  -    protected Configuration load( final InputStream stream )
  +    protected Document load( final InputStream stream )
           throws Exception
       {
  -        final DefaultConfigurationBuilder builder = new 
DefaultConfigurationBuilder();
  -        return builder.build( stream );
  +        final DocumentBuilderFactory factory = 
DocumentBuilderFactory.newInstance();
  +        //factory.setValidating(true);
  +        //factory.setNamespaceAware(true);
  +        final DocumentBuilder builder = factory.newDocumentBuilder();
  +        return builder.parse( stream );
       }
   
       protected ClassLoaderSetMetaData buildFromResource( final String 
resource )
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to