mcconnell    2002/12/20 03:58:01

  Modified:    merlin   THE-RED-PILL.TXT
               merlin/src/java/org/apache/avalon/merlin/block
                        BlockLoader.java
               merlin/src/java/org/apache/avalon/merlin/container
                        ContainerLoader.java DefaultContainer.java
               merlin/src/java/org/apache/avalon/merlin/kernel
                        DefaultKernel.java
               merlin/src/java/org/apache/avalon/merlin/service
                        DefaultRegistry.java
               merlin/src/test/config block.xml
               merlin/src/test/org/apache/avalon/playground
                        StandardComponent.xinfo
  Log:
  Enhanced partition name management and registry related code.
  
  Revision  Changes    Path
  1.2       +1 -1      avalon-sandbox/merlin/THE-RED-PILL.TXT
  
  Index: THE-RED-PILL.TXT
  ===================================================================
  RCS file: /home/cvs/avalon-sandbox/merlin/THE-RED-PILL.TXT,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- THE-RED-PILL.TXT  4 Dec 2002 17:37:53 -0000       1.1
  +++ THE-RED-PILL.TXT  20 Dec 2002 11:58:00 -0000      1.2
  @@ -10,7 +10,7 @@
   # an evalon-meta/assembly deployment engine and logs some stuff in the 
   # process - interesting but not terribly valuable at the moment.
   #
  -# Pl,ease not - this code base is evolving daily as part of refactoring of 
the
  +# Please not - this code base is evolving daily as part of refactoring of the
   # Excalibur/assembly package. On completion there wil be a clean seperation 
of 
   # the internals containerment systems from the application notions of 
contaier 
   # hierachies.  The containement API element will be located under 
  
  
  
  1.7       +14 -3     
avalon-sandbox/merlin/src/java/org/apache/avalon/merlin/block/BlockLoader.java
  
  Index: BlockLoader.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/merlin/src/java/org/apache/avalon/merlin/block/BlockLoader.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- BlockLoader.java  17 Dec 2002 09:59:47 -0000      1.6
  +++ BlockLoader.java  20 Dec 2002 11:58:00 -0000      1.7
  @@ -203,6 +203,16 @@
           return (Block[]) blocks.toArray( new Block[0] );
       }
   
  +   /**
  +    * Load a block.  The implemention is provided with the parent engine and 
registry
  +    * and handles the creation of subsidiary systems.
  +    * 
  +    * @param parent the parent engine
  +    * @param registry the system registry
  +    * @param home the system home
  +    * @param url the block URL
  +    * @param system the system context
  +    */
       private Block loadBlock( 
         EngineClassLoader parent, Registry registry, File home, URL url, 
Context system ) 
         throws Exception
  @@ -241,15 +251,16 @@
   
           Configuration engineConfig = config.getChild( "engine" );
           EngineClassLoader engine = createChildEngine( parent, home, 
engineConfig, url, logger );
  +        Registry childRegistry = registry.createChild( name );
   
           //
           // create and root container
           //
   
           Configuration containerConfig = config.getChild( "container" );
  -        Appliance appliance = createContainer( engine, registry, name, home, 
containerConfig, logger );
  -        Logger child = getLogger().getChildLogger( name );
  +        Appliance appliance = createContainer( engine, childRegistry, name, 
home, containerConfig, logger );
           DefaultBlock block = new DefaultBlock( appliance, url, manifest );
  +        Logger child = getLogger().getChildLogger( name );
           block.enableLogging( child );
   
           if( getLogger().isDebugEnabled() )
  
  
  
  1.6       +10 -19    
avalon-sandbox/merlin/src/java/org/apache/avalon/merlin/container/ContainerLoader.java
  
  Index: ContainerLoader.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/merlin/src/java/org/apache/avalon/merlin/container/ContainerLoader.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ContainerLoader.java      19 Dec 2002 10:50:16 -0000      1.5
  +++ ContainerLoader.java      20 Dec 2002 11:58:00 -0000      1.6
  @@ -131,7 +131,7 @@
         EngineClassLoader engine, Registry registry, String name, File home, 
Configuration config, Logger logger )
         throws Exception
       {
  -        return createContainer( engine, registry, name, home, config, 
logger, null );
  +        return createContainer( engine, registry, name, home, config, 
logger, "/" );
       }
   
      /**
  @@ -181,27 +181,16 @@
   
               if( partition == null )
               {
  -                childName = name;
  -                childLogger = logger;
  -                childEngine = engine;
  -                childPartition = name;
  -                childRegistry = registry;
  +                childPartition = name + "/";
               }
               else
               {
  -                childName = childConfig.getAttribute( "name", "untitled" );
  -                childLogger = logger.getChildLogger( childName );
  -                childEngine = childEngine = createChildEngine( engine, home, 
childConfig, childLogger );
  -                if( partition.endsWith( "/" ) )
  -                {
  -                    childPartition = partition + "/" + name;
  -                }
  -                else
  -                {
  -                    childPartition = partition + name;
  -                }
  -                childRegistry = registry.createChild( name );
  +                childPartition = partition + name + "/";
               }
  +            childName = childConfig.getAttribute( "name", "untitled" );
  +            childLogger = logger.getChildLogger( childName );
  +            childEngine = childEngine = createChildEngine( engine, home, 
childConfig, childLogger );
  +            childRegistry = registry.createChild( name );
   
               //
               // recursively call this method to create the subsidiary 
containers
  @@ -230,7 +219,9 @@
           {
               map.put("urn:avalon:partition.name", "" );
           }
  +
           ApplianceContext context = new ApplianceContext( descriptor );
  +        context.setName( name );
           context.setDeploymentContext( map );
           if( partition != null )
           {
  
  
  
  1.5       +10 -10    
avalon-sandbox/merlin/src/java/org/apache/avalon/merlin/container/DefaultContainer.java
  
  Index: DefaultContainer.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/merlin/src/java/org/apache/avalon/merlin/container/DefaultContainer.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- DefaultContainer.java     19 Dec 2002 10:50:16 -0000      1.4
  +++ DefaultContainer.java     20 Dec 2002 11:58:00 -0000      1.5
  @@ -167,16 +167,16 @@
           {
               if( m_partition.endsWith("/") )
               {
  -                m_path = m_partition + "/" + m_descriptor.getName();
  +                m_path = m_partition + m_descriptor.getName() + "/";
               }
               else
               {
  -                m_path = m_partition + m_descriptor.getName();
  +                m_path = m_partition + "/" + m_descriptor.getName() + "/";
               }
           }
           else
           {
  -            m_path = m_descriptor.getName();
  +            m_path = m_descriptor.getName() + "/";
           }
   
           if( getLogger().isDebugEnabled() )
  @@ -204,7 +204,7 @@
               if( getLogger().isDebugEnabled() )
               {
                   final String message =
  -                  "activating container: [" + 
appliance.getProfile().getName() + "]"; 
  +                  "activating container: [" + appliance.getName() + "]"; 
                   getLogger().debug( message );
               }
   
  @@ -217,7 +217,7 @@
               {
                   final String error =
                     "Could not establish a sub-container: " 
  -                     + appliance.getProfile().getName() 
  +                     + appliance.getName() 
                        + " in container: " + this;
                   throw new ContainerException( error, e );
               }
  @@ -315,7 +315,7 @@
               if( getLogger().isDebugEnabled() )
               {
                   final String message =
  -                  "activating component: [" + 
appliance.getProfile().getName() + "]"; 
  +                  "activating component: [" + appliance.getName() + "]"; 
                   getLogger().debug( message );
               }
   
  @@ -328,7 +328,7 @@
               {
                   final String error =
                     "Could not establish a component: " 
  -                     + appliance.getProfile().getName() 
  +                     + appliance.getName() 
                        + " in container: " + this;
                   throw new ContainerException( error, e );
               }
  @@ -354,7 +354,7 @@
               {
                   final String error =
                     "Could not start a subsidiary container: " 
  -                     + appliance.getProfile().getName() 
  +                     + appliance.getName() 
                        + " in container: " + this;
                   throw new ContainerException( error, e );
               }
  @@ -424,7 +424,7 @@
               {
                   final String error =
                     "Could not shutdown a subsidiary container: " 
  -                     + appliance.getProfile().getName() 
  +                     + appliance.getName() 
                        + " in container: " + this;
                   throw new ContainerException( error, e );
               }
  
  
  
  1.14      +3 -3      
avalon-sandbox/merlin/src/java/org/apache/avalon/merlin/kernel/DefaultKernel.java
  
  Index: DefaultKernel.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/merlin/src/java/org/apache/avalon/merlin/kernel/DefaultKernel.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- DefaultKernel.java        19 Dec 2002 10:50:17 -0000      1.13
  +++ DefaultKernel.java        20 Dec 2002 11:58:00 -0000      1.14
  @@ -386,7 +386,7 @@
           // list the registered services
           //
   
  -        Appliance[] appliances = m_registry.getAppliances();
  +        URL[] appliances = m_registry.list();
           if( appliances.length == 0 )
           {
               getLogger().info( "empty registry" ); 
  @@ -395,7 +395,7 @@
           {
               for( int i=0; i<appliances.length; i++ )
               {
  -               getLogger().info("registry: " + appliances[i].getURL() ); 
  +               getLogger().info("registry: " + appliances[i] ); 
               }
           }
       }
  
  
  
  1.2       +19 -13    
avalon-sandbox/merlin/src/java/org/apache/avalon/merlin/service/DefaultRegistry.java
  
  Index: DefaultRegistry.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/merlin/src/java/org/apache/avalon/merlin/service/DefaultRegistry.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DefaultRegistry.java      17 Dec 2002 09:58:46 -0000      1.1
  +++ DefaultRegistry.java      20 Dec 2002 11:58:01 -0000      1.2
  @@ -217,7 +217,7 @@
       {
           synchronized( m_appliances )
           {
  -            final String name = appliance.getProfile().getName();
  +            final String name = appliance.getName();
               if( m_appliances.get( name ) != null )
               {
                   final String error = "Duplicate name: " + name;
  @@ -238,7 +238,7 @@
       {
           synchronized( m_appliances )
           {
  -            String name = appliance.getProfile().getName();
  +            String name = appliance.getName();
               Iterator iterator = m_appliances.entrySet().iterator();
               while( iterator.hasNext() )
               {
  @@ -363,30 +363,36 @@
       //=======================================================================
   
       /**
  -     * Returns a list of published appliance URLs.
  -     * @return the appliances
  +     * Returns a list of published appliance URLs from this registry and all
  +     * subsidiary registries.
  +     * @return the appliances urls
        */
       public URL[] list()
       {
           ArrayList list = new ArrayList();
  -        Registry[] publishers =
  -            (Registry[])m_table.values().toArray( new Registry[ 0 ] );
  -        for( int j = 0; j < publishers.length; j++ )
  -        {
  -            URL url = publishers[ j ].getBase();
  -            list.add( url );
  -        }
   
           Appliance[] appliances = (Appliance[])m_appliances.values().toArray( 
new Appliance[ 0 ] );
           for( int i = 0; i < appliances.length; i++ )
           {
               list.add( appliances[ i ].getURL() );
           }
  +
  +        Registry[] publishers =
  +            (Registry[])m_table.values().toArray( new Registry[ 0 ] );
  +        for( int j = 0; j < publishers.length; j++ )
  +        {
  +            URL[] sublist = publishers[j].list();
  +            for( int k = 0; k < sublist.length; k++ )
  +            {
  +                list.add( sublist[ k ] );
  +            }
  +        }
  +
           return (URL[])list.toArray( new URL[ 0 ] );
       }
   
       /**
  -     * Returns a list of published appliances.
  +     * Returns a list of published appliances local to this registry.
        * @return the appliances
        */
       public Appliance[] getAppliances()
  
  
  
  1.8       +5 -4      avalon-sandbox/merlin/src/test/config/block.xml
  
  Index: block.xml
  ===================================================================
  RCS file: /home/cvs/avalon-sandbox/merlin/src/test/config/block.xml,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- block.xml 19 Dec 2002 10:50:17 -0000      1.7
  +++ block.xml 20 Dec 2002 11:58:01 -0000      1.8
  @@ -10,10 +10,11 @@
      </services>
   
      <container>
  -     <component name="standard" 
class="org.apache.avalon.playground.StandardComponent" activation="startup">
  -       <context class="org.apache.avalon.playground.StandardContextImp"/>
  -     </component>
  -     <container name="test"/>
  +     <container name="test">
  +       <component name="standard" 
class="org.apache.avalon.playground.StandardComponent" activation="startup">
  +         <context class="org.apache.avalon.playground.StandardContextImp"/>
  +       </component>
  +     </container>
      </container>
   
   </block>
  
  
  
  1.5       +0 -2      
avalon-sandbox/merlin/src/test/org/apache/avalon/playground/StandardComponent.xinfo
  
  Index: StandardComponent.xinfo
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/merlin/src/test/org/apache/avalon/playground/StandardComponent.xinfo,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- StandardComponent.xinfo   19 Dec 2002 10:50:17 -0000      1.4
  +++ StandardComponent.xinfo   20 Dec 2002 11:58:01 -0000      1.5
  @@ -28,12 +28,10 @@
     -->
   
     <context type="org.apache.avalon.playground.StandardContext">
  -
       <attributes>
         <attribute key="urn:assembly:lifecycle.context.extension"
             value="org.apache.avalon.playground.Contextualizable"/>
       </attributes>
  -
     </context>
   
     <services>
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to