You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avalon.apache.org by do...@apache.org on 2001/04/14 07:51:40 UTC
cvs commit: jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/phases ShutdownPhase.java StartupPhase.java Phase.java Traversal.java DefaultPhase.java PipelineRunner.java
donaldp 01/04/13 22:51:40
Modified: src/java/org/apache/phoenix/engine
DefaultServerApplication.java
src/java/org/apache/phoenix/engine/blocks BlockDAG.java
BlockEntry.java
src/java/org/apache/phoenix/engine/facilities
DefaultComponentBuilder.java
DefaultComponentManagerBuilder.java
DefaultConfigurationRepository.java
DefaultContextBuilder.java
DefaultLoggerBuilder.java
src/java/org/apache/phoenix/engine/phases Phase.java
Traversal.java
Added: src/java/org/apache/phoenix/engine/facilities
ComponentBuilder.java ComponentManagerBuilder.java
ConfigurationRepository.java ContextBuilder.java
LoggerBuilder.java
src/java/org/apache/phoenix/engine/phases ShutdownPhase.java
StartupPhase.java
Removed: src/java/org/apache/phoenix/engine/phases DefaultPhase.java
PipelineRunner.java
Log:
Updated kernel to implement stages directly rather than using camelot.pipeline.* directly
Also moved PolicyClassLoader and AbstractPolicy to this CVS from main Avalon CVS.
Revision Changes Path
1.10 +15 -29 jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/DefaultServerApplication.java
Index: DefaultServerApplication.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/DefaultServerApplication.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- DefaultServerApplication.java 2001/04/12 12:23:59 1.9
+++ DefaultServerApplication.java 2001/04/14 05:51:38 1.10
@@ -25,14 +25,11 @@
import org.apache.avalon.camelot.ContainerException;
import org.apache.avalon.camelot.Entry;
import org.apache.avalon.camelot.Factory;
-import org.apache.avalon.camelot.pipeline.AvalonState;
-import org.apache.avalon.camelot.pipeline.ComponentBuilder;
-import org.apache.avalon.camelot.pipeline.ComponentManagerBuilder;
-import org.apache.avalon.camelot.pipeline.ConfigurationRepository;
-import org.apache.avalon.camelot.pipeline.ContextBuilder;
-import org.apache.avalon.camelot.pipeline.LoggerBuilder;
-import org.apache.avalon.camelot.pipeline.ShutdownPipeline;
-import org.apache.avalon.camelot.pipeline.StartupPipeline;
+import org.apache.phoenix.engine.facilities.ComponentBuilder;
+import org.apache.phoenix.engine.facilities.ComponentManagerBuilder;
+import org.apache.phoenix.engine.facilities.ConfigurationRepository;
+import org.apache.phoenix.engine.facilities.ContextBuilder;
+import org.apache.phoenix.engine.facilities.LoggerBuilder;
import org.apache.avalon.configuration.Configurable;
import org.apache.avalon.configuration.Configuration;
import org.apache.avalon.configuration.ConfigurationException;
@@ -49,9 +46,9 @@
import org.apache.phoenix.engine.facilities.security.DefaultPolicy;
import org.apache.phoenix.engine.facilities.DefaultThreadManager;
import org.apache.phoenix.engine.facilities.classmanager.SarClassLoader;
-import org.apache.phoenix.engine.phases.DefaultPhase;
+import org.apache.phoenix.engine.phases.ShutdownPhase;
+import org.apache.phoenix.engine.phases.StartupPhase;
import org.apache.phoenix.engine.phases.Phase;
-import org.apache.phoenix.engine.phases.Traversal;
import org.apache.phoenix.metainfo.DependencyDescriptor;
/**
@@ -123,19 +120,8 @@
protected void initPhases()
throws ApplicationException
{
- Phase phase = null;
-
- phase = new DefaultPhase( Phase.FORWARD,
- new StartupPipeline(),
- AvalonState.BASE,
- AvalonState.RUNNING );
- m_phases.put( "startup", phase );
-
- phase = new DefaultPhase( Phase.REVERSE,
- new ShutdownPipeline(),
- AvalonState.RUNNING,
- AvalonState.DISPOSED );
- m_phases.put( "shutdown", phase );
+ m_phases.put( "startup", new StartupPhase() );
+ m_phases.put( "shutdown", new ShutdownPhase() );
}
protected void setupPhases()
@@ -375,18 +361,18 @@
protected ComponentManager createComponentManager()
{
final DefaultComponentManager componentManager = new DefaultComponentManager();
- componentManager.put( "org.apache.phoenix.engine.ServerApplication", this );
+ componentManager.put( "org.apache.avalon.camelot.Container", this );
componentManager.put( "java.security.Policy", m_policy );
componentManager.put( "java.lang.ClassLoader", m_classLoader );
componentManager.put( "NOT_DONE_YET", m_logManager );
componentManager.put( "org.apache.avalon.util.thread.ThreadManager", m_threadManager );
- componentManager.put( "org.apache.avalon.camelot.pipeline.ContextBuilder", m_contextBuilder );
- componentManager.put( "org.apache.avalon.camelot.pipeline.LoggerBuilder", m_loggerBuilder );
- componentManager.put( "org.apache.avalon.camelot.pipeline.ComponentBuilder",
+ componentManager.put( "org.apache.phoenix.engine.facilities.ContextBuilder", m_contextBuilder );
+ componentManager.put( "org.apache.phoenix.engine.facilities.LoggerBuilder", m_loggerBuilder );
+ componentManager.put( "org.apache.phoenix.engine.facilities.ComponentBuilder",
m_componentBuilder );
- componentManager.put( "org.apache.avalon.camelot.pipeline.ComponentManagerBuilder",
+ componentManager.put( "org.apache.phoenix.engine.facilities.ComponentManagerBuilder",
m_componentManagerBuilder );
- componentManager.put( "org.apache.avalon.camelot.pipeline.ConfigurationRepository",
+ componentManager.put( "org.apache.phoenix.engine.facilities.ConfigurationRepository",
m_configurationRepository );
return componentManager;
1.7 +5 -6 jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/blocks/BlockDAG.java
Index: BlockDAG.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/blocks/BlockDAG.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- BlockDAG.java 2001/04/12 12:24:02 1.6
+++ BlockDAG.java 2001/04/14 05:51:38 1.7
@@ -12,7 +12,7 @@
import org.apache.avalon.ComponentManager;
import org.apache.avalon.ComponentManagerException;
import org.apache.avalon.Composer;
-import org.apache.avalon.atlantis.Application;
+import org.apache.avalon.camelot.Container;
import org.apache.avalon.camelot.ContainerException;
import org.apache.phoenix.Block;
import org.apache.phoenix.metainfo.DependencyDescriptor;
@@ -27,13 +27,12 @@
extends AbstractLoggable
implements Composer
{
- protected Application m_application;
+ protected Container m_container;
public void compose( final ComponentManager componentManager )
throws ComponentManagerException
{
- m_application = (Application)componentManager.
- lookup( "org.apache.phoenix.engine.ServerApplication" );
+ m_container = (Container)componentManager.lookup( "org.apache.avalon.camelot.Container" );
}
public void walkGraph( final String root, final BlockVisitor visitor )
@@ -51,7 +50,7 @@
protected BlockEntry getBlockEntry( final String name )
throws Exception
{
- return (BlockEntry)m_application.getEntry( name );
+ return (BlockEntry)m_container.getEntry( name );
//catch( final ContainerException ce )
}
@@ -98,7 +97,7 @@
{
getLogger().debug( "Traversing reverse dependencies for " + name );
- final Iterator entries = m_application.list();
+ final Iterator entries = m_container.list();
while( entries.hasNext() )
{
final String blockName = (String)entries.next();
1.3 +0 -2 jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/blocks/BlockEntry.java
Index: BlockEntry.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/blocks/BlockEntry.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- BlockEntry.java 2001/02/28 08:13:55 1.2
+++ BlockEntry.java 2001/04/14 05:51:38 1.3
@@ -9,7 +9,6 @@
import org.apache.avalon.camelot.Entry;
import org.apache.avalon.camelot.Locator;
-import org.apache.avalon.camelot.pipeline.AvalonState;
import org.apache.avalon.configuration.Configuration;
import org.apache.phoenix.Block;
import org.apache.phoenix.metainfo.BlockInfo;
@@ -30,7 +29,6 @@
public BlockEntry( final Locator locator, final RoleEntry[] roleEntrys )
{
- setState( AvalonState.BASE );
m_locator = locator;
m_roleEntrys = roleEntrys;
}
1.3 +0 -1 jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/facilities/DefaultComponentBuilder.java
Index: DefaultComponentBuilder.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/facilities/DefaultComponentBuilder.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- DefaultComponentBuilder.java 2001/04/03 03:50:36 1.2
+++ DefaultComponentBuilder.java 2001/04/14 05:51:39 1.3
@@ -18,7 +18,6 @@
import org.apache.avalon.camelot.Entry;
import org.apache.avalon.camelot.Factory;
import org.apache.avalon.camelot.FactoryException;
-import org.apache.avalon.camelot.pipeline.ComponentBuilder;
import org.apache.log.Logger;
import org.apache.phoenix.Block;
import org.apache.phoenix.engine.blocks.BlockEntry;
1.6 +4 -6 jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/facilities/DefaultComponentManagerBuilder.java
Index: DefaultComponentManagerBuilder.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/facilities/DefaultComponentManagerBuilder.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- DefaultComponentManagerBuilder.java 2001/04/12 12:24:03 1.5
+++ DefaultComponentManagerBuilder.java 2001/04/14 05:51:39 1.6
@@ -11,11 +11,10 @@
import org.apache.avalon.ComponentManagerException;
import org.apache.avalon.Composer;
import org.apache.avalon.DefaultComponentManager;
-import org.apache.avalon.atlantis.Application;
+import org.apache.avalon.camelot.Container;
import org.apache.avalon.atlantis.Facility;
import org.apache.avalon.camelot.ContainerException;
import org.apache.avalon.camelot.Entry;
-import org.apache.avalon.camelot.pipeline.ComponentManagerBuilder;
import org.apache.avalon.component.ComponentException;
import org.apache.phoenix.engine.blocks.BlockEntry;
import org.apache.phoenix.engine.blocks.RoleEntry;
@@ -32,13 +31,12 @@
implements Facility, ComponentManagerBuilder, Composer
{
//container to get dependencies from
- protected Application m_application;
+ protected Container m_container;
public void compose( final ComponentManager componentManager )
throws ComponentManagerException
{
- m_application = (Application)componentManager.
- lookup( "org.apache.phoenix.engine.ServerApplication" );
+ m_container = (Container)componentManager.lookup( "org.apache.avalon.camelot.Container" );
}
/**
@@ -67,7 +65,7 @@
//dependency should NEVER be null here as it
//is validated at entry time
final BlockEntry dependency =
- (BlockEntry)m_application.getEntry( dependencyName );
+ (BlockEntry)m_container.getEntry( dependencyName );
//make sure that the block offers service it supposed to be providing
final ServiceDescriptor[] services = dependency.getBlockInfo().getServices();
1.2 +0 -1 jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/facilities/DefaultConfigurationRepository.java
Index: DefaultConfigurationRepository.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/facilities/DefaultConfigurationRepository.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DefaultConfigurationRepository.java 2001/03/18 08:35:04 1.1
+++ DefaultConfigurationRepository.java 2001/04/14 05:51:39 1.2
@@ -9,7 +9,6 @@
import org.apache.avalon.atlantis.Facility;
import org.apache.avalon.camelot.Entry;
-import org.apache.avalon.camelot.pipeline.ConfigurationRepository;
import org.apache.avalon.configuration.Configuration;
import org.apache.avalon.configuration.ConfigurationException;
import org.apache.phoenix.engine.blocks.BlockEntry;
1.2 +0 -1 jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/facilities/DefaultContextBuilder.java
Index: DefaultContextBuilder.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/facilities/DefaultContextBuilder.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DefaultContextBuilder.java 2001/03/18 08:35:04 1.1
+++ DefaultContextBuilder.java 2001/04/14 05:51:39 1.2
@@ -17,7 +17,6 @@
import org.apache.avalon.DefaultContext;
import org.apache.avalon.atlantis.Facility;
import org.apache.avalon.camelot.Entry;
-import org.apache.avalon.camelot.pipeline.ContextBuilder;
import org.apache.avalon.util.thread.ThreadManager;
import org.apache.phoenix.BlockContext;
import org.apache.phoenix.engine.SarContextResources;
1.2 +0 -1 jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/facilities/DefaultLoggerBuilder.java
Index: DefaultLoggerBuilder.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/facilities/DefaultLoggerBuilder.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DefaultLoggerBuilder.java 2001/03/18 08:35:04 1.1
+++ DefaultLoggerBuilder.java 2001/04/14 05:51:39 1.2
@@ -10,7 +10,6 @@
import org.apache.avalon.AbstractLoggable;
import org.apache.avalon.atlantis.Facility;
import org.apache.avalon.camelot.Entry;
-import org.apache.avalon.camelot.pipeline.LoggerBuilder;
import org.apache.log.Logger;
/**
1.1 jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/facilities/ComponentBuilder.java
Index: ComponentBuilder.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.phoenix.engine.facilities;
import org.apache.avalon.Component;
import org.apache.avalon.camelot.Entry;
/**
* Component responsible for building components for entry.
*
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/
public interface ComponentBuilder
extends Component
{
Object createComponent( String name, Entry entry )
throws Exception;
}
1.1 jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/facilities/ComponentManagerBuilder.java
Index: ComponentManagerBuilder.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.phoenix.engine.facilities;
import org.apache.avalon.Component;
import org.apache.avalon.ComponentManager;
import org.apache.avalon.ComponentManagerException;
import org.apache.avalon.camelot.Entry;
/**
* Component responsible for building componentManager information for entry.
*
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/
public interface ComponentManagerBuilder
extends Component
{
ComponentManager createComponentManager( String name, Entry entry )
throws ComponentManagerException;
}
1.1 jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/facilities/ConfigurationRepository.java
Index: ConfigurationRepository.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.phoenix.engine.facilities;
import org.apache.avalon.Component;
import org.apache.avalon.camelot.Entry;
import org.apache.avalon.configuration.Configuration;
import org.apache.avalon.configuration.ConfigurationException;
/**
* Repository from which all configuration data is retrieved.
*
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/
public interface ConfigurationRepository
extends Component
{
Configuration getConfiguration( String name, Entry entry )
throws ConfigurationException;
}
1.1 jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/facilities/ContextBuilder.java
Index: ContextBuilder.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.phoenix.engine.facilities;
import org.apache.avalon.Component;
import org.apache.avalon.Context;
import org.apache.avalon.camelot.Entry;
/**
* Component responsible for building context information for entry.
*
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/
public interface ContextBuilder
extends Component
{
Context createContext( String name, Entry entry );
}
1.1 jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/facilities/LoggerBuilder.java
Index: LoggerBuilder.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.phoenix.engine.facilities;
import org.apache.avalon.Component;
import org.apache.avalon.camelot.Entry;
import org.apache.log.Logger;
/**
* Component responsible for building logger for entry.
*
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/
public interface LoggerBuilder
extends Component
{
Logger createLogger( String name, Entry entry );
}
1.3 +11 -5 jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/phases/Phase.java
Index: Phase.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/phases/Phase.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Phase.java 2001/02/24 07:11:28 1.2
+++ Phase.java 2001/04/14 05:51:39 1.3
@@ -8,23 +8,29 @@
package org.apache.phoenix.engine.phases;
import org.apache.avalon.Component;
+import org.apache.avalon.camelot.State;
import org.apache.phoenix.engine.blocks.BlockVisitor;
/**
- * This represents a phase in applications lifecycle.
+ * This represents a phase in applications lifecycle.
* Each phase is made up of a number of stages.
*
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/
public interface Phase
extends BlockVisitor, Component
-{
- Traversal FORWARD = new Traversal( "FORWARD" );
- Traversal REVERSE = new Traversal( "REVERSE" );
- Traversal LINEAR = new Traversal( "LINEAR" );
+{
+ State BASE = new State( "BASE", 0 );
+ State STARTEDUP = new State( "STARTEDUP", 10 );
+ State SHUTDOWN = new State( "SHUTDOWN", 20 );
+ Traversal FORWARD = new Traversal( "FORWARD" );
+ Traversal REVERSE = new Traversal( "REVERSE" );
+ Traversal LINEAR = new Traversal( "LINEAR" );
+
/**
* Retrieve traversal that should be taken.
+ * TODO: remove this method and implement IOC
*
* @return the Traversal
*/
1.2 +2 -2 jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/phases/Traversal.java
Index: Traversal.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/phases/Traversal.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Traversal.java 2001/02/24 07:11:28 1.1
+++ Traversal.java 2001/04/14 05:51:40 1.2
@@ -9,10 +9,10 @@
import org.apache.avalon.util.Enum;
-public class Traversal
+class Traversal
extends Enum
{
- Traversal( final String name )
+ protected Traversal( final String name )
{
super( name );
}
1.1 jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/phases/ShutdownPhase.java
Index: ShutdownPhase.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.phoenix.engine.phases;
import org.apache.avalon.AbstractLoggable;
import org.apache.avalon.ComponentManager;
import org.apache.avalon.ComponentManagerException;
import org.apache.avalon.Composer;
import org.apache.avalon.Disposable;
import org.apache.avalon.Stoppable;
import org.apache.avalon.atlantis.ApplicationException;
import org.apache.avalon.util.thread.ThreadContext;
import org.apache.avalon.util.thread.ThreadManager;
import org.apache.phoenix.engine.blocks.BlockEntry;
/**
*
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/
public class ShutdownPhase
extends AbstractLoggable
implements Phase, Composer
{
private ClassLoader m_classLoader;
private ThreadManager m_threadManager;
public void compose( final ComponentManager componentManager )
throws ComponentManagerException
{
m_classLoader = (ClassLoader)componentManager.lookup( "java.lang.ClassLoader" );
m_threadManager = (ThreadManager)componentManager.
lookup( "org.apache.avalon.util.thread.ThreadManager" );
}
/**
* Retrieve traversal that should be taken.
*
* @return the Traversal
*/
public Traversal getTraversal()
{
return Phase.REVERSE;
}
/**
* This is called when a block is reached whilst walking the tree.
*
* @param name the name of block
* @param entry the BlockEntry
* @exception ApplicationException if walking is to be stopped
*/
public void visitBlock( final String name, final BlockEntry entry )
throws ApplicationException
{
if( entry.getState() != Phase.STARTEDUP ) return;
getLogger().info( "Processing Block: " + name );
getLogger().debug( "Processing with classloader " + m_classLoader );
//HACK: Hack-o-mania here - Fix when each Application is
//run in a separate thread group
Thread.currentThread().setContextClassLoader( m_classLoader );
ThreadContext.setCurrentThreadPool( m_threadManager.getDefaultThreadPool() );
final Object object = entry.getInstance();
//Stoppable stage
if( object instanceof Stoppable )
{
getLogger().debug( "Pre-Stoppable Stage" );
try
{
((Stoppable)object).stop();
getLogger().debug( "Stoppable successful." );
}
catch( final Exception e )
{
getLogger().warn( "Unable to stop block " + name, e );
}
}
//Disposable stage
if( object instanceof Disposable )
{
getLogger().debug( "Pre-Disposable Stage" );
try
{
((Disposable)object).dispose();
getLogger().debug( "Disposable successful." );
}
catch( final Exception e )
{
getLogger().warn( "Unable to dispose block " + name, e );
}
}
//Destruction stage
getLogger().debug( "Pre-Destruction Stage" );
entry.setInstance( null );
entry.setState( Phase.SHUTDOWN );
getLogger().debug( "Destruction successful." );
getLogger().info( "Ran Shutdown Phase for " + name );
}
}
1.1 jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/phases/StartupPhase.java
Index: StartupPhase.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.phoenix.engine.phases;
import org.apache.avalon.AbstractLoggable;
import org.apache.avalon.ComponentManager;
import org.apache.avalon.ComponentManagerException;
import org.apache.avalon.Composer;
import org.apache.avalon.Context;
import org.apache.avalon.Contextualizable;
import org.apache.avalon.Initializable;
import org.apache.avalon.Loggable;
import org.apache.avalon.Startable;
import org.apache.avalon.atlantis.ApplicationException;
import org.apache.avalon.configuration.Configurable;
import org.apache.avalon.configuration.Configuration;
import org.apache.avalon.util.thread.ThreadManager;
import org.apache.avalon.util.thread.ThreadContext;
import org.apache.phoenix.engine.blocks.BlockEntry;
import org.apache.phoenix.engine.facilities.ComponentBuilder;
import org.apache.phoenix.engine.facilities.ComponentManagerBuilder;
import org.apache.phoenix.engine.facilities.ConfigurationRepository;
import org.apache.phoenix.engine.facilities.ContextBuilder;
import org.apache.phoenix.engine.facilities.LoggerBuilder;
/**
*
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/
public class StartupPhase
extends AbstractLoggable
implements Phase, Composer
{
private ClassLoader m_classLoader;
private ComponentBuilder m_componentBuilder;
private LoggerBuilder m_loggerBuilder;
private ContextBuilder m_contextBuilder;
private ComponentManagerBuilder m_componentManagerBuilder;
private ConfigurationRepository m_repository;
private ThreadManager m_threadManager;
public void compose( final ComponentManager componentManager )
throws ComponentManagerException
{
m_classLoader = (ClassLoader)componentManager.lookup( "java.lang.ClassLoader" );
m_threadManager = (ThreadManager)componentManager.
lookup( "org.apache.avalon.util.thread.ThreadManager" );
m_componentBuilder = (ComponentBuilder)componentManager.
lookup( "org.apache.phoenix.engine.facilities.ComponentBuilder" );
m_loggerBuilder = (LoggerBuilder)componentManager.
lookup( "org.apache.phoenix.engine.facilities.LoggerBuilder" );
m_contextBuilder = (ContextBuilder)componentManager.
lookup( "org.apache.phoenix.engine.facilities.ContextBuilder" );
m_componentManagerBuilder = (ComponentManagerBuilder)componentManager.
lookup( "org.apache.phoenix.engine.facilities.ComponentManagerBuilder" );
m_repository = (ConfigurationRepository)componentManager.
lookup( "org.apache.phoenix.engine.facilities.ConfigurationRepository" );
}
/**
* Retrieve traversal that should be taken.
*
* @return the Traversal
*/
public Traversal getTraversal()
{
return Phase.FORWARD;
}
/**
* This is called when a block is reached whilst walking the tree.
*
* @param name the name of block
* @param entry the BlockEntry
* @exception ApplicationException if walking is to be stopped
*/
public void visitBlock( final String name, final BlockEntry entry )
throws ApplicationException
{
if( entry.getState() != Phase.BASE &&
null != entry.getState() ) return;
getLogger().info( "Processing Block: " + name );
getLogger().debug( "Processing with classloader " + m_classLoader );
//HACK: Hack-o-mania here - Fix when each Application is
//run in a separate thread group
Thread.currentThread().setContextClassLoader( m_classLoader );
ThreadContext.setCurrentThreadPool( m_threadManager.getDefaultThreadPool() );
try
{
//Creation stage
getLogger().debug( "Pre-Creation Stage" );
final Object object = m_componentBuilder.createComponent( name, entry );
entry.setInstance( object );
getLogger().debug( "Creation successful." );
//Loggable stage
if( object instanceof Loggable )
{
getLogger().debug( "Pre-Loggable Stage" );
((Loggable)object).setLogger( m_loggerBuilder.createLogger( name, entry ) );
getLogger().debug( "Loggable successful." );
}
//Contextualize stage
if( object instanceof Contextualizable )
{
getLogger().debug( "Pre-Contextualize Stage" );
((Contextualizable)object).contextualize( m_contextBuilder.createContext( name, entry ) );
getLogger().debug( "Contextualize successful." );
}
//Composition stage
if( object instanceof Composer )
{
getLogger().debug( "Pre-Composition Stage" );
final ComponentManager componentManager =
m_componentManagerBuilder.createComponentManager( name, entry );
((Composer)object).compose( componentManager );
getLogger().debug( "Composition successful." );
}
//Configuring stage
if( object instanceof Configurable )
{
getLogger().debug( "Pre-Configure Stage" );
final Configuration configuration = entry.getConfiguration();
((Configurable)object).configure( configuration );
getLogger().debug( "Configure successful." );
}
//Initialize stage
if( object instanceof Initializable )
{
getLogger().debug( "Pre-Initializable Stage" );
((Initializable)object).init();
getLogger().debug( "Initializable successful." );
}
//Start stage
if( object instanceof Startable )
{
getLogger().debug( "Pre-Start Stage" );
((Startable)object).start();
getLogger().debug( "Start successful." );
}
entry.setState( Phase.STARTEDUP );
getLogger().info( "Ran Startup Phase for " + name );
}
catch( final Exception e )
{
throw new ApplicationException( "Failed to load block " + name, e );
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: avalon-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: avalon-dev-help@jakarta.apache.org