donaldp 01/03/14 20:35:08 Modified: proposal/4.0/src/java/org/apache/aut/security AbstractPolicy.java proposal/4.0/src/java/org/apache/avalon/camelot AbstractCamelotDeployer.java AbstractContainer.java AbstractDeployer.java AbstractZipDeployer.java AvalonState.java CamelotUtil.java DefaultFactory.java DefaultLoader.java DefaultLocator.java DefaultLocatorRegistry.java DefaultRegistry.java DeployerUtil.java proposal/4.0/src/java/org/apache/avalon/component DefaultComponentManager.java DefaultComponentSelector.java proposal/4.0/src/java/org/apache/avalon/configuration AbstractConfiguration.java DefaultConfiguration.java DefaultConfigurationBuilder.java SAXConfigurationHandler.java proposal/4.0/src/java/org/apache/avalon/context DefaultContext.java proposal/4.0/src/java/org/apache/avalon/datasource DataSourceComponent.java J2eeDataSource.java JdbcConnection.java JdbcConnectionPool.java JdbcDataSource.java proposal/4.0/src/java/org/apache/avalon/logger AbstractLoggable.java proposal/4.0/src/java/org/apache/avalon/pool AbstractPool.java DefaultObjectFactory.java DefaultPool.java ThreadSafePool.java proposal/4.0/src/java/org/apache/avalon/thread DefaultThreadPool.java WorkerThread.java Added: proposal/4.0/src/java/org/apache/framework Modifiable.java Recyclable.java SingleThreaded.java ThreadSafe.java proposal/4.0/src/java/org/apache/framework/component Component.java ComponentException.java ComponentManager.java ComponentSelector.java Composer.java Recomposer.java proposal/4.0/src/java/org/apache/framework/configuration Configurable.java Configuration.java ConfigurationBuilder.java ConfigurationException.java Parameters.java Reconfigurable.java proposal/4.0/src/java/org/apache/framework/container Container.java ContainerException.java Deployer.java DeploymentException.java Entry.java Factory.java FactoryException.java Loader.java Locator.java LocatorRegistry.java MetaInfo.java Registry.java RegistryException.java State.java proposal/4.0/src/java/org/apache/framework/context Context.java Contextualizable.java Recontextualizable.java Resolvable.java proposal/4.0/src/java/org/apache/framework/lifecycle Disposable.java Initializable.java Resumable.java Startable.java Stoppable.java Suspendable.java proposal/4.0/src/java/org/apache/framework/logger Loggable.java proposal/4.0/src/java/org/apache/framework/pool ObjectFactory.java Pool.java PoolController.java Poolable.java proposal/4.0/src/java/org/apache/framework/processor Matcher.java Pipeline.java ProcessorPipeline.java ProcessorTree.java Stage.java proposal/4.0/src/java/org/apache/framework/thread ThreadContext.java ThreadManager.java ThreadPool.java Removed: proposal/4.0/src/java/org/apache/avalon Modifiable.java Recyclable.java SingleThreaded.java ThreadSafe.java changes.txt proposal/4.0/src/java/org/apache/avalon/component Component.java ComponentException.java ComponentManager.java ComponentSelector.java Composer.java Recomposer.java proposal/4.0/src/java/org/apache/avalon/configuration Configurable.java Configuration.java ConfigurationBuilder.java ConfigurationException.java Parameters.java Reconfigurable.java proposal/4.0/src/java/org/apache/avalon/container Container.java ContainerException.java Deployer.java DeploymentException.java Entry.java Factory.java FactoryException.java Loader.java Locator.java LocatorRegistry.java MetaInfo.java Registry.java RegistryException.java State.java proposal/4.0/src/java/org/apache/avalon/context Context.java Contextualizable.java Recontextualizable.java Resolvable.java proposal/4.0/src/java/org/apache/avalon/lifecycle Disposable.java Initializable.java Resumable.java Startable.java Stoppable.java Suspendable.java proposal/4.0/src/java/org/apache/avalon/logger Loggable.java proposal/4.0/src/java/org/apache/avalon/pool ObjectFactory.java Pool.java PoolController.java Poolable.java proposal/4.0/src/java/org/apache/avalon/processor Matcher.java Pipeline.java ProcessorPipeline.java ProcessorTree.java Stage.java proposal/4.0/src/java/org/apache/avalon/thread ThreadContext.java ThreadManager.java ThreadPool.java Log: Migrated interface classes to org.apache.framework - while implementation classes remain in org.apache.avalon Revision Changes Path 1.3 +2 -2 jakarta-avalon/proposal/4.0/src/java/org/apache/aut/security/AbstractPolicy.java Index: AbstractPolicy.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/aut/security/AbstractPolicy.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- AbstractPolicy.java 2001/03/15 03:09:30 1.2 +++ AbstractPolicy.java 2001/03/15 04:34:44 1.3 @@ -23,8 +23,8 @@ import java.util.Enumeration; import java.util.PropertyPermission; import org.apache.aut.io.FileUtil; -import org.apache.avalon.component.Component; -import org.apache.avalon.logger.Loggable; +import org.apache.framework.component.Component; +import org.apache.framework.logger.Loggable; import org.apache.log.Logger; /** 1.4 +14 -14 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/AbstractCamelotDeployer.java Index: AbstractCamelotDeployer.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/AbstractCamelotDeployer.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- AbstractCamelotDeployer.java 2001/03/15 03:10:12 1.3 +++ AbstractCamelotDeployer.java 2001/03/15 04:34:44 1.4 @@ -8,17 +8,17 @@ package org.apache.avalon.camelot; import java.net.URL; -import org.apache.avalon.component.ComponentManager; -import org.apache.avalon.component.ComponentException; -import org.apache.avalon.component.Composer; -import org.apache.avalon.container.DeploymentException; -import org.apache.avalon.container.ContainerException; -import org.apache.avalon.container.RegistryException; -import org.apache.avalon.container.Container; -import org.apache.avalon.container.Registry; -import org.apache.avalon.container.LocatorRegistry; -import org.apache.avalon.container.Entry; -import org.apache.avalon.container.MetaInfo; +import org.apache.framework.component.ComponentManager; +import org.apache.framework.component.ComponentException; +import org.apache.framework.component.Composer; +import org.apache.framework.container.DeploymentException; +import org.apache.framework.container.ContainerException; +import org.apache.framework.container.RegistryException; +import org.apache.framework.container.Container; +import org.apache.framework.container.Registry; +import org.apache.framework.container.LocatorRegistry; +import org.apache.framework.container.Entry; +import org.apache.framework.container.MetaInfo; /** * This class deploys resources from camelot based system. @@ -48,19 +48,19 @@ if( m_deployToLocatorRegistry ) { m_locatorRegistry = (LocatorRegistry)componentManager. - lookup( "org.apache.avalon.container.LocatorRegistry" ); + lookup( "org.apache.framework.container.LocatorRegistry" ); } if( m_deployToInfoRegistry ) { m_infoRegistry = (Registry)componentManager. - lookup( "org.apache.avalon.container.Registry" ); + lookup( "org.apache.framework.container.Registry" ); } if( m_deployToContainer ) { m_container = (Container)componentManager. - lookup( "org.apache.avalon.container.Container" ); + lookup( "org.apache.framework.container.Container" ); } } 1.4 +4 -4 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/AbstractContainer.java Index: AbstractContainer.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/AbstractContainer.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- AbstractContainer.java 2001/03/15 03:10:12 1.3 +++ AbstractContainer.java 2001/03/15 04:34:44 1.4 @@ -9,10 +9,10 @@ import java.util.HashMap; import java.util.Iterator; -import org.apache.avalon.component.Component; -import org.apache.avalon.container.Container; -import org.apache.avalon.container.ContainerException; -import org.apache.avalon.container.Entry; +import org.apache.framework.component.Component; +import org.apache.framework.container.Container; +import org.apache.framework.container.ContainerException; +import org.apache.framework.container.Entry; import org.apache.avalon.logger.AbstractLoggable; /** 1.4 +3 -5 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/AbstractDeployer.java Index: AbstractDeployer.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/AbstractDeployer.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- AbstractDeployer.java 2001/03/15 03:10:13 1.3 +++ AbstractDeployer.java 2001/03/15 04:34:44 1.4 @@ -15,13 +15,11 @@ import java.net.URL; import java.util.HashMap; import org.apache.avalon.logger.AbstractLoggable; -import org.apache.avalon.component.Component; -import org.apache.avalon.component.ComponentNotFoundException; +import org.apache.framework.component.Component; import org.apache.aut.io.FileUtil; import org.apache.log.Logger; -import org.apache.avalon.container.Deployer; -import org.apache.avalon.container.DeploymentException; - +import org.apache.framework.container.Deployer; +import org.apache.framework.container.DeploymentException; /** * A Deployer is responsible for taking a URL (ie a jar/war/ear) and deploying 1.3 +2 -3 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/AbstractZipDeployer.java Index: AbstractZipDeployer.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/AbstractZipDeployer.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- AbstractZipDeployer.java 2001/02/27 11:02:33 1.2 +++ AbstractZipDeployer.java 2001/03/15 04:34:44 1.3 @@ -12,9 +12,8 @@ import java.net.MalformedURLException; import java.net.URL; import java.util.zip.ZipFile; -import org.apache.avalon.component.Composer; -import org.apache.avalon.container.DeploymentException; - +import org.apache.framework.component.Composer; +import org.apache.framework.container.DeploymentException; /** * This class deploys a .zip file into a registry. 1.3 +1 -2 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/AvalonState.java Index: AvalonState.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/AvalonState.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- AvalonState.java 2001/02/27 11:02:34 1.2 +++ AvalonState.java 2001/03/15 04:34:44 1.3 @@ -7,8 +7,7 @@ */ package org.apache.avalon.camelot; -import org.apache.avalon.container.State; - +import org.apache.framework.container.State; public final class AvalonState extends State 1.3 +3 -4 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/CamelotUtil.java Index: CamelotUtil.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/CamelotUtil.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- CamelotUtil.java 2001/02/27 11:02:35 1.2 +++ CamelotUtil.java 2001/03/15 04:34:44 1.3 @@ -11,11 +11,10 @@ import java.io.IOException; import java.net.MalformedURLException; import java.util.Iterator; -import org.apache.avalon.component.Component; import org.apache.aut.io.ExtensionFileFilter; -import org.apache.avalon.container.Deployer; -import org.apache.avalon.container.DeploymentException; - +import org.apache.framework.component.Component; +import org.apache.framework.container.Deployer; +import org.apache.framework.container.DeploymentException; /** * Utility methods for Camelot related facilities. 1.4 +5 -7 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/DefaultFactory.java Index: DefaultFactory.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/DefaultFactory.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- DefaultFactory.java 2001/03/15 03:10:13 1.3 +++ DefaultFactory.java 2001/03/15 04:34:45 1.4 @@ -9,14 +9,12 @@ import java.net.URL; import java.util.HashMap; -import org.apache.avalon.component.Component; -import org.apache.avalon.container.Factory; -import org.apache.avalon.container.FactoryException; -import org.apache.avalon.container.Loader; -import org.apache.avalon.container.Locator; import org.apache.avalon.logger.AbstractLoggable; - - +import org.apache.framework.component.Component; +import org.apache.framework.container.Factory; +import org.apache.framework.container.FactoryException; +import org.apache.framework.container.Loader; +import org.apache.framework.container.Locator; /** * This is the component that creates the components. 1.3 +4 -5 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/DefaultLoader.java Index: DefaultLoader.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/DefaultLoader.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- DefaultLoader.java 2001/02/27 11:02:36 1.2 +++ DefaultLoader.java 2001/03/15 04:34:45 1.3 @@ -9,12 +9,11 @@ import java.net.URL; import java.net.URLClassLoader; -import org.apache.aut.ObjectUtil; import org.apache.aut.ExceptionUtil; -import org.apache.avalon.component.Component; -import org.apache.avalon.container.FactoryException; -import org.apache.avalon.container.Loader; - +import org.apache.aut.ObjectUtil; +import org.apache.framework.component.Component; +import org.apache.framework.container.FactoryException; +import org.apache.framework.container.Loader; /** * Class used to load resources from a source. 1.3 +2 -3 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/DefaultLocator.java Index: DefaultLocator.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/DefaultLocator.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- DefaultLocator.java 2001/02/27 11:02:37 1.2 +++ DefaultLocator.java 2001/03/15 04:34:45 1.3 @@ -8,10 +8,9 @@ package org.apache.avalon.camelot; import java.net.URL; -import org.apache.avalon.component.Component; -import org.apache.avalon.container.Locator; +import org.apache.framework.component.Component; +import org.apache.framework.container.Locator; - /** * This contains information required to locate a component. * 1.3 +4 -4 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/DefaultLocatorRegistry.java Index: DefaultLocatorRegistry.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/DefaultLocatorRegistry.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- DefaultLocatorRegistry.java 2001/02/27 11:02:37 1.2 +++ DefaultLocatorRegistry.java 2001/03/15 04:34:45 1.3 @@ -7,10 +7,10 @@ */ package org.apache.avalon.camelot; -import org.apache.avalon.component.Component; -import org.apache.avalon.container.Locator; -import org.apache.avalon.container.LocatorRegistry; -import org.apache.avalon.container.RegistryException; +import org.apache.framework.component.Component; +import org.apache.framework.container.Locator; +import org.apache.framework.container.LocatorRegistry; +import org.apache.framework.container.RegistryException; /** * Represents a Registry of locators. 1.3 +4 -4 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/DefaultRegistry.java Index: DefaultRegistry.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/DefaultRegistry.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- DefaultRegistry.java 2001/02/27 11:02:38 1.2 +++ DefaultRegistry.java 2001/03/15 04:34:45 1.3 @@ -9,10 +9,10 @@ import java.util.HashMap; import java.util.Iterator; -import org.apache.avalon.component.Component; -import org.apache.avalon.container.Registry; -import org.apache.avalon.container.RegistryException; -import org.apache.avalon.container.MetaInfo; +import org.apache.framework.component.Component; +import org.apache.framework.container.Registry; +import org.apache.framework.container.RegistryException; +import org.apache.framework.container.MetaInfo; /** 1.3 +5 -8 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/DeployerUtil.java Index: DeployerUtil.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/DeployerUtil.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- DeployerUtil.java 2001/02/27 11:02:38 1.2 +++ DeployerUtil.java 2001/03/15 04:34:45 1.3 @@ -18,16 +18,13 @@ import java.util.zip.ZipEntry; import java.util.zip.ZipException; import java.util.zip.ZipFile; -import org.apache.avalon.component.ComponentManager; -import org.apache.avalon.component.ComponentNotAccessibleException; -import org.apache.avalon.component.ComponentNotFoundException; -import org.apache.avalon.component.Composer; -import org.apache.avalon.configuration.Configuration; -import org.apache.avalon.configuration.ConfigurationException; import org.apache.avalon.configuration.DefaultConfigurationBuilder; +import org.apache.framework.component.ComponentManager; +import org.apache.framework.component.Composer; +import org.apache.framework.configuration.Configuration; +import org.apache.framework.configuration.ConfigurationException; +import org.apache.framework.container.DeploymentException; import org.xml.sax.SAXException; -import org.apache.avalon.container.DeploymentException; - /** * This class deploys resources from camelot based system. 1.3 +3 -0 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/component/DefaultComponentManager.java Index: DefaultComponentManager.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/component/DefaultComponentManager.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- DefaultComponentManager.java 2001/03/15 03:10:15 1.2 +++ DefaultComponentManager.java 2001/03/15 04:34:46 1.3 @@ -9,6 +9,9 @@ import java.util.HashMap; import java.util.Iterator; +import org.apache.framework.component.Component; +import org.apache.framework.component.ComponentException; +import org.apache.framework.component.ComponentManager; /** * This class is a static implementation of a ComponentManager. Allow ineritance 1.3 +3 -0 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/component/DefaultComponentSelector.java Index: DefaultComponentSelector.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/component/DefaultComponentSelector.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- DefaultComponentSelector.java 2001/03/15 03:10:15 1.2 +++ DefaultComponentSelector.java 2001/03/15 04:34:46 1.3 @@ -8,6 +8,9 @@ package org.apache.avalon.component; import java.util.HashMap; +import org.apache.framework.component.Component; +import org.apache.framework.component.ComponentException; +import org.apache.framework.component.ComponentSelector; /** * This is the default implementation of the ComponentSelector 1.2 +3 -1 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/configuration/AbstractConfiguration.java Index: AbstractConfiguration.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/configuration/AbstractConfiguration.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- AbstractConfiguration.java 2001/02/25 10:45:44 1.1 +++ AbstractConfiguration.java 2001/03/15 04:34:47 1.2 @@ -8,6 +8,8 @@ package org.apache.avalon.configuration; import java.util.Iterator; +import org.apache.framework.configuration.Configuration; +import org.apache.framework.configuration.ConfigurationException; /** * This is an abstract <code>Configuration</code> implementation that deals @@ -17,7 +19,7 @@ * @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a> * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> * @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a> - * @version CVS $Revision: 1.1 $ $Date: 2001/02/25 10:45:44 $ + * @version CVS $Revision: 1.2 $ $Date: 2001/03/15 04:34:47 $ * @deprecated This has been deprecated in favour of configuration interface in org.apache.avalon.configuration interface */ public abstract class AbstractConfiguration 1.2 +2 -0 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/configuration/DefaultConfiguration.java Index: DefaultConfiguration.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/configuration/DefaultConfiguration.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- DefaultConfiguration.java 2001/02/25 10:45:44 1.1 +++ DefaultConfiguration.java 2001/03/15 04:34:47 1.2 @@ -10,6 +10,8 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; +import org.apache.framework.configuration.Configuration; +import org.apache.framework.configuration.ConfigurationException; /** * This is the default <code>Configuration</code> implementation. 1.2 +3 -0 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/configuration/DefaultConfigurationBuilder.java Index: DefaultConfigurationBuilder.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/configuration/DefaultConfigurationBuilder.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- DefaultConfigurationBuilder.java 2001/02/25 10:45:44 1.1 +++ DefaultConfigurationBuilder.java 2001/03/15 04:34:48 1.2 @@ -11,6 +11,9 @@ import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; +import org.apache.framework.configuration.Configuration; +import org.apache.framework.configuration.ConfigurationBuilder; +import org.apache.framework.configuration.ConfigurationException; import org.xml.sax.Attributes; import org.xml.sax.InputSource; import org.xml.sax.Locator; 1.2 +1 -0 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/configuration/SAXConfigurationHandler.java Index: SAXConfigurationHandler.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/configuration/SAXConfigurationHandler.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- SAXConfigurationHandler.java 2001/02/25 10:45:44 1.1 +++ SAXConfigurationHandler.java 2001/03/15 04:34:48 1.2 @@ -9,6 +9,7 @@ import java.io.IOException; import java.util.ArrayList; +import org.apache.framework.configuration.Configuration; import org.xml.sax.Attributes; import org.xml.sax.ErrorHandler; import org.xml.sax.Locator; 1.2 +1 -0 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/context/DefaultContext.java Index: DefaultContext.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/context/DefaultContext.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- DefaultContext.java 2001/02/25 10:45:46 1.1 +++ DefaultContext.java 2001/03/15 04:34:49 1.2 @@ -9,6 +9,7 @@ import java.util.Hashtable; import java.util.Map; +import org.apache.framework.context.Context; /** * Default implementation of Context. 1.2 +4 -4 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/datasource/DataSourceComponent.java Index: DataSourceComponent.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/datasource/DataSourceComponent.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- DataSourceComponent.java 2001/02/25 10:45:46 1.1 +++ DataSourceComponent.java 2001/03/15 04:34:50 1.2 @@ -9,15 +9,15 @@ import java.sql.Connection; import java.sql.SQLException; -import org.apache.avalon.component.Component; -import org.apache.avalon.configuration.Configurable; -import org.apache.avalon.ThreadSafe; +import org.apache.framework.component.Component; +import org.apache.framework.configuration.Configurable; +import org.apache.framework.ThreadSafe; /** * The standard interface for DataSources in Avalon. * * @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a> - * @version CVS $Revision: 1.1 $ $Date: 2001/02/25 10:45:46 $ + * @version CVS $Revision: 1.2 $ $Date: 2001/03/15 04:34:50 $ */ public interface DataSourceComponent extends Component, Configurable, ThreadSafe 1.2 +4 -4 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/datasource/J2eeDataSource.java Index: J2eeDataSource.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/datasource/J2eeDataSource.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- J2eeDataSource.java 2001/02/25 10:45:46 1.1 +++ J2eeDataSource.java 2001/03/15 04:34:50 1.2 @@ -13,9 +13,9 @@ import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; -import org.apache.avalon.configuration.Configuration; -import org.apache.avalon.configuration.ConfigurationException; -import org.apache.avalon.AbstractLoggable; +import org.apache.framework.configuration.Configuration; +import org.apache.framework.configuration.ConfigurationException; +import org.apache.avalon.logger.AbstractLoggable; /** * The J2EE implementation for DataSources in Cocoon. This uses the @@ -23,7 +23,7 @@ * J2EE container pools the datasources properly. * * @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a> - * @version CVS $Revision: 1.1 $ $Date: 2001/02/25 10:45:46 $ + * @version CVS $Revision: 1.2 $ $Date: 2001/03/15 04:34:50 $ */ public class J2eeDataSource extends AbstractLoggable 1.4 +4 -4 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/datasource/JdbcConnection.java Index: JdbcConnection.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/datasource/JdbcConnection.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- JdbcConnection.java 2001/03/15 03:10:17 1.3 +++ JdbcConnection.java 2001/03/15 04:34:50 1.4 @@ -15,10 +15,10 @@ import java.sql.SQLWarning; import java.sql.Statement; import java.util.Map; -import org.apache.avalon.Recyclable; import org.apache.avalon.logger.AbstractLoggable; -import org.apache.avalon.pool.Pool; -import org.apache.avalon.pool.Poolable; +import org.apache.framework.Recyclable; +import org.apache.framework.pool.Pool; +import org.apache.framework.pool.Poolable; /** * The Connection object used in conjunction with the JdbcDataSource @@ -29,7 +29,7 @@ * total number of Connection objects that are created. * * @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a> - * @version CVS $Revision: 1.3 $ $Date: 2001/03/15 03:10:17 $ + * @version CVS $Revision: 1.4 $ $Date: 2001/03/15 04:34:50 $ */ public class JdbcConnection extends AbstractLoggable 1.5 +6 -6 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/datasource/JdbcConnectionPool.java Index: JdbcConnectionPool.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/datasource/JdbcConnectionPool.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- JdbcConnectionPool.java 2001/03/15 03:10:17 1.4 +++ JdbcConnectionPool.java 2001/03/15 04:34:50 1.5 @@ -12,19 +12,19 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.List; -import org.apache.avalon.Recyclable; -import org.apache.avalon.lifecycle.Disposable; -import org.apache.avalon.lifecycle.Initializable; import org.apache.avalon.logger.AbstractLoggable; -import org.apache.avalon.pool.Pool; -import org.apache.avalon.pool.Poolable; +import org.apache.framework.Recyclable; +import org.apache.framework.lifecycle.Disposable; +import org.apache.framework.lifecycle.Initializable; +import org.apache.framework.pool.Pool; +import org.apache.framework.pool.Poolable; /** * The Pool implementation for JdbcConnections. It uses a background * thread to manage the number of SQL Connections. * * @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a> - * @version CVS $Revision: 1.4 $ $Date: 2001/03/15 03:10:17 $ + * @version CVS $Revision: 1.5 $ $Date: 2001/03/15 04:34:50 $ */ public class JdbcConnectionPool extends AbstractLoggable 1.4 +4 -4 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/datasource/JdbcDataSource.java Index: JdbcDataSource.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/datasource/JdbcDataSource.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- JdbcDataSource.java 2001/03/15 03:10:17 1.3 +++ JdbcDataSource.java 2001/03/15 04:34:50 1.4 @@ -9,9 +9,9 @@ import java.sql.Connection; import java.sql.SQLException; -import org.apache.avalon.configuration.Configuration; -import org.apache.avalon.configuration.ConfigurationException; -import org.apache.avalon.lifecycle.Disposable; +import org.apache.framework.configuration.Configuration; +import org.apache.framework.configuration.ConfigurationException; +import org.apache.framework.lifecycle.Disposable; import org.apache.avalon.logger.AbstractLoggable; /** @@ -20,7 +20,7 @@ * <code>java.sql.DriverManager</code>. * * @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a> - * @version CVS $Revision: 1.3 $ $Date: 2001/03/15 03:10:17 $ + * @version CVS $Revision: 1.4 $ $Date: 2001/03/15 04:34:50 $ */ public class JdbcDataSource extends AbstractLoggable 1.2 +2 -1 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/logger/AbstractLoggable.java Index: AbstractLoggable.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/logger/AbstractLoggable.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- AbstractLoggable.java 2001/03/15 03:10:52 1.1 +++ AbstractLoggable.java 2001/03/15 04:34:54 1.2 @@ -7,7 +7,8 @@ */ package org.apache.avalon.logger; -import org.apache.avalon.component.Component; +import org.apache.framework.component.Component; +import org.apache.framework.logger.Loggable; import org.apache.log.Logger; /** 1.3 +6 -2 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/pool/AbstractPool.java Index: AbstractPool.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/pool/AbstractPool.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- AbstractPool.java 2001/02/26 06:05:57 1.2 +++ AbstractPool.java 2001/03/15 04:34:56 1.3 @@ -7,8 +7,12 @@ */ package org.apache.avalon.pool; -import org.apache.avalon.lifecycle.Initializable; -import org.apache.avalon.Recyclable; +import org.apache.framework.Recyclable; +import org.apache.framework.lifecycle.Initializable; +import org.apache.framework.pool.ObjectFactory; +import org.apache.framework.pool.Pool; +import org.apache.framework.pool.PoolController; +import org.apache.framework.pool.Poolable; /** * This is an <code>Pool</code> that caches Poolable objects for reuse. 1.2 +2 -1 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/pool/DefaultObjectFactory.java Index: DefaultObjectFactory.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/pool/DefaultObjectFactory.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- DefaultObjectFactory.java 2001/02/26 00:38:20 1.1 +++ DefaultObjectFactory.java 2001/03/15 04:34:56 1.2 @@ -8,7 +8,8 @@ package org.apache.avalon.pool; import java.lang.reflect.Constructor; -import org.apache.avalon.Recyclable; +import org.apache.framework.pool.ObjectFactory; +import org.apache.framework.pool.Poolable; /** * This is the default for factory that is used to create objects for Pool. 1.2 +2 -1 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/pool/DefaultPool.java Index: DefaultPool.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/pool/DefaultPool.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- DefaultPool.java 2001/02/26 00:38:20 1.1 +++ DefaultPool.java 2001/03/15 04:34:56 1.2 @@ -7,7 +7,8 @@ */ package org.apache.avalon.pool; -import org.apache.avalon.Recyclable; +import org.apache.framework.pool.PoolController; +import org.apache.framework.pool.ObjectFactory; /** * This is an <code>Pool</code> that caches Poolable objects for reuse. 1.2 +4 -2 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/pool/ThreadSafePool.java Index: ThreadSafePool.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/pool/ThreadSafePool.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- ThreadSafePool.java 2001/02/26 00:38:20 1.1 +++ ThreadSafePool.java 2001/03/15 04:34:58 1.2 @@ -7,8 +7,10 @@ */ package org.apache.avalon.pool; -import org.apache.avalon.Recyclable; -import org.apache.avalon.ThreadSafe; +import org.apache.framework.ThreadSafe; +import org.apache.framework.pool.ObjectFactory; +import org.apache.framework.pool.PoolController; +import org.apache.framework.pool.Poolable; /** * This is a implementation of <code>Pool</code> that is thread safe. 1.2 +4 -3 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/thread/DefaultThreadPool.java Index: DefaultThreadPool.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/thread/DefaultThreadPool.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- DefaultThreadPool.java 2001/03/15 03:55:36 1.1 +++ DefaultThreadPool.java 2001/03/15 04:34:59 1.2 @@ -7,10 +7,11 @@ */ package org.apache.avalon.thread; -import org.apache.avalon.logger.Loggable; -import org.apache.avalon.pool.Poolable; -import org.apache.avalon.pool.ObjectFactory; +import org.apache.framework.logger.Loggable; +import org.apache.framework.pool.ObjectFactory; +import org.apache.framework.pool.Poolable; import org.apache.avalon.pool.ThreadSafePool; +import org.apache.framework.thread.ThreadPool; import org.apache.log.Logger; /** 1.5 +4 -2 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/thread/WorkerThread.java Index: WorkerThread.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/thread/WorkerThread.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- WorkerThread.java 2001/03/15 03:55:36 1.4 +++ WorkerThread.java 2001/03/15 04:34:59 1.5 @@ -7,9 +7,11 @@ */ package org.apache.avalon.thread; -import org.apache.avalon.logger.Loggable; -import org.apache.avalon.pool.Poolable; import org.apache.avalon.pool.ThreadSafePool; +import org.apache.framework.logger.Loggable; +import org.apache.framework.pool.Poolable; +import org.apache.framework.thread.ThreadPool; +import org.apache.framework.thread.ThreadContext; import org.apache.log.Logger; /** 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/Modifiable.java Index: Modifiable.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.framework; /** * This interface is implemented by those classes that change * their behavior/results over time (non-ergodic). * * @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a> * @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a> */ public interface Modifiable { /** * Queries the class to estimate its ergodic period termination. * <br> * This method is called to ensure the validity of a cached product. It * is the class responsibility to provide the fastest possible * implementation of this method or, whether this is not possible and the * costs of the change evaluation is comparable to the production costs, * to return <b>true</b> directly with no further delay, thus reducing * the evaluation overhead to a minimum. * * @return <b>true</b> if the class ergodic period is over and the class * would behave differently if processed again, <b>false</b> if the * resource is still ergodic so that it doesn't require * reprocessing. */ boolean modifiedSince( long date ); } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/Recyclable.java Index: Recyclable.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.framework; /** * This interface standardizes the behaviour of a recyclable object. * A recyclable object is defined as an object that can be used to * encapsulate another object without being altered by its content. * Therefore, a recyclable object may be recycled and reused many times. * * This is helpful in cases where recyclable objects are continously * created and destroied, causing a much greater amount of garbage to * be collected by the JVM garbage collector. By making it recyclable, * it is possible to reduce the GC execution time thus incrementing the * overall performance of a process and decrementing the chance of * memory overflow. * * Every implementation must provide their own method to allow this * recyclable object to be reused by setting its content. * * @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a> * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface Recyclable { /** * This method should be implemented to remove all costly resources * in object. These resources can be object references, database connections, * threads etc. What is categorised as "costly" resources is determined on * a case by case analysis. */ void recycle(); } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/SingleThreaded.java Index: SingleThreaded.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.framework; /** * A interface to mark a component as not ThreadSafe. * * NB: It was a deliberat e choice not to extend Component. This will have to * be reassed once we see it in action. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface SingleThreaded { } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/ThreadSafe.java Index: ThreadSafe.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.framework; /** * A interface to mark a component as ThreadSafe or reentrant. * * NB: It was a deliberat e choice not to extend Component. This will have to * be reassed once we see it in action. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface ThreadSafe { } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/component/Component.java Index: Component.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.framework.component; /** * This interface identifies classes that can be used as <code>Components</code> * by a <code>Composer</code>. * <br /> * * The contract surrounding the <code>Component</code> is that it is * used, but not a user. When a class implements this interface, it * is stating that other entities may use that class. As part of the * contract with the system, a <code>Component</code> must always * declare an empty constructor. * <br /> * * A <code>Component</code> is the basic building block of the Avalon. * When a class implements this interface, it allows itself to be * managed by a <code>ComponentManager</code> and used by an outside * element called a <code>Composer</code>. The <code>Composer</code> * must know what type of <code>Component</code> it is accessing, so * it will re-cast the <code>Component</code> into the type it needs. * <br /> * * In order for a <code>Component</code> to be useful you must either * extend this interface, or implement this interface in conjunction * with one that actually has methods. The new interface is the contract * with the <code>Composer</code> that this is a particular type of * component, and as such it can perform those functions on that type * of component. * <br /> * * For example, we want a component that performs a logging function * so we extend the <code>Component</code> to be a <code>LoggingComponent</code>. * * <pre> * interface LoggingComponent extends Component { * log(String message); * } * </pre> * * Now all <code>Composer</code>s that want to use this type of component, * will re-cast the <code>Component</code> into a <code>LoggingComponent</code> * and the <code>Composer</code> will be able to use the <code>log</code> * method. * * @author <a href="mailto:[EMAIL PROTECTED]">Federico Barbieri</a> * @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a> * @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a> * @author <a href="mailto:[EMAIL PROTECTED]>Berin Loritsch</a> */ public interface Component { } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/component/ComponentException.java Index: ComponentException.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.framework.component; import org.apache.aut.CascadingException; /** * This base class of exceptions thrown by ComponentManager. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> * @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a> * @author <a href="mailto:[EMAIL PROTECTED]">Federico Barbieri</a> * @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a> */ public class ComponentException extends CascadingException { public ComponentException( final String message ) { this( message, null ); } /** * Construct a new <code>ComponentException</code> instance. */ public ComponentException( final String message, final Throwable throwable ) { super( message, throwable ); } } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/component/ComponentManager.java Index: ComponentManager.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.framework.component; /** * A <code>ComponentManager</code> selects <code>Component</code>s based on a * role. The contract is that all the <code>Component</code>s implement the * differing roles and there is one <code>Component</code> per role. If you * need to select on of many <code>Component</code>s that implement the same * role, then you need to use a <code>ComponentSelector</code>. Roles are the * full interface name. * * A role is better understood by the analogy of a play. There are many * different roles in a script. Any actor or actress can play any given part * and you get the same results (phrases said, movements made, etc.). The exact * nuances of the performance is different. * * Below is a list of things that might be considered the different roles: * * <ul> * <li> InputAdaptor and OutputAdaptor</li> * <li> Store and Spool</li> * </ul> * * The <code>ComponentManager</code> does not specify the methodology of * getting the <code>Component</code>, merely the interface used to get it. * Therefore the <code>ComponentManager</code> can be implemented with a * factory pattern, an object pool, or a simple Hashtable. * * @see org.apache.avalon.Component * @see org.apache.avalon.Composer * @see org.apache.avalon.ComponentSelector * * @author <a href="mailto:[EMAIL PROTECTED]">Federico Barbieri</a> * @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a> * @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a> * @author <a href="mailto:[EMAIL PROTECTED]>Berin Loritsch</a> */ public interface ComponentManager { /** * Get the <code>Component</code> associated with the given role. For * instance, If the <code>ComponentManager</code> had a * <code>LoggerComponent</code> stored and referenced by role, I would use * the following call: * <pre> * try { * LoggerComponent log; * log = (LoggerComponent) manager.lookup("org.apache.avalon.blocks.Logger"); * } catch (...) { * ... * } * </pre> * * @param name The role name of the <code>Component</code> to retrieve. * * @exception ComponentException on error */ Component lookup( String role ) throws ComponentException; /** * Return the <code>Component</code> when you are finished with it. This * allows the <code>ComponentManager</code> to handle the End-Of-Life Lifecycle * events associated with the Component. Please note, that no Exceptions * should be thrown at this point. This is to allow easy use of the * ComponentManager system without having to trap Exceptions on a release. * * @param component The Component we are releasing. */ void release(Component component); } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/component/ComponentSelector.java Index: ComponentSelector.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.framework.component; /** * A <code>ComponentSelector</code> selects <code>Component</code>s based on a * hint. The contract is that all the <code>Component</code>s implement the * same role. * * A role is better understood by the analogy of a play. There are many * different roles in a script. Any actor or actress can play any given part * and you get the same results (phrases said, movements made, etc.). The exact * nuances of the performance is different. * * Below is a list of things that might be considered the same role: * * <ul> * <li> XMLInputAdaptor and PropertyInputAdaptor</li> * <li> FileGenerator and SQLGenerator</li> * </ul> * * The <code>ComponentSelector</code> does not specify the methodology of * getting the <code>Component</code>, merely the interface used to get it. * Therefore the <code>ComponentSelector</code> can be implemented with a * factory pattern, an object pool, or a simple Hashtable. * * @see org.apache.avalon.Component * @see org.apache.avalon.Composer * @see org.apache.avalon.ComponentManager * * @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a> */ public interface ComponentSelector extends Component { /** * Select the <code>Component</code> associated with the given hint. * For instance, If the <code>ComponentSelector</code> has a * <code>Generator</code> stored and referenced by a URL, I would use the * following call: * * <pre> * try { * Generator input; * input = (Generator) selector.select(new URL("foo://demo/url")); * } catch (...) { * ... * } * </pre> * * @param name A hint to retrieve the correct <code>Component</code>. * * @exception ComponentNotFoundException If the given role is not associated * with a <code>Component</code>. * @exception ComponentNotAccessibleException If a <code>Component</code> * instance cannot be created. */ Component select( Object hint ) throws ComponentException; /** * Return the <code>Component</code> when you are finished with it. This * allows the <code>ComponentManager</code> to handle the End-Of-Life Lifecycle * events associated with the Component. Please note, that no Exceptions * should be thrown at this point. This is to allow easy use of the * ComponentManager system without having to trap Exceptions on a release. * * @param component The Component we are releasing. */ void release( Component component ); } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/component/Composer.java Index: Composer.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.framework.component; /** * A composer is a class that need to connect to software components using * a "role" abstraction, thus not depending on particular implementations * but on behavioral interfaces. * <br /> * * The contract surrounding a <code>Composer</code> is that it is a user. * The <code>Composer</code> is able to use <code>Components</code> managed * by the <code>ComponentManager</code> it was initialized with. As part * of the contract with the system, the instantiating entity must call * the <code>setComponenetManager</code> method before the * <code>Composer</code> can be considered valid. The * <code>setComponentManager</code> method must be called after the constructor * and before any user methods. * * @author <a href="mailto:[EMAIL PROTECTED]">Federico Barbieri</a> * @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a> * @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a> * @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a> */ public interface Composer { /** * Pass the <code>ComponentManager</code> to the <code>composer</code>. * The <code>Composer</code> implementation should use the specified * <code>ComponentManager</code> to acquire the components it needs for * execution. * * @param manager The <code>ComponentManager</code> which this * <code>Composer</code> uses. */ void compose( ComponentManager componentManager ) throws ComponentException; } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/component/Recomposer.java Index: Recomposer.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.framework.component; /** * Extends composer to allow recomposing. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface Recomposer extends Composer { void recompose( ComponentManager componentManager ); } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/configuration/Configurable.java Index: Configurable.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.framework.configuration; /** * This interface should be implemented by classes that need to be * configured with custom parameters before initialization. * <br /> * * The contract surrounding a <code>Configurable</code> is that the * instantiating entity must call the <code>configure</code> * method before it is valid. The <code>configure</code> method * must be called after the constructor, and before any other method. * * @author <a href="mailto:[EMAIL PROTECTED]">Federico Barbieri</a> * @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a> * @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a> * @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a> * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface Configurable { /** * Pass the <code>Configuration</code> to the <code>Configurable</code> * class. This method must always be called after the constructor * and before any other method. * * @param configuration the class configurations. */ void configure( Configuration configuration ) throws ConfigurationException; } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/configuration/Configuration.java Index: Configuration.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.framework.configuration; import java.util.Iterator; /** * <code>Configuration</code> is a interface encapsulating a configuration node * used to retrieve configuration values. This is a "read only" interface * preventing applications from modifying their own configurations. * <br /> * * The contract surrounding the <code>Configuration</code> is that once * it is created, information never changes. The <code>Configuration</code> * is built by the <code>SAXConfigurationBuilder</code> and the * <code>ConfigurationImpl</code> helper classes. * * @author <a href="mailto:[EMAIL PROTECTED]">Federico Barbieri</a> * @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a> * @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a> * @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a> * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface Configuration { /** * Return the name of the node. * * @post getName() != null * * @return name of the <code>Configuration</code> node. */ String getName(); /** * Return a string describing location of Configuration. * Location can be different for different mediums (ie "file:line" for normal XML files or * "table:primary-key" for DB based configurations); * * @return a string describing location of Configuration */ String getLocation(); /** * Return a new <code>Configuration</code> instance encapsulating the * specified child node. * * @pre child != null * @post getConfiguration() != null * * @param child The name of the child node. * @return Configuration */ Configuration getChild( String child ); /** * Return a new <code>Configuration</code> instance encapsulating the * specified child node. * * @pre child != null * @post getConfiguration() != null * * @param child The name of the child node. * @return Configuration */ // Configuration getChild( String child, boolean createNew ); /** * Return an <code>Iterator</code> of <code>Configuration<code> * elements containing all node children with the specified name. * * @pre name != null * @post getConfigurations() != null * * @param name The name of the children to get. * @return The child nodes with name */ Iterator getChildren( String name ); Configuration[] getChildrenAsArray(String name); /** * Return the value of specified attribute. * * @pre paramName != null * @post getAttribute != null * * @param paramName The name of the parameter you ask the value of. * @return String value of attribute. * @exception ConfigurationException If no attribute with that name exists. */ String getAttribute( String paramName ) throws ConfigurationException; /** * Return the <code>int</code> value of the specified attribute contained * in this node. * * @pre paramName != null * @post getAttributeAsInt() != null * * @param paramName The name of the parameter you ask the value of. * @return int value of attribute * @exception ConfigurationException If no parameter with that name exists. * or if conversion to <code>int</code> fails. */ int getAttributeAsInt( String paramName ) throws ConfigurationException; /** * Returns the value of the attribute specified by its name as a * <code>long</code>. * * @pre paramName != null * @post getAttributeAsLong() != null * * @param paramName The name of the parameter you ask the value of. * @return long value of attribute * @exception ConfigurationException If no parameter with that name exists. * or if conversion to <code>long</code> fails. */ long getAttributeAsLong( String name ) throws ConfigurationException; /** * Return the <code>float</code> value of the specified parameter contained * in this node. * * @pre paramName != null * @post getAttributeAsFloat() != null * * @param paramName The name of the parameter you ask the value of. * @return float value of attribute * @exception ConfigurationException If no parameter with that name exists. * or if conversion to <code>float</code> fails. */ float getAttributeAsFloat( String paramName ) throws ConfigurationException; /** * Return the <code>boolean</code> value of the specified parameter contained * in this node.<br> * * @pre paramName != null * @post getAttributeAsBoolean() != null * * @param paramName The name of the parameter you ask the value of. * @return boolean value of attribute * @exception ConfigurationException If no parameter with that name exists. * or if conversion to <code>boolean</code> fails. */ boolean getAttributeAsBoolean( String paramName ) throws ConfigurationException; /** * Return the <code>String</code> value of the node. * * @post getValue() != null * * @return the value of the node. */ String getValue() throws ConfigurationException; /** * Return the <code>int</code> value of the node. * * @post getValueAsInt() != null * * @returns the value of the node. * * @exception ConfigurationException If conversion to <code>int</code> fails. */ int getValueAsInt() throws ConfigurationException; /** * Return the <code>float</code> value of the node. * * @post getValueAsFloat() != null * * @return the value of the node. * @exception ConfigurationException If conversion to <code>float</code> fails. */ float getValueAsFloat() throws ConfigurationException; /** * Return the <code>boolean</code> value of the node. * * @post getValueAsBoolean() != null * * @return the value of the node. * @exception ConfigurationException If conversion to <code>boolean</code> fails. */ boolean getValueAsBoolean() throws ConfigurationException; /** * Return the <code>long</code> value of the node.<br> * * @post getValueAsLong() != null * * @return the value of the node. * @exception ConfigurationException If conversion to <code>long</code> fails. */ long getValueAsLong() throws ConfigurationException; /** * Returns the value of the configuration element as a <code>String</code>. * If the configuration value is not set, the default value will be * used. * * @pre defaultValue != null * @post getValue(defaultValue) != null * * @param defaultValue The default value desired. * @return String value of the <code>Configuration</code>, or default * if none specified. */ String getValue( String defaultValue ); /** * Returns the value of the configuration element as an <code>int</code>. * If the configuration value is not set, the default value will be * used. * * @pre defaultValue != null * @post getValueAsInt(defaultValue) != null * * @param defaultValue The default value desired. * @return int value of the <code>Configuration</code>, or default * if none specified. */ int getValueAsInt( int defaultValue ); /** * Returns the value of the configuration element as a <code>long</code>. * If the configuration value is not set, the default value will be * used. * * @pre defaultValue != null * @post getValueAsLong(defaultValue) != null * * @param defaultValue The default value desired. * @return long value of the <code>Configuration</code>, or default * if none specified. */ long getValueAsLong( long defaultValue ); /** * Returns the value of the configuration element as a <code>float</code>. * If the configuration value is not set, the default value will be * used. * * @pre defaultValue != null * @post getValueAsFloat(defaultValue) != null * * @param defaultValue The default value desired. * @return float value of the <code>Configuration</code>, or default * if none specified. */ float getValueAsFloat( float defaultValue ); /** * Returns the value of the configuration element as a <code>boolean</code>. * If the configuration value is not set, the default value will be * used. * * @pre defaultValue != null * @post getValueAsBoolean(defaultValue) != null * * @param defaultValue The default value desired. * @return boolean value of the <code>Configuration</code>, or default * if none specified. */ boolean getValueAsBoolean( boolean defaultValue ); /** * Returns the value of the attribute specified by its name as a * <code>String</code>, or the default value if no attribute by * that name exists or is empty. * * @pre name != null * @pre defaultValue != null * @post getAttribute(name, defaultValue) != null * * @param name The name of the attribute you ask the value of. * @param defaultValue The default value desired. * @return String value of attribute. It will return the default * value if the named attribute does not exist, or if * the value is not set. */ String getAttribute( String name, String defaultValue ); /** * Returns the value of the attribute specified by its name as a * <code>int</code>, or the default value if no attribute by * that name exists or is empty. * * @pre name != null * @pre defaultValue != null * @post getAttributeAsInt(name, defaultValue) != null * * @param name The name of the attribute you ask the value of. * @param defaultValue The default value desired. * @return int value of attribute. It will return the default * value if the named attribute does not exist, or if * the value is not set. */ int getAttributeAsInt( String name, int defaultValue ); /** * Returns the value of the attribute specified by its name as a * <code>long</code>, or the default value if no attribute by * that name exists or is empty. * * @pre name != null * @pre defaultValue != null * @post getAttributeAsLong(name, defaultValue) != null * * @param name The name of the attribute you ask the value of. * @param defaultValue The default value desired. * @return long value of attribute. It will return the default * value if the named attribute does not exist, or if * the value is not set. */ long getAttributeAsLong( String name, long defaultValue ); /** * Returns the value of the attribute specified by its name as a * <code>float</code>, or the default value if no attribute by * that name exists or is empty. * * @pre name != null * @pre defaultValue != null * @post getAttributeAsFloat(name, defaultValue) != null * * @param name The name of the attribute you ask the value of. * @param defaultValue The default value desired. * @return float value of attribute. It will return the default * value if the named attribute does not exist, or if * the value is not set. */ float getAttributeAsFloat( String name, float defaultValue ); /** * Returns the value of the attribute specified by its name as a * <code>boolean</code>, or the default value if no attribute by * that name exists or is empty. * * @pre name != null * @pre defaultValue != null * @post getAttributeAsBoolean(name, defaultValue) != null * * @param name The name of the attribute you ask the value of. * @param defaultValue The default value desired. * @return boolean value of attribute. It will return the default * value if the named attribute does not exist, or if * the value is not set. */ boolean getAttributeAsBoolean( String name, boolean defaultValue ); } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/configuration/ConfigurationBuilder.java Index: ConfigurationBuilder.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.framework.configuration; import java.io.IOException; import org.xml.sax.SAXException; /** * The interface implemented to build configurations. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface ConfigurationBuilder { Configuration build( String resource ) throws SAXException, IOException, ConfigurationException; } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/configuration/ConfigurationException.java Index: ConfigurationException.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.framework.configuration; import org.apache.aut.CascadingException; /** * Thrown when a <code>Configurable</code> component cannot be configured * properly, or if a value cannot be retrieved properly. * * @author <a href="mailto:[EMAIL PROTECTED]">Federico Barbieri</a> * @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a> * @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a> */ public final class ConfigurationException extends CascadingException { /** * Construct a new <code>ConfigurationException</code> instance. * * @param message The detail message for this exception. */ public ConfigurationException( final String message ) { this( message, null ); } /** * Construct a new <code>ConfigurationException</code> instance. * * @param message The detail message for this exception. * @param throwable the root cause of the exception */ public ConfigurationException( final String message, final Throwable throwable ) { super( message, throwable ); } } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/configuration/Parameters.java Index: Parameters.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.framework.configuration; import java.util.Enumeration; import java.util.HashMap; import java.util.Iterator; import java.util.List; /** * * @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a> */ public final class Parameters { protected HashMap m_parameters; /** * Create a new <code>Parameters</code> instance. */ public Parameters() { m_parameters = new HashMap(); } /** * Set the <code>String</code> value of a specified parameter. * <p /> * If the specified value is <b>null</b> the parameter is removed. * * @return The previous value of the parameter or <b>null</b>. */ public String setParameter( final String name, final String value ) { if( null == name ) { return null; } if( null == value ) { return (String)m_parameters.remove( name ); } return (String)m_parameters.put( name, value ); } /** * Return an <code>Enumeration</code> view of all parameter names. */ public Iterator getParameterNames() { return m_parameters.keySet().iterator(); } /** * Check if the specified parameter can be retrieved. */ public boolean isParameter( final String name ) { return m_parameters.containsKey( name ); } /** * Retrieve the <code>String</code> value of the specified parameter. * <p /> * If the specified parameter cannot be found, <b>null</b> is returned. */ protected String getParameter( final String name ) { if( null == name ) { return null; } return (String)m_parameters.get( name ); } /** * Retrieve the <code>String</code> value of the specified parameter. * <p /> * If the specified parameter cannot be found, <code>defaultValue</code> * is returned. */ public String getParameter( final String name, final String defaultValue ) { final String value = getParameter( name ); if( null == value ) { return defaultValue; } else { return value; } } /** * Retrieve the <code>int</code> value of the specified parameter. * <p /> * If the specified parameter cannot be found, <code>defaultValue</code> * is returned. */ public int getParameterAsInteger( final String name, final int defaultValue ) { final String value = getParameter( name ); if( null == value ) { return defaultValue; } try { if( value.startsWith("0x") ) { return Integer.parseInt( value.substring(2), 16 ); } else if( value.startsWith("0o") ) { return Integer.parseInt( value.substring(2), 8 ); } else if( value.startsWith("0b") ) { return Integer.parseInt( value.substring(2), 2 ); } else { return Integer.parseInt( value ); } } catch( final NumberFormatException nfe ) { return defaultValue; } } /** * Retrieve the <code>long</code> value of the specified parameter. * <p /> * If the specified parameter cannot be found, <code>defaultValue</code> * is returned. */ public long getParameterAsLong( final String name, final long defaultValue ) { final String value = getParameter( name ); if( null == value ) { return defaultValue; } try { if( value.startsWith("0x") ) { return Long.parseLong( value.substring(2), 16 ); } else if( value.startsWith("0o") ) { return Long.parseLong( value.substring(2), 8 ); } else if( value.startsWith("0b") ) { return Long.parseLong( value.substring(2), 2 ); } else { return Long.parseLong(value); } } catch( final NumberFormatException nfe ) { return defaultValue; } } /** * Retrieve the <code>float</code> value of the specified parameter. * <p /> * If the specified parameter cannot be found, <code>defaultValue</code> * is returned. */ public float getParameterAsFloat( final String name, final float defaultValue ) { final String value = getParameter( name ); if( null == value ) { return defaultValue; } try { return Float.parseFloat(value); } catch( final NumberFormatException nfe ) { return defaultValue; } } /** * Retrieve the <code>boolean</code> value of the specified parameter. * <p /> * If the specified parameter cannot be found, <code>defaultValue</code> * is returned. */ public boolean getParameterAsBoolean( final String name, final boolean defaultValue ) { final String value = getParameter( name ); if( null == value ) { return defaultValue; } if( value.equalsIgnoreCase("true") ) { return true; } if( value.equalsIgnoreCase("false") ) { return(false); } return defaultValue; } /** * Merge parameters from another <code>Parameters</code> instance * into this. * * @return This <code>Parameters</code> instance. */ public Parameters merge( final Parameters other ) { final Iterator names = other.getParameterNames(); while( names.hasNext() ) { final String name = (String) names.next(); final String value = other.getParameter( name ); setParameter( name, value ); } return this; } /** * Create a <code>Parameters</code> object from a <code>Configuration</code> * object. */ public static Parameters fromConfiguration( final Configuration configuration ) throws ConfigurationException { if( null == configuration ) { throw new ConfigurationException( "You cannot convert to parameters with " + "a null Configuration"); } final Iterator parameters = configuration.getChildren("parameter"); final Parameters param = new Parameters(); while( parameters.hasNext() ) { try { final Configuration child = (Configuration)parameters.next(); final String name = child.getAttribute( "name" ); final String value = child.getAttribute( "value" ); param.setParameter( name, value ); } catch( final ClassCastException cce ) { // ignore this. Temporary work around until the Iterator // is guaranteed to return Configuration values. Unfortunately // there are problems with empty strings getting in there. } catch( final Exception e ) { throw new ConfigurationException( "Cannot process Configurable", e ); } } return param; } } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/configuration/Reconfigurable.java Index: Reconfigurable.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.framework.configuration; /** * Extends Configurable to allow reconfiguration runtime. * * @author <a href="mailto:[EMAIL PROTECTED]">Federico Barbieri</a> * @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a> * @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a> * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface Reconfigurable extends Configurable { void reconfigure( Configuration configuration ) throws ConfigurationException; } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/container/Container.java Index: Container.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.framework.container; import java.util.Iterator; import org.apache.framework.component.Component; /** * This contains it during execution and may provide certain * facilities (like a thread per EJB etc). * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface Container extends Component { /** * Add a component instance to container. * * @param entry the component entry */ void add( String name, Entry entry ) throws ContainerException; /** * Remove a component instance from container. * * @param name the name of component */ void remove( String name ) throws ContainerException; /** * Retrieve Entry from container * * @param name the name of entry * @return the entry */ Entry getEntry( String name ) throws ContainerException; /** * List all names of entries in container. * * @return the list of all entries */ Iterator list(); } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/container/ContainerException.java Index: ContainerException.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.framework.container; import org.apache.aut.CascadingException; /** * Exception to indicate error manipulating container. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public final class ContainerException extends CascadingException { /** * Construct a new <code>ContainerException</code> instance. * * @param message The detail message for this exception. */ public ContainerException( final String message ) { this( message, null ); } /** * Construct a new <code>ContainerException</code> instance. * * @param message The detail message for this exception. * @param throwable the root cause of the exception */ public ContainerException( final String message, final Throwable throwable ) { super( message, throwable ); } } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/container/Deployer.java Index: Deployer.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.framework.container; import java.net.URL; import org.apache.framework.component.Component; /** * A Deployer is responsible for taking a URL (ie a jar/war/ear) and deploying * it to a particular "location". "location" means different things for * different containers. For a servlet container it may mean the place to * mount servlet (ie /myapp --> /myapp/Cocoon.xml is mapping cocoon servlet to * /myapp context). * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface Deployer extends Component { /** * Deploy a resource indicate by url to location. * * @param location the location to deploy to * @param url the url of deployment * @exception DeploymentException if an error occurs */ void deploy( String location, URL url ) throws DeploymentException; /** * undeploy a resource from a location. * * @param location the location * @exception DeploymentException if an error occurs */ void undeploy( String location ) throws DeploymentException; } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/container/DeploymentException.java Index: DeploymentException.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.framework.container; import org.apache.aut.CascadingException; /** * Exception to indicate error deploying. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public final class DeploymentException extends CascadingException { /** * Construct a new <code>DeploymentException</code> instance. * * @param message The detail message for this exception. */ public DeploymentException( final String message ) { this( message, null ); } /** * Construct a new <code>DeploymentException</code> instance. * * @param message The detail message for this exception. * @param throwable the root cause of the exception */ public DeploymentException( final String message, final Throwable throwable ) { super( message, throwable ); } } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/container/Entry.java Index: Entry.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.framework.container; import org.apache.framework.component.Component; /** * Contains information about a particular instance of contained component. * This would contain name, configuration data, parameters, log entries etc. * Basically instance data. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public class Entry implements Component { protected MetaInfo m_info; protected Object m_instance; protected State m_state; public Entry() { } public Entry( final MetaInfo info, final Object instance, final State state ) { m_info = info; m_instance = instance; m_state = state; } /** * Retrieve MetaInfo describing instance. * * @return the info */ public MetaInfo getInfo() { return m_info; } /** * Mutator for info property. * * @param info the MetaInfo */ public void setInfo( final MetaInfo info ) { m_info = info; } /** * Retrieve instance of component. * * @return the component instance */ public Object getInstance() { return m_instance; } /** * Set instance of component. * * @return the component instance */ public void setInstance( final Object instance ) { m_instance = instance; } /** * Retrieve state of a component. * * @return the components state */ public State getState() { return m_state; } /** * set state of a component. * * @param state the components state */ public void setState( final State state ) { m_state = state; } } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/container/Factory.java Index: Factory.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.framework.container; import org.apache.framework.component.Component; /** * This is the component that creates the components. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface Factory extends Component { /** * Create a component whos position is indicated by locator. * * @param locator the locator indicating the component location * @return the component * @exception FactoryException if an error occurs */ Object create( Locator locator ) throws FactoryException; /** * Create a component whos position is indicated by locator. * Make sure it is of the correct type. * * @param locator the locator indicating the component location * @param clazz the expected type of component * @return the component * @exception FactoryException if an error occurs */ Object create( Locator locator, Class clazz ) throws FactoryException; } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/container/FactoryException.java Index: FactoryException.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.framework.container; import org.apache.aut.CascadingException; /** * Exception to indicate error creating entries in factory. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public final class FactoryException extends CascadingException { /** * Construct a new <code>FactoryException</code> instance. * * @param message The detail message for this exception. */ public FactoryException( final String message ) { this( message, null ); } /** * Construct a new <code>FactoryException</code> instance. * * @param message The detail message for this exception. * @param throwable the root cause of the exception */ public FactoryException( final String message, final Throwable throwable ) { super( message, throwable ); } } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/container/Loader.java Index: Loader.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.framework.container; import org.apache.framework.component.Component; /** * Class used to load resources from a source. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface Loader extends Component { /** * Retrieve classloader associated with source. * * @return the ClassLoader */ ClassLoader getClassLoader(); /** * Load an object from source. * * @param component the name of object * @return the Object * @exception Exception if an error occurs */ Object load( String component ) throws FactoryException; } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/container/Locator.java Index: Locator.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.framework.container; import java.net.URL; import org.apache.framework.component.Component; /** * This contains information required to locate a component. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface Locator extends MetaInfo { /** * Retrieve "name" of component type. * The "name" usually indicates the classname. * * @return the name */ String getName(); /** * Retrieve location of component. * Usually references the archive (zip/jar/war/ear) * which contains the name (ie classname) * * @return the URL of location */ URL getLocation(); } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/container/LocatorRegistry.java Index: LocatorRegistry.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.framework.container; /** * Represents a database of Locators. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface LocatorRegistry extends Registry { /** * Retrieve a Locator by name. * * @param name the name * @return the Info * @exception RegistryException if an error occurs */ Locator getLocator( String name ) throws RegistryException; } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/container/MetaInfo.java Index: MetaInfo.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.framework.container; /** * This contains information about the component. * (ie would be a BlockInfo, an EJBDescriptor, a MailetInfo etc) * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface MetaInfo { } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/container/Registry.java Index: Registry.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.framework.container; import java.util.Iterator; import org.apache.framework.component.Component; /** * Represents a database of Infos. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface Registry extends Component { /** * register an info under a particular name. * * @param name the name * @param info the info * @exception RegistryException if info is invalid or name already contains info under name */ void register( String name, MetaInfo info ) throws RegistryException; /** * unregister an info. * * @param name the name of info * @exception RegistryException if no such info exists */ void unregister( String name ) throws RegistryException; /** * Retrieve an MetaInfo by name. * * @param name the name * @return the MetaInfo * @exception RegistryException if an error occurs */ MetaInfo getInfo( String name ) throws RegistryException; /** * Return an iterator of all names of infos registered. * * @return the info names */ Iterator getInfoNames(); } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/container/RegistryException.java Index: RegistryException.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.framework.container; import org.apache.aut.CascadingException; /** * Exception to indicate registry error. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public final class RegistryException extends CascadingException { /** * Construct a new <code>RegistryException</code> instance. * * @param message The detail message for this exception. */ public RegistryException( final String message ) { this( message, null ); } /** * Construct a new <code>RegistryException</code> instance. * * @param message The detail message for this exception. * @param throwable the root cause of the exception */ public RegistryException( final String message, final Throwable throwable ) { super( message, throwable ); } } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/container/State.java Index: State.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.framework.container; import org.apache.aut.ValuedEnum; /** * Defines possible states for contained components. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public abstract class State extends ValuedEnum { public State( final String name, final int value ) { super( name, value ); } } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/context/Context.java Index: Context.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.framework.context; /** * * @author <a href="mailto:[EMAIL PROTECTED]">Federico Barbieri</a> * @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a> * @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a> */ public interface Context { Object get( Object key ); } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/context/Contextualizable.java Index: Contextualizable.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.framework.context; /** * This inteface should be implemented by classes that need * a Context to work. Context contains runtime generated object * provided by the parent to this class. * * @author <a href="mailto:[EMAIL PROTECTED]">Federico Barbieri</a> * @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a> * @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a> */ public interface Contextualizable { /** * Pass the Context to the contextualizable class. This method * is always called after the constructor and, if present, * after configure but before any other method. * */ void contextualize( Context context ); } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/context/Recontextualizable.java Index: Recontextualizable.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.framework.context; /** * Extends composer to allow recontextualizing. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface Recontextualizable extends Contextualizable { void recontextualizable( Context context ) ; } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/context/Resolvable.java Index: Resolvable.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.framework.context; /** * This interface is used to indicate objects that need to be * resolved in some particular context. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface Resolvable { /** * Resolve a object to a value. * * @param context the contextwith respect which to resolve * @return the resolved object */ Object resolve( Context context ); } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/lifecycle/Disposable.java Index: Disposable.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.framework.lifecycle; /** * This interface should be implemented by those classes that * need to provide a service that requires some resources to be * initialized before being able to operate and properly destroyed * before termination and unloading. * * @author <a href="mailto:[EMAIL PROTECTED]">Federico Barbieri</a> * @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a> * @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a> * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface Disposable { /** * Destroys the service. This method is guaranteed to be called always * after the stop() method if this class implements <code>Stoppable</code>. */ void dispose() throws Exception; } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/lifecycle/Initializable.java Index: Initializable.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.framework.lifecycle; /** * This interface should be implemented by those classes that * need to provide a service that requires some resources to be * initialized before being able to operate. * * @author <a href="mailto:[EMAIL PROTECTED]">Federico Barbieri</a> * @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a> * @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a> * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface Initializable { /** * Initialize the service. This method is guaranteed to be called always * after methods in <code>Configurable</code> and <code>Component</code>, * if the class implements those interfaces and before the run() method * if the class implements <code>Runnable</code>. */ void init() throws Exception; } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/lifecycle/Resumable.java Index: Resumable.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.framework.lifecycle; /** * This is used to restart execturion after temporarily halt. * The halt may have been for some re- configuring|composing|contextualizing * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface Resumable { /** * Resumes the component. */ void resume(); } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/lifecycle/Startable.java Index: Startable.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.framework.lifecycle; /** * This interface is the dual interface of Stoppable. * * It provides a method through which components can be "started" * without requiring a thread. Useful for reactive or passive objects. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface Startable { /** * Starts the component. */ void start() throws Exception; } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/lifecycle/Stoppable.java Index: Stoppable.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.framework.lifecycle; /** * This interface is the dual interface of the <code>java.lang.Runnable</code> * interface and provides a hook to safely stop the thread of execution. * * @author <a href="mailto:[EMAIL PROTECTED]">Federico Barbieri</a> * @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a> * @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a> */ public interface Stoppable { /** * Stops the current thread of execution. */ void stop() throws Exception; } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/lifecycle/Suspendable.java Index: Suspendable.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.framework.lifecycle; /** * This is used to temporarily halt execution of a component. * The execution may be halted so that you can reconfigure/ * recompose/recontextualize component * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface Suspendable { /** * Suspends the component. */ void suspend(); } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/logger/Loggable.java Index: Loggable.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.framework.logger; import org.apache.log.Logger; /** * Interface through which to provide Loggers. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface Loggable { void setLogger( Logger logger ); } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/pool/ObjectFactory.java Index: ObjectFactory.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.framework.pool; /** * This is the interface for factory that is used to create objects for Pool. * * @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a> * @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a> * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface ObjectFactory { Poolable newInstance() throws Exception; Class getCreatedClass(); } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/pool/Pool.java Index: Pool.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.framework.pool; /** * This is an <code>Pool</code> that caches Poolable objects for reuse. * * @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a> * @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a> * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface Pool { Poolable get() throws Exception; void put( Poolable poolable ); } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/pool/PoolController.java Index: PoolController.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.framework.pool; /** * This is the interface you implement if you want to control how Pools capacity * changes overtime. * * It gets called everytime that a Pool tries to go below or above it's minimum or maximum. * * @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a> * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> * @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a> */ public interface PoolController { /** * Called when a Pool reaches it's minimum. * * Return the number of elements to increase minimum and maximum by. * * @return the element increase */ int grow(); /** * Called when a pool reaches it's maximum. * * Returns the number of elements to decrease mi and max by. * * @return the element decrease */ int shrink(); } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/pool/Poolable.java Index: Poolable.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.framework.pool; /** * Poolable marker interface. * * Components implement this interface if it is reasonable to * Pool the object. Components that don't implement this interface * will be created anew via a factory. * * NB: It was a deliberat e choice not to extend Component. This will have to * be reassed once we see it in action. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface Poolable { } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/processor/Matcher.java Index: Matcher.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.framework.processor; /** * This represents a conditional procesing rule. * * @author <a href="mailto:[EMAIL PROTECTED]">Federico Barbieri</a> */ public interface Matcher { /** * Returns true if the object match the specific condition defined by this matcher. */ boolean match( Object object ); } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/processor/Pipeline.java Index: Pipeline.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.framework.processor; import java.util.NoSuchElementException; /** * This represents a pipeline made up of stages. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> * @author <a href="mailto:[EMAIL PROTECTED]">Federico Barbieri</a> */ public interface Pipeline extends Stage { /** * Retrieve size of pipeline (number of stages). * * @return the size of pipeline */ int getSize(); /** * Retrieve a particular stage of pipeline * * @param index the index of stage * @return the stage * @exception NoSuchElementException if index >= getSize() or index < 0 */ Stage getStage( int index ) throws NoSuchElementException; } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/processor/ProcessorPipeline.java Index: ProcessorPipeline.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.framework.processor; import java.lang.IndexOutOfBoundsException; import java.util.ArrayList; /** * This is the default implementation of a Pipeline. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> * @author <a href="mailto:[EMAIL PROTECTED]">Federico Barbieri</a> */ public class ProcessorPipeline implements Pipeline { private final ArrayList m_stages = new ArrayList(); /** * Process the specified object calling * <code> process(Object object) </code> * in all stages in this pipeline. */ public boolean process( final Object object ) { boolean cont = true; for (int i = 0; i < getSize() && cont; i++) { cont = getStage(i).process(object); } return cont; } /** * Return the number of stages in this pipeline. */ public int getSize() { return m_stages.size(); } /** * Return the stage at the specified index. */ public Stage getStage( final int index ) throws IndexOutOfBoundsException { return (Stage)m_stages.get( index ); } /** * Add the specified stage at the end of this pipeline. */ public void addStage( final Stage stage ) { m_stages.add( stage ); } /** * Insert the specified stage in the specified position. */ public void addStage(int index, Stage stage) { m_stages.add(index, stage); } /** * Remove the specified stage from the specified position. */ public Stage removeStage(int index) { return (Stage) m_stages.remove(index ); } } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/processor/ProcessorTree.java Index: ProcessorTree.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.framework.processor; /** * This implements a single conditional processing node. Incoming object are * checked agaist the matcher and go to the <code> trueBranch </code> if the * object match the matcher requirements else the <code> falseBranch </code>. * Using many ProcessorTree is possible to implement any processing graph. * * @author <a href="mailto:[EMAIL PROTECTED]">Federico Barbieri</a> */ public class ProcessorTree implements Stage { private Matcher matcher; private Stage trueBranch, falseBranch; /** * Create a new ProcessorTree with the specified matcher, trueBranch and falseBranch. */ public ProcessorTree( Matcher matcher, Stage trueBranch, Stage falseBranch) { this.matcher = matcher; this.trueBranch = trueBranch; this.falseBranch = falseBranch; } /** * Process the spefified object through the trueBranc if the object matchs * the requirements of this matcher, through the falseBranch else. */ public boolean process(Object object) { if (matcher.match(object)) { return trueBranch.process(object); } else { return falseBranch.process(object); } } } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/processor/Stage.java Index: Stage.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.framework.processor; /** * This represents a stage in a pipeline. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> * @author <a href="mailto:[EMAIL PROTECTED]">Federico Barbieri</a> */ public interface Stage { /** * Process the specified object. Returns false if the * object should be destroyed after processing. */ boolean process( Object object ); } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/thread/ThreadContext.java Index: ThreadContext.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.framework.thread; /** * To deal with *current* ThreadContext. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public final class ThreadContext { protected final static InheritableThreadLocal c_context = new InheritableThreadLocal(); public static ThreadPool getCurrentThreadPool() { return (ThreadPool)c_context.get(); } public static void setCurrentThreadPool( final ThreadPool threadPool ) { //TODO: protect by a permission guard c_context.set( threadPool ); } } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/thread/ThreadManager.java Index: ThreadManager.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.framework.thread; /** * Interface for component that hands out thread pools. * * @author <a href="mailto:[EMAIL PROTECTED]">Federico Barbieri</a> * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface ThreadManager { ThreadPool getThreadPool( String name ); ThreadPool getDefaultThreadPool(); } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/thread/ThreadPool.java Index: ThreadPool.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.framework.thread; /** * This class is the public frontend for the thread pool code. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface ThreadPool { /** * Run work in separate thread. * * @param work the work to be executed. * @exception Exception if an error occurs */ void execute( final Runnable work ) throws Exception; /** * Run work in separate thread at a particular priority. * * @param work the work to be executed. * @param priority the priority * @exception Exception if an error occurs */ void execute( final Runnable work, final int priority ) throws Exception; /** * Run work in separate thread. * Wait till work is complete before returning. * * @param work the work to be executed. * @exception Exception if an error occurs */ void executeAndWait( final Runnable work ) throws Exception; /** * Run work in separate thread at a particular priority. * Wait till work is complete before returning. * * @param work the work to be executed. * @param priority the priority * @exception Exception if an error occurs */ void executeAndWait( final Runnable work, final int priority ) throws Exception; } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]