[jboss-remoting-commits] JBoss Remoting SVN: r5326 - remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3.

jboss-remoting-commits at lists.jboss.org jboss-remoting-commits at lists.jboss.org
Tue Aug 11 22:31:22 EDT 2009


Author: david.lloyd at jboss.com
Date: 2009-08-11 22:31:22 -0400 (Tue, 11 Aug 2009)
New Revision: 5326

Modified:
   remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/ClientImpl.java
   remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/FutureReplyImpl.java
Log:
Generics fixes and error message improvements

Modified: remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/ClientImpl.java
===================================================================
--- remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/ClientImpl.java	2009-08-06 02:41:11 UTC (rev 5325)
+++ remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/ClientImpl.java	2009-08-12 02:31:22 UTC (rev 5326)
@@ -75,7 +75,7 @@
         final ReplyHandler replyHandler = futureReply.getReplyHandler();
         final RemoteRequestContext requestContext = handler.receiveRequest(actualRequest, replyHandler);
         futureReply.setRemoteRequestContext(requestContext);
-        futureReply.addNotifier(IoUtils.attachmentClosingNotifier(), executor);
+        futureReply.addNotifier(IoUtils.<O>attachmentClosingNotifier(), executor);
         executor.runQueue();
         try {
             final O reply = futureReply.getInterruptibly();

Modified: remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/FutureReplyImpl.java
===================================================================
--- remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/FutureReplyImpl.java	2009-08-06 02:41:11 UTC (rev 5325)
+++ remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/FutureReplyImpl.java	2009-08-12 02:31:22 UTC (rev 5326)
@@ -65,11 +65,22 @@
     private final class Handler implements ReplyHandler {
 
         public void handleReply(final Object reply) {
+            final Class<O> replyType = FutureReplyImpl.this.replyType;
             final O actualReply;
             try {
                 actualReply = replyType.cast(reply);
             } catch (ClassCastException e) {
-                setException(new ReplyException("Reply was of the wrong type (got <" + reply.getClass().getName() + ">; expected <? extends " + replyType.getName() + ">"));
+                // reply can't be null, else we wouldn't be here...
+                final Class<? extends Object> actualReplyType = reply.getClass();
+                final String actualReplyTypeName = actualReplyType.getName();
+                final String replyTypeName = replyType.getName();
+                final ReplyException replyException;
+                if (actualReplyTypeName.equals(replyTypeName)) {
+                    replyException = new ReplyException("Reply appears to be of the right type (" + replyTypeName + "), but from the wrong classloader (the reply is from classloader " + actualReplyType.getClassLoader() + " but the client expected it to be classloader " + replyType.getClassLoader() + ")");
+                } else {
+                    replyException = new ReplyException("Reply was of the wrong type (got a " + actualReplyTypeName + "; expected a " + replyTypeName + ")");
+                }
+                setException(replyException);
                 return;
             }
             setResult(actualReply);



More information about the jboss-remoting-commits mailing list