You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2007/10/05 18:18:10 UTC
svn commit: r582332 - in /incubator/tuscany/java/sca/modules:
binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/
binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/
interface-wsdl-xml/src/main/java/org/apache/tuscan...
Author: rfeng
Date: Fri Oct 5 09:18:08 2007
New Revision: 582332
URL: http://svn.apache.org/viewvc?rev=582332&view=rev
Log:
Use WSDLDefinition to resolve inline schemas
Added:
incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/xsd/helloworld.xsd (with props)
Modified:
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Java2WSDLHelper.java
incubator/tuscany/java/sca/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java
incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLInterfaceProcessor.java
incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java
incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/introspect/WSDLInterfaceIntrospectorTestCase.java
incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/introspect/WSDLOperationIntrospectorTestCase.java
incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/introspect/WrapperStyleOperationTestCase.java
incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLDocumentProcessorTestCase.java
incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/wsdl/helloworld-interface.wsdl
incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLDefinition.java
incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLFactory.java
incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/XSDefinition.java
incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLDefinitionImpl.java
incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLFactoryImpl.java
incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLInterfaceIntrospectorImpl.java
incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLOperationIntrospectorImpl.java
incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/XSDefinitionImpl.java
Modified: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Java2WSDLHelper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Java2WSDLHelper.java?rev=582332&r1=582331&r2=582332&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Java2WSDLHelper.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Java2WSDLHelper.java Fri Oct 5 09:18:08 2007
@@ -23,6 +23,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Method;
+import java.net.URI;
import java.net.URL;
import java.util.List;
import java.util.Map;
@@ -42,6 +43,7 @@
import javax.wsdl.Types;
import javax.wsdl.WSDLException;
import javax.wsdl.extensions.ExtensibilityElement;
+import javax.wsdl.extensions.UnknownExtensibilityElement;
import javax.wsdl.extensions.schema.Schema;
import javax.wsdl.xml.WSDLLocator;
import javax.wsdl.xml.WSDLReader;
@@ -54,18 +56,25 @@
import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceContract;
import org.apache.tuscany.sca.interfacedef.wsdl.DefaultWSDLFactory;
import org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition;
+import org.apache.tuscany.sca.interfacedef.wsdl.WSDLFactory;
import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterface;
import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterfaceContract;
+import org.apache.tuscany.sca.interfacedef.wsdl.XSDefinition;
import org.apache.tuscany.sca.interfacedef.wsdl.impl.InvalidWSDLException;
import org.apache.tuscany.sca.interfacedef.wsdl.impl.WSDLOperationIntrospectorImpl;
+import org.apache.tuscany.sca.interfacedef.wsdl.xml.WSDLModelResolver;
import org.apache.tuscany.sca.interfacedef.wsdl.xml.XMLDocumentHelper;
import org.apache.tuscany.sca.policy.Intent;
import org.apache.tuscany.sca.policy.IntentAttachPoint;
+import org.apache.ws.commons.schema.XmlSchema;
import org.apache.ws.commons.schema.XmlSchemaCollection;
import org.apache.ws.java2wsdl.Java2WSDLBuilder;
import org.osoa.sca.annotations.OneWay;
+import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
import org.xml.sax.InputSource;
/**
@@ -76,7 +85,8 @@
/**
* Create a WSDLInterfaceContract from a JavaInterfaceContract
*/
- public static WSDLInterfaceContract createWSDLInterfaceContract(JavaInterfaceContract contract, WebServiceBinding wsBinding) {
+ public static WSDLInterfaceContract createWSDLInterfaceContract(JavaInterfaceContract contract,
+ WebServiceBinding wsBinding) {
JavaInterface iface = (JavaInterface)contract.getInterface();
Definition def = Java2WSDLHelper.createDefinition(iface.getJavaClass(), wsBinding);
@@ -96,14 +106,13 @@
PortType portType = (PortType)def.getAllPortTypes().values().iterator().next();
wsdlInterface.setPortType(portType);
- readInlineSchemas(def, wsdlDefinition.getInlinedSchemas());
+ readInlineSchemas(wsdlFactory, wsdlDefinition, def, new XmlSchemaCollection());
try {
for (Operation op : iface.getOperations()) {
javax.wsdl.Operation wsdlOp = portType.getOperation(op.getName(), null, null);
WSDLOperationIntrospectorImpl opx =
- new WSDLOperationIntrospectorImpl(wsdlFactory, wsdlOp, wsdlDefinition.getInlinedSchemas(), null,
- null);
+ new WSDLOperationIntrospectorImpl(wsdlFactory, wsdlOp, wsdlDefinition, null, null);
Operation clonedOp = (Operation)op.clone();
clonedOp.setDataBinding(null);
@@ -115,8 +124,8 @@
for (DataType<?> dt : clonedOp.getInputType().getLogical()) {
dt.setDataBinding(null);
}
-
- if (clonedOp.getOutputType() != null ){
+
+ if (clonedOp.getOutputType() != null) {
clonedOp.getOutputType().setDataBinding(null);
}
for (DataType<?> dt : clonedOp.getFaultTypes()) {
@@ -136,29 +145,92 @@
return wsdlContract;
}
- protected static void readInlineSchemas(Definition definition, XmlSchemaCollection schemaCollection) {
+ private static Document promote(Element element) {
+ Document doc = (Document)element.getOwnerDocument().cloneNode(false);
+ Element schema = (Element)doc.importNode(element, true);
+ doc.appendChild(schema);
+ Node parent = element.getParentNode();
+ while (parent instanceof Element) {
+ Element root = (Element)parent;
+ NamedNodeMap nodeMap = root.getAttributes();
+ for (int i = 0; i < nodeMap.getLength(); i++) {
+ Attr attr = (Attr)nodeMap.item(i);
+ String name = attr.getName();
+ if ("xmlns".equals(name) || name.startsWith("xmlns:")) {
+ if (schema.getAttributeNode(name) == null) {
+ schema.setAttributeNodeNS((Attr)doc.importNode(attr, true));
+ }
+ }
+ }
+ parent = parent.getParentNode();
+ }
+ doc.setDocumentURI(element.getOwnerDocument().getDocumentURI());
+ return doc;
+ }
+
+ /**
+ * Populate the inline schemas including those from the imported definitions
+ *
+ * @param definition
+ * @param schemaCollection
+ */
+ private static void readInlineSchemas(WSDLFactory wsdlFactory,
+ WSDLDefinition wsdlDefinition,
+ Definition definition,
+ XmlSchemaCollection schemaCollection) {
Types types = definition.getTypes();
if (types != null) {
+ int index = 0;
for (Object ext : types.getExtensibilityElements()) {
- if (ext instanceof Schema) {
- Element element = ((Schema)ext).getElement();
- schemaCollection.setBaseUri(((Schema)ext).getDocumentBaseURI());
- schemaCollection.read(element, definition.getDocumentBaseURI());
+ ExtensibilityElement extElement = (ExtensibilityElement)ext;
+ Element element = null;
+ if (WSDLModelResolver.XSD_QNAME_LIST.contains(extElement.getElementType())) {
+ if (extElement instanceof Schema) {
+ element = ((Schema)extElement).getElement();
+ } else if (extElement instanceof UnknownExtensibilityElement) {
+ element = ((UnknownExtensibilityElement)extElement).getElement();
+ }
+ }
+ if (element != null) {
+ Document doc = promote(element);
+ XSDefinition xsDefinition = wsdlFactory.createXSDefinition();
+ xsDefinition.setUnresolved(true);
+ xsDefinition.setNamespace(element.getAttribute("targetNamespace"));
+ xsDefinition.setDocument(doc);
+ xsDefinition.setLocation(URI.create(doc.getDocumentURI() + "#" + index));
+ loadXSD(schemaCollection, xsDefinition);
+ wsdlDefinition.getXmlSchemas().add(xsDefinition);
+ index++;
}
}
}
for (Object imports : definition.getImports().values()) {
- List<?> impList = (List<?>)imports;
+ List impList = (List)imports;
for (Object i : impList) {
javax.wsdl.Import anImport = (javax.wsdl.Import)i;
- // Read inline schemas
+ // Read inline schemas
if (anImport.getDefinition() != null) {
- readInlineSchemas(anImport.getDefinition(), schemaCollection);
+ readInlineSchemas(wsdlFactory, wsdlDefinition, anImport.getDefinition(), schemaCollection);
}
}
}
}
+ private static void loadXSD(XmlSchemaCollection schemaCollection, XSDefinition definition) {
+ if (definition.getSchema() != null) {
+ return;
+ }
+ if (definition.getDocument() != null) {
+ String uri = null;
+ if (definition.getLocation() != null) {
+ uri = definition.getLocation().toString();
+ }
+ XmlSchema schema = schemaCollection.read(definition.getDocument(), uri, null);
+ definition.setSchemaCollection(schemaCollection);
+ definition.setSchema(schema);
+ }
+ }
+
/**
* Create a WSDL4J Definition object from a Java interface
*/
@@ -183,7 +255,7 @@
WSDLLocatorImpl locator = new WSDLLocatorImpl(new ByteArrayInputStream(os.toByteArray()));
Definition definition = reader.readWSDL(locator);
-
+
processSOAPVersion(definition, wsBinding);
processNoArgAndVoidReturnMethods(definition, javaInterface);
@@ -196,18 +268,18 @@
private static void processSOAPVersion(Definition definition, WebServiceBinding wsBinding) {
if (requiresSOAP12(wsBinding)) {
- removePort(definition, "SOAP11port_http");
- } else {
- removePort(definition, "SOAP12port_http");
- }
+ removePort(definition, "SOAP11port_http");
+ } else {
+ removePort(definition, "SOAP12port_http");
+ }
}
private static void removePort(Definition definition, String portNameSuffix) {
Service service = (Service)definition.getServices().values().iterator().next();
- Map<?,?> ports = service.getPorts();
+ Map<?, ?> ports = service.getPorts();
for (Object o : ports.keySet()) {
if (((String)o).endsWith(portNameSuffix)) {
- Port p = (Port) ports.remove(o);
+ Port p = (Port)ports.remove(o);
definition.removeBinding(p.getBinding().getQName());
break;
}
@@ -215,7 +287,7 @@
}
private static final QName SOAP12_INTENT = new QName("http://www.osoa.org/xmlns/sca/1.0", "soap12");
-
+
private static boolean requiresSOAP12(WebServiceBinding wsBinding) {
if (wsBinding instanceof IntentAttachPoint) {
List<Intent> intents = ((IntentAttachPoint)wsBinding).getRequiredIntents();
@@ -264,12 +336,12 @@
Message inputMsg = input.getMessage();
if (inputMsg.getParts().isEmpty()) {
// create wrapper element and add it to the schema DOM
- Element wrapper = document.createElementNS("http://www.w3.org/2001/XMLSchema",
- xsPrefix + ":element");
+ Element wrapper =
+ document.createElementNS("http://www.w3.org/2001/XMLSchema", xsPrefix + ":element");
wrapper.setAttribute("name", opName);
schema.appendChild(wrapper);
- Element complexType = document.createElementNS("http://www.w3.org/2001/XMLSchema",
- xsPrefix + ":complexType");
+ Element complexType =
+ document.createElementNS("http://www.w3.org/2001/XMLSchema", xsPrefix + ":complexType");
wrapper.appendChild(complexType);
// create new part for the wrapper and add it to the message
@@ -292,12 +364,12 @@
if (!isOneWay) {
// create wrapper element and add it to the schema DOM
String msgName = opName + "Response";
- Element wrapper = document.createElementNS("http://www.w3.org/2001/XMLSchema",
- xsPrefix + ":element");
+ Element wrapper =
+ document.createElementNS("http://www.w3.org/2001/XMLSchema", xsPrefix + ":element");
wrapper.setAttribute("name", msgName);
schema.appendChild(wrapper);
- Element complexType = document.createElementNS("http://www.w3.org/2001/XMLSchema",
- xsPrefix + ":complexType");
+ Element complexType =
+ document.createElementNS("http://www.w3.org/2001/XMLSchema", xsPrefix + ":complexType");
wrapper.appendChild(complexType);
// create new part for the wrapper
Modified: incubator/tuscany/java/sca/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java?rev=582332&r1=582331&r2=582332&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java Fri Oct 5 09:18:08 2007
@@ -269,9 +269,7 @@
WSDLInterfaceContract interfaceContract = wsdlFactory.createWSDLInterfaceContract();
WSDLInterface wsdlInterface;
try {
- wsdlInterface = wsdlFactory.createWSDLInterface(portType,
- wsdlDefinition.getInlinedSchemas(),
- resolver);
+ wsdlInterface = wsdlFactory.createWSDLInterface(portType, wsdlDefinition, resolver);
} catch (InvalidInterfaceException e) {
throw new ContributionResolveException(e);
}
Modified: incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLInterfaceProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLInterfaceProcessor.java?rev=582332&r1=582331&r2=582332&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLInterfaceProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLInterfaceProcessor.java Fri Oct 5 09:18:08 2007
@@ -149,7 +149,7 @@
// Introspect the WSDL portType and add the resulting
// WSDLInterface to the resolver
try {
- wsdlInterface = wsdlFactory.createWSDLInterface(portType, wsdlDefinition.getInlinedSchemas(), resolver);
+ wsdlInterface = wsdlFactory.createWSDLInterface(portType, wsdlDefinition, resolver);
} catch (InvalidInterfaceException e) {
throw new ContributionResolveException(e);
}
Modified: incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java?rev=582332&r1=582331&r2=582332&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java Fri Oct 5 09:18:08 2007
@@ -239,6 +239,7 @@
imp.setDefinition(d.getDefinition());
imp.setLocationURI(d.getDefinition().getDocumentBaseURI());
facade.addImport(imp);
+ aggregated.getXmlSchemas().addAll(d.getXmlSchemas());
}
}
aggregated.setDefinition(facade);
@@ -383,7 +384,7 @@
xsDefinition.setLocation(URI.create(doc.getDocumentURI() + "#" + index));
XSDefinition resolved =
contribution.getModelResolver().resolveModel(XSDefinition.class, xsDefinition);
- wsdlDefinition.setInlinedSchemas(resolved.getSchemaCollection());
+ wsdlDefinition.getXmlSchemas().add(resolved);
index++;
}
}
Modified: incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/introspect/WSDLInterfaceIntrospectorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/introspect/WSDLInterfaceIntrospectorTestCase.java?rev=582332&r1=582331&r2=582332&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/introspect/WSDLInterfaceIntrospectorTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/introspect/WSDLInterfaceIntrospectorTestCase.java Fri Oct 5 09:18:08 2007
@@ -61,7 +61,7 @@
@SuppressWarnings("unchecked")
public final void testIntrospectPortType() throws InvalidInterfaceException {
- WSDLInterface contract = wsdlFactory.createWSDLInterface(portType, definition.getInlinedSchemas(), resolver);
+ WSDLInterface contract = wsdlFactory.createWSDLInterface(portType, definition, resolver);
Assert.assertEquals(contract.getName().getLocalPart(), "StockQuotePortType");
List<Operation> operations = contract.getOperations();
Assert.assertEquals(1, operations.size());
Modified: incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/introspect/WSDLOperationIntrospectorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/introspect/WSDLOperationIntrospectorTestCase.java?rev=582332&r1=582331&r2=582332&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/introspect/WSDLOperationIntrospectorTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/introspect/WSDLOperationIntrospectorTestCase.java Fri Oct 5 09:18:08 2007
@@ -53,7 +53,7 @@
PortType portType = definition.getDefinition().getPortType(PORTTYPE_NAME);
Operation operation = portType.getOperation("getLastTradePrice", null, null);
- WSDLOperationIntrospectorImpl op = new WSDLOperationIntrospectorImpl(wsdlFactory, operation, definition.getInlinedSchemas(), "org.w3c.dom.Node", resolver);
+ WSDLOperationIntrospectorImpl op = new WSDLOperationIntrospectorImpl(wsdlFactory, operation, definition, "org.w3c.dom.Node", resolver);
DataType<List<DataType>> inputType = op.getInputType();
Assert.assertEquals(1, inputType.getLogical().size());
@@ -83,12 +83,12 @@
PortType portType = definition.getDefinition().getPortType(PORTTYPE_NAME);
Operation operation = portType.getOperation("getLastTradePrice1", null, null);
- WSDLOperationIntrospectorImpl op = new WSDLOperationIntrospectorImpl(wsdlFactory, operation, definition.getInlinedSchemas(), "org.w3c.dom.Node", resolver);
+ WSDLOperationIntrospectorImpl op = new WSDLOperationIntrospectorImpl(wsdlFactory, operation, definition, "org.w3c.dom.Node", resolver);
Assert.assertFalse(op.isWrapperStyle());
Assert.assertEquals(1, op.getInputType().getLogical().size());
operation = portType.getOperation("getLastTradePrice2", null, null);
- op = new WSDLOperationIntrospectorImpl(wsdlFactory, operation, definition.getInlinedSchemas(), "org.w3c.dom.Node", resolver);
+ op = new WSDLOperationIntrospectorImpl(wsdlFactory, operation, definition, "org.w3c.dom.Node", resolver);
Assert.assertFalse(op.isWrapperStyle());
Assert.assertEquals(2, op.getInputType().getLogical().size());
}
@@ -101,7 +101,7 @@
PortType portType = definition.getDefinition().getPortType(PORTTYPE_NAME);
Operation operation = portType.getOperation("getLastTradePrice", null, null);
- WSDLOperationIntrospectorImpl op = new WSDLOperationIntrospectorImpl(wsdlFactory, operation, definition.getInlinedSchemas(), "org.w3c.dom.Node", resolver);
+ WSDLOperationIntrospectorImpl op = new WSDLOperationIntrospectorImpl(wsdlFactory, operation, definition, "org.w3c.dom.Node", resolver);
try {
op.isWrapperStyle();
Modified: incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/introspect/WrapperStyleOperationTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/introspect/WrapperStyleOperationTestCase.java?rev=582332&r1=582331&r2=582332&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/introspect/WrapperStyleOperationTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/introspect/WrapperStyleOperationTestCase.java Fri Oct 5 09:18:08 2007
@@ -45,7 +45,7 @@
definition = resolver.resolveModel(WSDLDefinition.class, definition);
PortType portType = definition.getDefinition().getPortType(PORTTYPE_NAME);
Operation operation = portType.getOperation("getLastTradePrice", null, null);
- WSDLOperationIntrospectorImpl op = new WSDLOperationIntrospectorImpl(wsdlFactory, operation, definition.getInlinedSchemas(), "org.w3c.dom.Node", resolver);
+ WSDLOperationIntrospectorImpl op = new WSDLOperationIntrospectorImpl(wsdlFactory, operation, definition, "org.w3c.dom.Node", resolver);
Assert.assertTrue(op.isWrapperStyle());
Assert.assertEquals(1, op.getWrapper().getInputChildElements().size());
Assert.assertEquals(1, op.getWrapper().getOutputChildElements().size());
@@ -58,10 +58,10 @@
definition = resolver.resolveModel(WSDLDefinition.class, definition);
PortType portType = definition.getDefinition().getPortType(PORTTYPE_NAME);
Operation operation = portType.getOperation("getLastTradePrice1", null, null);
- WSDLOperationIntrospectorImpl op = new WSDLOperationIntrospectorImpl(wsdlFactory, operation, definition.getInlinedSchemas(), "org.w3c.dom.Node", resolver);
+ WSDLOperationIntrospectorImpl op = new WSDLOperationIntrospectorImpl(wsdlFactory, operation, definition, "org.w3c.dom.Node", resolver);
Assert.assertFalse(op.isWrapperStyle());
operation = portType.getOperation("getLastTradePrice2", null, null);
- op = new WSDLOperationIntrospectorImpl(wsdlFactory, operation, definition.getInlinedSchemas(), "org.w3c.dom.Node", resolver);
+ op = new WSDLOperationIntrospectorImpl(wsdlFactory, operation, definition, "org.w3c.dom.Node", resolver);
Assert.assertFalse(op.isWrapperStyle());
}
Modified: incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLDocumentProcessorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLDocumentProcessorTestCase.java?rev=582332&r1=582331&r2=582332&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLDocumentProcessorTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLDocumentProcessorTestCase.java Fri Oct 5 09:18:08 2007
@@ -77,6 +77,8 @@
Assert.assertNotNull(((Import)imports.get(0)).getDefinition());
Assert.assertNotNull(resolved.getDefinition().getPortType(new QName("http://helloworld", "HelloWorld")));
Assert.assertNotNull(resolved.getDefinition().getService(new QName("http://helloworld", "HelloWorldService")));
+
+ assertNotNull(resolved.getXmlSchemaType(new QName("http://greeting", "Name")));
}
}
Modified: incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/wsdl/helloworld-interface.wsdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/wsdl/helloworld-interface.wsdl?rev=582332&r1=582331&r2=582332&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/wsdl/helloworld-interface.wsdl (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/wsdl/helloworld-interface.wsdl Fri Oct 5 09:18:08 2007
@@ -25,7 +25,10 @@
<schema elementFormDefault="qualified" targetNamespace="http://helloworld"
xmlns="http://www.w3.org/2001/XMLSchema" xmlns:g="http://greeting">
- <import namespace="http://greeting" schemaLocation="../xsd/greeting.xsd" />
+ <!--
+ <import namespace="http://greeting" schemaLocation="../xsd/greeting.xsd" />
+ -->
+ <include schemaLocation="../xsd/helloworld.xsd" />
<element name="getGreetings">
<complexType>
Added: incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/xsd/helloworld.xsd
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/xsd/helloworld.xsd?rev=582332&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/xsd/helloworld.xsd (added)
+++ incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/xsd/helloworld.xsd Fri Oct 5 09:18:08 2007
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<schema targetNamespace="http://helloworld" xmlns="http://www.w3.org/2001/XMLSchema">
+ <import namespace="http://greeting" schemaLocation="greeting.xsd" />
+</schema>
\ No newline at end of file
Propchange: incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/xsd/helloworld.xsd
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/xsd/helloworld.xsd
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLDefinition.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLDefinition.java?rev=582332&r1=582331&r2=582332&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLDefinition.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLDefinition.java Fri Oct 5 09:18:08 2007
@@ -23,9 +23,11 @@
import java.util.List;
import javax.wsdl.Definition;
+import javax.xml.namespace.QName;
import org.apache.tuscany.sca.assembly.Base;
-import org.apache.ws.commons.schema.XmlSchemaCollection;
+import org.apache.ws.commons.schema.XmlSchemaElement;
+import org.apache.ws.commons.schema.XmlSchemaType;
/**
* Represents a WSDL definition.
@@ -48,14 +50,6 @@
void setDefinition(Definition definition);
/**
- * Returns a list of XML schemas inlined in this WSDL definition.
- * @return
- */
- XmlSchemaCollection getInlinedSchemas();
-
- void setInlinedSchemas(XmlSchemaCollection schemaCollection);
-
- /**
* Returns the namespace of this WSDL definition.
* @return the namespace of this WSDL definition
*/
@@ -74,4 +68,8 @@
URI getLocation();
void setLocation(URI url);
+
+ XmlSchemaElement getXmlSchemaElement(QName name);
+ XmlSchemaType getXmlSchemaType(QName name);
+
}
Modified: incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLFactory.java?rev=582332&r1=582331&r2=582332&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLFactory.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLFactory.java Fri Oct 5 09:18:08 2007
@@ -22,7 +22,6 @@
import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
import org.apache.tuscany.sca.interfacedef.InvalidInterfaceException;
-import org.apache.ws.commons.schema.XmlSchemaCollection;
/**
* Factory for the WSDL model.
@@ -44,7 +43,7 @@
* @param portType the portType to inspect
* @return a WSDLInterface corresponding to the WSDL portType
*/
- WSDLInterface createWSDLInterface(PortType portType, XmlSchemaCollection inlineSchemas, ModelResolver resolver) throws InvalidInterfaceException;
+ WSDLInterface createWSDLInterface(PortType portType, WSDLDefinition wsdlDefinition, ModelResolver resolver) throws InvalidInterfaceException;
/**
* Creates the contents of a WSDL interface from a WSDL portType.
@@ -52,7 +51,7 @@
* @param portType the portType to inspect
* @return a WSDLInterface corresponding to the WSDL portType
*/
- void createWSDLInterface(WSDLInterface wsdlInterface, PortType portType, XmlSchemaCollection inlineSchemas, ModelResolver resolver) throws InvalidInterfaceException;
+ void createWSDLInterface(WSDLInterface wsdlInterface, PortType portType, WSDLDefinition wsdlDefinition, ModelResolver resolver) throws InvalidInterfaceException;
/**
* Creates a new WSDL definition.
Modified: incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/XSDefinition.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/XSDefinition.java?rev=582332&r1=582331&r2=582332&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/XSDefinition.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/XSDefinition.java Fri Oct 5 09:18:08 2007
@@ -21,9 +21,13 @@
import java.net.URI;
+import javax.xml.namespace.QName;
+
import org.apache.tuscany.sca.assembly.Base;
import org.apache.ws.commons.schema.XmlSchema;
import org.apache.ws.commons.schema.XmlSchemaCollection;
+import org.apache.ws.commons.schema.XmlSchemaElement;
+import org.apache.ws.commons.schema.XmlSchemaType;
import org.w3c.dom.Document;
/**
@@ -83,4 +87,8 @@
* @param document
*/
void setDocument(Document document);
+
+ XmlSchemaElement getXmlSchemaElement(QName name);
+
+ XmlSchemaType getXmlSchemaType(QName name);
}
Modified: incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLDefinitionImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLDefinitionImpl.java?rev=582332&r1=582331&r2=582332&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLDefinitionImpl.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLDefinitionImpl.java Fri Oct 5 09:18:08 2007
@@ -24,10 +24,14 @@
import java.util.List;
import javax.wsdl.Definition;
+import javax.xml.namespace.QName;
import org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition;
import org.apache.tuscany.sca.interfacedef.wsdl.XSDefinition;
+import org.apache.ws.commons.schema.XmlSchema;
import org.apache.ws.commons.schema.XmlSchemaCollection;
+import org.apache.ws.commons.schema.XmlSchemaElement;
+import org.apache.ws.commons.schema.XmlSchemaType;
/**
* Represents a WSDL definition.
@@ -39,7 +43,6 @@
private Definition definition;
private String namespace;
private URI location;
- private XmlSchemaCollection inlinedSchemas = new XmlSchemaCollection();
private List<XSDefinition> schemas = new ArrayList<XSDefinition>();
private boolean unresolved;
@@ -54,10 +57,6 @@
this.definition = definition;
}
- public XmlSchemaCollection getInlinedSchemas() {
- return inlinedSchemas;
- }
-
public boolean isUnresolved() {
return unresolved;
}
@@ -129,13 +128,6 @@
}
/**
- * @param inlineSchemas the inlineSchemas to set
- */
- public void setInlinedSchemas(XmlSchemaCollection inlinedSchemas) {
- this.inlinedSchemas = inlinedSchemas;
- }
-
- /**
* @see java.lang.Object#hashCode()
*/
@Override
@@ -170,6 +162,52 @@
} else if (!namespace.equals(other.namespace))
return false;
return true;
+ }
+
+ /**
+ * @see org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition#getXmlSchemaElement(javax.xml.namespace.QName)
+ */
+ public XmlSchemaElement getXmlSchemaElement(QName name) {
+ XmlSchemaCollection schemaCollection = null;
+ for (XSDefinition xsd : schemas) {
+ if (xsd.getSchemaCollection() != null) {
+ schemaCollection = xsd.getSchemaCollection();
+ }
+ XmlSchema schema = xsd.getSchema();
+ if (schema != null) {
+ XmlSchemaElement element = schema.getElementByName(name);
+ if (element != null) {
+ return element;
+ }
+ }
+ }
+ if (schemaCollection != null) {
+ return schemaCollection.getElementByQName(name);
+ }
+ return null;
+ }
+
+ /**
+ * @see org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition#getXmlSchemaType(javax.xml.namespace.QName)
+ */
+ public XmlSchemaType getXmlSchemaType(QName name) {
+ XmlSchemaCollection schemaCollection = null;
+ for (XSDefinition xsd : schemas) {
+ if (xsd.getSchemaCollection() != null) {
+ schemaCollection = xsd.getSchemaCollection();
+ }
+ XmlSchema schema = xsd.getSchema();
+ if (schema != null) {
+ XmlSchemaType type = schema.getTypeByName(name);
+ if (type != null) {
+ return type;
+ }
+ }
+ }
+ if (schemaCollection != null) {
+ return schemaCollection.getTypeByQName(name);
+ }
+ return null;
}
}
Modified: incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLFactoryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLFactoryImpl.java?rev=582332&r1=582331&r2=582332&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLFactoryImpl.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLFactoryImpl.java Fri Oct 5 09:18:08 2007
@@ -27,7 +27,6 @@
import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterface;
import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterfaceContract;
import org.apache.tuscany.sca.interfacedef.wsdl.XSDefinition;
-import org.apache.ws.commons.schema.XmlSchemaCollection;
/**
* A factory for the WSDL model.
@@ -46,14 +45,14 @@
return new WSDLInterfaceImpl();
}
- public WSDLInterface createWSDLInterface(PortType portType, XmlSchemaCollection inlineSchemas, ModelResolver resolver) throws InvalidInterfaceException {
+ public WSDLInterface createWSDLInterface(PortType portType, WSDLDefinition wsdlDefinition, ModelResolver resolver) throws InvalidInterfaceException {
WSDLInterface wsdlInterface = createWSDLInterface();
- introspector.introspectPortType(wsdlInterface, portType, inlineSchemas, resolver);
+ introspector.introspectPortType(wsdlInterface, portType, wsdlDefinition, resolver);
return wsdlInterface;
}
- public void createWSDLInterface(WSDLInterface wsdlInterface, PortType portType, XmlSchemaCollection inlineSchemas, ModelResolver resolver) throws InvalidInterfaceException {
- introspector.introspectPortType(wsdlInterface, portType, inlineSchemas, resolver);
+ public void createWSDLInterface(WSDLInterface wsdlInterface, PortType portType, WSDLDefinition wsdlDefinition, ModelResolver resolver) throws InvalidInterfaceException {
+ introspector.introspectPortType(wsdlInterface, portType, wsdlDefinition, resolver);
}
public WSDLDefinition createWSDLDefinition() {
Modified: incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLInterfaceIntrospectorImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLInterfaceIntrospectorImpl.java?rev=582332&r1=582331&r2=582332&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLInterfaceIntrospectorImpl.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLInterfaceIntrospectorImpl.java Fri Oct 5 09:18:08 2007
@@ -26,9 +26,9 @@
import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
import org.apache.tuscany.sca.interfacedef.Operation;
+import org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition;
import org.apache.tuscany.sca.interfacedef.wsdl.WSDLFactory;
import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterface;
-import org.apache.ws.commons.schema.XmlSchemaCollection;
/**
* Introspector for creating WSDLInterface definitions from WSDL PortTypes.
@@ -42,19 +42,19 @@
}
// FIXME: Do we want to deal with document-literal wrapped style based on the JAX-WS spec?
- private List<Operation> introspectOperations(PortType portType, XmlSchemaCollection inlineSchemas, ModelResolver resolver) throws InvalidWSDLException {
+ private List<Operation> introspectOperations(PortType portType, WSDLDefinition wsdlDefinition, ModelResolver resolver) throws InvalidWSDLException {
List<Operation> operations = new ArrayList<Operation>();
for (Object o : portType.getOperations()) {
javax.wsdl.Operation wsdlOp = (javax.wsdl.Operation)o;
- WSDLOperationIntrospectorImpl op = new WSDLOperationIntrospectorImpl(wsdlFactory, wsdlOp, inlineSchemas, null, resolver);
+ WSDLOperationIntrospectorImpl op = new WSDLOperationIntrospectorImpl(wsdlFactory, wsdlOp, wsdlDefinition, null, resolver);
operations.add(op.getOperation());
}
return operations;
}
- public void introspectPortType(WSDLInterface wsdlInterface, PortType portType, XmlSchemaCollection inlineSchemas, ModelResolver resolver) throws InvalidWSDLException {
+ public void introspectPortType(WSDLInterface wsdlInterface, PortType portType, WSDLDefinition wsdlDefinition, ModelResolver resolver) throws InvalidWSDLException {
wsdlInterface.setPortType(portType);
- wsdlInterface.getOperations().addAll(introspectOperations(portType, inlineSchemas, resolver));
+ wsdlInterface.getOperations().addAll(introspectOperations(portType, wsdlDefinition, resolver));
// FIXME: set to Non-conversational for now
wsdlInterface.setConversational(false);
}
Modified: incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLOperationIntrospectorImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLOperationIntrospectorImpl.java?rev=582332&r1=582331&r2=582332&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLOperationIntrospectorImpl.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLOperationIntrospectorImpl.java Fri Oct 5 09:18:08 2007
@@ -42,9 +42,9 @@
import org.apache.tuscany.sca.interfacedef.util.TypeInfo;
import org.apache.tuscany.sca.interfacedef.util.WrapperInfo;
import org.apache.tuscany.sca.interfacedef.util.XMLType;
+import org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition;
import org.apache.tuscany.sca.interfacedef.wsdl.WSDLFactory;
import org.apache.tuscany.sca.interfacedef.wsdl.XSDefinition;
-import org.apache.ws.commons.schema.XmlSchemaCollection;
import org.apache.ws.commons.schema.XmlSchemaComplexType;
import org.apache.ws.commons.schema.XmlSchemaElement;
import org.apache.ws.commons.schema.XmlSchemaObject;
@@ -62,7 +62,7 @@
public class WSDLOperationIntrospectorImpl {
private WSDLFactory wsdlFactory;
private ModelResolver resolver;
- private XmlSchemaCollection inlineSchemas;
+ private WSDLDefinition wsdlDefinition;
private javax.wsdl.Operation operation;
private Operation operationModel;
private DataType<List<DataType>> inputType;
@@ -78,13 +78,13 @@
public WSDLOperationIntrospectorImpl(
WSDLFactory wsdlFactory,
javax.wsdl.Operation operation,
- XmlSchemaCollection inlineSchemas,
+ WSDLDefinition wsdlDefinition,
String dataBinding,
ModelResolver resolver) {
super();
this.wsdlFactory = wsdlFactory;
this.operation = operation;
- this.inlineSchemas = inlineSchemas;
+ this.wsdlDefinition = wsdlDefinition;
this.resolver = resolver;
this.dataBinding = dataBinding;
this.wrapper = new Wrapper();
@@ -216,7 +216,8 @@
}
private XmlSchemaElement getElement(QName elementName) {
- XmlSchemaElement element = inlineSchemas.getElementByQName(elementName);
+
+ XmlSchemaElement element = wsdlDefinition.getXmlSchemaElement(elementName);
if (element == null) {
XSDefinition definition = wsdlFactory.createXSDefinition();
definition.setUnresolved(true);
@@ -230,7 +231,7 @@
}
private XmlSchemaType getType(QName typeName) {
- XmlSchemaType type = inlineSchemas.getTypeByQName(typeName);
+ XmlSchemaType type = wsdlDefinition.getXmlSchemaType(typeName);
if (type == null) {
XSDefinition definition = wsdlFactory.createXSDefinition();
definition.setNamespace(typeName.getNamespaceURI());
Modified: incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/XSDefinitionImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/XSDefinitionImpl.java?rev=582332&r1=582331&r2=582332&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/XSDefinitionImpl.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/XSDefinitionImpl.java Fri Oct 5 09:18:08 2007
@@ -21,9 +21,13 @@
import java.net.URI;
+import javax.xml.namespace.QName;
+
import org.apache.tuscany.sca.interfacedef.wsdl.XSDefinition;
import org.apache.ws.commons.schema.XmlSchema;
import org.apache.ws.commons.schema.XmlSchemaCollection;
+import org.apache.ws.commons.schema.XmlSchemaElement;
+import org.apache.ws.commons.schema.XmlSchemaType;
import org.w3c.dom.Document;
/**
@@ -38,7 +42,7 @@
private URI location;
private Document document;
private boolean unresolved;
-
+
protected XSDefinitionImpl() {
}
@@ -57,7 +61,7 @@
public void setUnresolved(boolean undefined) {
this.unresolved = undefined;
}
-
+
public String getNamespace() {
if (isUnresolved()) {
return namespace;
@@ -67,7 +71,7 @@
return namespace;
}
}
-
+
public void setNamespace(String namespace) {
if (!isUnresolved()) {
throw new IllegalStateException();
@@ -75,7 +79,7 @@
this.namespace = namespace;
}
}
-
+
/**
* @return the location
*/
@@ -154,4 +158,32 @@
return false;
return true;
}
+
+ public XmlSchemaElement getXmlSchemaElement(QName name) {
+ if (schema != null) {
+ XmlSchemaElement element = schema.getElementByName(name);
+ if (element != null) {
+ return element;
+ }
+ }
+
+ if (schemaCollection != null) {
+ return schemaCollection.getElementByQName(name);
+ }
+ return null;
+ }
+
+ public XmlSchemaType getXmlSchemaType(QName name) {
+ if (schema != null) {
+ XmlSchemaType type = schema.getTypeByName(name);
+ if (type != null) {
+ return type;
+ }
+ }
+ if (schemaCollection != null) {
+ return schemaCollection.getTypeByQName(name);
+ }
+ return null;
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org