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 am...@apache.org on 2009/11/13 05:39:18 UTC

svn commit: r835737 - /webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/AxisServiceBasedMultiLanguageEmitter.java

Author: amilas
Date: Fri Nov 13 04:39:18 2009
New Revision: 835737

URL: http://svn.apache.org/viewvc?rev=835737&view=rev
Log:
provide generic support for exception base class constructors

Modified:
    webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/AxisServiceBasedMultiLanguageEmitter.java

Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/AxisServiceBasedMultiLanguageEmitter.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/AxisServiceBasedMultiLanguageEmitter.java?rev=835737&r1=835736&r2=835737&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/AxisServiceBasedMultiLanguageEmitter.java (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/AxisServiceBasedMultiLanguageEmitter.java Fri Nov 13 04:39:18 2009
@@ -93,6 +93,8 @@
 import java.util.Map;
 import java.util.Set;
 import java.lang.reflect.Constructor;
+import java.lang.reflect.Type;
+import java.lang.reflect.ParameterizedType;
 
 
 public class AxisServiceBasedMultiLanguageEmitter implements Emitter {
@@ -1108,7 +1110,7 @@
         for (int i = 0; i < constructors.length; i++) {
             Element constructorElement = doc.createElement("constructor");
             faultElement.appendChild(constructorElement);
-            Class[] parameters = constructors[i].getParameterTypes();
+            Type[] parameters = constructors[i].getGenericParameterTypes();
             List existingParamNames = new ArrayList();
             for (int j = 0; j < parameters.length; j++){
                 Element parameterElement = doc.createElement("param");
@@ -1122,31 +1124,44 @@
         }
     }
 
-    private String getParameterName(Class type, List existingParamNames) {
+    private String getParameterName(Type type, List existingParamNames) {
         String paramName = null;
-        if (type.isArray()) {
-            paramName = getParameterName(type.getComponentType(), existingParamNames);
-        } else {
-            String className = type.getName();
-            if (className.lastIndexOf(".") > 0) {
-                className = className.substring(className.lastIndexOf(".") + 1);
-            }
-            paramName = JavaUtils.xmlNameToJavaIdentifier(className);
-            if (existingParamNames.contains(paramName)){
-               paramName = paramName + existingParamNames.size();
-            }
-            existingParamNames.add(paramName);
+        if (type instanceof Class) {
+            Class classType = (Class) type;
+            if (classType.isArray()) {
+                paramName = getParameterName(classType.getComponentType(), existingParamNames);
+            } else {
+                String className = classType.getName();
+                if (className.lastIndexOf(".") > 0) {
+                    className = className.substring(className.lastIndexOf(".") + 1);
+                }
+                paramName = JavaUtils.xmlNameToJavaIdentifier(className);
+                if (existingParamNames.contains(paramName)) {
+                    paramName = paramName + existingParamNames.size();
+                }
+                existingParamNames.add(paramName);
+            }
+        } else if (type instanceof ParameterizedType) {
+            ParameterizedType parameterizedType = (ParameterizedType) type;
+            paramName = getParameterName(parameterizedType.getRawType(), existingParamNames);
         }
         return paramName;
     }
 
-    private String getTypeName(Class type){
+    private String getTypeName(Type type) {
         String typeName = null;
-        if (type.isArray()){
-            typeName = getTypeName(type.getComponentType()) + "[]";
-        } else {
-            typeName = type.getName();
+        if (type instanceof Class) {
+            Class classType = (Class) type;
+            if (classType.isArray()) {
+                typeName = getTypeName(classType.getComponentType()) + "[]";
+            } else {
+                typeName = classType.getName();
+            }
+        } else if (type instanceof ParameterizedType) {
+            ParameterizedType parameterizedType = (ParameterizedType) type;
+            typeName = parameterizedType.toString();
         }
+
         return typeName;
     }