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();
       }
   }