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]

Reply via email to