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