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]>