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