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 2008/08/15 18:18:11 UTC
svn commit: r686273 -
/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/java2wsdl/DefaultSchemaGenerator.java
Author: amilas
Date: Fri Aug 15 09:18:06 2008
New Revision: 686273
URL: http://svn.apache.org/viewvc?rev=686273&view=rev
Log:
put a recursive procedure to handle multidimentional arrays at the method signature level.
Modified:
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/java2wsdl/DefaultSchemaGenerator.java
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/java2wsdl/DefaultSchemaGenerator.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/java2wsdl/DefaultSchemaGenerator.java?rev=686273&r1=686272&r2=686273&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/java2wsdl/DefaultSchemaGenerator.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/java2wsdl/DefaultSchemaGenerator.java Fri Aug 15 09:18:06 2008
@@ -722,7 +722,42 @@
isArrayType = type.isArray();
}
if (isArrayType) {
- type = type.getComponentType();
+ if (type.getComponentType().isArray()) {
+ // this is a doble array element
+ Class simpleType = type.getComponentType();
+ String simpleTypeName = "";
+ while (simpleType.isArray()) {
+ simpleTypeName += "ArrayOf";
+ simpleType = simpleType.getComponentType();
+ }
+ simpleTypeName += simpleType.getSimpleName();
+
+ XmlSchema xmlSchema = getXmlSchema(schemaTargetNameSpace);
+ if (xmlSchema.getTypeByName(simpleTypeName) == null) {
+ XmlSchemaComplexType xmlSchemaComplexType = new XmlSchemaComplexType(xmlSchema);
+ XmlSchemaSequence xmlSchemaSequence = new XmlSchemaSequence();
+ xmlSchemaComplexType.setParticle(xmlSchemaSequence);
+ generateSchemaForType(xmlSchemaSequence, type.getComponentType(), partName);
+ xmlSchemaComplexType.setName(simpleTypeName);
+ xmlSchema.getItems().add(xmlSchemaComplexType);
+ xmlSchema.getSchemaTypes().add(
+ new QName(xmlSchema.getTargetNamespace(), simpleTypeName), xmlSchemaComplexType);
+ }
+
+ XmlSchemaElement elt1 = new XmlSchemaElement();
+ elt1.setName(partName);
+ elt1.setSchemaTypeName(new QName(xmlSchema.getTargetNamespace(), simpleTypeName));
+ sequence.getItems().add(elt1);
+ elt1.setMaxOccurs(Long.MAX_VALUE);
+ elt1.setMinOccurs(0);
+
+ if (!type.isPrimitive()) {
+ elt1.setNillable(true);
+ }
+ return new QName(xmlSchema.getTargetNamespace(), simpleTypeName);
+ } else {
+ type = type.getComponentType();
+ }
}
if (AxisFault.class.getName().equals(type)) {
return null;