Author: sagara Date: Tue Jul 26 10:37:59 2011 New Revision: 1151058 URL: http://svn.apache.org/viewvc?rev=1151058&view=rev Log: Changed Schema generation for DOM Document so that stub can send and receive OMElement in place of DOM Documents.
Modified: axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/java2wsdl/DefaultSchemaGenerator.java Modified: axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/java2wsdl/DefaultSchemaGenerator.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/java2wsdl/DefaultSchemaGenerator.java?rev=1151058&r1=1151057&r2=1151058&view=diff ============================================================================== --- axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/java2wsdl/DefaultSchemaGenerator.java (original) +++ axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/java2wsdl/DefaultSchemaGenerator.java Tue Jul 26 10:37:59 2011 @@ -399,6 +399,9 @@ public class DefaultSchemaGenerator impl generateSchemaForType(sequence, null, jMethod.getName()); break; + } else if(methodParameter != null && Document.class.isAssignableFrom(methodParameter)) { + generateSchemaTypeForDocument(sequence, parameterName); + } else if(methodParameter != null && Map.class.isAssignableFrom(methodParameter)) { generateWrappedSchemaTypeForMap(sequence, genericParameterTypes[j], parameterName); @@ -437,6 +440,10 @@ public class DefaultSchemaGenerator impl Type genericParameterType = jMethod.getGenericReturnType(); if (nonRpcMethods.contains(jMethod.getName())) { generateSchemaForType(sequence, null, returnName); + + } else if(returnType != null && Document.class.isAssignableFrom(returnType)) { + generateSchemaTypeForDocument(sequence, returnName); + } else if (Map.class.isAssignableFrom(returnType)){ if (genericParameterType instanceof ParameterizedType) { generateWrappedSchemaTypeForMap(sequence, genericParameterType, returnName); @@ -672,32 +679,37 @@ public class DefaultSchemaGenerator impl if(genericFieldType instanceof ParameterizedType){ ParameterizedType aType = (ParameterizedType) genericFieldType; Type[] fieldArgTypes = aType.getActualTypeArguments(); - if(Map.class.isAssignableFrom((Class)((ParameterizedType)aType).getRawType())){ - generateWrappedSchemaTypeForMap(sequence, aType, propertyName); - - } - if (Collection.class - .isAssignableFrom((Class) ((ParameterizedType) aType) - .getRawType())) { - - generateWrappedSchemaTypeForCollection( - sequence, aType, propertyName); + if(Map.class.isAssignableFrom((Class)((ParameterizedType)aType).getRawType())){ + generateWrappedSchemaTypeForMap(sequence, aType, propertyName); + + } else if (Collection.class + .isAssignableFrom((Class) ((ParameterizedType) aType) + .getRawType())) { + + generateWrappedSchemaTypeForCollection( + sequence, aType, propertyName); } else { - try { + try { generateSchemaforGenericFields(xmlSchema, - sequence, - fieldArgTypes[0], - propertyName); + sequence, + fieldArgTypes[0], + propertyName); } catch (Exception e) { generateSchemaforFieldsandProperties(xmlSchema, - sequence, - property.getPropertyType(), - propertyName, - property.getPropertyType().isArray()); + sequence, + property.getPropertyType(), + propertyName, + property.getPropertyType().isArray()); } - + } + } else if (genericFieldType != null && !(genericFieldType instanceof ParameterizedType) + && Document.class + .isAssignableFrom((Class) genericFieldType)) { + generateSchemaTypeForDocument(sequence, + propertyName); + } else { if(genericFieldType != null && Map.class.isAssignableFrom((Class)genericFieldType)){ generateWrappedSchemaTypeForMap(sequence, genericFieldType, propertyName); @@ -1998,4 +2010,40 @@ public class DefaultSchemaGenerator impl entryCount++; return name; } + + /** + * Generate schema type for document. + * + * @param sequence + * the sequence + * @param parameterName + * the parameter name + */ + protected void generateSchemaTypeForDocument(XmlSchemaSequence sequence, + String parameterName) { + + XmlSchema xmlSchema = getXmlSchema(targetNamespace); + QName entryName = new QName(targetNamespace, "document"); + XmlSchemaType schemaType = xmlSchema.getTypeByName(entryName); + + if (schemaType == null) { + XmlSchemaComplexType entryType = new XmlSchemaComplexType(xmlSchema); + XmlSchemaSequence entrySequence = new XmlSchemaSequence(); + XmlSchemaAny any = new XmlSchemaAny(); + entrySequence.getItems().add(any); + entryType.setParticle(entrySequence); + entryType.setName(entryName.getLocalPart()); + xmlSchema.getItems().add(entryType); + xmlSchema.getSchemaTypes().add(entryName, entryType); + schemaType = entryType; + + } + + XmlSchemaElement entryElement = new XmlSchemaElement(); + entryElement.setName(parameterName); + entryElement.setSchemaTypeName(schemaType.getQName()); + entryElement.setQName(schemaType.getQName()); + sequence.getItems().add(entryElement); + + } } \ No newline at end of file