You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by ba...@apache.org on 2006/12/20 01:46:13 UTC

svn commit: r488872 - in /webservices/axis2/trunk/java/modules/metadata: src/org/apache/axis2/jaxws/description/builder/ParameterDescriptionComposite.java test/org/apache/axis2/jaxws/description/builder/ParameterParsingTests.java

Author: barrettj
Date: Tue Dec 19 16:46:12 2006
New Revision: 488872

URL: http://svn.apache.org/viewvc?view=rev&rev=488872
Log:
Support encoded names for primitives in ParameterDescriptionComposite.  For example "int" can also be "I"; the encodings are the same as used for primitive array encodings described in Class.getName()

Modified:
    webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/builder/ParameterDescriptionComposite.java
    webservices/axis2/trunk/java/modules/metadata/test/org/apache/axis2/jaxws/description/builder/ParameterParsingTests.java

Modified: webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/builder/ParameterDescriptionComposite.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/builder/ParameterDescriptionComposite.java?view=diff&rev=488872&r1=488871&r2=488872
==============================================================================
--- webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/builder/ParameterDescriptionComposite.java (original)
+++ webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/builder/ParameterDescriptionComposite.java Tue Dec 19 16:46:12 2006
@@ -284,19 +284,30 @@
 	}
     
     private static final String INT_PRIMITIVE = "int";
+    private static final String INT_PRIMITIVE_ENCODING = "I";
     private static final String BYTE_PRIMITIVE = "byte";
+    private static final String BYTE_PRIMITIVE_ENCODING = "B";
     private static final String CHAR_PRIMITIVE = "char";
+    private static final String CHAR_PRIMITIVE_ENCODING = "C";
     private static final String SHORT_PRIMITIVE = "short";
+    private static final String SHORT_PRIMITIVE_ENCODING = "S";
     private static final String BOOLEAN_PRIMITIVE = "boolean";
+    private static final String BOOLEAN_PRIMITIVE_ENCODING = "Z";
     private static final String LONG_PRIMITIVE = "long";
+    private static final String LONG_PRIMITIVE_ENCODING = "J";
     private static final String FLOAT_PRIMITIVE = "float";
+    private static final String FLOAT_PRIMITIVE_ENCODING = "F";
     private static final String DOUBLE_PRIMITIVE = "double";
+    private static final String DOUBLE_PRIMITIVE_ENCODING = "D";
     private static final String VOID_PRIMITIVE = "void";
+    // REVIEW: This may not be the correct encoding for Void
+    private static final String VOID_PRIMITIVE_ENCODING = "V";
 
     /**
      * For primitives, return the appropriate primitive class.  Note that arrays of primitives are
      * handled differently, like arrays of objects.  Only non-array primitives are processed by this
-     * method.
+     * method.  This method understands both the typical primitive declaration (e.g. "int") and the
+     * encoding used as for arrays (e.g. "I").
      * @param classType
      * @return
      */
@@ -304,23 +315,23 @@
 		
 		Class paramClass = null;
 
-		if (INT_PRIMITIVE.equals(classType)) {
+		if (INT_PRIMITIVE.equals(classType) || INT_PRIMITIVE_ENCODING.equals(classType)) {
 			paramClass = int.class;
-		} else if (BYTE_PRIMITIVE.equals(classType)) {
+		} else if (BYTE_PRIMITIVE.equals(classType)|| BYTE_PRIMITIVE_ENCODING.equals(classType)) {
 			paramClass = byte.class;
-		} else if (CHAR_PRIMITIVE.equals(classType)) {
+		} else if (CHAR_PRIMITIVE.equals(classType)|| CHAR_PRIMITIVE_ENCODING.equals(classType)) {
 			paramClass = char.class;
-		} else if (SHORT_PRIMITIVE.equals(classType)) {
+		} else if (SHORT_PRIMITIVE.equals(classType)|| SHORT_PRIMITIVE_ENCODING.equals(classType)) {
 			paramClass = short.class;
-		} else if (BOOLEAN_PRIMITIVE.equals(classType)) {
+		} else if (BOOLEAN_PRIMITIVE.equals(classType)|| BOOLEAN_PRIMITIVE_ENCODING.equals(classType)) {
 			paramClass = boolean.class;
-		} else if (LONG_PRIMITIVE.equals(classType)) {
+		} else if (LONG_PRIMITIVE.equals(classType) || LONG_PRIMITIVE_ENCODING.equals(classType)) {
 			paramClass = long.class;
-		} else if (FLOAT_PRIMITIVE.equals(classType)) {
+		} else if (FLOAT_PRIMITIVE.equals(classType)|| FLOAT_PRIMITIVE_ENCODING.equals(classType)) {
 			paramClass = float.class;
-		} else if (DOUBLE_PRIMITIVE.equals(classType)) {
+		} else if (DOUBLE_PRIMITIVE.equals(classType)|| DOUBLE_PRIMITIVE_ENCODING.equals(classType)) {
 			paramClass = double.class;
-		} else if (VOID_PRIMITIVE.equals(classType)) {
+		} else if (VOID_PRIMITIVE.equals(classType)|| VOID_PRIMITIVE_ENCODING.equals(classType)) {
 			paramClass = void.class;
 		}
 		return paramClass;
@@ -339,28 +350,28 @@
         String encoding = null;
         
         if (BOOLEAN_PRIMITIVE.equals(primitiveType)) {
-            encoding = "Z";
+            encoding = BOOLEAN_PRIMITIVE_ENCODING;
         }
         else if (BYTE_PRIMITIVE.equals(primitiveType)) {
-            encoding = "B";
+            encoding = BYTE_PRIMITIVE_ENCODING;
         }
         else if (CHAR_PRIMITIVE.equals(primitiveType)) {
-            encoding = "C";
+            encoding = CHAR_PRIMITIVE_ENCODING;
         }
         else if (DOUBLE_PRIMITIVE.equals(primitiveType)) {
-            encoding = "D";
+            encoding = DOUBLE_PRIMITIVE_ENCODING;
         }
         else if (FLOAT_PRIMITIVE.equals(primitiveType)) {
-            encoding = "F";
+            encoding = FLOAT_PRIMITIVE_ENCODING;
         }
         else if (INT_PRIMITIVE.equals(primitiveType)) {
-            encoding = "I";
+            encoding = INT_PRIMITIVE_ENCODING;
         }
         else if (LONG_PRIMITIVE.equals(primitiveType)) {
-            encoding = "J";
+            encoding = LONG_PRIMITIVE_ENCODING;
         }
         else if (SHORT_PRIMITIVE.equals(primitiveType)) {
-            encoding = "S";
+            encoding = SHORT_PRIMITIVE_ENCODING;
         }
         return encoding;
     }

Modified: webservices/axis2/trunk/java/modules/metadata/test/org/apache/axis2/jaxws/description/builder/ParameterParsingTests.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/metadata/test/org/apache/axis2/jaxws/description/builder/ParameterParsingTests.java?view=diff&rev=488872&r1=488871&r2=488872
==============================================================================
--- webservices/axis2/trunk/java/modules/metadata/test/org/apache/axis2/jaxws/description/builder/ParameterParsingTests.java (original)
+++ webservices/axis2/trunk/java/modules/metadata/test/org/apache/axis2/jaxws/description/builder/ParameterParsingTests.java Tue Dec 19 16:46:12 2006
@@ -100,9 +100,22 @@
         assertEquals(List.class, pdc.getHolderActualTypeClass());
     }
     
+    public void testPrimitivesEncoded() {
+        String[] primitivesToTest = {"Z", "B", "C", "D", "F", "I", "J", "S", "V"};
+        Class[] primitiveClasses = {boolean.class, byte.class, char.class, double.class, float.class, int.class, long.class, short.class, void.class};
+        
+        for (int i = 0; i < primitivesToTest.length; i++) {
+            assertFalse(ParameterDescriptionComposite.isHolderType(primitivesToTest[i]));
+            assertNull(ParameterDescriptionComposite.getRawType(primitivesToTest[i]));
+            ParameterDescriptionComposite pdc = new ParameterDescriptionComposite();
+            pdc.setParameterType(primitivesToTest[i]);
+            assertEquals(primitiveClasses[i], pdc.getParameterTypeClass());
+        }
+    }
+    
     public void testPrimitives() {
-        String[] primitivesToTest = {"boolean", "byte", "char", "double", "float", "int", "long", "short"};
-        Class[] primitiveClasses = {boolean.class, byte.class, char.class, double.class, float.class, int.class, long.class, short.class};
+        String[] primitivesToTest = {"boolean", "byte", "char", "double", "float", "int", "long", "short", "void"};
+        Class[] primitiveClasses = {boolean.class, byte.class, char.class, double.class, float.class, int.class, long.class, short.class, void.class};
         
         for (int i = 0; i < primitivesToTest.length; i++) {
             assertFalse(ParameterDescriptionComposite.isHolderType(primitivesToTest[i]));



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org