scheu 02/01/31 13:53:22
Modified: java/src/org/apache/axis/deployment/wsdd
WSDDTypeMapping.java
java/src/org/apache/axis/utils JavaUtils.java
java/src/org/apache/axis/wsdl/toJava JavaDeployWriter.java
Log:
Added a getLoadableClassName(String text) method to JavaUtils.
This returns the proper class name for the ClassLoader. For example:
getLoadableClassName("my.Foo[][]") returns:
"[Lmy.Foo;"
This change was necessary to support array specifications in the
WSDD file.
Revision Changes Path
1.20 +2 -2
xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDTypeMapping.java
Index: WSDDTypeMapping.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDTypeMapping.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- WSDDTypeMapping.java 31 Jan 2002 03:26:08 -0000 1.19
+++ WSDDTypeMapping.java 31 Jan 2002 21:53:22 -0000 1.20
@@ -225,9 +225,9 @@
typeQName.getNamespaceURI(),
WSDDConstants.WSDD_JAVA));
}
-
+ String loadName =
JavaUtils.getLoadableClassName(typeQName.getLocalPart());
ClassLoader cl = Thread.currentThread().getContextClassLoader();
- return cl.loadClass(typeQName.getLocalPart());
+ return cl.loadClass(loadName);
}
throw new ClassNotFoundException(JavaUtils.getMessage("noTypeQName00"));
1.23 +36 -0 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.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- JavaUtils.java 26 Jan 2002 02:50:52 -0000 1.22
+++ JavaUtils.java 31 Jan 2002 21:53:22 -0000 1.23
@@ -268,6 +268,42 @@
}
/**
+ * Converts text of the form
+ * Foo[] to the proper class name for loading [LFoo
+ */
+ public static String getLoadableClassName(String text) {
+ if (text == null ||
+ text.indexOf("[") < 0 ||
+ text.charAt(0) == '[')
+ return text;
+ String className = text.substring(0,text.indexOf("["));
+ if (className.equals("byte"))
+ className = "B";
+ else if (className.equals("char"))
+ className = "C";
+ else if (className.equals("double"))
+ className = "D";
+ else if (className.equals("float"))
+ className = "F";
+ else if (className.equals("int"))
+ className = "I";
+ else if (className.equals("long"))
+ className = "J";
+ else if (className.equals("short"))
+ className = "S";
+ else if (className.equals("boolean"))
+ className = "Z";
+ else
+ className = "L" + className + ";";
+ int i = text.indexOf("]");
+ while (i > 0) {
+ className = "[" + className;
+ i = text.indexOf("]", i+1);
+ }
+ return className;
+ }
+
+ /**
* Map an XML name to a valid Java identifier
*/
public static String xmlNameToJava(String name)
1.15 +1 -2
xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaDeployWriter.java
Index: JavaDeployWriter.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaDeployWriter.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- JavaDeployWriter.java 31 Jan 2002 18:38:45 -0000 1.14
+++ JavaDeployWriter.java 31 Jan 2002 21:53:22 -0000 1.15
@@ -149,8 +149,7 @@
TypeEntry type = (TypeEntry) types.elementAt(i);
if (type.getBaseType() == null && type.isReferenced()
&& !type.isOnlyLiteralReferenced()
- && !type.getName().endsWith("[]")) {
- // && !(type instanceof CollectionType)) {
+ && !(type instanceof CollectionType)) {
pw.println(" <typeMapping");
pw.println(" xmlns:ns=\"" + type.getQName().getNamespaceURI() +
"\"");
pw.println(" qname=\"ns:" + type.getQName().getLocalPart() +
'"');