mcconnell    2002/12/19 02:40:06

  Modified:    assembly/src/java/org/apache/avalon/assembly/lifecycle
                        ContextHandler.java
  Log:
  Added support for merging of service defined context entries with component 
defined context entries.
  
  Revision  Changes    Path
  1.7       +30 -2     
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.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- ContextHandler.java       17 Dec 2002 09:55:24 -0000      1.6
  +++ ContextHandler.java       19 Dec 2002 10:40:06 -0000      1.7
  @@ -66,6 +66,7 @@
   import org.apache.avalon.framework.service.Serviceable;
   import org.apache.avalon.assembly.appliance.Appliance;
   import org.apache.avalon.assembly.engine.EngineClassLoader;
  +import org.apache.avalon.assembly.service.UnknownServiceException;
   import org.apache.avalon.meta.model.Entry;
   import org.apache.avalon.meta.model.Import;
   import org.apache.avalon.meta.model.Profile;
  @@ -73,6 +74,8 @@
   import org.apache.avalon.meta.info.ContextDescriptor;
   import org.apache.avalon.meta.info.EntryDescriptor;
   import org.apache.avalon.meta.info.ExtensionDescriptor;
  +import org.apache.avalon.meta.info.ReferenceDescriptor;
  +import org.apache.avalon.meta.info.Service;
   
   /**
    * The context service provides support for the contextualization of a 
  @@ -287,10 +290,18 @@
           }
           else
           {
  +
  +            //
  +            // TODO: check that the context is not requesting custom 
  +            // context interface support
  +            //
  +
               result = new DefaultContext( map );
           }
   
  -        EntryDescriptor[] entries = descriptor.getEntrys();
  +        EntryDescriptor[] entries = getMergedEntries( descriptor );
  +        getLogger().debug( "context " + descriptor + " contains " + 
entries.length + "entries" );
  +       
           for( int i = 0; i < entries.length; i++ )
           {
               EntryDescriptor entry = entries[ i ];
  @@ -431,6 +442,23 @@
           }
   
           return result;
  +    }
  +
  +    private EntryDescriptor[] getMergedEntries( ContextDescriptor descriptor 
) throws IllegalArgumentException
  +    {
  +        EngineClassLoader engine = getClassLoader();
  +        try
  +        {
  +            Service service = 
  +              engine.getRepository().getServiceManager().getService( 
descriptor.getReference() );
  +            EntryDescriptor[] entries = service.getEntries();
  +            EntryDescriptor[] result = descriptor.merge( 
service.getEntries() );
  +            return result;
  +        }
  +        catch( UnknownServiceException e )
  +        {
  +            return descriptor.getEntries();
  +        }
       }
   
       /**
  
  
  

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

Reply via email to