donaldp     01/12/01 20:12:51

  Modified:    src/java/org/apache/avalon/phoenix/components/extensions
                        PhoenixPackageRepository.java
               src/java/org/apache/avalon/phoenix/components/manager
                        DefaultManager.java
  Added:       src/java/org/apache/avalon/phoenix/interfaces
                        ExtensionManagerMBean.java
  Log:
  Create a basic management interface for ExtensionManager/Package repository, 
defined, implemented and exported.
  
  Revision  Changes    Path
  1.3       +59 -8     
jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/extensions/PhoenixPackageRepository.java
  
  Index: PhoenixPackageRepository.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/extensions/PhoenixPackageRepository.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- PhoenixPackageRepository.java     2001/11/24 10:33:09     1.2
  +++ PhoenixPackageRepository.java     2001/12/02 04:12:51     1.3
  @@ -8,6 +8,7 @@
   package org.apache.avalon.phoenix.components.extensions;
   
   import java.io.File;
  +import java.io.IOException;
   import org.apache.avalon.excalibur.extension.DefaultPackageRepository;
   import org.apache.avalon.excalibur.util.StringUtil;
   import org.apache.avalon.framework.activity.Disposable;
  @@ -18,20 +19,26 @@
   import org.apache.avalon.framework.parameters.Parameterizable;
   import org.apache.avalon.framework.parameters.Parameters;
   import org.apache.avalon.phoenix.interfaces.PackageRepository;
  +import org.apache.avalon.phoenix.interfaces.ExtensionManagerMBean;
   
   /**
    * PhoenixPackageRepository
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a>
  - * @version $Revision: 1.2 $ $Date: 2001/11/24 10:33:09 $
  + * @version $Revision: 1.3 $ $Date: 2001/12/02 04:12:51 $
    */
   public class PhoenixPackageRepository
       extends DefaultPackageRepository
  -    implements LogEnabled, Parameterizable, Initializable, Disposable, 
PackageRepository
  +    implements LogEnabled, Parameterizable, Initializable, Disposable, 
  +               PackageRepository, ExtensionManagerMBean
   {
       private Logger m_logger;
   
  -    private String m_path;
  +    /**
  +     * An array of path elements. Each element designates a directory
  +     * in which the ExtensionManager should scan for Extensions.
  +     */
  +    private String[] m_path;
   
       public PhoenixPackageRepository()
       {
  @@ -48,22 +55,66 @@
       {
           final String phoenixHome = parameters.getParameter( "phoenix.home" );
           final String defaultExtPath = phoenixHome + File.separator + "ext";
  -        m_path = parameters.getParameter( "phoenix.ext.path", defaultExtPath 
);
  +        final String rawPath = 
  +            parameters.getParameter( "phoenix.ext.path", defaultExtPath );
  +        m_path = StringUtil.split( rawPath, "|" );
  +
  +        final File[] dirs = new File[ m_path.length ];
  +        for( int i = 0; i < dirs.length; i++ )
  +        {
  +            try
  +            {
  +                dirs[ i ] = (new File( m_path[ i ] )).getCanonicalFile();
  +            }
  +            catch( final IOException ioe )
  +            {
  +                throw new ParameterException( "Malformed entry in path '" + 
m_path[ i ] + 
  +                                              ". Unable to determine file 
for entry", ioe );
  +            }
  +        }
  +
  +        for( int i = 0; i < dirs.length; i++ )
  +        {
  +            m_path[ i ] = dirs[ i ].toString();
  +        }       
       }
   
       public void initialize()
           throws Exception
       {
  -        final String[] pathElements = StringUtil.split( m_path, "|" );
  -
  -        final File[] dirs = new File[ pathElements.length ];
  +        final File[] dirs = new File[ m_path.length ];
           for( int i = 0; i < dirs.length; i++ )
           {
  -            dirs[ i ] = new File( pathElements[ i ] );
  +            dirs[ i ] = new File( m_path[ i ] );
           }
   
           setPath( dirs );
   
  +        scanPath();
  +    }
  +
  +    /**
  +     * Retrieve an array of paths where each
  +     * element in array represents a directory
  +     * in which the ExtensionManager will look 
  +     * for Extensions.
  +     *
  +     * @return the list of paths to search in
  +     */
  +    public String[] getPaths()
  +    {
  +        return m_path;
  +    }
  +
  +    /**
  +     * Force the ExtensionManager to rescan the paths
  +     * to discover new Extensions that have been added
  +     * or remove old Extensions that have been removed.
  +     *
  +     */
  +    public void rescanPath()
  +    {
  +        clearCache();
           scanPath();
       }
   
  
  
  
  1.1                  
jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/interfaces/ExtensionManagerMBean.java
  
  Index: ExtensionManagerMBean.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 file.
   */
  package org.apache.avalon.phoenix.interfaces;
  
  /**
   * Management interface to ExtensionManager.
   *
   * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a>
   * @version $Revision: 1.1 $ $Date: 2001/12/02 04:12:51 $
   */
  public interface ExtensionManagerMBean
  {
      String ROLE = 
"org.apache.avalon.phoenix.interfaces.ExtensionManagerMBean";
  
      /**
       * Retrieve an array of paths where each
       * element in array represents a directory
       * in which the ExtensionManager will look 
       * for Extensions.
       *
       * @return the list of paths to search in
       */
      String[] getPaths();
  
      /**
       * Force the ExtensionManager to rescan the paths
       * to discover new Extensions that have been added
       * or remove old Extensions that have been removed.
       *
       */
      void rescanPath();
  
      //Extension[] getExtension();
  }
  
  
  
  1.7       +5 -0      
jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/manager/DefaultManager.java
  
  Index: DefaultManager.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/manager/DefaultManager.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- DefaultManager.java       2001/12/02 03:49:57     1.6
  +++ DefaultManager.java       2001/12/02 04:12:51     1.7
  @@ -31,6 +31,8 @@
   import org.apache.avalon.phoenix.interfaces.Deployer;
   import org.apache.avalon.phoenix.interfaces.Embeddor;
   import org.apache.avalon.phoenix.interfaces.Kernel;
  +import org.apache.avalon.phoenix.interfaces.PackageRepository;
  +import org.apache.avalon.phoenix.interfaces.ExtensionManagerMBean;
   import org.apache.avalon.phoenix.interfaces.LogManager;
   import org.apache.avalon.phoenix.interfaces.ManagerException;
   import org.apache.jmx.adaptor.RMIAdaptorImpl;
  @@ -70,6 +72,7 @@
       private Kernel m_kernel;
       private ConfigurationRepository m_repository;
       private ClassLoaderManager m_classLoaderManager;
  +    private PackageRepository m_extensionManager;
   
       public void parameterize( final Parameters parameters )
           throws ParameterException
  @@ -92,6 +95,7 @@
           m_repository = (ConfigurationRepository)componentManager.lookup( 
ConfigurationRepository.ROLE );
           m_classLoaderManager = (ClassLoaderManager)componentManager.lookup( 
ClassLoaderManager.ROLE );
           m_logManager = (LogManager)componentManager.lookup( LogManager.ROLE 
);
  +        m_extensionManager = (PackageRepository)componentManager.lookup( 
PackageRepository.ROLE );
       }
   
       public void initialize()
  @@ -117,6 +121,7 @@
   
           //TODO: SystemManager itself aswell???
           register( "Kernel", m_kernel );
  +        register( "ExtensionManager", m_extensionManager, new Class[]{ 
ExtensionManagerMBean.class } );
           register( "Embeddor", m_embeddor, new Class[]{ EmbeddorMBean.class } 
);
           register( "Deployer", m_deployer, new Class[]{ Deployer.class } );
           register( "LogManager", m_logManager );
  
  
  

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

Reply via email to