[weld-commits] Weld SVN: r6418 - core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy.
weld-commits at lists.jboss.org
weld-commits at lists.jboss.org
Wed Jun 9 12:37:49 EDT 2010
Author: dallen6
Date: 2010-06-09 12:37:48 -0400 (Wed, 09 Jun 2010)
New Revision: 6418
Modified:
core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/ClientProxyProvider.java
core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/ProxyFactory.java
Log:
WELD-546 Fixed
Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/ClientProxyProvider.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/ClientProxyProvider.java 2010-06-09 10:43:22 UTC (rev 6417)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/ClientProxyProvider.java 2010-06-09 16:37:48 UTC (rev 6418)
@@ -25,6 +25,7 @@
import org.jboss.weld.Container;
import org.jboss.weld.exceptions.DefinitionException;
import org.jboss.weld.serialization.spi.ContextualStore;
+import org.jboss.weld.util.Proxies.TypeInfo;
import com.google.common.base.Function;
import com.google.common.collect.MapMaker;
@@ -84,7 +85,8 @@
private static <T> T createClientProxy(Bean<T> bean, String id) throws RuntimeException
{
ContextBeanInstance<T> beanInstance = new ContextBeanInstance<T>(bean, id);
- return new ProxyFactory<T>(bean.getBeanClass(), bean.getTypes()).create(beanInstance);
+ TypeInfo typeInfo = TypeInfo.of(bean.getTypes());
+ return new ProxyFactory<T>(typeInfo.getSuperClass(), bean.getTypes()).create(beanInstance);
}
/**
Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/ProxyFactory.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/ProxyFactory.java 2010-06-09 10:43:22 UTC (rev 6417)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/ProxyFactory.java 2010-06-09 16:37:48 UTC (rev 6418)
@@ -82,7 +82,7 @@
*
* @param proxiedBeanType the super-class for this proxy class
*/
- public ProxyFactory(Class<?> proxiedBeanType, Set<Type> businessInterfaces)
+ public ProxyFactory(Class<?> proxiedBeanType, Set<? extends Type> businessInterfaces)
{
for (Type type : businessInterfaces)
{
@@ -94,7 +94,8 @@
addInterface(c);
}
}
- Class<?> superClass = TypeInfo.of(businessInterfaces).getSuperClass();
+ TypeInfo typeInfo = TypeInfo.of(businessInterfaces);
+ Class<?> superClass = typeInfo.getSuperClass();
superClass = superClass == null ? Object.class : superClass;
if (superClass.equals(Object.class))
{
@@ -114,7 +115,22 @@
this.classPool = new ClassPool();
this.classPool.appendClassPath(new ClassloaderClassPath(classLoader));
addDefaultAdditionalInterfaces();
- baseProxyName = proxiedBeanType.getName();
+ if (proxiedBeanType.equals(Object.class))
+ {
+ Class<?> superInterface = typeInfo.getSuperInterface();
+ if (superInterface == null)
+ {
+ throw new IllegalArgumentException("Proxied bean type cannot be java.lang.Object without an interface");
+ }
+ else
+ {
+ baseProxyName = superInterface.getName();
+ }
+ }
+ else
+ {
+ baseProxyName = proxiedBeanType.getName();
+ }
}
/**
More information about the weld-commits
mailing list