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/15 10:13:32 UTC

cvs commit: jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/phases StartupPhase.java

donaldp     01/04/15 01:13:32

  Modified:    src/java/org/apache/phoenix/engine
                        DefaultServerApplication.java
               src/java/org/apache/phoenix/engine/phases StartupPhase.java
  Removed:     src/java/org/apache/phoenix/engine/facilities
                        ComponentManagerBuilder.java
                        DefaultComponentManagerBuilder.java
                        DefaultLoggerBuilder.java LoggerBuilder.java
  Log:
  Removed need for Logger/ComponentManager Builder Facilities by integrating functionality into StartupPhase. (The functionality wasn't really pluggable anyway).
  
  Revision  Changes    Path
  1.13      +0 -13     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.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- DefaultServerApplication.java	2001/04/15 05:40:52	1.12
  +++ DefaultServerApplication.java	2001/04/15 08:13:31	1.13
  @@ -25,9 +25,7 @@
   import org.apache.avalon.camelot.ContainerException;
   import org.apache.avalon.camelot.Entry;
   import org.apache.avalon.camelot.Factory;
  -import org.apache.phoenix.engine.facilities.ComponentManagerBuilder;
   import org.apache.phoenix.engine.facilities.ConfigurationRepository;
  -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;
  @@ -35,10 +33,8 @@
   import org.apache.phoenix.engine.blocks.BlockDAG;
   import org.apache.phoenix.engine.blocks.BlockEntry;
   import org.apache.phoenix.engine.blocks.RoleEntry;
  -import org.apache.phoenix.engine.facilities.DefaultComponentManagerBuilder;
   import org.apache.phoenix.engine.facilities.DefaultConfigurationRepository;
   import org.apache.phoenix.engine.facilities.DefaultLogManager;
  -import org.apache.phoenix.engine.facilities.DefaultLoggerBuilder;
   import org.apache.phoenix.engine.facilities.security.DefaultPolicy;
   import org.apache.phoenix.engine.facilities.DefaultThreadManager;
   import org.apache.phoenix.engine.facilities.classmanager.SarClassLoader;
  @@ -79,8 +75,6 @@
       protected SarClassLoader           m_classLoader;
   
       //these are the facilities (internal components) of ServerApplication
  -    protected LoggerBuilder            m_loggerBuilder;
  -    protected ComponentManagerBuilder  m_componentManagerBuilder;
       protected ConfigurationRepository  m_configurationRepository;
   
       public DefaultServerApplication()
  @@ -187,9 +181,7 @@
           // possibly including setting up rolling etc
           m_logManager = new DefaultLogManager();
   
  -        m_componentManagerBuilder = new DefaultComponentManagerBuilder();
           m_configurationRepository = new DefaultConfigurationRepository();
  -        m_loggerBuilder = new DefaultLoggerBuilder();
   
           m_classLoader = new SarClassLoader();
           m_threadManager = new DefaultThreadManager();
  @@ -217,8 +209,6 @@
   
           setupComponent( m_classLoader );
   
  -        setupComponent( m_loggerBuilder );
  -        setupComponent( m_componentManagerBuilder );
           setupComponent( m_configurationRepository );
   
           setupComponent( m_dag, "<core>.dag", null );
  @@ -339,9 +329,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.LoggerBuilder", m_loggerBuilder );
  -        componentManager.put( "org.apache.phoenix.engine.facilities.ComponentManagerBuilder",
  -                              m_componentManagerBuilder );
           componentManager.put( "org.apache.phoenix.engine.facilities.ConfigurationRepository",
                                 m_configurationRepository );
   
  
  
  
  1.4       +65 -13    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.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- StartupPhase.java	2001/04/15 05:40:53	1.3
  +++ StartupPhase.java	2001/04/15 08:13:32	1.4
  @@ -7,6 +7,7 @@
    */
   package org.apache.phoenix.engine.phases;
   
  +
   import java.io.File;
   import org.apache.avalon.AbstractLoggable;
   import org.apache.avalon.ComponentManager;
  @@ -14,13 +15,18 @@
   import org.apache.avalon.Composer;
   import org.apache.avalon.Context;
   import org.apache.avalon.Contextualizable;
  +import org.apache.avalon.DefaultComponentManager;
   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.camelot.Container;
  +import org.apache.avalon.camelot.ContainerException;
  +import org.apache.avalon.camelot.Entry;
   import org.apache.avalon.camelot.Factory;
   import org.apache.avalon.camelot.SimpleFactory;
  +import org.apache.avalon.component.ComponentException;
   import org.apache.avalon.configuration.Configurable;
   import org.apache.avalon.configuration.Configuration;
   import org.apache.avalon.util.thread.ThreadContext;
  @@ -31,9 +37,9 @@
   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.ComponentManagerBuilder;
  +import org.apache.phoenix.engine.blocks.RoleEntry;
   import org.apache.phoenix.engine.facilities.ConfigurationRepository;
  -import org.apache.phoenix.engine.facilities.LoggerBuilder;
  +import org.apache.phoenix.metainfo.BlockInfo;
   import org.apache.phoenix.metainfo.BlockUtil;
   import org.apache.phoenix.metainfo.ServiceDescriptor;
   
  @@ -46,8 +52,6 @@
       implements BlockVisitor, Contextualizable, Composer
   {
       private ClassLoader                 m_classLoader;
  -    private LoggerBuilder               m_loggerBuilder;
  -    private ComponentManagerBuilder     m_componentManagerBuilder;
       private ConfigurationRepository     m_repository;
       private ThreadManager               m_threadManager;
   
  @@ -57,6 +61,12 @@
       ///base context used to setup hosted blocks
       private DefaultContext           m_baseBlockContext;
   
  +    /**
  +     * The container (ie kernel) which this phase is associated with.
  +     * Required to build a ComponentManager.
  +     */
  +    private Container                   m_container;
  +
       public void contextualize( final Context context )
       {
           final File baseDirectory = (File)context.get( SarContextResources.APP_HOME_DIR );
  @@ -66,6 +76,7 @@
           final DefaultContext blockContext = new DefaultContext();
           blockContext.put( BlockContext.APP_NAME, name );
           blockContext.put( BlockContext.APP_HOME_DIR, baseDirectory );
  +
           m_baseBlockContext = blockContext;
       }
   
  @@ -76,15 +87,12 @@
   
           m_factory = new SimpleFactory( m_classLoader );
   
  +        m_container = (Container)componentManager.
  +            lookup( "org.apache.avalon.camelot.Container" );
  +
           m_threadManager = (ThreadManager)componentManager.
               lookup( "org.apache.avalon.util.thread.ThreadManager" );
   
  -        m_loggerBuilder = (LoggerBuilder)componentManager.
  -            lookup( "org.apache.phoenix.engine.facilities.LoggerBuilder" );
  -
  -        m_componentManagerBuilder = (ComponentManagerBuilder)componentManager.
  -            lookup( "org.apache.phoenix.engine.facilities.ComponentManagerBuilder" );
  -
           m_repository = (ConfigurationRepository)componentManager.
               lookup( "org.apache.phoenix.engine.facilities.ConfigurationRepository" );
       }
  @@ -122,7 +130,7 @@
               if( object instanceof Loggable )
               {
                   getLogger().debug( "Pre-Loggable Stage" );
  -                ((Loggable)object).setLogger( m_loggerBuilder.createLogger( name, entry ) );
  +                ((Loggable)object).setLogger( getLogger().getChildLogger( name ) );
                   getLogger().debug( "Loggable successful." );
               }
   
  @@ -138,8 +146,8 @@
               if( object instanceof Composer )
               {
                   getLogger().debug( "Pre-Composition Stage" );
  -                final ComponentManager componentManager =
  -                    m_componentManagerBuilder.createComponentManager( name, entry );
  +                final ComponentManager componentManager = 
  +                    createComponentManager( name, entry );
                   ((Composer)object).compose( componentManager );
                   getLogger().debug( "Composition successful." );
               }
  @@ -228,5 +236,49 @@
               new DefaultBlockContext( getLogger(), m_threadManager, m_baseBlockContext );
           context.put( BlockContext.NAME, name );
           return context;
  +    }
  +
  +    /**
  +     * Build a ComponentManager for a specific Block.
  +     *
  +     * @param name the name of the block
  +     * @param entry the BlockEntry
  +     * @return the created ComponentManager
  +     */
  +    private ComponentManager createComponentManager( final String name, final BlockEntry entry )
  +        throws ComponentException
  +    {
  +        final DefaultComponentManager componentManager = new DefaultComponentManager();
  +        final BlockInfo info = entry.getBlockInfo();
  +        final RoleEntry[] roleEntrys = entry.getRoleEntrys();
  +
  +        for( int i = 0; i < roleEntrys.length; i++ )
  +        {
  +            final String dependencyName = roleEntrys[ i ].getName();
  +            final ServiceDescriptor serviceDescriptor =
  +                info.getDependency( roleEntrys[ i ].getRole() ).getService();
  +
  +            try
  +            {
  +                //dependency should NEVER throw ContainerException here as it
  +                //is validated at entry time
  +                final BlockEntry dependency =
  +                    (BlockEntry)m_container.getEntry( dependencyName );
  +
  +                //make sure that the block offers service it supposed to be providing
  +                final ServiceDescriptor[] services = dependency.getBlockInfo().getServices();
  +                if( !BlockUtil.hasMatchingService( services, serviceDescriptor ) )
  +                {
  +                    throw new ComponentException( "Dependency " + dependencyName +
  +                                                  " does not offer service required: " +
  +                                                  serviceDescriptor );
  +                }
  +
  +                componentManager.put( roleEntrys[ i ].getRole(), (Block)dependency.getInstance() );
  +            }
  +            catch( final ContainerException ce ) {}
  +        }
  +
  +        return componentManager;
       }
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: avalon-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: avalon-dev-help@jakarta.apache.org