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]

Reply via email to