donaldp 01/04/14 19:32:14
Modified: src/java/org/apache/phoenix/engine DefaultSarDeployer.java
DefaultServerApplication.java
src/java/org/apache/phoenix/engine/blocks BlockEntry.java
BlockVisitor.java
src/java/org/apache/phoenix/engine/facilities
DefaultComponentManagerBuilder.java
src/java/org/apache/phoenix/engine/phases Phase.java
ShutdownPhase.java StartupPhase.java
Removed: src/java/org/apache/phoenix/engine/facilities
ContextBuilder.java DefaultContextBuilder.java
src/java/org/apache/phoenix/engine/phases Traversal.java
Log:
Rearrange code so that phases obey IOC.
Revision Changes Path
1.7 +2 -2
jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/DefaultSarDeployer.java
Index: DefaultSarDeployer.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/DefaultSarDeployer.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- DefaultSarDeployer.java 2001/04/12 12:23:58 1.6
+++ DefaultSarDeployer.java 2001/04/15 02:32:12 1.7
@@ -322,8 +322,8 @@
}
final RoleEntry[] roles = (RoleEntry[]) roleList.toArray( new
RoleEntry[ 0 ] );
- final BlockEntry entry = new BlockEntry( locator, roles );
-
+ final BlockEntry entry = new BlockEntry( roles );
+ entry.setLocator( locator );
entry.setBlockInfo( info );
entry.setConfiguration( block.getChild( "configuration" ) );
1.11 +43 -22
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.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- DefaultServerApplication.java 2001/04/14 05:51:38 1.10
+++ DefaultServerApplication.java 2001/04/15 02:32:12 1.11
@@ -28,7 +28,6 @@
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;
@@ -40,7 +39,6 @@
import org.apache.phoenix.engine.facilities.DefaultComponentBuilder;
import org.apache.phoenix.engine.facilities.DefaultComponentManagerBuilder;
import org.apache.phoenix.engine.facilities.DefaultConfigurationRepository;
-import org.apache.phoenix.engine.facilities.DefaultContextBuilder;
import org.apache.phoenix.engine.facilities.DefaultLogManager;
import org.apache.phoenix.engine.facilities.DefaultLoggerBuilder;
import org.apache.phoenix.engine.facilities.security.DefaultPolicy;
@@ -48,8 +46,9 @@
import org.apache.phoenix.engine.facilities.classmanager.SarClassLoader;
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.blocks.BlockVisitor;
import org.apache.phoenix.metainfo.DependencyDescriptor;
+import org.apache.avalon.util.Enum;
/**
* This is the basic container of blocks. A server application
@@ -63,6 +62,26 @@
extends AbstractContainer
implements Application, Configurable, Contextualizable
{
+
+ protected final static Traversal FORWARD = new Traversal( "FORWARD" );
+ protected final static Traversal REVERSE = new Traversal( "REVERSE" );
+ protected final static Traversal LINEAR = new Traversal( "LINEAR" );
+
+ protected final static class Traversal
+ extends Enum
+ {
+ protected Traversal( final String name )
+ {
+ super( name );
+ }
+ }
+
+ protected final static class PhaseEntry
+ {
+ protected Traversal m_traversal;
+ protected BlockVisitor m_visitor;
+ }
+
protected HashMap m_phases = new HashMap();
protected BlockDAG m_dag = new BlockDAG();
@@ -79,7 +98,6 @@
//these are the facilities (internal components) of ServerApplication
protected ComponentBuilder m_componentBuilder;
protected LoggerBuilder m_loggerBuilder;
- protected ContextBuilder m_contextBuilder;
protected ComponentManagerBuilder m_componentManagerBuilder;
protected ConfigurationRepository m_configurationRepository;
@@ -120,8 +138,15 @@
protected void initPhases()
throws ApplicationException
{
- m_phases.put( "startup", new StartupPhase() );
- m_phases.put( "shutdown", new ShutdownPhase() );
+ PhaseEntry entry = new PhaseEntry();
+ entry.m_visitor = new StartupPhase();
+ entry.m_traversal = FORWARD;
+ m_phases.put( "startup", entry );
+
+ entry = new PhaseEntry();
+ entry.m_visitor = new ShutdownPhase();
+ entry.m_traversal = REVERSE;
+ m_phases.put( "shutdown", entry );
}
protected void setupPhases()
@@ -130,8 +155,8 @@
final Iterator phases = m_phases.values().iterator();
while( phases.hasNext() )
{
- final Phase phase = (Phase)phases.next();
- setupComponent( phase );
+ final PhaseEntry entry = (PhaseEntry)phases.next();
+ setupComponent( entry.m_visitor );
}
}
@@ -142,8 +167,8 @@
try
{
getLogger().info( "Number of blocks to load: " + m_entries.size() );
- final Phase phase = (Phase)m_phases.get( "startup" );
- runPhase( phase );
+ final PhaseEntry entry = (PhaseEntry)m_phases.get( "startup" );
+ runPhase( entry.m_visitor, entry.m_traversal );
}
catch( final ApplicationException ae )
{
@@ -162,8 +187,8 @@
{
getLogger().info( "Number of blocks to unload: " + m_entries.size() );
- final Phase phase = (Phase)m_phases.get( "shutdown" );
- runPhase( phase );
+ final PhaseEntry entry = (PhaseEntry)m_phases.get( "shutdown" );
+ runPhase( entry.m_visitor, entry.m_traversal );
m_entries.clear();
}
@@ -180,7 +205,6 @@
// possibly including setting up rolling etc
m_logManager = new DefaultLogManager();
- m_contextBuilder = new DefaultContextBuilder();
m_componentManagerBuilder = new DefaultComponentManagerBuilder();
m_configurationRepository = new DefaultConfigurationRepository();
m_loggerBuilder = new DefaultLoggerBuilder();
@@ -214,7 +238,6 @@
setupComponent( m_componentBuilder );
setupComponent( m_loggerBuilder );
- setupComponent( m_contextBuilder );
setupComponent( m_componentManagerBuilder );
setupComponent( m_configurationRepository );
@@ -255,27 +278,26 @@
}
}
- protected void runPhase( final Phase phase )
+ protected void runPhase( final BlockVisitor visitor, final Traversal traversal )
throws Exception
{
-
- if( Phase.FORWARD == phase.getTraversal() )
+ if( FORWARD == traversal )
{
final Iterator entries = list();
while( entries.hasNext() )
{
final String name = (String)entries.next();
- m_dag.walkGraph( name, phase );
+ m_dag.walkGraph( name, visitor );
}
}
- else if( Phase.REVERSE == phase.getTraversal() )
+ else if( REVERSE == traversal )
{
//TODO:
final Iterator entries = list();
while( entries.hasNext() )
{
final String name = (String)entries.next();
- //m_dag.reverseWalkGraph( name, phase );
+ //m_dag.reverseWalkGraph( name, visitor );
}
}
else
@@ -286,7 +308,7 @@
{
final String name = (String)entries.next();
final BlockEntry entry = (BlockEntry)getEntry( name );
- phase.visitBlock( name, entry );
+ visitor.visitBlock( name, entry );
}
}
}
@@ -366,7 +388,6 @@
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.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 );
1.4 +3 -9
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.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- BlockEntry.java 2001/04/14 05:51:38 1.3
+++ BlockEntry.java 2001/04/15 02:32:13 1.4
@@ -21,23 +21,16 @@
public class BlockEntry
extends Entry
{
- protected final Locator m_locator;
protected final RoleEntry[] m_roleEntrys;
//UGLY HACK should be stored in another server Facility (ie
ConfigurationRepository)
protected Configuration m_configuration;
- public BlockEntry( final Locator locator, final RoleEntry[] roleEntrys )
+ public BlockEntry( final RoleEntry[] roleEntrys )
{
- m_locator = locator;
m_roleEntrys = roleEntrys;
}
- public Locator getLocator()
- {
- return m_locator;
- }
-
public BlockInfo getBlockInfo()
{
return (BlockInfo)getInfo();
@@ -81,7 +74,7 @@
{
m_configuration = configuration;
}
-
+/*
public Block getBlock()
{
return (Block)getInstance();
@@ -91,4 +84,5 @@
{
setInstance( block );
}
+*/
}
1.2 +2 -0
jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/blocks/BlockVisitor.java
Index: BlockVisitor.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/blocks/BlockVisitor.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- BlockVisitor.java 2001/02/24 04:31:00 1.1
+++ BlockVisitor.java 2001/04/15 02:32:13 1.2
@@ -8,6 +8,7 @@
package org.apache.phoenix.engine.blocks;
import org.apache.avalon.atlantis.ApplicationException;
+import org.apache.avalon.Component;
/**
* Visitor interface that objects implement to walk the DAG.
@@ -15,6 +16,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a>
*/
public interface BlockVisitor
+ extends Component
{
/**
* This is called when a block is reached whilst walking the tree.
1.7 +3 -2
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.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- DefaultComponentManagerBuilder.java 2001/04/14 05:51:39 1.6
+++ DefaultComponentManagerBuilder.java 2001/04/15 02:32:13 1.7
@@ -11,11 +11,12 @@
import org.apache.avalon.ComponentManagerException;
import org.apache.avalon.Composer;
import org.apache.avalon.DefaultComponentManager;
-import org.apache.avalon.camelot.Container;
import org.apache.avalon.atlantis.Facility;
+import org.apache.avalon.camelot.Container;
import org.apache.avalon.camelot.ContainerException;
import org.apache.avalon.camelot.Entry;
import org.apache.avalon.component.ComponentException;
+import org.apache.phoenix.Block;
import org.apache.phoenix.engine.blocks.BlockEntry;
import org.apache.phoenix.engine.blocks.RoleEntry;
import org.apache.phoenix.metainfo.BlockInfo;
@@ -76,7 +77,7 @@
serviceDescriptor );
}
- componentManager.put( roleEntrys[ i ].getRole(),
dependency.getBlock() );
+ componentManager.put( roleEntrys[ i ].getRole(),
(Block)dependency.getInstance() );
}
catch( final ContainerException ce ) {}
}
1.4 +0 -12
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.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Phase.java 2001/04/14 05:51:39 1.3
+++ Phase.java 2001/04/15 02:32:13 1.4
@@ -23,16 +23,4 @@
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
- */
- Traversal getTraversal();
}
1.2 +0 -10
jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/phases/ShutdownPhase.java
Index: ShutdownPhase.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/phases/ShutdownPhase.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ShutdownPhase.java 2001/04/14 05:51:40 1.1
+++ ShutdownPhase.java 2001/04/15 02:32:13 1.2
@@ -39,16 +39,6 @@
}
/**
- * 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
1.2 +33 -18
jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/phases/StartupPhase.java
Index: StartupPhase.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/phases/StartupPhase.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- StartupPhase.java 2001/04/14 05:51:40 1.1
+++ StartupPhase.java 2001/04/15 02:32:13 1.2
@@ -7,21 +7,27 @@
*/
package org.apache.phoenix.engine.phases;
+import java.io.File;
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.DefaultContext;
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.avalon.util.thread.ThreadManager;
+import org.apache.phoenix.BlockContext;
+import org.apache.phoenix.engine.SarContextResources;
import org.apache.phoenix.engine.blocks.BlockEntry;
+import org.apache.phoenix.engine.blocks.BlockVisitor;
+import org.apache.phoenix.engine.blocks.DefaultBlockContext;
import org.apache.phoenix.engine.facilities.ComponentBuilder;
import org.apache.phoenix.engine.facilities.ComponentManagerBuilder;
import org.apache.phoenix.engine.facilities.ConfigurationRepository;
@@ -34,16 +40,30 @@
*/
public class StartupPhase
extends AbstractLoggable
- implements Phase, Composer
+ implements BlockVisitor, Contextualizable, 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;
+ ///base context used to setup hosted blocks
+ private DefaultContext m_baseBlockContext;
+
+ public void contextualize( final Context context )
+ {
+ final File baseDirectory = (File)context.get(
SarContextResources.APP_HOME_DIR );
+ final String name = (String)context.get( SarContextResources.APP_NAME );
+
+ //base contxt that all block contexts inherit from
+ final DefaultContext blockContext = new DefaultContext();
+ blockContext.put( BlockContext.APP_NAME, name );
+ blockContext.put( BlockContext.APP_HOME_DIR, baseDirectory );
+ m_baseBlockContext = blockContext;
+ }
+
public void compose( final ComponentManager componentManager )
throws ComponentManagerException
{
@@ -58,9 +78,6 @@
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"
);
@@ -69,16 +86,6 @@
}
/**
- * 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
@@ -88,7 +95,7 @@
public void visitBlock( final String name, final BlockEntry entry )
throws ApplicationException
{
- if( entry.getState() != Phase.BASE &&
+ if( entry.getState() != Phase.BASE &&
null != entry.getState() ) return;
getLogger().info( "Processing Block: " + name );
@@ -119,7 +126,7 @@
if( object instanceof Contextualizable )
{
getLogger().debug( "Pre-Contextualize Stage" );
- ((Contextualizable)object).contextualize(
m_contextBuilder.createContext( name, entry ) );
+ ((Contextualizable)object).contextualize( createContext( name ) );
getLogger().debug( "Contextualize successful." );
}
@@ -166,5 +173,13 @@
{
throw new ApplicationException( "Failed to load block " + name, e );
}
+ }
+
+ protected Context createContext( final String name )
+ {
+ final DefaultBlockContext context =
+ new DefaultBlockContext( getLogger(), m_threadManager,
m_baseBlockContext );
+ context.put( BlockContext.NAME, name );
+ return context;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]