donaldp 2002/11/13 01:36:57 Modified: container/src/java/org/apache/excalibur/container/lifecycle LifecycleExtensionManager.java Removed: container/src/java/org/apache/excalibur/container/lifecycle AbstractLifecycleExtensionManager.java Log: Merge abstract manager into main manager as offered little advantage to separate em Revision Changes Path 1.3 +65 -2 jakarta-avalon-excalibur/container/src/java/org/apache/excalibur/container/lifecycle/LifecycleExtensionManager.java Index: LifecycleExtensionManager.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/container/src/java/org/apache/excalibur/container/lifecycle/LifecycleExtensionManager.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- LifecycleExtensionManager.java 10 Nov 2002 03:36:31 -0000 1.2 +++ LifecycleExtensionManager.java 13 Nov 2002 09:36:57 -0000 1.3 @@ -54,6 +54,7 @@ import java.util.Iterator; import java.util.List; import org.apache.avalon.framework.context.Context; +import org.apache.avalon.framework.logger.AbstractLogEnabled; import org.apache.excalibur.container.lifecycle.Accessor; import org.apache.excalibur.container.lifecycle.Creator; @@ -79,7 +80,7 @@ * @version CVS $Revision$ $Date$ */ public class LifecycleExtensionManager - extends AbstractLifecycleExtensionManager + extends AbstractLogEnabled { public static final String ROLE = LifecycleExtensionManager.class.getName(); @@ -299,6 +300,68 @@ public void clearCreatorExtensions() { m_creatorExtensions.clear(); + } + // Lifecycle method constants, these are passed to executeExtensions() + protected static final int ACCESS = 0; + protected static final int RELEASE = 1; + protected static final int CREATE = 2; + protected static final int DESTROY = 3; + + /** + * <code>executeExtensions</code> method, executes a given array of + * lifecycle interfaces on a given component. + * + * @param component a <code>Component</code> instance + * @param context a <code>Context</code> instance + * @param type a constant, referencing which phase the + * extensions array adheres to + * + * @exception Exception if an error occurs + */ + protected void executeExtensions( final Object[] extensions, + final Object component, + final Context context, + final int type ) + throws Exception + { + switch( type ) + { + case ACCESS: + for( int i = 0; i < extensions.length; ++i ) + { + ( (Accessor)extensions[ i ] ).access( component, context ); + } + break; + + case RELEASE: + for( int i = 0; i < extensions.length; ++i ) + { + ( (Accessor)extensions[ i ] ).release( component, context ); + } + break; + + case CREATE: + for( int i = 0; i < extensions.length; ++i ) + { + ( (Creator)extensions[ i ] ).create( component, context ); + } + break; + + case DESTROY: + for( int i = 0; i < extensions.length; ++i ) + { + ( (Creator)extensions[ i ] ).destroy( component, context ); + } + break; + + default: + if( getLogger().isErrorEnabled() ) + { + final String message = + "Incorrect extension phase specified: " + type; + getLogger().error( message ); + } + } } /**
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>