donaldp     2002/11/08 19:56:32

  Modified:    container/src/java/org/apache/excalibur/container/legacy
                        ComponentProxyGenerator.java
  Log:
  Make sure invocationHandler will only throw exceptions that the original method 
could throw.
  
  Other exceptions will not be thrown (ie IllegalAccess) due to the architecture of 
proxying
  
  Revision  Changes    Path
  1.6       +21 -5     
jakarta-avalon-excalibur/container/src/java/org/apache/excalibur/container/legacy/ComponentProxyGenerator.java
  
  Index: ComponentProxyGenerator.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/container/src/java/org/apache/excalibur/container/legacy/ComponentProxyGenerator.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ComponentProxyGenerator.java      7 Nov 2002 05:18:31 -0000       1.5
  +++ ComponentProxyGenerator.java      9 Nov 2002 03:56:32 -0000       1.6
  @@ -58,6 +58,7 @@
   import java.lang.reflect.InvocationHandler;
   import java.lang.reflect.Method;
   import java.lang.reflect.Proxy;
  +import java.lang.reflect.InvocationTargetException;
   import org.apache.avalon.framework.component.Component;
   
   /**
  @@ -108,19 +109,34 @@
       /**
        * Internal class to handle the wrapping with Component
        */
  -    private final static class ComponentInvocationHandler implements 
InvocationHandler
  +    private final static class ComponentInvocationHandler
  +        implements InvocationHandler
       {
           private final Object m_delagate;
   
  -        public ComponentInvocationHandler( final Object proxy )
  +        public ComponentInvocationHandler( final Object delegate )
           {
  -            m_delagate = proxy;
  +            if( null == delegate )
  +            {
  +                throw new NullPointerException( "delegate" );
  +            }
  +
  +            m_delagate = delegate;
           }
   
  -        public Object invoke( Object proxy, Method meth, Object[] args )
  +        public Object invoke( final Object proxy,
  +                              final Method meth,
  +                              final Object[] args )
               throws Throwable
           {
  -            return meth.invoke( m_delagate, args );
  +            try
  +            {
  +                return meth.invoke( m_delagate, args );
  +            }
  +            catch( final InvocationTargetException ite )
  +            {
  +                throw ite.getTargetException();
  +            }
           }
       }
   }
  
  
  

--
To unsubscribe, e-mail:   <mailto:avalon-cvs-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:avalon-cvs-help@;jakarta.apache.org>

Reply via email to