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