tomj 02/04/15 12:50:08
Modified: java/src/org/apache/axis/wsdl/fromJava Types.java
Log:
Emit better WSDL for arrays.
Instead of defining ArrayOfArrayOf_xsd_int, which has ArrayOf_xsd_int[] as its
type, which is then defined to be an array of ints, we now define a single type
which has mulitple dimesions.
This improved what we emit for various array types, and fixes a problem with
Object arrays, which prevented our WSDL from being processed by .NET.
Revision Changes Path
1.20 +9 -2 xml-axis/java/src/org/apache/axis/wsdl/fromJava/Types.java
Index: Types.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/fromJava/Types.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- Types.java 1 Apr 2002 20:12:17 -0000 1.19
+++ Types.java 15 Apr 2002 19:50:08 -0000 1.20
@@ -378,8 +378,15 @@
String componentTypeName = null;
Class componentType = null;
if (type.isArray()) {
+ String dimString = "[]";
componentType = type.getComponentType();
- componentTypeName = writeType(componentType);
+ if (componentType.isArray()) {
+ while (componentType.isArray()) {
+ dimString += "[]";
+ componentType = componentType.getComponentType();
+ }
+ }
+ componentTypeName = writeType(componentType) + dimString;
}
String soapTypeName = qName.getLocalPart();
@@ -409,7 +416,7 @@
attribute.setAttribute("ref",
Constants.NSPREFIX_SOAP_ENC +":arrayType");
attribute.setAttribute(Constants.NSPREFIX_WSDL +":arrayType",
- componentTypeName + "[]" );
+ componentTypeName );
} else {
if (isEnumClass(type)) {
writeEnumType(qName, type);