You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by di...@apache.org on 2002/09/09 16:18:23 UTC
cvs commit: xml-axis/java/test/utils TestJavaUtils.java
dims 2002/09/09 07:18:23
Modified: java/src/org/apache/axis/utils JavaUtils.java
java/test/utils TestJavaUtils.java
Log:
Possible Fix for "Bug 12338 - Problem with methods returning java.lang.Object"
Revision Changes Path
1.77 +10 -6 xml-axis/java/src/org/apache/axis/utils/JavaUtils.java
Index: JavaUtils.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/utils/JavaUtils.java,v
retrieving revision 1.76
retrieving revision 1.77
diff -u -r1.76 -r1.77
--- JavaUtils.java 28 Aug 2002 19:53:04 -0000 1.76
+++ JavaUtils.java 9 Sep 2002 14:18:23 -0000 1.77
@@ -209,8 +209,13 @@
if (destClass == null) {
return arg;
}
-
- if (arg != null && destClass.isAssignableFrom(arg.getClass())) {
+
+ Class argHeldType = null;
+ if (arg != null) {
+ argHeldType = getHolderValueType(arg.getClass());
+ }
+
+ if (arg != null && argHeldType == null && destClass.isAssignableFrom(arg.getClass())) {
return arg;
}
@@ -230,10 +235,6 @@
// Get the destination held type or the argument held type if they exist
Class destHeldType = getHolderValueType(destClass);
- Class argHeldType = null;
- if (arg != null) {
- argHeldType = getHolderValueType(arg.getClass());
- }
// Convert between Axis special purpose HexBinary and byte[]
if (arg instanceof HexBinary &&
@@ -538,6 +539,9 @@
return true;
}
+ if (src.isPrimitive()) {
+ return isConvertable(getWrapperClass(src),dest);
+ }
return false;
}
1.11 +25 -0 xml-axis/java/test/utils/TestJavaUtils.java
Index: TestJavaUtils.java
===================================================================
RCS file: /home/cvs/xml-axis/java/test/utils/TestJavaUtils.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- TestJavaUtils.java 1 Jul 2002 19:50:55 -0000 1.10
+++ TestJavaUtils.java 9 Sep 2002 14:18:23 -0000 1.11
@@ -5,6 +5,7 @@
import junit.framework.TestSuite;
import org.apache.axis.utils.JavaUtils;
+import javax.xml.rpc.holders.LongHolder;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
@@ -97,5 +98,29 @@
m.put("defKey", "defVal");
ret = JavaUtils.convert(m, Hashtable.class);
assertTrue("Converted HashMap not a Hashtable", (ret instanceof Hashtable));
+
+ LongHolder holder = new LongHolder(1);
+ ret = JavaUtils.convert(holder, Object.class);
+ assertTrue(ret != null);
+ assertTrue(Long.class.isInstance(ret));
+ }
+
+ /**
+ * test the isConvertable() function
+ */
+ public void testIsConvert() {
+ assertTrue(JavaUtils.isConvertable(new Long(1),Long.class));
+ assertTrue(JavaUtils.isConvertable(new Long(1),long.class));
+ assertTrue(JavaUtils.isConvertable(new Long(1),Object.class));
+ assertFalse(JavaUtils.isConvertable(new Long(1),Float.class));
+ Class clazz = long.class;
+ assertTrue(JavaUtils.isConvertable(clazz,Long.class));
+ assertTrue(JavaUtils.isConvertable(clazz,Object.class));
+ }
+
+ public static void main(String args[]){
+ TestJavaUtils tester = new TestJavaUtils("TestJavaUtils");
+ tester.testIsConvert();
+ tester.testConvert();
}
}