mcconnell 2002/08/11 23:08:54 Modified: assembly build.xml assembly/demo/src/java/org/apache/excalibur/playground SimpleComponent.java assembly/src/etc kernel.xml assembly/src/java/org/apache/excalibur/merlin/assembly ContainerManager.java ProfileRegistry.java assembly/src/java/org/apache/excalibur/merlin/assembly/resource LifecycleHelper.java ResourceProvider.java assembly/src/java/org/apache/excalibur/merlin/container DefaultContainer.java assembly/src/java/org/apache/excalibur/merlin/kernel DefaultKernel.java assembly/src/java/org/apache/excalibur/merlin/model Resource.java Added: assembly/src/java/org/apache/excalibur/merlin/assembly/resource DefaultResource.java LifestyleHandler.java SingletonLifestyleHandler.java Removed: assembly/src/java/org/apache/excalibur/merlin/assembly/resource ProfileDesignator.java Log: Lifestyle handler seperation. Revision Changes Path 1.39 +2 -2 jakarta-avalon-excalibur/assembly/build.xml Index: build.xml =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/build.xml,v retrieving revision 1.38 retrieving revision 1.39 diff -u -r1.38 -r1.39 --- build.xml 9 Aug 2002 12:26:45 -0000 1.38 +++ build.xml 12 Aug 2002 06:08:54 -0000 1.39 @@ -296,8 +296,8 @@ <target name="patch"> <replace dir="${src.dir}/java" - token="org.apache.excalibur.merlin.builder" - value="org.apache.excalibur.merlin.model.builder" > + token="ProfileDesignator" + value="DefaultResource" > <include name="org/apache/excalibur/merlin/**/*.*"/> </replace> </target> 1.11 +3 -3 jakarta-avalon-excalibur/assembly/demo/src/java/org/apache/excalibur/playground/SimpleComponent.java Index: SimpleComponent.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/demo/src/java/org/apache/excalibur/playground/SimpleComponent.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- SimpleComponent.java 2 Aug 2002 06:29:20 -0000 1.10 +++ SimpleComponent.java 12 Aug 2002 06:08:54 -0000 1.11 @@ -54,12 +54,12 @@ public void incarnate() { - getLogger().info( "incarnation phase in exploitable" ); + getLogger().info( "incarnation stage" ); } public void etherialize() { - getLogger().info( "etherialize phase in exploitable" ); + getLogger().info( "etherialize stage" ); } @@ -69,7 +69,7 @@ public void demo( String stage ) { - getLogger().info( stage + " stage in demonstratable"); + getLogger().info( stage + " stage (demonstratable)"); } //======================================================================= 1.30 +1 -1 jakarta-avalon-excalibur/assembly/src/etc/kernel.xml Index: kernel.xml =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/etc/kernel.xml,v retrieving revision 1.29 retrieving revision 1.30 diff -u -r1.29 -r1.30 --- kernel.xml 12 Aug 2002 02:00:08 -0000 1.29 +++ kernel.xml 12 Aug 2002 06:08:54 -0000 1.30 @@ -22,7 +22,7 @@ the corresponds to the name of the logging file. --> - <logging priority="DEBUG" target="default"> + <logging priority="INFO" target="default"> <category priority="WARN" name="logging" /> <target name="kernel"> <file location="kernel.log" /> 1.11 +36 -15 jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/assembly/ContainerManager.java Index: ContainerManager.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/assembly/ContainerManager.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- ContainerManager.java 12 Aug 2002 02:00:08 -0000 1.10 +++ ContainerManager.java 12 Aug 2002 06:08:54 -0000 1.11 @@ -37,7 +37,9 @@ import org.apache.excalibur.merlin.assembly.resource.LifecycleHelper; import org.apache.excalibur.merlin.assembly.resource.ResourceProvider; import org.apache.excalibur.merlin.assembly.resource.ResourceException; -import org.apache.excalibur.merlin.assembly.resource.ProfileDesignator; +import org.apache.excalibur.merlin.assembly.resource.DefaultResource; +import org.apache.excalibur.merlin.assembly.resource.LifestyleHandler; +import org.apache.excalibur.merlin.assembly.resource.SingletonLifestyleHandler; import org.apache.excalibur.merlin.model.ContainerDescriptor; import org.apache.excalibur.merlin.model.ClasspathDescriptor; import org.apache.excalibur.merlin.container.Container; @@ -277,7 +279,7 @@ // setup the assembly sub-system // - m_registry = new ProfileRegistry( this, m_map, m_helper, m_provider ); + m_registry = new ProfileRegistry( this, m_map ); m_registry.enableLogging( getLocalLogger().getChildLogger( "assembly") ); // @@ -335,11 +337,8 @@ if( profile.getActivationPolicy() ) { Resource resource = getResource( profile ); - if( resource.getState() == Resource.NOT_STARTED ) - { - getLocalLogger().info( profile + " [activating]"); - resource.access(); - } + getLocalLogger().info( profile + " [activating]"); + resource.access(); } else { @@ -401,11 +400,8 @@ try { Resource resource = getResource( profile ); - if( resource.getState() == Resource.STARTED ) - { - getLocalLogger().info( "stopping: " + profile ); - resource.destroy(); - } + getLocalLogger().info( "stopping: " + profile ); + resource.dispose(); } catch ( Throwable e ) { @@ -439,6 +435,12 @@ ClasspathDescriptor classpath ) { + // + // bootstrap the creation of logging categories here because + // logging will occur before the actual container is created + // and we need to manage type and profile related log messages + // + String path; final String name = descriptor.getName(); if( this instanceof KernelManager ) @@ -453,6 +455,10 @@ CategoriesDescriptor categories = descriptor.getCategories(); getLoggingManager().addCategories( path, categories ); + // + // create a new profile manager as a child of this manager + // + try { ContainerManager loader = new ContainerManager( this, name ); @@ -490,6 +496,10 @@ return m_path; } + /** + * Return the singleton logging manager. + * @return the logging manager + */ protected DefaultLoggerManager getLoggingManager() { ContainerManager parent = getParentManager(); @@ -730,8 +740,19 @@ if( resource != null ) return resource; - ProfileDesignator designator = - new ProfileDesignator( getPath(), profile, context, m_helper, m_provider ); + // ###################################################################### + // ## # + // ## This is where we need to lookup a lifestyle policy handler and # + // ## assemble it before supplying it to the default resource instance. # + // ## # + // ###################################################################### + + SingletonLifestyleHandler handler = + new SingletonLifestyleHandler( this, m_provider, m_helper, profile, context ); + handler.enableLogging( getLocalLogger().getChildLogger("lifestyle") ); + + DefaultResource designator = + new DefaultResource( getPath(), profile, context, handler ); designator.enableLogging( getLocalLogger().getChildLogger( "resource" ) ); m_resources.put( profile, designator ); return designator; 1.10 +3 -7 jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/assembly/ProfileRegistry.java Index: ProfileRegistry.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/assembly/ProfileRegistry.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- ProfileRegistry.java 12 Aug 2002 02:00:09 -0000 1.9 +++ ProfileRegistry.java 12 Aug 2002 06:08:54 -0000 1.10 @@ -35,7 +35,7 @@ import org.apache.excalibur.merlin.assembly.resource.LifecycleHelper; import org.apache.excalibur.merlin.assembly.resource.ResourceProvider; import org.apache.excalibur.merlin.assembly.resource.ResourceException; -import org.apache.excalibur.merlin.assembly.resource.ProfileDesignator; +import org.apache.excalibur.merlin.assembly.resource.DefaultResource; /** * Internal table that holds available component type keyed relative @@ -85,14 +85,10 @@ */ public ProfileRegistry( ContainerManager manager, - DependencyGraph map, - LifecycleHelper helper, - ResourceProvider provider ) + DependencyGraph map ) { m_manager = manager; m_map = map; - m_helper = helper; - m_provider = provider; } //======================================================================= 1.6 +9 -4 jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/assembly/resource/LifecycleHelper.java Index: LifecycleHelper.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/assembly/resource/LifecycleHelper.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- LifecycleHelper.java 12 Aug 2002 02:00:09 -0000 1.5 +++ LifecycleHelper.java 12 Aug 2002 06:08:54 -0000 1.6 @@ -79,13 +79,17 @@ * @throws LifecycleException if an error occurs when the component passes * through a specific lifecycle stage */ - public Object startup( final String path, + public Object startup( final Object object, + final String path, final Profile profile, final ResourceProvider provider, final Context phaseContext ) throws LifecycleException { + if( object == null ) + throw new NullPointerException("object"); + if( path == null ) throw new NullPointerException("path"); @@ -104,9 +108,9 @@ try { //Creation stage - stage = STAGE_CREATE; - notice( path, stage ); - final Object object = provider.createObject( profile ); + //stage = STAGE_CREATE; + //notice( path, stage ); + //final Object object = provider.createObject( profile ); //LogEnabled stage stage = STAGE_LOGGER; @@ -251,6 +255,7 @@ Throwable failure = null; //Stoppable stage + if( object instanceof Startable ) { notice( name, STAGE_STOP ); 1.6 +3 -81 jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/assembly/resource/ResourceProvider.java Index: ResourceProvider.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/assembly/resource/ResourceProvider.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- ResourceProvider.java 12 Aug 2002 02:00:09 -0000 1.5 +++ ResourceProvider.java 12 Aug 2002 06:08:54 -0000 1.6 @@ -87,14 +87,6 @@ public class ResourceProvider extends AbstractLogEnabled { - //####################################################################### - //## ## - //## This class will be changed to a interface and singleton policy ## - //## implementation class and probably an underlying abstract ## - //## provider class. ## - //## ## - //####################################################################### - //======================================================================= // state //======================================================================= @@ -116,15 +108,9 @@ private ContainerManager m_classloader; /** - * A hashtable of service implemenentation object references keyed by profile. - */ - private final Hashtable m_singletons = new Hashtable(); - - /** - * A hashtable of profiles keyed by singleton object. + * Context object containing system level values that is used + * as a sources for import directives. */ - private final Hashtable m_profiles = new Hashtable(); - private DefaultContext m_dictionary; //======================================================================= @@ -152,59 +138,6 @@ //======================================================================= /** - * Create an object specified by profile. - * - * @param profile the profile - * @return the new object - * @throws Exception if unable to resolve resource - */ - public Object createObject( Profile profile ) - throws Exception - { - Object object = getSingletonInstance( profile ); - if( object == null ) - { - // - // load the class - // - - Class clazz = null; - String classname = null; - try - { - classname = profile.getType().getInfo().getImplementationKey(); - clazz = m_classloader.loadClass( classname ); - } - catch( Throwable e ) - { - final String error = - "Unexpected exception while attempting to load class '" - + classname + "' for the profile: " + profile; - throw new ResourceException( error, e ); - } - - // - // create a new instance of the class - // - - try - { - object = clazz.newInstance(); - putSingletonInstance( profile, object ); - } - catch( Throwable e ) - { - final String error = - "Unexpected exception while attempting to instantiate an instance from profile: " - + profile; - throw new ResourceException( error, e ); - } - - } - return object; - } - - /** * Create a new Logger for component. * * @param profile the profile @@ -512,17 +445,6 @@ } parameters.makeReadOnly(); return parameters; - } - - private Object getSingletonInstance( Profile profile ) - { - return m_singletons.get( profile ); - } - - private void putSingletonInstance( Profile profile, Object object ) - { - m_singletons.put( profile, object ); - m_profiles.put( object, profile ); } /** 1.1 jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/assembly/resource/DefaultResource.java Index: DefaultResource.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE.txt file. */ package org.apache.excalibur.merlin.assembly.resource; import org.apache.avalon.framework.logger.Logger; import org.apache.avalon.framework.logger.AbstractLogEnabled; import org.apache.avalon.framework.context.Context; import org.apache.avalon.framework.context.DefaultContext; import org.apache.avalon.framework.activity.Disposable; import org.apache.excalibur.merlin.assembly.resource.LifecycleHelper; import org.apache.excalibur.merlin.model.Profile; import org.apache.excalibur.merlin.model.Resource; import org.apache.excalibur.meta.info.ServiceDescriptor; import org.apache.excalibur.meta.info.PhaseDescriptor; import org.apache.excalibur.meta.info.ExtensionDescriptor; import org.apache.excalibur.meta.info.Facility; /** * Opaque type that maps a path to a profile. * * @author <a href="mailto:[EMAIL PROTECTED]">Stephen McConnell</a> * @version $Revision: 1.1 $ $Date: 2002/08/12 06:08:54 $ */ public class DefaultResource extends AbstractLogEnabled implements Resource { public static final String HEADER = "service:"; /** * The path of the profile designator. */ private final String m_path; /** * The profile that disignator refers to. */ private final Profile m_profile; /** * The deployment context. */ private final Context m_context; /** * The lifestyle manager. */ private LifestyleHandler m_handler; /** * Create a new resoruce instance. * * @param path the container path * @param profile the resource's profile * @param context the deployment context * @param factory the lifestyle manager */ public DefaultResource( final String path, final Profile profile, final Context context, final LifestyleHandler handler ) { if( null == path ) throw new NullPointerException( "path" ); if( null == profile ) throw new NullPointerException( "profile" ); if( null == context ) throw new NullPointerException( "context" ); if( null == handler ) throw new NullPointerException( "handler" ); m_path = path; m_profile = profile; m_context = context; m_handler = handler; } /** * Returns the path of the resource. * * @return the symbolic path of the resource */ public String getPath() { return HEADER + m_path; } /** * Returns the service descriptor. * * @return the service descriptor */ public ServiceDescriptor[] getServices() { return m_profile.getType().getServices(); } /** * Access an instance. * * @return the service instance. * @exception Exception if an error occurs while establishing the object */ public Object access() throws Exception { getLogger().debug("access"); return m_handler.get(); } /** * Release a service instance. */ public void release( Object object ) throws Exception { getLogger().debug("release"); m_handler.put( object ); } /** * Dispose of the reference and any consumed resources. */ public void dispose() { getLogger().debug("dispose"); if( m_handler instanceof Disposable ) { ((Disposable)m_handler).dispose(); } m_handler = null; } /** * Return the profile. * * @return the profile */ public Profile getProfile() { return m_profile; } public String toString() { return "DefaultResource - profile:" + m_profile; } } 1.1 jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/assembly/resource/LifestyleHandler.java Index: LifestyleHandler.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE.TXT file. * * Original contribution by OSM SARL, http://www.osm.net */ package org.apache.excalibur.merlin.assembly.resource; import java.util.Map; import java.util.Hashtable; import org.apache.avalon.framework.service.ServiceException; import org.apache.avalon.framework.logger.AbstractLogEnabled; import org.apache.excalibur.merlin.model.Resource; /** * Interface implemented by a component lifestyle handler. * * @author <a href="mailto:[EMAIL PROTECTED]">Stephen McConnell</a> */ public interface LifestyleHandler { /** * Returns the active state of the manager. * * @return TRUE if the manager has supplied one or more instances */ public boolean isActive(); /** * Returns an instance of the object type supported by the * manager to the client. * * @return an instance */ public Object get() throws Exception; /** * Invoked by a client to return an instance of the object type previously * supported by the manager. * * @param object the object to return */ public void put( Object object ) throws Exception; } 1.1 jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/assembly/resource/SingletonLifestyleHandler.java Index: SingletonLifestyleHandler.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE.TXT file. * * Original contribution by OSM SARL, http://www.osm.net */ package org.apache.excalibur.merlin.assembly.resource; import org.apache.avalon.framework.activity.Disposable; import org.apache.avalon.framework.logger.AbstractLogEnabled; import org.apache.avalon.framework.context.DefaultContext; import org.apache.avalon.framework.context.Context; import org.apache.excalibur.merlin.assembly.ContainerManager; import org.apache.excalibur.merlin.model.Profile; import org.apache.excalibur.merlin.model.Resource; import org.apache.excalibur.meta.info.PhaseDescriptor; import org.apache.excalibur.meta.info.ExtensionDescriptor; import org.apache.excalibur.meta.info.Facility; /** * Lifestyle implementation that provides suppport for the singleton * policy. Request for a single instance will allways return the * same instance for each request. * * @author <a href="mailto:[EMAIL PROTECTED]">Stephen McConnell</a> */ public class SingletonLifestyleHandler extends AbstractLogEnabled implements LifestyleHandler, Disposable { private Profile m_profile; private ContainerManager m_manager; private ResourceProvider m_provider; private LifecycleHelper m_helper; private Context m_context; private Object m_object; /** * Creation of a new singleton lifecycle manager. * @param classloader the classloader to use to establish the object * @param profile the profile defining the object type */ public SingletonLifestyleHandler( final ContainerManager manager, final ResourceProvider provider, final LifecycleHelper helper, final Profile profile, final Context context ) { m_profile = profile; m_manager = manager; m_provider = provider; m_helper = helper; m_context = context; } /** * Returns the active state of the manager. * * @return TRUE if the manager has supplied one or more instances */ public boolean isActive() { return (m_object != null); } /** * Returns an instance of the object type supported by the * manager to the client. * * @return an instance of the type defined by the profile */ public Object get() throws Exception { getLogger().debug("get"); if( m_object == null ) { m_object = createSingletonInstance(); } // // handle the access stage // DefaultContext context = new DefaultContext(); PhaseDescriptor[] phases = m_profile.getType().getPhases(); for( int i=0; i<phases.length; i++ ) { processExtension( ExtensionDescriptor.ACCESS, phases[i], m_object, context ); } return m_object; } /** * Invoked by a client to return an instance of the object type previously * supported by the manager. The singleton manager does nothing as the * object may be used across an arbitary number of clients. * * @param object the object to return */ public void put( Object object ) throws Exception { getLogger().debug("put"); DefaultContext context = new DefaultContext(); PhaseDescriptor[] phases = m_profile.getType().getPhases(); for( int i=0; i<phases.length; i++ ) { processExtension( ExtensionDescriptor.RELEASE, phases[i], object, context ); } } /** * Instantiate the singleton service. * * @return an instance of the type defined by the profile */ public Object createSingletonInstance() throws Exception { getLogger().debug("create"); // // load the class // Class clazz = null; String classname = null; try { classname = m_profile.getType().getInfo().getImplementationKey(); clazz = m_manager.loadClass( classname ); } catch( Throwable e ) { final String error = "Unexpected exception while attempting to load class '" + classname + "' for the profile: " + m_profile; throw new ResourceException( error, e ); } // // create a new instance of the class // try { m_object = clazz.newInstance(); } catch( Throwable e ) { final String error = "Unexpected exception while attempting to instantiate an instance from profile: " + m_profile; throw new ResourceException( error, e ); } final String path = m_manager.getPath() + "/" + m_profile.getName(); m_helper.startup( m_object, path, m_profile, m_provider, m_context ); return m_object; } private void processExtension( int stage, PhaseDescriptor phase, Object object, Context context ) throws Exception { final Facility facility = m_profile.getFacility( phase ); final ExtensionDescriptor ext = facility.getExtension( phase ); if( ext.isApplicable( stage ) ) { Resource resource = m_profile.getExtension( phase ); Extension extension = (Extension) resource.access(); try { extension.extend( stage, object, context ); } catch( Throwable e ) { final String error = "Extension " + extension.getClass().getName() + " raised an exception " + e.getClass().getName() + " while processing the " + ExtensionDescriptor.stageToString( stage ) + " phase for the component " + m_profile.getName(); throw new LifecycleException( error, e ); } } } /** * Request for disposal of the manager. This operation is normally invoked * by the client that initialy instantiated the manager. The implementation * handles the disposal of the singleton resoruce and release of associated * references. */ public void dispose() { if( m_object != null ) { final String path = m_manager.getPath() + "/" + m_profile.getName(); try { m_helper.shutdown( path, m_profile, m_object ); } catch( Throwable e ) { // ### should add loggging to the class so we can issue a warning // ignore it for now } } m_object = null; m_profile = null; m_manager = null; m_provider = null; m_helper = null; } } 1.30 +6 -9 jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/container/DefaultContainer.java Index: DefaultContainer.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/container/DefaultContainer.java,v retrieving revision 1.29 retrieving revision 1.30 diff -u -r1.29 -r1.30 --- DefaultContainer.java 12 Aug 2002 02:00:09 -0000 1.29 +++ DefaultContainer.java 12 Aug 2002 06:08:54 -0000 1.30 @@ -406,7 +406,7 @@ throw new IllegalStateException( error ); } Resource resource = service.getResource( this ); - resource.create(); + resource.access(); } m_state = INITIALIZED; @@ -859,8 +859,7 @@ throw new IllegalStateException( "Container not in suspended or initialized state." ); // - // Add the supplied profiles to this container and declare them to the - // container manager + // Add the supplied profiles to this container // for( int i=0; i<profiles.length; i++ ) @@ -875,10 +874,8 @@ // procedure will include the installed components // - Profile[] startup = m_descriptor.getComponents( Profile.EXPLICIT, true ); - getLogger().info("startup sequence length = " + startup.length ); + Profile[] startup = m_descriptor.getComponents( true ); m_map = m_manager.assemble( startup ); - getLogger().info("map startup sequence length = " + m_map.getStartupGraph().length ); } //======================================================================= @@ -1067,7 +1064,7 @@ ContainerService service = m_factory.build( config ); Resource resource = service.getResource( this ); - return (Container) resource.create(); + return (Container) resource.access(); } /** @@ -1087,7 +1084,7 @@ ContainerService service = m_factory.build( descriptor, classpath ); Resource resource = service.getResource( this ); - return (Container) resource.create(); + return (Container) resource.access(); } /** 1.35 +3 -3 jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/kernel/DefaultKernel.java Index: DefaultKernel.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/kernel/DefaultKernel.java,v retrieving revision 1.34 retrieving revision 1.35 diff -u -r1.34 -r1.35 --- DefaultKernel.java 12 Aug 2002 02:00:10 -0000 1.34 +++ DefaultKernel.java 12 Aug 2002 06:08:54 -0000 1.35 @@ -290,7 +290,7 @@ ContainerService service = factory.build( config ); Resource resource = service.getResource(); - m_container = (Container) resource.create(); + m_container = (Container) resource.access(); m_initialized = true; return; } @@ -352,7 +352,7 @@ ContainerService service = factory.build( config ); Resource resource = service.getResource(); - m_container = (Container) resource.create(); + m_container = (Container) resource.access(); getLogger().info("kernel initialization complete"); m_initialized = true; } 1.5 +5 -36 jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/Resource.java Index: Resource.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/Resource.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- Resource.java 12 Aug 2002 02:00:10 -0000 1.4 +++ Resource.java 12 Aug 2002 06:08:54 -0000 1.5 @@ -9,21 +9,17 @@ import org.apache.excalibur.meta.info.ServiceDescriptor; import org.apache.avalon.framework.context.Context; +import org.apache.avalon.framework.activity.Disposable; /** - * Interface implemented by object capable of supply a resources. + * Interface implemented by object capable of supply a resources indepedently + * of a particular lifestyle. * * @author <a href="mailto:[EMAIL PROTECTED]">Stephen McConnell</a> * @version $Revision$ $Date$ */ -public interface Resource +public interface Resource extends Disposable { - - static final int NOT_STARTED = 0; - static final int STARTED = 1; - static final int STOPPED = 2; - - /** * Returns the designated resource path. * @@ -46,28 +42,6 @@ Profile getProfile(); /** - * Returns the active state of the resoruce. - * @return one of the values NOT_STARTED, STARTED, or STOPPED - */ - int getState(); - - /** - * Return the resource instance. - * - * @return an instance of the type constrained to the profile - */ - Object create() throws Exception; - - /** - * Return the resource instance using a supplied context. - * - * @param context a supplimentary context for inport resolution - * @return an instance of the type constrained to the profile - */ - Object create( String name ) throws Exception; - - - /** * Return the resource instance. * * @return an instance of the type defined by the profile @@ -78,11 +52,6 @@ * Release the service instance. */ public void release( Object instance ) throws Exception; - - /** - * Destroy the resource. - */ - void destroy() throws Exception; }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>