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();
+ }
}
/**
Show replies by date