[jboss-cvs] JBossAS SVN: r81142 - in projects/ejb3/trunk: proxy/src/main/java/org/jboss/ejb3/proxy/objectfactory and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Sun Nov 16 12:07:54 EST 2008


Author: ALRubinger
Date: 2008-11-16 12:07:53 -0500 (Sun, 16 Nov 2008)
New Revision: 81142

Modified:
   projects/ejb3/trunk/core/src/main/java/org/jboss/injection/lang/reflect/FieldBeanProperty.java
   projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/objectfactory/ProxyObjectFactory.java
   projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/objectfactory/session/SessionProxyObjectFactory.java
Log:
[EJBTHREE-1592][JBCTS-871] Redefine the proxy in TCL if required, enhance messaging during mismatch failure

Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/injection/lang/reflect/FieldBeanProperty.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/injection/lang/reflect/FieldBeanProperty.java	2008-11-16 16:47:49 UTC (rev 81141)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/injection/lang/reflect/FieldBeanProperty.java	2008-11-16 17:07:53 UTC (rev 81142)
@@ -80,7 +80,21 @@
       }
       catch(IllegalArgumentException e)
       {
-         String msg = "failed to set value " + value + " on field " + field;
+         String msg = "failed to set value " + value + " on field " + field; 
+         
+         // Help out with the error message; let the developer know if the 
+         // value and target field CLs are not equal
+         ClassLoader fieldLoader = field.getType().getClassLoader();
+         ClassLoader valueLoader = value.getClass().getClassLoader();
+         boolean equalLoaders = fieldLoader.equals(valueLoader);
+         if (!equalLoaders)
+         {
+            log.error("Field Classloader: " + fieldLoader + "\nValue ClassLoader: " + valueLoader + "\nEqual Loaders: "
+                  + equalLoaders);
+            msg = msg + "; Reason: ClassLoaders of value and target are not equal";
+
+         }
+         
          log.error(msg, e);
          throw new IllegalArgumentException(msg);
       }

Modified: projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/objectfactory/ProxyObjectFactory.java
===================================================================
--- projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/objectfactory/ProxyObjectFactory.java	2008-11-16 16:47:49 UTC (rev 81141)
+++ projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/objectfactory/ProxyObjectFactory.java	2008-11-16 17:07:53 UTC (rev 81142)
@@ -289,7 +289,7 @@
     * 
     * @param proxy
     */
-   protected void ensureProxyVisibleToTcl(Object proxy)
+   protected Object redefineProxyInTcl(Object proxy)
    {
       /*
        * We've got to ensure that the Proxy will be assignable to the target
@@ -348,7 +348,14 @@
          // Redefine the Proxy in our CL
          proxy = Proxy.newProxyInstance(tcl, ourClInterfaces.toArray(new Class<?>[]
          {}), handler);
+
+         // Return the new Proxy
+         return proxy;
       }
+      else
+      {
+         return proxy;
+      }
    }
 
    /**

Modified: projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/objectfactory/session/SessionProxyObjectFactory.java
===================================================================
--- projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/objectfactory/session/SessionProxyObjectFactory.java	2008-11-16 16:47:49 UTC (rev 81141)
+++ projects/ejb3/trunk/proxy/src/main/java/org/jboss/ejb3/proxy/objectfactory/session/SessionProxyObjectFactory.java	2008-11-16 17:07:53 UTC (rev 81142)
@@ -131,7 +131,7 @@
                   + businessInterface);
 
             // Ensure the proxy is visible to the TCL
-            this.ensureProxyVisibleToTcl(proxy);
+            proxy = this.redefineProxyInTcl(proxy);
          }
          else
          {




More information about the jboss-cvs-commits mailing list