mcconnell    2002/12/19 22:38:19

  Modified:    assembly/src/java/org/apache/avalon/assembly/lifecycle
                        ContextHandler.java
               assembly/src/java/org/apache/avalon/assembly/lifecycle/context
                        DefaultContextualizationService.java
               assembly/src/java/org/apache/avalon/assembly/lifecycle/disposal
                        ExtendedDisposalService.java
               
assembly/src/java/org/apache/avalon/assembly/lifecycle/initialization
                        ExtendedInitializationService.java
               assembly/src/java/org/apache/avalon/assembly/lifestyle
                        AbstractLifestyleHandler.java
  Log:
  Updates concerning context handling.
  
  Revision  Changes    Path
  1.8       +32 -7     
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.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- ContextHandler.java       19 Dec 2002 10:40:06 -0000      1.7
  +++ ContextHandler.java       20 Dec 2002 06:38:18 -0000      1.8
  @@ -228,21 +228,22 @@
       {
           ContextDescriptor descriptor = 
appliance.getProfile().getType().getContext();
           ContextDirective directive = appliance.getProfile().getContext();
  -        return buildContext( descriptor, directive, context );
  +        return buildContext( appliance, 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 appliance the appliance 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
  +     * @return a context object containing only those context entries 
required 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 )
  +    protected Context buildContext( 
  +      Appliance appliance, ContextDescriptor descriptor, ContextDirective 
directive, Context context )
         throws Exception
       {
           if( !m_initialized )
  @@ -253,6 +254,12 @@
           Map map = new HashMap();
           Context result;
   
  +        //
  +        // check for meta-data about how to create a specialized context type
  +        // and if its present then create it using the standard constructor 
  +        // pattern otherwise use the DefaultContext implementation
  +        //
  +
           if( directive != null )
           {
               final String classname = directive.getClassname();
  @@ -299,9 +306,20 @@
               result = new DefaultContext( map );
           }
   
  +        //
  +        // the context object has been constructed and not we need to 
populate it based 
  +        // on the context criteria declared by the component type
  +        //
  +
           EntryDescriptor[] entries = getMergedEntries( descriptor );
           getLogger().debug( "context " + descriptor + " contains " + 
entries.length + "entries" );
          
  +        //
  +        // the above list of enties contains the entries explicity declared 
by the 
  +        // component in its xinfo + any entries declared in a service def 
for he context
  +        // type
  +        //
  +
           for( int i = 0; i < entries.length; i++ )
           {
               EntryDescriptor entry = entries[ i ];
  @@ -314,6 +332,13 @@
               Object object = getContextValue( context, key );
   
               //
  +            // if the entry is a standard avalon context entry names 
(component name, 
  +            // partition, home or working directory, the handle it now
  +            //
  +
  +            //object = resolveStandardKey( appliance, context, key );
  +
  +            //
               // If the context value is unresolved, try to handle resolution
               // using an import directive supplied under the directive
               //
  @@ -469,11 +494,11 @@
        * @return a new Context for service
        * @throws Exception if unable to create context
        */
  -    protected Context createContext( ExtensionDescriptor extension, Context 
context )
  +    protected Context createContext( Appliance appliance, 
ExtensionDescriptor extension, Context context )
           throws Exception
       {
           ContextDescriptor descriptor = extension.getContext();
  -        return buildContext( descriptor, null, context );
  +        return buildContext( appliance, descriptor, null, context );
       }
   
       /**
  
  
  
  1.7       +20 -1     
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.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- DefaultContextualizationService.java      19 Dec 2002 10:42:24 -0000      
1.6
  +++ DefaultContextualizationService.java      20 Dec 2002 06:38:18 -0000      
1.7
  @@ -128,6 +128,11 @@
   
           if(( provider != null ) || (object instanceof Contextualizable ))
           {
  +
  +            //
  +            // the component is requesting contextualization in one form or 
another
  +            //
  +
               if( getLogger().isDebugEnabled() )
               {
                   final String message = appliance.toString();
  @@ -144,9 +149,19 @@
                   source = context;
               }
   
  +            //
  +            // populate the "standard" context with the actual context 
entries that 
  +            // the component is requesting
  +            //
  +
               Context standard =
                 createStandardContext( appliance, source );
   
  +            //
  +            // resolve the contextualization strategy - either its a custom 
  +            // interface and handler, or its classic Avalon - try custom 
first
  +            //
  +
               if( provider != null )
               {
                   if( getLogger().isDebugEnabled() )
  @@ -170,6 +185,10 @@
                       throw new ContextException( error, e );
                   }
               }
  +
  +            //
  +            // otherwise, its classic contextulization
  +            //
   
               try
               {
  
  
  
  1.6       +2 -2      
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifecycle/disposal/ExtendedDisposalService.java
  
  Index: ExtendedDisposalService.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifecycle/disposal/ExtendedDisposalService.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ExtendedDisposalService.java      17 Dec 2002 05:02:25 -0000      1.5
  +++ ExtendedDisposalService.java      20 Dec 2002 06:38:18 -0000      1.6
  @@ -182,7 +182,7 @@
               {
                   Type type = provider.getProfile().getType();
                   final ExtensionDescriptor descriptor = type.getExtension( 
stage );
  -                context = createContext( descriptor, m_context );
  +                context = createContext( provider, descriptor, m_context );
               }
               catch( Throwable e )
               {
  
  
  
  1.7       +2 -2      
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifecycle/initialization/ExtendedInitializationService.java
  
  Index: ExtendedInitializationService.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifecycle/initialization/ExtendedInitializationService.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- ExtendedInitializationService.java        17 Dec 2002 05:03:23 -0000      
1.6
  +++ ExtendedInitializationService.java        20 Dec 2002 06:38:19 -0000      
1.7
  @@ -164,7 +164,7 @@
                   {
                       Type type = provider.getProfile().getType();
                       final ExtensionDescriptor descriptor = 
type.getExtension( stage );
  -                    context = createContext( descriptor, m_context );
  +                    context = createContext( provider, descriptor, m_context 
);
                   }
                   catch( Throwable e )
                   {
  
  
  
  1.11      +2 -2      
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifestyle/AbstractLifestyleHandler.java
  
  Index: AbstractLifestyleHandler.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifestyle/AbstractLifestyleHandler.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- AbstractLifestyleHandler.java     17 Dec 2002 11:35:50 -0000      1.10
  +++ AbstractLifestyleHandler.java     20 Dec 2002 06:38:19 -0000      1.11
  @@ -464,7 +464,7 @@
               final ExtensionDescriptor ext = type.getExtension( stage );
               try
               {
  -                Context extensionContext = createContext( ext, context );
  +                Context extensionContext = createContext( provider, ext, 
context );
                   table.put( stage, extensionContext );
               }
               catch( Throwable e )
  
  
  

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

Reply via email to