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]

Reply via email to