The attached patch (against current CVS) makes merlin honor the
'optional' flag in dependency descriptors:
<dependency key="key" type="my.Type" optional="true"/>
Cheers,
Ronald
Index:
merlin/activation/impl/src/java/org/apache/avalon/activation/appliance/impl/AbstractBlock.java
===================================================================
RCS file:
/home/cvspublic/avalon/merlin/activation/impl/src/java/org/apache/avalon/activation/appliance/impl/AbstractBlock.java,v
retrieving revision 1.4
diff -u -b -B -w -r1.4 AbstractBlock.java
---
merlin/activation/impl/src/java/org/apache/avalon/activation/appliance/impl/AbstractBlock.java
22 Nov 2003 12:52:55 -0000 1.4
+++
merlin/activation/impl/src/java/org/apache/avalon/activation/appliance/impl/AbstractBlock.java
25 Nov 2003 23:23:43 -0000
@@ -236,6 +236,10 @@
{
return m_context.getEngine().locate( dependency );
}
+ else if( dependency.isOptional() )
+ {
+ return null;
+ }
else
{
throw new NoProviderDefinitionException(
Index:
merlin/activation/impl/src/java/org/apache/avalon/activation/appliance/impl/DefaultAppliance.java
===================================================================
RCS file:
/home/cvspublic/avalon/merlin/activation/impl/src/java/org/apache/avalon/activation/appliance/impl/DefaultAppliance.java,v
retrieving revision 1.11
diff -u -b -B -w -r1.11 DefaultAppliance.java
---
merlin/activation/impl/src/java/org/apache/avalon/activation/appliance/impl/DefaultAppliance.java
2 Nov 2003 23:12:50 -0000 1.11
+++
merlin/activation/impl/src/java/org/apache/avalon/activation/appliance/impl/DefaultAppliance.java
25 Nov 2003 23:23:43 -0000
@@ -354,6 +354,8 @@
{
final Appliance appliance =
m_engine.locate( dependency );
+ if( appliance != null )
+ {
registerListener( appliance );
m_providers.put( key, appliance );
if( getLogger().isDebugEnabled() )
@@ -361,6 +363,7 @@
getLogger().debug(
"assigning service provider for key ("
+ key + "): " + appliance );
+ }
}
}
catch( Throwable e )
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]