Author: covener
Date: Wed May 19 16:08:23 2010
New Revision: 946252

URL: http://svn.apache.org/viewvc?rev=946252&view=rev
Log:
[OWB-378] prevent ClassCast exception when the last decorator calls a different 
method
on the delegate.

Modified:
    
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/DelegateHandler.java

Modified: 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/DelegateHandler.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/DelegateHandler.java?rev=946252&r1=946251&r2=946252&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/DelegateHandler.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/DelegateHandler.java
 Wed May 19 16:08:23 2010
@@ -123,7 +123,21 @@ public class DelegateHandler implements 
         {
             if(ejbContext != null)
             {
-                result = ejbContext.proceed();
+                Method ejbMethod = ejbContext.getMethod();
+                
+                // don't use method.equals(), it may only differ by being 
abstract in the EJB proxy.
+                 
+                if (method.getName().equals(ejbMethod.getName()) && 
+                        
method.getReturnType().equals(ejbMethod.getReturnType())) 
+                {
+                    result = ejbContext.proceed();
+                }
+
+                else 
+                {
+                    Object ejbInstance = ejbContext.getTarget();
+                    result = method.invoke(ejbInstance, arguments);
+                }
             }
         }
         


Reply via email to