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