You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by dj...@apache.org on 2005/11/18 22:32:57 UTC
svn commit: r345580 -
/geronimo/trunk/modules/naming/src/java/org/apache/geronimo/naming/reference/ResourceReference.java
Author: djencks
Date: Fri Nov 18 13:32:55 2005
New Revision: 345580
URL: http://svn.apache.org/viewcvs?rev=345580&view=rev
Log:
Provide more information when a resource reference does not implement the asserted interface
Modified:
geronimo/trunk/modules/naming/src/java/org/apache/geronimo/naming/reference/ResourceReference.java
Modified: geronimo/trunk/modules/naming/src/java/org/apache/geronimo/naming/reference/ResourceReference.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/naming/src/java/org/apache/geronimo/naming/reference/ResourceReference.java?rev=345580&r1=345579&r2=345580&view=diff
==============================================================================
--- geronimo/trunk/modules/naming/src/java/org/apache/geronimo/naming/reference/ResourceReference.java (original)
+++ geronimo/trunk/modules/naming/src/java/org/apache/geronimo/naming/reference/ResourceReference.java Fri Nov 18 13:32:55 2005
@@ -58,7 +58,25 @@
throw new IllegalStateException("Proxy not returned. Target " + containerId + " not started");
}
if (!iface.isAssignableFrom(proxy.getClass())) {
- throw new ClassCastException("Proxy does not implement expected interface " + iface);
+ Class proxyClass = proxy.getClass();
+ Class[] interfaces = proxyClass.getInterfaces();
+ StringBuffer message = new StringBuffer();
+ boolean namesMatch = false;
+ for (int i = 0; i < interfaces.length; i++) {
+ Class anInterface = interfaces[i];
+ if (iface.getName().equals(anInterface.getName())) {
+ namesMatch = true;
+ message.append("Proxy implements correct interface: ").append(iface.getName()).append(", but classloaders differ\n");
+ message.append("lookup interface classloader: ").append(iface.getClassLoader().toString()).append("\n");
+ message.append("target interface classloader: ").append(anInterface.getClassLoader().toString()).append("\n");
+ message.append("target proxy classloader: ").append(proxy.getClass().getClassLoader());
+ break;
+ }
+ }
+ if (!namesMatch) {
+ message.append("Proxy does not implement an interface named: ").append(iface.getName());
+ }
+ throw new ClassCastException(message.toString());
}
return proxy;