donaldp 2003/02/28 17:07:44
Modified: src/java/org/apache/avalon/phoenix/components/deployer
DefaultDeployer.java
src/test/org/apache/avalon/phoenix/test
AbstractContainerTestCase.java
Added: src/java/org/apache/avalon/phoenix/components/deployer
PhoenixProfileBuilder.java
Log:
Extract Creation of a profile into a separate ProfileBuilder and reuse that in
Deployer and from TestCases
Revision Changes Path
1.67 +13 -97
avalon-phoenix/src/java/org/apache/avalon/phoenix/components/deployer/DefaultDeployer.java
Index: DefaultDeployer.java
===================================================================
RCS file:
/home/cvs/avalon-phoenix/src/java/org/apache/avalon/phoenix/components/deployer/DefaultDeployer.java,v
retrieving revision 1.66
retrieving revision 1.67
diff -u -r1.66 -r1.67
--- DefaultDeployer.java 22 Feb 2003 05:34:44 -0000 1.66
+++ DefaultDeployer.java 1 Mar 2003 01:07:44 -0000 1.67
@@ -10,12 +10,10 @@
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
-import java.util.ArrayList;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map;
import java.util.Set;
-
import org.apache.avalon.excalibur.i18n.ResourceManager;
import org.apache.avalon.excalibur.i18n.Resources;
import org.apache.avalon.framework.activity.Disposable;
@@ -23,24 +21,19 @@
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.context.DefaultContext;
-import org.apache.avalon.framework.info.ComponentInfo;
import org.apache.avalon.framework.info.SchemaDescriptor;
import org.apache.avalon.framework.logger.AbstractLogEnabled;
import org.apache.avalon.framework.logger.Logger;
import org.apache.avalon.framework.service.ServiceException;
import org.apache.avalon.framework.service.ServiceManager;
import org.apache.avalon.framework.service.Serviceable;
-import org.apache.avalon.framework.tools.infobuilder.LegacyUtil;
import org.apache.avalon.phoenix.BlockContext;
import org.apache.avalon.phoenix.components.ContainerConstants;
-import org.apache.avalon.phoenix.components.assembler.Assembler;
import org.apache.avalon.phoenix.components.assembler.AssemblyException;
-import org.apache.avalon.phoenix.containerkit.factory.ComponentBundle;
-import org.apache.avalon.phoenix.containerkit.factory.ComponentFactory;
-import org.apache.avalon.phoenix.containerkit.metadata.ComponentMetaData;
import org.apache.avalon.phoenix.containerkit.metadata.PartitionMetaData;
import org.apache.avalon.phoenix.containerkit.registry.ComponentProfile;
import org.apache.avalon.phoenix.containerkit.registry.PartitionProfile;
+import org.apache.avalon.phoenix.containerkit.registry.ProfileBuilder;
import org.apache.avalon.phoenix.interfaces.Application;
import org.apache.avalon.phoenix.interfaces.ClassLoaderManager;
import org.apache.avalon.phoenix.interfaces.ClassLoaderSet;
@@ -70,8 +63,8 @@
private static final Resources REZ =
ResourceManager.getPackageResources( DefaultDeployer.class );
- private final Assembler m_assembler = new Assembler();
private final SarVerifier m_verifier = new SarVerifier();
+ private final ProfileBuilder m_builder = new PhoenixProfileBuilder();
private final Map m_installations = new Hashtable();
private LogManager m_logManager;
private Kernel m_kernel;
@@ -102,8 +95,9 @@
public void initialize()
throws Exception
{
- setupLogger( m_assembler );
+ setupLogger( m_builder );
setupLogger( m_verifier );
+
}
/**
@@ -271,17 +265,19 @@
context.put( "classloader", classLoader );
- final PartitionMetaData metaData = assembleSar( name, assembly );
+ final Map parameters = new HashMap();
+ parameters.put( ContainerConstants.ASSEMBLY_NAME, name );
+ parameters.put( ContainerConstants.ASSEMBLY_CONFIG, assembly );
+ parameters.put( ContainerConstants.ASSEMBLY_CLASSLOADER, classLoader );
- final ComponentFactory factory = new PhoenixComponentFactory(
classLoader );
- setupLogger( factory, "factory" );
- final PartitionProfile profile = assembleSarProfile( metaData, factory
);
+ //assemble all the blocks for application
+ final PartitionProfile profile = m_builder.buildProfile( parameters );
storeConfigurationSchemas( profile, classLoader );
verify( profile, classLoader );
//Setup configuration for all the applications blocks
- setupConfiguration( metaData, config.getChildren() );
+ setupConfiguration( profile.getMetaData(), config.getChildren() );
final Configuration logs = environment.getChild( "logs" );
final Logger logger =
@@ -295,11 +291,11 @@
logger,
classLoaderSet.getClassLoaders() );
- m_installations.put( metaData.getName(), installation );
+ m_installations.put( name, installation );
final String message =
REZ.getString( "deploy.notice.sar.add",
- metaData.getName() );
+ name );
getLogger().debug( message );
success = true;
}
@@ -330,86 +326,6 @@
}
}
}
- }
-
- private PartitionProfile assembleSarProfile( final PartitionMetaData metaData,
- final ComponentFactory factory )
- throws Exception
- {
- final PartitionMetaData blockPartition =
- metaData.getPartition( ContainerConstants.BLOCK_PARTITION );
- final PartitionMetaData listenerPartition =
- metaData.getPartition( ContainerConstants.LISTENER_PARTITION );
-
- final PartitionProfile blockProfile = assembleProfile( blockPartition,
factory );
- final PartitionProfile listenerProfile =
- assembleListenerProfile( listenerPartition );
-
- final PartitionProfile[] profiles = new PartitionProfile[]{blockProfile,
listenerProfile};
- return new PartitionProfile( metaData,
- profiles,
- new ComponentProfile[ 0 ] );
- }
-
- private PartitionProfile assembleListenerProfile( final PartitionMetaData
metaData )
- {
- final ArrayList componentSet = new ArrayList();
- final ComponentMetaData[] components = metaData.getComponents();
- for( int i = 0; i < components.length; i++ )
- {
- final ComponentMetaData component = components[ i ];
- final ComponentInfo info =
- LegacyUtil.createListenerInfo( component.getImplementationKey() );
- final ComponentProfile profile = new ComponentProfile( info, component
);
- componentSet.add( profile );
- }
-
- final ComponentProfile[] profiles =
- (ComponentProfile[])componentSet.toArray( new ComponentProfile[
componentSet.size() ] );
- return new PartitionProfile( metaData, PartitionProfile.EMPTY_SET, profiles
);
- }
-
- private PartitionProfile assembleProfile( final PartitionMetaData metaData,
- final ComponentFactory factory )
- throws Exception
- {
- final ArrayList partitionSet = new ArrayList();
- final PartitionMetaData[] partitions = metaData.getPartitions();
- for( int i = 0; i < partitions.length; i++ )
- {
- final PartitionMetaData partition = partitions[ i ];
- final PartitionProfile profile = assembleProfile( partition, factory );
- partitionSet.add( profile );
- }
-
- final ArrayList componentSet = new ArrayList();
- final ComponentMetaData[] components = metaData.getComponents();
- for( int i = 0; i < components.length; i++ )
- {
- final ComponentMetaData component = components[ i ];
- final ComponentBundle bundle =
- factory.createBundle( component.getImplementationKey() );
- final ComponentInfo info = bundle.getComponentInfo();
- final ComponentProfile profile = new ComponentProfile( info, component
);
- componentSet.add( profile );
- }
-
- final PartitionProfile[] partitionProfiles =
- (PartitionProfile[])partitionSet.toArray( new PartitionProfile[
partitionSet.size() ] );
- final ComponentProfile[] componentProfiles =
- (ComponentProfile[])componentSet.toArray( new ComponentProfile[
componentSet.size() ] );
- return new PartitionProfile( metaData, partitionProfiles, componentProfiles
);
- }
-
- private PartitionMetaData assembleSar( final String name,
- final Configuration assembly )
- throws Exception
- {
- final Map parameters = new HashMap();
- parameters.put( ContainerConstants.ASSEMBLY_NAME, name );
- parameters.put( ContainerConstants.ASSEMBLY_CONFIG, assembly );
- //assemble all the blocks for application
- return m_assembler.buildAssembly( parameters );
}
/**
1.1
avalon-phoenix/src/java/org/apache/avalon/phoenix/components/deployer/PhoenixProfileBuilder.java
Index: PhoenixProfileBuilder.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.txt file.
*/
package org.apache.avalon.phoenix.components.deployer;
import org.apache.avalon.phoenix.containerkit.registry.ProfileBuilder;
import org.apache.avalon.phoenix.containerkit.registry.PartitionProfile;
import org.apache.avalon.phoenix.containerkit.registry.ComponentProfile;
import org.apache.avalon.phoenix.containerkit.metadata.PartitionMetaData;
import org.apache.avalon.phoenix.containerkit.metadata.ComponentMetaData;
import org.apache.avalon.phoenix.containerkit.factory.ComponentFactory;
import org.apache.avalon.phoenix.containerkit.factory.ComponentBundle;
import org.apache.avalon.phoenix.components.assembler.Assembler;
import org.apache.avalon.phoenix.components.ContainerConstants;
import org.apache.avalon.framework.logger.AbstractLogEnabled;
import org.apache.avalon.framework.logger.Logger;
import org.apache.avalon.framework.info.ComponentInfo;
import org.apache.avalon.framework.tools.infobuilder.LegacyUtil;
import java.util.Map;
import java.util.ArrayList;
/**
*
* @author <a href="mailto:peter at realityforge.org">Peter Donald</a>
* @version $Revision: 1.1 $ $Date: 2003/03/01 01:07:44 $
*/
public class PhoenixProfileBuilder
extends AbstractLogEnabled
implements ProfileBuilder
{
private final Assembler m_assembler = new Assembler();
public void enableLogging( Logger logger )
{
super.enableLogging( logger );
setupLogger( m_assembler );
}
public PartitionProfile buildProfile( Map parameters )
throws Exception
{
final PartitionMetaData metaData = m_assembler.buildAssembly( parameters );
final ClassLoader classLoader =
(ClassLoader)parameters.get( ContainerConstants.ASSEMBLY_CLASSLOADER );
final ComponentFactory factory = new PhoenixComponentFactory( classLoader );
setupLogger( factory, "factory" );
return assembleSarProfile( metaData, factory );
}
private PartitionProfile assembleSarProfile( final PartitionMetaData metaData,
final ComponentFactory factory )
throws Exception
{
final PartitionMetaData blockPartition =
metaData.getPartition( ContainerConstants.BLOCK_PARTITION );
final PartitionMetaData listenerPartition =
metaData.getPartition( ContainerConstants.LISTENER_PARTITION );
final PartitionProfile blockProfile = assembleProfile( blockPartition,
factory );
final PartitionProfile listenerProfile =
assembleListenerProfile( listenerPartition );
final PartitionProfile[] profiles = new PartitionProfile[]{blockProfile,
listenerProfile};
return new PartitionProfile( metaData,
profiles,
new ComponentProfile[ 0 ] );
}
private PartitionProfile assembleListenerProfile( final PartitionMetaData
metaData )
{
final ArrayList componentSet = new ArrayList();
final ComponentMetaData[] components = metaData.getComponents();
for( int i = 0; i < components.length; i++ )
{
final ComponentMetaData component = components[ i ];
final ComponentInfo info =
LegacyUtil.createListenerInfo( component.getImplementationKey() );
final ComponentProfile profile = new ComponentProfile( info, component );
componentSet.add( profile );
}
final ComponentProfile[] profiles =
(ComponentProfile[])componentSet.toArray( new ComponentProfile[
componentSet.size() ] );
return new PartitionProfile( metaData, PartitionProfile.EMPTY_SET, profiles
);
}
private PartitionProfile assembleProfile( final PartitionMetaData metaData,
final ComponentFactory factory )
throws Exception
{
final ArrayList partitionSet = new ArrayList();
final PartitionMetaData[] partitions = metaData.getPartitions();
for( int i = 0; i < partitions.length; i++ )
{
final PartitionMetaData partition = partitions[ i ];
final PartitionProfile profile = assembleProfile( partition, factory );
partitionSet.add( profile );
}
final ArrayList componentSet = new ArrayList();
final ComponentMetaData[] components = metaData.getComponents();
for( int i = 0; i < components.length; i++ )
{
final ComponentMetaData component = components[ i ];
final ComponentBundle bundle =
factory.createBundle( component.getImplementationKey() );
final ComponentInfo info = bundle.getComponentInfo();
final ComponentProfile profile = new ComponentProfile( info, component );
componentSet.add( profile );
}
final PartitionProfile[] partitionProfiles =
(PartitionProfile[])partitionSet.toArray( new PartitionProfile[
partitionSet.size() ] );
final ComponentProfile[] componentProfiles =
(ComponentProfile[])componentSet.toArray( new ComponentProfile[
componentSet.size() ] );
return new PartitionProfile( metaData, partitionProfiles, componentProfiles
);
}
}
1.4 +7 -6
avalon-phoenix/src/test/org/apache/avalon/phoenix/test/AbstractContainerTestCase.java
Index: AbstractContainerTestCase.java
===================================================================
RCS file:
/home/cvs/avalon-phoenix/src/test/org/apache/avalon/phoenix/test/AbstractContainerTestCase.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- AbstractContainerTestCase.java 25 Jan 2003 15:47:18 -0000 1.3
+++ AbstractContainerTestCase.java 1 Mar 2003 01:07:44 -0000 1.4
@@ -14,8 +14,8 @@
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.logger.ConsoleLogger;
import org.apache.avalon.phoenix.components.ContainerConstants;
-import org.apache.avalon.phoenix.metadata.SarMetaData;
-import org.apache.avalon.phoenix.components.assembler.Assembler;
+import org.apache.avalon.phoenix.components.deployer.PhoenixProfileBuilder;
+import org.apache.avalon.phoenix.containerkit.registry.PartitionProfile;
import org.apache.avalon.phoenix.tools.configuration.ConfigurationBuilder;
/**
@@ -32,16 +32,17 @@
super( name );
}
- protected SarMetaData assembleSar( final String config )
+ protected PartitionProfile assembleSar( final String config )
throws Exception
{
- final Assembler assembler = new Assembler();
+ final PhoenixProfileBuilder assembler = new PhoenixProfileBuilder();
assembler.enableLogging( new ConsoleLogger() );
final Configuration assembly = loadConfig( config );
final Map parameters = new HashMap();
parameters.put( ContainerConstants.ASSEMBLY_NAME, "test" );
parameters.put( ContainerConstants.ASSEMBLY_CONFIG, assembly );
- return assembler.buildAssembly( parameters );
+ parameters.put( ContainerConstants.ASSEMBLY_CLASSLOADER,
getClass().getClassLoader() );
+ return assembler.buildProfile( parameters );
}
protected Configuration loadConfig( final String config )
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]