[jboss-cvs] JBossRemoting/src/main/org/jboss/remoting/transporter ...
Tom Elrod
tom.elrod at jboss.com
Mon Aug 14 01:14:00 EDT 2006
User: telrod
Date: 06/08/14 01:14:00
Modified: src/main/org/jboss/remoting/transporter
TransporterHandler.java
Log:
JBREM-579 - fixed transporters not converting primitive types for reflection call on the target pojo.
Revision Changes Path
1.4 +26 -3 JBossRemoting/src/main/org/jboss/remoting/transporter/TransporterHandler.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: TransporterHandler.java
===================================================================
RCS file: /cvsroot/jboss/JBossRemoting/src/main/org/jboss/remoting/transporter/TransporterHandler.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- TransporterHandler.java 30 Dec 2005 05:26:38 -0000 1.3
+++ TransporterHandler.java 14 Aug 2006 05:14:00 -0000 1.4
@@ -21,14 +21,15 @@
*/
package org.jboss.remoting.transporter;
-import java.lang.reflect.Method;
-import javax.management.MBeanServer;
import org.jboss.remoting.InvocationRequest;
import org.jboss.remoting.ServerInvocationHandler;
import org.jboss.remoting.ServerInvoker;
import org.jboss.remoting.callback.InvokerCallbackHandler;
import org.jboss.remoting.invocation.NameBasedInvocation;
+import javax.management.MBeanServer;
+import java.lang.reflect.Method;
+
/**
* Simple handler that uses reflection to make calls on target POJO (as supplied in the constructor)
* when receive invocation requests.
@@ -66,8 +67,16 @@
Class[] classSig = new Class[sig.length];
for(int x = 0; x < sig.length; x++)
{
+ Class signature = getPrimitiveType(sig[x]);
+ if(signature != null)
+ {
+ classSig[x] = signature;
+ }
+ else
+ {
classSig[x] = Class.forName(sig[x]);
}
+ }
// use reflection to make the call
Method method = targetPOJO.getClass().getMethod(methodName, classSig);
@@ -76,6 +85,20 @@
return responseObject;
}
+ private Class getPrimitiveType(String name)
+ {
+ if (name.equals("byte")) return Byte.TYPE;
+ if (name.equals("short")) return Short.TYPE;
+ if (name.equals("int")) return Integer.TYPE;
+ if (name.equals("long")) return Long.TYPE;
+ if (name.equals("char")) return Character.TYPE;
+ if (name.equals("float")) return Float.TYPE;
+ if (name.equals("double")) return Double.TYPE;
+ if (name.equals("boolean")) return Boolean.TYPE;
+ if (name.equals("void")) return Void.TYPE;
+ return null;
+ }
+
/**
* set the mbean server that the handler can reference
More information about the jboss-cvs-commits
mailing list