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


Reply via email to