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