You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by co...@apache.org on 2010/09/29 02:29:29 UTC
svn commit: r1002428 -
/openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/util/EjbDefinitionUtility.java
Author: covener
Date: Wed Sep 29 00:29:29 2010
New Revision: 1002428
URL: http://svn.apache.org/viewvc?rev=1002428&view=rev
Log:
[OWB-463] allow EJB proxies to also be created as subclasses of EJB implementation
classes for @LocalBean EJBs, instead of as proxies that only extend a given
@Local interface.
Prevents java.lang.IncompatibleClassChangeError when calling
ProxyFactory.setInterfaces() with an EJB implemenation class as
the argument.
Modified:
openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/util/EjbDefinitionUtility.java
Modified: openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/util/EjbDefinitionUtility.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/util/EjbDefinitionUtility.java?rev=1002428&r1=1002427&r2=1002428&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/util/EjbDefinitionUtility.java (original)
+++ openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/util/EjbDefinitionUtility.java Wed Sep 29 00:29:29 2010
@@ -47,6 +47,15 @@ public final class EjbDefinitionUtility
creator.defineApiType();
}
+ /**
+ *
+ * @param <T> EJB bean implementation class
+ * @param bean The Enterprise bean to create a proxy for
+ * @param iface The @Local interface the proxy should implement or the
+ * @Localbean class the proxy should extend.
+ * @param creationalContext
+ * @return
+ */
@SuppressWarnings({"unchecked"})
public static <T> T defineEjbBeanProxy(BaseEjbBean<T> bean, Class<?> iface, CreationalContext<?> creationalContext)
{
@@ -57,7 +66,16 @@ public final class EjbDefinitionUtility
if(clazz == null)
{
ProxyFactory factory = new ProxyFactory();
- factory.setInterfaces(new Class[]{iface});
+ if (iface.isInterface())
+ {
+ factory.setInterfaces(new Class[]{iface});
+ }
+ else
+ {
+ // @LocalBean no-interface local view requested
+ factory.setSuperclass(iface);
+ }
+
clazz = JavassistProxyFactory.getInstance().defineEjbBeanProxyClass(bean, iface, factory);
}