[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