donaldp     2002/11/01 00:23:31

  Modified:    src/java/org/apache/avalon/phoenix BlockContext.java
               src/java/org/apache/avalon/phoenix/components/application
                        DefaultBlockContext.java
               src/java/org/apache/avalon/phoenix/components/classloader
                        ContextClassLoaderManager.java
                        DefaultClassLoaderManager.java
               src/java/org/apache/avalon/phoenix/components/deployer
                        DefaultDeployer.java
               src/java/org/apache/avalon/phoenix/components/kernel
                        DefaultApplicationContext.java DefaultKernel.java
                        Resources.properties SarEntry.java
               src/java/org/apache/avalon/phoenix/components/kernel/beanshell
                        BeanShellKernelProxy.java
               src/java/org/apache/avalon/phoenix/interfaces
                        ApplicationContext.java ClassLoaderManager.java
                        Kernel.java
               src/java/org/apache/avalon/phoenix/metadata SarMetaData.java
               src/test/org/apache/avalon/phoenix/components/application/test
                        MockApplicationContext.java
  Added:       src/java/org/apache/avalon/phoenix/interfaces
                        ClassLoaderSet.java
  Log:
  Add the first cut at allowing blocks to access classloaders trees declared in 
environment.xml
  
  Revision  Changes    Path
  1.18      +12 -7     
jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/BlockContext.java
  
  Index: BlockContext.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/BlockContext.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- BlockContext.java 11 Sep 2002 12:47:26 -0000      1.17
  +++ BlockContext.java 1 Nov 2002 08:23:30 -0000       1.18
  @@ -75,6 +75,18 @@
       Logger getLogger( String name );
   
       /**
  +     * This method gives the block access to a named {@link ClassLoader}.
  +     * The {@link ClassLoader}s for an application are declared in the
  +     * <tt>environment.xml</tt> descriptor. See the Specification for details.
  +     *
  +     * @param name the name of the classloader
  +     * @return the classloader
  +     * @throws Exception if no such {@link ClassLoader}
  +     */
  +    ClassLoader getClassLoader( String name )
  +        throws Exception;
  +
  +    /**
        * Retrieve the proxy for this object.
        * Each Block is referenced by other Blocks via their Proxy. When Phoenix
        * shuts down the Block, it can automatically invalidate the proxy. Thus
  @@ -112,13 +124,6 @@
        * getProxy( Object other )
        */
       //Object getProxy( Object other, Class[] interfaces );
  -
  -    /**
  -     * This method gives you access to a named ClassLoader. The ClassLoaders
  -     * for an application are declared in the <tt>environment.xml</tt>
  -     * descriptor.
  -     */
  -    //ClassLoader getClassLoader( String name );
   
       /**
        * Retrieve the MBeanServer for this application.
  
  
  
  1.20      +6 -5      
jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/application/DefaultBlockContext.java
  
  Index: DefaultBlockContext.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/application/DefaultBlockContext.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- DefaultBlockContext.java  6 Sep 2002 09:42:35 -0000       1.19
  +++ DefaultBlockContext.java  1 Nov 2002 08:23:30 -0000       1.20
  @@ -85,13 +85,14 @@
           return m_applicationContext.getResourceAsStream( name );
       }
   
  -    /**
  -     * Retrieve logger coresponding to named category.
  -     *
  -     * @return the logger
  -     */
       public Logger getLogger( final String name )
       {
           return m_applicationContext.getLogger( getName() ).getChildLogger( name );
  +    }
  +
  +    public ClassLoader getClassLoader( final String name )
  +        throws Exception
  +    {
  +        return m_applicationContext.getClassLoader( name );
       }
   }
  
  
  
  1.11      +8 -16     
jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/classloader/ContextClassLoaderManager.java
  
  Index: ContextClassLoaderManager.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/classloader/ContextClassLoaderManager.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- ContextClassLoaderManager.java    1 Nov 2002 01:15:40 -0000       1.10
  +++ ContextClassLoaderManager.java    1 Nov 2002 08:23:30 -0000       1.11
  @@ -1,8 +1,10 @@
   package org.apache.avalon.phoenix.components.classloader;
   
   import java.io.File;
  +import java.util.HashMap;
   import org.apache.avalon.framework.configuration.Configuration;
   import org.apache.avalon.phoenix.interfaces.ClassLoaderManager;
  +import org.apache.avalon.phoenix.interfaces.ClassLoaderSet;
   
   /**
    * Basic ClassLoaderManager that just returns current
  @@ -14,23 +16,13 @@
   public class ContextClassLoaderManager
       implements ClassLoaderManager
   {
  -    /**
  -     * Return current Context {@link ClassLoader}.
  -     *
  -     * @param environment ignored
  -     * @param source the source of application. (usually the name of the .sar file
  -     *               or else the same as baseDirectory)
  -     * @param baseDirectory the base directory of application
  -     * @param workDirectory the work directory of application
  -     * @return the ContextClassLoader created
  -     * @throws Exception if an error occurs
  -     */
  -    public ClassLoader createClassLoader( final Configuration environment,
  -                                          final File source,
  -                                          final File baseDirectory,
  -                                          final File workDirectory )
  +    public ClassLoaderSet createClassLoaderSet( final Configuration environment,
  +                                                final File baseDirectory,
  +                                                final File workDirectory )
           throws Exception
       {
  -        return Thread.currentThread().getContextClassLoader();
  +        final ClassLoader classLoader =
  +            Thread.currentThread().getContextClassLoader();
  +        return new ClassLoaderSet( classLoader, new HashMap() );
       }
   }
  
  
  
  1.49      +18 -8     
jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/classloader/DefaultClassLoaderManager.java
  
  Index: DefaultClassLoaderManager.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/classloader/DefaultClassLoaderManager.java,v
  retrieving revision 1.48
  retrieving revision 1.49
  diff -u -r1.48 -r1.49
  --- DefaultClassLoaderManager.java    1 Nov 2002 01:15:40 -0000       1.48
  +++ DefaultClassLoaderManager.java    1 Nov 2002 08:23:30 -0000       1.49
  @@ -28,6 +28,7 @@
   import org.apache.avalon.framework.service.ServiceManager;
   import org.apache.avalon.framework.service.Serviceable;
   import org.apache.avalon.phoenix.interfaces.ClassLoaderManager;
  +import org.apache.avalon.phoenix.interfaces.ClassLoaderSet;
   import org.apache.excalibur.loader.builder.LoaderBuilder;
   import org.apache.excalibur.loader.builder.LoaderResolver;
   import org.apache.excalibur.loader.metadata.ClassLoaderMetaData;
  @@ -35,6 +36,7 @@
   import org.apache.excalibur.loader.metadata.FileSetMetaData;
   import org.apache.excalibur.loader.metadata.JoinMetaData;
   import org.apache.excalibur.loader.verifier.ClassLoaderVerifier;
  +import org.apache.excalibur.loader.reader.ClassLoaderSetReader;
   import org.apache.excalibur.policy.builder.PolicyBuilder;
   import org.apache.excalibur.policy.metadata.PolicyMetaData;
   import org.apache.excalibur.policy.reader.PolicyReader;
  @@ -83,6 +85,12 @@
       private final LoaderBuilder m_builder = new LoaderBuilder();
   
       /**
  +     * Utility class to read {@link ClassLoaderSetMetaData} objects
  +     * from XML trees.
  +     */
  +    private final ClassLoaderSetReader m_reader = new ClassLoaderSetReader();
  +
  +    /**
        * The map of predefined ClassLoaders. In the current incarnation this only
        * contains the system classloader.
        */
  @@ -135,17 +143,14 @@
        * {@link ClassLoader}.
        *
        * @param environment the configuration "environment.xml" for the application
  -     * @param source the source of application. (usually the name of the .sar file
  -     *               or else the same as baseDirectory)
        * @param homeDirectory the base directory of application
        * @param workDirectory the work directory of application
        * @return the ClassLoader created
        * @throws Exception if an error occurs
        */
  -    public ClassLoader createClassLoader( final Configuration environment,
  -                                          final File source,
  -                                          final File homeDirectory,
  -                                          final File workDirectory )
  +    public ClassLoaderSet createClassLoaderSet( final Configuration environment,
  +                                                final File homeDirectory,
  +                                                final File workDirectory )
           throws Exception
       {
           //Configure policy
  @@ -164,7 +169,9 @@
           setupLogger( resolver );
           final Map map =
               m_builder.buildClassLoaders( metaData, resolver, m_predefinedLoaders );
  -        return (ClassLoader)map.get( metaData.getDefault() );
  +        final ClassLoader defaultClassLoader =
  +            (ClassLoader)map.get( metaData.getDefault() );
  +        return new ClassLoaderSet( defaultClassLoader, map );
       }
   
       /**
  @@ -176,6 +183,7 @@
        * @return the {@link ClassLoaderMetaData} object
        */
       private ClassLoaderSetMetaData getLoaderMetaData( final Configuration 
environment )
  +        throws Exception
       {
           final boolean loaderDefined = isClassLoaderDefined( environment );
           if( !loaderDefined )
  @@ -184,7 +192,9 @@
           }
           else
           {
  -            throw new IllegalStateException( "Not implemented yet");
  +            final Configuration loaderConfig = environment.getChild( "classloader" 
);
  +            final Element element = ConfigurationUtil.toElement( loaderConfig );
  +            return m_reader.build( element );
           }
       }
   
  
  
  
  1.61      +17 -15    
jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/deployer/DefaultDeployer.java
  
  Index: DefaultDeployer.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/deployer/DefaultDeployer.java,v
  retrieving revision 1.60
  retrieving revision 1.61
  diff -u -r1.60 -r1.61
  --- DefaultDeployer.java      1 Nov 2002 01:15:40 -0000       1.60
  +++ DefaultDeployer.java      1 Nov 2002 08:23:30 -0000       1.61
  @@ -36,6 +36,7 @@
   import org.apache.avalon.phoenix.interfaces.Installer;
   import org.apache.avalon.phoenix.interfaces.Kernel;
   import org.apache.avalon.phoenix.interfaces.LogManager;
  +import org.apache.avalon.phoenix.interfaces.ClassLoaderSet;
   import org.apache.avalon.phoenix.metadata.BlockListenerMetaData;
   import org.apache.avalon.phoenix.metadata.BlockMetaData;
   import org.apache.avalon.phoenix.metadata.SarMetaData;
  @@ -77,14 +78,14 @@
       public void service( final ServiceManager serviceManager )
           throws ServiceException
       {
  -        m_kernel = (Kernel) serviceManager.lookup( Kernel.ROLE );
  -        m_repository = (ConfigurationRepository) serviceManager.
  +        m_kernel = (Kernel)serviceManager.lookup( Kernel.ROLE );
  +        m_repository = (ConfigurationRepository)serviceManager.
               lookup( ConfigurationRepository.ROLE );
  -        m_classLoaderManager = (ClassLoaderManager) serviceManager.
  +        m_classLoaderManager = (ClassLoaderManager)serviceManager.
               lookup( ClassLoaderManager.ROLE );
  -        m_logManager = (LogManager) serviceManager.lookup( LogManager.ROLE );
  -        m_validator = (ConfigurationValidator) serviceManager.lookup( 
ConfigurationValidator.ROLE );
  -        m_installer = (Installer) serviceManager.lookup( Installer.ROLE );
  +        m_logManager = (LogManager)serviceManager.lookup( LogManager.ROLE );
  +        m_validator = (ConfigurationValidator)serviceManager.lookup( 
ConfigurationValidator.ROLE );
  +        m_installer = (Installer)serviceManager.lookup( Installer.ROLE );
       }
   
       public void initialize()
  @@ -102,7 +103,7 @@
       {
           final Set set = m_installations.keySet();
           final String[] applications =
  -            (String[]) set.toArray( new String[ set.size() ] );
  +            (String[])set.toArray( new String[ set.size() ] );
           for( int i = 0; i < applications.length; i++ )
           {
               final String name = applications[ i ];
  @@ -131,7 +132,7 @@
           throws DeploymentException
       {
           final Installation installation =
  -            (Installation) m_installations.get( name );
  +            (Installation)m_installations.get( name );
           if( null == installation )
           {
               final String message =
  @@ -160,7 +161,7 @@
           throws DeploymentException
       {
           final Installation installation =
  -            (Installation) m_installations.remove( name );
  +            (Installation)m_installations.remove( name );
           if( null == installation )
           {
               final String message =
  @@ -247,11 +248,11 @@
   
               final File directory = installation.getDirectory();
   
  -            final ClassLoader classLoader =
  -                m_classLoaderManager.createClassLoader( environment,
  -                                                        installation.getSource(),
  -                                                        installation.getDirectory(),
  -                                                        
installation.getWorkDirectory() );
  +            final ClassLoaderSet classLoaderSet =
  +                m_classLoaderManager.createClassLoaderSet( environment,
  +                                                           
installation.getDirectory(),
  +                                                           
installation.getWorkDirectory() );
  +            final ClassLoader classLoader = classLoaderSet.getDefaultClassLoader();
               //assemble all the blocks for application
               final SarMetaData metaData =
                   m_assembler.assembleSar( name, assembly, directory, classLoader );
  @@ -271,7 +272,8 @@
               m_kernel.addApplication( metaData,
                                        installation.getWorkDirectory(),
                                        classLoader,
  -                                     logger );
  +                                     logger,
  +                                     classLoaderSet.getClassLoaders() );
   
               m_installations.put( metaData.getName(), installation );
   
  
  
  
  1.31      +23 -1     
jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/kernel/DefaultApplicationContext.java
  
  Index: DefaultApplicationContext.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/kernel/DefaultApplicationContext.java,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- DefaultApplicationContext.java    2 Oct 2002 11:25:55 -0000       1.30
  +++ DefaultApplicationContext.java    1 Nov 2002 08:23:30 -0000       1.31
  @@ -12,6 +12,7 @@
   import java.io.FileNotFoundException;
   import java.io.InputStream;
   import java.util.HashMap;
  +import java.util.Map;
   import org.apache.avalon.excalibur.i18n.ResourceManager;
   import org.apache.avalon.excalibur.i18n.Resources;
   import org.apache.avalon.framework.activity.Initializable;
  @@ -71,6 +72,11 @@
       private final File m_workDirectory;
   
       /**
  +     * The map containing all the named loaders.
  +     */
  +    private final Map m_loaders;
  +
  +    /**
        * The kernel associate with context
        */
       private Kernel m_kernel;
  @@ -78,7 +84,8 @@
       protected DefaultApplicationContext( final SarMetaData metaData,
                                            final File workDirectory,
                                            final ClassLoader classLoader,
  -                                         final Logger hierarchy )
  +                                         final Logger hierarchy,
  +                                         final Map loaders )
       {
           if( null == metaData )
           {
  @@ -101,6 +108,7 @@
           m_classLoader = classLoader;
           m_hierarchy = hierarchy;
           m_workDirectory = workDirectory;
  +        m_loaders = loaders;
   
           final DefaultThreadContextPolicy policy = new DefaultThreadContextPolicy();
           final HashMap map = new HashMap( 1 );
  @@ -274,6 +282,20 @@
                                  component );
               throw new ConfigurationException( message );
           }
  +    }
  +
  +    public ClassLoader getClassLoader( final String name )
  +        throws Exception
  +    {
  +        final ClassLoader classLoader = (ClassLoader)m_loaders.get(name);
  +        if( null == classLoader )
  +        {
  +            final String message =
  +                REZ.getString( "applicationcontext.error.noloader",
  +                               name );
  +            throw new Exception( message );
  +        }
  +        return classLoader;
       }
   
       /**
  
  
  
  1.82      +7 -3      
jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/kernel/DefaultKernel.java
  
  Index: DefaultKernel.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/kernel/DefaultKernel.java,v
  retrieving revision 1.81
  retrieving revision 1.82
  diff -u -r1.81 -r1.82
  --- DefaultKernel.java        28 Oct 2002 07:13:34 -0000      1.81
  +++ DefaultKernel.java        1 Nov 2002 08:23:30 -0000       1.82
  @@ -9,6 +9,7 @@
   
   import java.io.File;
   import java.util.HashMap;
  +import java.util.Map;
   import org.apache.avalon.excalibur.i18n.ResourceManager;
   import org.apache.avalon.excalibur.i18n.Resources;
   import org.apache.avalon.framework.CascadingException;
  @@ -240,12 +241,14 @@
       public void addApplication( final SarMetaData metaData,
                                   final File workDirectory,
                                   final ClassLoader classLoader,
  -                                final Logger logger )
  +                                final Logger logger,
  +                                final Map classloaders )
           throws Exception
       {
           final String name = metaData.getName();
           final SarEntry entry =
  -            new SarEntry( metaData, workDirectory, classLoader, logger );
  +            new SarEntry( metaData, workDirectory, classLoader,
  +                          logger, classloaders );
           m_entries.put( name, entry );
   
           try
  @@ -270,7 +273,8 @@
               new DefaultApplicationContext( metaData,
                                              entry.getWorkDirectory(),
                                              entry.getClassLoader(),
  -                                           entry.getLogger() );
  +                                           entry.getLogger(),
  +                                           entry.getClassLoaders() );
   
           ContainerUtil.enableLogging( context, createContextLogger( name ) );
           ContainerUtil.service( context, createServiceManager() );
  
  
  
  1.8       +2 -1      
jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/kernel/Resources.properties
  
  Index: Resources.properties
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/kernel/Resources.properties,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Resources.properties      13 Jul 2002 19:39:11 -0000      1.7
  +++ Resources.properties      1 Nov 2002 08:23:30 -0000       1.8
  @@ -13,4 +13,5 @@
   frame.error.thread.missing=No such thread pool {0}.
   frame.error.thread.create=Error creating thread pool {0}.
   
  -applicationcontext.error.invalidconfig=Block "{0}" has invalid configuration 
information
  \ No newline at end of file
  +applicationcontext.error.invalidconfig=Block "{0}" has invalid configuration 
information
  +applicationcontext.error.noloader=Unable to locate ClassLoader named "{0}".
  \ No newline at end of file
  
  
  
  1.17      +18 -5     
jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/kernel/SarEntry.java
  
  Index: SarEntry.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/kernel/SarEntry.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- SarEntry.java     29 Oct 2002 22:48:36 -0000      1.16
  +++ SarEntry.java     1 Nov 2002 08:23:30 -0000       1.17
  @@ -8,6 +8,7 @@
   package org.apache.avalon.phoenix.components.kernel;
   
   import java.io.File;
  +import java.util.Map;
   import org.apache.avalon.framework.logger.Logger;
   import org.apache.avalon.phoenix.interfaces.Application;
   import org.apache.avalon.phoenix.metadata.SarMetaData;
  @@ -19,16 +20,18 @@
    */
   final class SarEntry
   {
  -    private SarMetaData m_metaData;
  -    private ClassLoader m_classLoader;
  +    private final SarMetaData m_metaData;
  +    private final ClassLoader m_classLoader;
  +    private final Logger m_logger;
  +    private final File m_workDirectory;
  +    private final Map m_classLoaders;
       private Application m_application;
  -    private Logger m_logger;
  -    private File m_workDirectory;
   
       protected SarEntry( final SarMetaData metaData,
                           final File workDirectory,
                           final ClassLoader classLoader,
  -                        final Logger logger )
  +                        final Logger logger,
  +                        final Map classLoaders )
       {
           if( null == metaData )
           {
  @@ -46,11 +49,16 @@
           {
               throw new NullPointerException( "workDirectory" );
           }
  +        if( null == classLoaders )
  +        {
  +            throw new NullPointerException( "classLoaders" );
  +        }
   
           m_metaData = metaData;
           m_classLoader = classLoader;
           m_logger = logger;
           m_workDirectory = workDirectory;
  +        m_classLoaders = classLoaders;
       }
   
       public File getWorkDirectory()
  @@ -81,5 +89,10 @@
       public ClassLoader getClassLoader()
       {
           return m_classLoader;
  +    }
  +
  +    public Map getClassLoaders()
  +    {
  +        return m_classLoaders;
       }
   }
  
  
  
  1.7       +3 -1      
jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/kernel/beanshell/BeanShellKernelProxy.java
  
  Index: BeanShellKernelProxy.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/kernel/beanshell/BeanShellKernelProxy.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- BeanShellKernelProxy.java 28 Oct 2002 07:13:34 -0000      1.6
  +++ BeanShellKernelProxy.java 1 Nov 2002 08:23:30 -0000       1.7
  @@ -8,6 +8,7 @@
   package org.apache.avalon.phoenix.components.kernel.beanshell;
   
   import java.io.File;
  +import java.util.Map;
   import org.apache.avalon.framework.configuration.Configuration;
   import org.apache.avalon.framework.logger.Logger;
   import org.apache.avalon.phoenix.interfaces.Application;
  @@ -30,7 +31,8 @@
       public void addApplication( final SarMetaData metaData,
                                   final File workDirectory,
                                   final ClassLoader classLoader,
  -                                final Logger logger )
  +                                final Logger logger,
  +                                final Map classloaders )
           throws Exception
       {
           throw new UnsupportedOperationException( "This is not supported for 
non-kernel visitors" );
  
  
  
  1.19      +8 -0      
jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/interfaces/ApplicationContext.java
  
  Index: ApplicationContext.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/interfaces/ApplicationContext.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- ApplicationContext.java   2 Oct 2002 11:25:56 -0000       1.18
  +++ ApplicationContext.java   1 Nov 2002 08:23:30 -0000       1.19
  @@ -61,6 +61,14 @@
       ClassLoader getClassLoader();
   
       /**
  +     * This method grants access to a named ClassLoader. The ClassLoaders
  +     * for an application are declared in the <tt>environment.xml</tt>
  +     * descriptor. See the Specification for details.
  +     */
  +    ClassLoader getClassLoader( String name )
  +        throws Exception;
  +
  +    /**
        * Retrieve a resource from the SAR file. The specified
        * name is relative the root of the archive. So you could
        * use it to retrieve a html page from within sar by loading
  
  
  
  1.16      +4 -9      
jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/interfaces/ClassLoaderManager.java
  
  Index: ClassLoaderManager.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/interfaces/ClassLoaderManager.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- ClassLoaderManager.java   1 Nov 2002 01:15:40 -0000       1.15
  +++ ClassLoaderManager.java   1 Nov 2002 08:23:30 -0000       1.16
  @@ -24,21 +24,16 @@
       String ROLE = ClassLoaderManager.class.getName();
   
       /**
  -     * Create a {@link ClassLoader} for a specific application.
  +     * Create a {@link ClassLoaderSet} for a specific application.
        *
        * @param environment the configuration "environment.xml" for the application
  -     * @param source the source of application. (usually the name of the .sar file
  -     *               or else the same as baseDirectory)
        * @param baseDirectory the base directory of application
        * @param workDirectory the work directory of application
  -     * @param classPath the list of URLs in applications deployment
  -     * @return the ClassLoader created
  +     * @return the ClassLoaderSet created
        * @throws Exception if an error occurs
        */
  -    ClassLoader createClassLoader( Configuration environment,
  -                                   File source,
  +    ClassLoaderSet createClassLoaderSet( Configuration environment,
                                      File baseDirectory,
  -                                   File workDirectory
  -                                   )
  +                                   File workDirectory )
           throws Exception;
   }
  
  
  
  1.17      +3 -2      
jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/interfaces/Kernel.java
  
  Index: Kernel.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/interfaces/Kernel.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- Kernel.java       28 Oct 2002 07:13:34 -0000      1.16
  +++ Kernel.java       1 Nov 2002 08:23:31 -0000       1.17
  @@ -8,7 +8,7 @@
   package org.apache.avalon.phoenix.interfaces;
   
   import java.io.File;
  -import org.apache.avalon.framework.configuration.Configuration;
  +import java.util.Map;
   import org.apache.avalon.framework.logger.Logger;
   import org.apache.avalon.phoenix.metadata.SarMetaData;
   
  @@ -25,7 +25,8 @@
       void addApplication( SarMetaData metaData,
                            File workDirectory,
                            ClassLoader classLoader,
  -                         Logger logger )
  +                         Logger logger,
  +                         Map classloaders )
           throws Exception;
   
       /**
  
  
  
  1.1                  
jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/interfaces/ClassLoaderSet.java
  
  Index: ClassLoaderSet.java
  ===================================================================
  /*
   * Copyright (C) The Apache Software Foundation. All rights reserved.
   *
   * This software is published under the terms of the Apache Software License
   * version 1.1, a copy of which has been included with this distribution in
   * the LICENSE.txt file.
   */
  package org.apache.avalon.phoenix.interfaces;
  
  import java.util.Map;
  
  /**
   * A dodgy class to hold all apps classloaders.
   *
   * @author <a href="mailto:peter at apache.org">Peter Donald</a>
   * @version $Revision: 1.1 $ $Date: 2002/11/01 08:23:31 $
   * @todo Remove me when kernel is reworked!
   */
  public final class ClassLoaderSet
  {
      private final ClassLoader m_defaultClassLoader;
      private final Map m_classLoaders;
  
      public ClassLoaderSet( final ClassLoader defaultClassLoader,
                             final Map classLoaders )
      {
          if( null == defaultClassLoader )
          {
              throw new NullPointerException( "defaultClassLoader" );
          }
          if( null == classLoaders )
          {
              throw new NullPointerException( "classLoaders" );
          }
  
          m_defaultClassLoader = defaultClassLoader;
          m_classLoaders = classLoaders;
      }
  
      public ClassLoader getDefaultClassLoader()
      {
          return m_defaultClassLoader;
      }
  
      public Map getClassLoaders()
      {
          return m_classLoaders;
      }
  }
  
  
  
  1.10      +0 -3      
jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/metadata/SarMetaData.java
  
  Index: SarMetaData.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/metadata/SarMetaData.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- SarMetaData.java  6 Aug 2002 11:57:41 -0000       1.9
  +++ SarMetaData.java  1 Nov 2002 08:23:31 -0000       1.10
  @@ -17,11 +17,8 @@
   public class SarMetaData
   {
       private String m_name;
  -
       private File m_homeDirectory;
  -
       private BlockMetaData[] m_blocks;
  -
       private BlockListenerMetaData[] m_listeners;
   
       public SarMetaData( final String name,
  
  
  
  1.3       +7 -1      
jakarta-avalon-phoenix/src/test/org/apache/avalon/phoenix/components/application/test/MockApplicationContext.java
  
  Index: MockApplicationContext.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-phoenix/src/test/org/apache/avalon/phoenix/components/application/test/MockApplicationContext.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- MockApplicationContext.java       2 Oct 2002 11:25:56 -0000       1.2
  +++ MockApplicationContext.java       1 Nov 2002 08:23:31 -0000       1.3
  @@ -79,6 +79,12 @@
           throw new ConfigurationException( "I can't do that dave!" );
       }
   
  +    public ClassLoader getClassLoader( String name )
  +        throws Exception
  +    {
  +        throw new Exception( "I can't do that dave!" );
  +    }
  +
       public Logger getLogger( String name )
       {
           return m_logger;
  
  
  

--
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