mcconnell    2002/12/17 01:55:24

  Modified:    assembly/src/java/org/apache/avalon/assembly/appliance
                        Appliance.java ApplianceContext.java
                        DefaultAppliance.java
               assembly/src/java/org/apache/avalon/assembly/engine
                        EngineClassLoader.java
               assembly/src/java/org/apache/avalon/assembly/lifecycle
                        ContextHandler.java
               
assembly/src/java/org/apache/avalon/assembly/lifecycle/composition
                        DefaultCompositionService.java
               assembly/src/java/org/apache/avalon/assembly/lifecycle/context
                        DefaultContextualizationService.java
               assembly/src/test/org/apache/avalon/playground
                        BasicComponent.xinfo ComplexComponent.xinfo
                        DemoManager.xinfo ExploitationManager.xinfo
                        InvalidComponent.xinfo SimpleComponent.xinfo
  Log:
  Reworking some of the context handling mechanisms, updating of the meta 
descriptors, and addition of URL resolution on appliance instances.
  
  Revision  Changes    Path
  1.8       +8 -1      
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/Appliance.java
  
  Index: Appliance.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/Appliance.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Appliance.java    17 Dec 2002 04:52:15 -0000      1.7
  +++ Appliance.java    17 Dec 2002 09:55:23 -0000      1.8
  @@ -51,6 +51,7 @@
   package org.apache.avalon.assembly.appliance;
   
   import java.util.Map;
  +import java.net.URL;
   
   import org.apache.avalon.framework.activity.Initializable;
   import org.apache.avalon.assembly.lifestyle.LifestyleException;
  @@ -92,6 +93,12 @@
       * Get the appliance path.
       */
       String getPath();
  +
  +   /**
  +    * Get the appliance URL.
  +    * @return the appliance URL
  +    */
  +    URL getURL();
   
       /**
        * Return the profile backing the appliance.
  
  
  
  1.2       +6 -1      
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/ApplianceContext.java
  
  Index: ApplianceContext.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/ApplianceContext.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ApplianceContext.java     15 Dec 2002 14:08:55 -0000      1.1
  +++ ApplianceContext.java     17 Dec 2002 09:55:23 -0000      1.2
  @@ -115,6 +115,11 @@
       */
       private String m_path;
   
  +   /**
  +    * The appliance domain.
  +    */
  +    private String m_domain;
  +
       /**
        * The deployment context.
        */
  
  
  
  1.11      +49 -1     
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/DefaultAppliance.java
  
  Index: DefaultAppliance.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/DefaultAppliance.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- DefaultAppliance.java     17 Dec 2002 04:52:15 -0000      1.10
  +++ DefaultAppliance.java     17 Dec 2002 09:55:23 -0000      1.11
  @@ -52,6 +52,7 @@
   
   import java.util.Map;
   import java.util.Hashtable;
  +import java.net.URL;
   
   import org.apache.avalon.framework.activity.Initializable;
   import org.apache.avalon.framework.logger.Logger;
  @@ -82,6 +83,12 @@
   public class DefaultAppliance implements Appliance
   {
       //=====================================================================
  +    // static
  +    //=====================================================================
  +
  +    protected static String PROTOCOL = "native";
  +
  +    //=====================================================================
       // state
       //=====================================================================
   
  @@ -131,6 +138,16 @@
       */
       private Logger m_logger;
   
  +   /**
  +    * The appliance URL.
  +    */
  +    private URL m_url;
  +
  +   /**
  +    * The system domain.
  +    */
  +    private String m_domain;
  +
       //==============================================================
       // constructor
       //==============================================================
  @@ -162,6 +179,15 @@
           m_enabled = context.getEnabled();
           m_system = system;
   
  +        try
  +        {
  +            m_domain = (String) m_system.get( "urn:assembly:domain" );
  +        }
  +        catch( Throwable e )
  +        {
  +            m_domain = "localhost";
  +        }
  +
           if( getPartitionName() != null )
           {
               m_path = getPartitionName() 
  @@ -197,6 +223,28 @@
       protected Logger getLogger()
       {
           return m_logger;
  +    }
  +
  +   /**
  +    * Get the appliance URL.
  +    * @return the appliance URL
  +    */
  +    public URL getURL()
  +    {
  +        if( m_url == null )
  +        {
  +            try
  +            {
  +                m_url = new URL( PROTOCOL, m_domain, -1, getPath() );
  +            }
  +            catch( Throwable e )
  +            {
  +                final String error = 
  +                  "Protocol handler for protocol '" + PROTOCOL + "' has not 
been established.";
  +                throw new IllegalStateException( error );
  +            }
  +        }
  +        return m_url;
       }
   
      /**
  
  
  
  1.11      +12 -2     
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/engine/EngineClassLoader.java
  
  Index: EngineClassLoader.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/engine/EngineClassLoader.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- EngineClassLoader.java    17 Dec 2002 04:55:01 -0000      1.10
  +++ EngineClassLoader.java    17 Dec 2002 09:55:24 -0000      1.11
  @@ -1175,7 +1175,7 @@
   
           if( getLogger().isDebugEnabled() )
           {
  -            getLogger().debug( "bootstrap system context" );
  +            getLogger().debug( "resolving system context" );
           }
   
           DefaultContext context;
  @@ -1197,6 +1197,16 @@
               final File home = new File( System.getProperty( "user.dir" ) );
               context.put( "urn:avalon:home", home );    
           }
  +
  +        try
  +        {
  +            context.get( "urn:assembly:domain" );
  +        }
  +        catch( ContextException ce )
  +        {
  +            context.put( "urn:assembly:domain", "localhost" );    
  +        }
  +
           m_system = context;
           return m_system;
       }
  
  
  
  1.6       +23 -9     
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifecycle/ContextHandler.java
  
  Index: ContextHandler.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifecycle/ContextHandler.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ContextHandler.java       17 Dec 2002 04:55:47 -0000      1.5
  +++ ContextHandler.java       17 Dec 2002 09:55:24 -0000      1.6
  @@ -213,19 +213,33 @@
        * Internal utility to construct a context instance using a descriptor, 
directive and source
        * context instances.
        *
  -     * @param descriptors the descriptor containing the context dependency 
declarations
  -     * @param directive an optional context directive containing import and 
context value
  -     *    creation parameters
  +     * @param appliance the apliance containing the context dependency 
declarations
        * @param context a supplimentary context object to used during value 
resolution
        * @return a context object containing only those context entries 
desribed under the
        *   supplied descriptor
        * @exception Exception if a required context value cannot be resolved 
or an error
        *   occurs during context value creation
        */
  -    protected Context buildContext(
  -                           ContextDescriptor descriptors,
  -                           ContextDirective directive,
  -                           Context context )
  +    protected Context buildContext( Appliance appliance, Context context )
  +      throws Exception
  +    {
  +        ContextDescriptor descriptor = 
appliance.getProfile().getType().getContext();
  +        ContextDirective directive = appliance.getProfile().getContext();
  +        return buildContext( descriptor, directive, context );
  +    }
  +
  +    /**
  +     * Internal utility to construct a context instance using a descriptor, 
directive and source
  +     * context instances.
  +     *
  +     * @param appliance the apliance containing the context dependency 
declarations
  +     * @param context a supplimentary context object to used during value 
resolution
  +     * @return a context object containing only those context entries 
desribed under the
  +     *   supplied descriptor
  +     * @exception Exception if a required context value cannot be resolved 
or an error
  +     *   occurs during context value creation
  +     */
  +    protected Context buildContext( ContextDescriptor descriptor, 
ContextDirective directive, Context context )
         throws Exception
       {
           if( !m_initialized )
  @@ -276,7 +290,7 @@
               result = new DefaultContext( map );
           }
   
  -        EntryDescriptor[] entries = descriptors.getEntrys();
  +        EntryDescriptor[] entries = descriptor.getEntrys();
           for( int i = 0; i < entries.length; i++ )
           {
               EntryDescriptor entry = entries[ i ];
  
  
  
  1.4       +2 -2      
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifecycle/composition/DefaultCompositionService.java
  
  Index: DefaultCompositionService.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifecycle/composition/DefaultCompositionService.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- DefaultCompositionService.java    17 Dec 2002 05:00:59 -0000      1.3
  +++ DefaultCompositionService.java    17 Dec 2002 09:55:24 -0000      1.4
  @@ -114,7 +114,7 @@
                     "[" + appliance.getProfile().getName() + "]";
                   getLogger().debug( message );
               }
  -            DefaultServiceManager manager = new DefaultServiceManager( 
appliance );
  +            StandardServiceManager manager = new StandardServiceManager( 
appliance );
               manager.enableLogging( getLogger().getChildLogger( "manager" ) );
               try
               {
  
  
  
  1.5       +6 -8      
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifecycle/context/DefaultContextualizationService.java
  
  Index: DefaultContextualizationService.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifecycle/context/DefaultContextualizationService.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- DefaultContextualizationService.java      17 Dec 2002 05:01:53 -0000      
1.4
  +++ DefaultContextualizationService.java      17 Dec 2002 09:55:24 -0000      
1.5
  @@ -143,7 +143,7 @@
                   source = context;
               }
               Context standard =
  -              createStandardContext( appliance.getProfile(), source );
  +              createStandardContext( appliance, source );
   
               try
               {
  @@ -180,20 +180,18 @@
        * @throws DeploymentException if an error occurs in standard
        *   context creation
        */
  -    public Context createStandardContext( Profile profile, Context context )
  +    public Context createStandardContext( Appliance appliance, Context 
context )
           throws ContextException
       {
           try
           {
  -            ContextDescriptor descriptor = profile.getType().getContext();
  -            ContextDirective directive = profile.getContext();
  -            return buildContext( descriptor, directive, context );
  +            return buildContext( appliance, context );
           }
           catch( Throwable e )
           {
               final String error =
  -              "Unexpected error while preparing standard context for the 
profile: " 
  -              + profile.getName();
  +              "Unexpected error while preparing standard context for the 
appliance: " 
  +              + appliance;
               throw new ContextException( error, e );
           }
       }
  
  
  
  1.3       +2 -6      
avalon-sandbox/assembly/src/test/org/apache/avalon/playground/BasicComponent.xinfo
  
  Index: BasicComponent.xinfo
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/assembly/src/test/org/apache/avalon/playground/BasicComponent.xinfo,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- BasicComponent.xinfo      7 Dec 2002 09:34:29 -0000       1.2
  +++ BasicComponent.xinfo      17 Dec 2002 09:55:24 -0000      1.3
  @@ -25,12 +25,8 @@
     </context>
   
     <services>
  -    <service> 
  -      <reference type="org.apache.avalon.playground.BasicService" 
version="1.1"/>
  -    </service> 
  -    <service> 
  -      <reference type="org.apache.avalon.playground.NullService"/>
  -    </service> 
  +    <service type="org.apache.avalon.playground.BasicService:1.1"/>
  +    <service type="org.apache.avalon.playground.NullService"/>
     </services>
   
   </type>
  
  
  
  1.4       +3 -11     
avalon-sandbox/assembly/src/test/org/apache/avalon/playground/ComplexComponent.xinfo
  
  Index: ComplexComponent.xinfo
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/assembly/src/test/org/apache/avalon/playground/ComplexComponent.xinfo,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ComplexComponent.xinfo    17 Dec 2002 05:04:45 -0000      1.3
  +++ ComplexComponent.xinfo    17 Dec 2002 09:55:24 -0000      1.4
  @@ -24,20 +24,12 @@
     </loggers>
   
     <services>
  -    <service> 
  -      <reference type="org.apache.avalon.playground.ComplexService"/>
  -    </service> 
  +    <service type="org.apache.avalon.playground.ComplexService"/>
     </services>
   
     <dependencies>
  -      <dependency>
  -        <role>basic</role>
  -        <reference type="org.apache.avalon.playground.BasicService" 
version="1.1"/>
  -      </dependency>
  -      <dependency>
  -        <role>simple</role>
  -        <reference type="org.apache.avalon.playground.SimpleService"/>
  -      </dependency>
  +      <dependency type="org.apache.avalon.playground.BasicService:1.1"; 
role="basic"/>
  +      <dependency type="org.apache.avalon.playground.SimpleService" 
role="simple"/>
     </dependencies>
   
   </type>
  
  
  
  1.3       +3 -4      
avalon-sandbox/assembly/src/test/org/apache/avalon/playground/DemoManager.xinfo
  
  Index: DemoManager.xinfo
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/assembly/src/test/org/apache/avalon/playground/DemoManager.xinfo,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DemoManager.xinfo 3 Dec 2002 06:57:27 -0000       1.2
  +++ DemoManager.xinfo 17 Dec 2002 09:55:24 -0000      1.3
  @@ -21,7 +21,7 @@
   <type>
   
     <info>
  -    <name>demonstratable</name>
  +    <name>demonstrator</name>
       <attributes>
         <attribute key="urn:avalon:lifestyle" value="thread"/>
       </attributes>
  @@ -36,9 +36,8 @@
       Each extension has a name, a versioned interface reference, and optional 
       attributes.
       -->
  -    <extension stage="ALL">
  -      <name>demonstrate</name>
  -      <reference type="org.apache.avalon.playground.Demonstratable" 
version="1.0"/>
  +
  +    <extension type="org.apache.avalon.playground.Demonstratable:1.0">
         <attributes>
           <attribute key="status" value="experimental"/>
         </attributes>
  
  
  
  1.2       +1 -13     
avalon-sandbox/assembly/src/test/org/apache/avalon/playground/ExploitationManager.xinfo
  
  Index: ExploitationManager.xinfo
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/assembly/src/test/org/apache/avalon/playground/ExploitationManager.xinfo,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ExploitationManager.xinfo 24 Nov 2002 12:50:46 -0000      1.1
  +++ ExploitationManager.xinfo 17 Dec 2002 09:55:24 -0000      1.2
  @@ -27,19 +27,7 @@
     Declaration of the lifecycle support phases that this manager provides. 
     -->
     <extensions>
  -
  -    <!--
  -    Each extension has a name, a versioned interface reference, and optional 
  -    attributes.
  -    -->
  -    <extension stage="ALL">
  -      <name>exploit</name>
  -      <reference type="org.apache.avalon.playground.Exploitable" 
version="1.0"/>
  -      <attributes>
  -        <attribute key="status" value="experimental"/>
  -      </attributes>
  -    </extension>
  -
  +    <extension type="org.apache.avalon.playground.Exploitable" />
     </extensions>
   
   </type>
  
  
  
  1.2       +1 -4      
avalon-sandbox/assembly/src/test/org/apache/avalon/playground/InvalidComponent.xinfo
  
  Index: InvalidComponent.xinfo
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/assembly/src/test/org/apache/avalon/playground/InvalidComponent.xinfo,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- InvalidComponent.xinfo    24 Nov 2002 12:50:46 -0000      1.1
  +++ InvalidComponent.xinfo    17 Dec 2002 09:55:24 -0000      1.2
  @@ -20,10 +20,7 @@
     </info>
   
     <dependencies>
  -      <dependency>
  -          <role>silly</role>
  -          <reference type="org.apache.avalon.playground.InvalidService"/>
  -      </dependency>
  +      <dependency type="org.apache.avalon.playground.InvalidService" 
role="silly"/>
     </dependencies>
   
   </type>
  
  
  
  1.5       +1 -4      
avalon-sandbox/assembly/src/test/org/apache/avalon/playground/SimpleComponent.xinfo
  
  Index: SimpleComponent.xinfo
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/assembly/src/test/org/apache/avalon/playground/SimpleComponent.xinfo,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SimpleComponent.xinfo     15 Dec 2002 14:08:56 -0000      1.4
  +++ SimpleComponent.xinfo     17 Dec 2002 09:55:24 -0000      1.5
  @@ -37,10 +37,7 @@
         Declaration of the services that this component type is 
         dependent on.
         -->
  -      <dependency>
  -        <role>basic</role>
  -        <reference type="org.apache.avalon.playground.BasicService" 
version="1.1"/>
  -      </dependency>
  +      <dependency type="org.apache.avalon.playground.BasicService:1.1"; 
role="basic"/>
   
     </dependencies>
   
  
  
  

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

Reply via email to