[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