leif        2002/11/07 04:43:19

  Modified:    src/java/org/apache/avalon/framework/service
                        WrapperServiceManager.java
                        WrapperServiceSelector.java
  Log:
  Fix the WrapperServiceManager so that the component looked from the wrapped
  ComponentManager is always the same component as is released.  Ie we need
  to unwrap the components that we wrap.
  
  Revision  Changes    Path
  1.3       +10 -2     
jakarta-avalon/src/java/org/apache/avalon/framework/service/WrapperServiceManager.java
  
  Index: WrapperServiceManager.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon/src/java/org/apache/avalon/framework/service/WrapperServiceManager.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- WrapperServiceManager.java        7 Nov 2002 09:06:13 -0000       1.2
  +++ WrapperServiceManager.java        7 Nov 2002 12:43:19 -0000       1.3
  @@ -138,6 +138,14 @@
        */
       public void release( final Object service )
       {
  -        m_componentManager.release( (Component)service );
  +        if ( service instanceof WrapperServiceSelector )
  +        {
  +            m_componentManager.
  +                release( 
((WrapperServiceSelector)service).getWrappedComponentSelector() );
  +        }
  +        else
  +        {
  +            m_componentManager.release( (Component)service );
  +        }
       }
   }
  
  
  
  1.3       +16 -1     
jakarta-avalon/src/java/org/apache/avalon/framework/service/WrapperServiceSelector.java
  
  Index: WrapperServiceSelector.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon/src/java/org/apache/avalon/framework/service/WrapperServiceSelector.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- WrapperServiceSelector.java       7 Nov 2002 09:06:13 -0000       1.2
  +++ WrapperServiceSelector.java       7 Nov 2002 12:43:19 -0000       1.3
  @@ -63,6 +63,9 @@
    * This is a [EMAIL PROTECTED] ServiceSelector} implementation that can wrap 
around a legacy
    * [EMAIL PROTECTED] ComponentSelector} object effectively adapting a [EMAIL 
PROTECTED] ComponentSelector}
    * interface to a [EMAIL PROTECTED] ServiceSelector} interface.
  + * <p>
  + * This class implements the [EMAIL PROTECTED] Component} interface because 
it is used in
  + * environments which expect all components to implement Component.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a>
    * @author <a href="mailto:peter at apache.org">Peter Donald</a>
  @@ -146,5 +149,17 @@
       public void release( Object object )
       {
           m_selector.release( (Component)object );
  +    }
  +    
  +    /**
  +     * The [EMAIL PROTECTED] WrapperServiceManager} wraps ComponentSelectors 
in
  +     *  WrapperServiceSelectors when they are looked up.  This method
  +     *  makes it possible to release the original component selector.
  +     *
  +     * @return The [EMAIL PROTECTED] ComponentSelector} being wrapped.
  +     */
  +    ComponentSelector getWrappedComponentSelector()
  +    {
  +        return m_selector;
       }
   }
  
  
  

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

Reply via email to