Author: djencks
Date: Sun Feb 13 18:34:42 2005
New Revision: 153695

URL: http://svn.apache.org/viewcvs?view=rev&rev=153695
Log:
work with RC3 wsdl4j which has a schema extension element not mentioned in the 
spec

Modified:
    
geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/AxisBuilder.java

Modified: 
geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/AxisBuilder.java
URL: 
http://svn.apache.org/viewcvs/geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/AxisBuilder.java?view=diff&r1=153694&r2=153695
==============================================================================
--- 
geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/AxisBuilder.java
 (original)
+++ 
geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/AxisBuilder.java
 Sun Feb 13 18:34:42 2005
@@ -51,6 +51,7 @@
 import javax.wsdl.WSDLException;
 import javax.wsdl.extensions.ExtensibilityElement;
 import javax.wsdl.extensions.UnknownExtensibilityElement;
+import javax.wsdl.extensions.schema.Schema;
 import javax.wsdl.extensions.soap.SOAPAddress;
 import javax.wsdl.extensions.soap.SOAPBinding;
 import javax.wsdl.extensions.soap.SOAPBody;
@@ -784,7 +785,7 @@
 
         Map faultMap = operation.getFaults();
         for (Iterator iterator = faultMap.entrySet().iterator(); 
iterator.hasNext();) {
-              Map.Entry entry =  (Map.Entry) iterator.next();
+            Map.Entry entry = (Map.Entry) iterator.next();
             String faultName = (String) entry.getKey();
             Fault fault = (Fault) entry.getValue();
             Message message = fault.getMessage();
@@ -802,9 +803,9 @@
                 String headerFaultMessagePartName = 
exceptionMapping.getWsdlMessagePartName().getStringValue();
                 part = message.getPart(headerFaultMessagePartName);
             } else {
-                part= (Part) message.getOrderedParts(null).iterator().next();
+                part = (Part) message.getOrderedParts(null).iterator().next();
             }
-            QName faultTypeQName = part.getElementName() == null? 
part.getTypeName(): part.getElementName();
+            QName faultTypeQName = part.getElementName() == null ? 
part.getTypeName() : part.getElementName();
             boolean isComplex = part.getTypeName() != null && 
complexTypeMap.containsKey(part.getTypeName());
             FaultDesc faultDesc = new FaultDesc(faultQName, className, 
faultTypeQName, isComplex);
 
@@ -882,7 +883,43 @@
             List schemas = types.getExtensibilityElements();
             for (Iterator iterator = schemas.iterator(); iterator.hasNext();) {
                 Object o = iterator.next();
-                if (o instanceof UnknownExtensibilityElement) {
+                if (o instanceof Schema) {
+                    Schema unknownExtensibilityElement = (Schema) o;
+                    QName elementType = 
unknownExtensibilityElement.getElementType();
+                    if (new QName("http://www.w3.org/2001/XMLSchema";, 
"schema").equals(elementType)) {
+                        Element element = 
unknownExtensibilityElement.getElement();
+                        try {
+                            XmlObject xmlObject = 
SchemaConversionUtils.parse(element);
+                            XmlCursor cursor = xmlObject.newCursor();
+                            try {
+                                cursor.toFirstContentToken();
+                                for (Iterator namespaces = 
namespaceMap.entrySet().iterator(); namespaces.hasNext();) {
+                                    Map.Entry entry = (Map.Entry) 
namespaces.next();
+                                    cursor.insertNamespace((String) 
entry.getKey(), (String) entry.getValue());
+                                }
+                            } finally {
+                                cursor.dispose();
+                            }
+                            SchemaDocument schemaDoc = (SchemaDocument) 
xmlObject.changeType(SchemaDocument.type);
+                            SchemaConversionUtils.validateDD(schemaDoc);
+                            SchemaDocument.Schema schema = 
schemaDoc.getSchema();
+                            String targetNamespace = 
schema.getTargetNamespace();
+                            ComplexType[] complexTypes = 
schema.getComplexTypeArray();
+                            for (int j = 0; j < complexTypes.length; j++) {
+                                ComplexType complexType = complexTypes[j];
+                                String complexTypeName = complexType.getName();
+                                QName complexTypeQName = new 
QName(targetNamespace, complexTypeName);
+                                complexTypeMap.put(complexTypeQName, 
complexType);
+                            }
+                        } catch (XmlException e) {
+                            throw new DeploymentException("Invalid schema in 
wsdl", e);
+                        }
+                    } else {
+                        //problems??
+                    }
+                } else if (o instanceof UnknownExtensibilityElement) {
+                    //This is apparently obsolete as of 
axis-wsdl4j-1.2-RC3.jar which includes the Schema extension above.
+                    //I'm leaving this in in case this Schema class is not 
really part of a spec, even though its in javax.
                     UnknownExtensibilityElement unknownExtensibilityElement = 
(UnknownExtensibilityElement) o;
                     QName elementType = 
unknownExtensibilityElement.getElementType();
                     if (new QName("http://www.w3.org/2001/XMLSchema";, 
"schema").equals(elementType)) {


Reply via email to