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);
+ }
}
}