You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by na...@apache.org on 2008/05/01 09:42:01 UTC
svn commit: r652445 - in /incubator/tuscany/java/sca/modules:
binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/
interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/
interface-wsdl-java2ws...
Author: nash
Date: Thu May 1 00:42:00 2008
New Revision: 652445
URL: http://svn.apache.org/viewvc?rev=652445&view=rev
Log:
Fix problems in new Java2WSDL generation code
Modified:
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceClient.java
incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/Interface2WSDLGenerator.java
incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/WSDLDefinitionGenerator.java
incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/java2wsdl/Java2WSDLHelper.java
incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/Java2WSDLGeneratorTestCase.java
Modified: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceClient.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/Axis2ServiceClient.java?rev=652445&r1=652444&r2=652445&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceClient.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceClient.java Thu May 1 00:42:00 2008
@@ -34,6 +34,7 @@
import javax.wsdl.Definition;
import javax.wsdl.Import;
import javax.wsdl.Port;
+import javax.wsdl.PortType;
import javax.wsdl.Service;
import javax.wsdl.extensions.ExtensibilityElement;
import javax.wsdl.extensions.soap.SOAPAddress;
@@ -72,6 +73,7 @@
import org.apache.tuscany.sca.interfacedef.InterfaceContract;
import org.apache.tuscany.sca.interfacedef.Operation;
import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterface;
+import org.apache.tuscany.sca.interfacedef.wsdl.interface2wsdl.WSDLDefinitionGenerator;
import org.apache.tuscany.sca.interfacedef.wsdl.xml.XMLDocumentHelper;
import org.apache.tuscany.sca.invocation.Invoker;
import org.apache.tuscany.sca.invocation.MessageFactory;
@@ -302,19 +304,19 @@
return;
}
- // If no service is specified in the binding element, allow for WSDL that
- // only contains a portType and not a service and port. Synthesize a
- // service and port using WSDL4J and add them to the wsdlDefinition to
- // keep Axis happy.
- //FIXME: it would be better to do this for all WSDLs to explicitly control the
- // service and port that Axis will use, rather than just hoping the user has
- // placed a suitable service and/or port first in the WSDL.
- WSDLDefinitionHelper helper = new WSDLDefinitionHelper();
+ // If no WSDL service or port is specified in the binding element, add a
+ // suitably configured service and port to the WSDL definition.
+ WSDLDefinitionGenerator helper =
+ new WSDLDefinitionGenerator(Axis2ServiceBindingProvider.requiresSOAP12(wsBinding));
if (wsBinding.getBinding() == null) {
InterfaceContract ic = wsBinding.getBindingInterfaceContract();
WSDLInterface wi = (WSDLInterface)ic.getInterface();
- Service service = helper.createService(wsdlDefinition, wi.getPortType());
- Binding binding = helper.createBinding(wsdlDefinition, wi.getPortType());
+ PortType portType = wi.getPortType();
+ Service service = helper.createService(wsdlDefinition, portType);
+ Binding binding = helper.createBinding(wsdlDefinition, portType);
+ helper.createBindingOperations(wsdlDefinition, binding, portType);
+ binding.setUndefined(false);
+ wsdlDefinition.addBinding(binding);
Port port = helper.createPort(wsdlDefinition, binding, service, wsBinding.getURI());
wsBinding.setService(service);
Modified: incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/Interface2WSDLGenerator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/Interface2WSDLGenerator.java?rev=652445&r1=652444&r2=652445&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/Interface2WSDLGenerator.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/Interface2WSDLGenerator.java Thu May 1 00:42:00 2008
@@ -84,15 +84,22 @@
private WSDLFactory factory;
private DataBindingExtensionPoint dataBindingExtensionPoint;
- private WSDLDefinitionGenerator definitionGenerator = new WSDLDefinitionGenerator();
+ private WSDLDefinitionGenerator definitionGenerator;
+ private boolean requiresSOAP12;
- public Interface2WSDLGenerator() throws WSDLException {
+ public Interface2WSDLGenerator(boolean requiresSOAP12) throws WSDLException {
super();
+ this.requiresSOAP12 = requiresSOAP12;
+ definitionGenerator = new WSDLDefinitionGenerator(requiresSOAP12);
this.factory = WSDLFactory.newInstance();
}
- public Interface2WSDLGenerator(WSDLFactory factory, DataBindingExtensionPoint dataBindingExtensionPoint) {
+ public Interface2WSDLGenerator(boolean requiresSOAP12,
+ WSDLFactory factory,
+ DataBindingExtensionPoint dataBindingExtensionPoint) {
super();
+ this.requiresSOAP12 = requiresSOAP12;
+ definitionGenerator = new WSDLDefinitionGenerator(requiresSOAP12);
this.factory = factory;
this.dataBindingExtensionPoint = dataBindingExtensionPoint;
}
@@ -109,13 +116,18 @@
}
QName name = getQName(interfaze);
Definition definition = factory.newDefinition();
- definition.addNamespace("soap", "http://schemas.xmlsoap.org/wsdl/soap/");
+ if (requiresSOAP12) {
+ definition.addNamespace("soap12", "http://schemas.xmlsoap.org/wsdl/soap12/");
+ } else {
+ definition.addNamespace("soap", "http://schemas.xmlsoap.org/wsdl/soap/");
+ }
definition.addNamespace("wsdl", "http://schemas.xmlsoap.org/wsdl/");
definition.addNamespace("xs", SCHEMA_NS);
- definition.setTargetNamespace(name.getNamespaceURI());
- definition.setQName(name);
- definition.addNamespace(name.getPrefix(), name.getNamespaceURI());
+ String namespaceURI = name.getNamespaceURI();
+ definition.setTargetNamespace(namespaceURI);
+ definition.setQName(new QName(namespaceURI, name.getLocalPart() + "Service", name.getPrefix()));
+ definition.addNamespace(name.getPrefix(), namespaceURI);
PortType portType = definition.createPortType();
portType.setQName(name);
@@ -280,7 +292,7 @@
Input input = definition.createInput();
input.setName("input");
Message inputMsg = definition.createMessage();
- QName inputMsgName = new QName(definition.getQName().getNamespaceURI(), op.getName() + "_InputMessage");
+ QName inputMsgName = new QName(definition.getQName().getNamespaceURI(), op.getName());
inputMsg.setQName(inputMsgName);
inputMsg.setUndefined(false);
definition.addMessage(inputMsg);
@@ -304,7 +316,7 @@
Output output = definition.createOutput();
output.setName("output");
Message outputMsg = definition.createMessage();
- QName outputMsgName = new QName(definition.getQName().getNamespaceURI(), op.getName() + "_OutputMessage");
+ QName outputMsgName = new QName(definition.getQName().getNamespaceURI(), op.getName() + "Response");
outputMsg.setQName(outputMsgName);
outputMsg.setUndefined(false);
definition.addMessage(outputMsg);
Modified: incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/WSDLDefinitionGenerator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/WSDLDefinitionGenerator.java?rev=652445&r1=652444&r2=652445&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/WSDLDefinitionGenerator.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/WSDLDefinitionGenerator.java Thu May 1 00:42:00 2008
@@ -36,9 +36,15 @@
import javax.wsdl.Service;
import javax.wsdl.Types;
import javax.wsdl.WSDLException;
+import javax.wsdl.extensions.ExtensibilityElement;
+import javax.wsdl.extensions.soap.SOAPAddress;
import javax.wsdl.extensions.soap.SOAPBinding;
import javax.wsdl.extensions.soap.SOAPBody;
import javax.wsdl.extensions.soap.SOAPOperation;
+import javax.wsdl.extensions.soap12.SOAP12Address;
+import javax.wsdl.extensions.soap12.SOAP12Binding;
+import javax.wsdl.extensions.soap12.SOAP12Body;
+import javax.wsdl.extensions.soap12.SOAP12Operation;
import javax.wsdl.factory.WSDLFactory;
import javax.wsdl.xml.WSDLReader;
import javax.xml.namespace.QName;
@@ -55,10 +61,30 @@
private static final QName SOAP_BINDING = new QName(SOAP_NS, "binding");
private static final QName SOAP_BODY = new QName(SOAP_NS, "body");
private static final QName SOAP_OPERATION = new QName(SOAP_NS, "operation");
-
- private static final String BINDING_SUFFIX = "__SOAPBinding";
- private static final String SERVICE_SUFFIX = "__Service";
- private static final String PORT_SUFFIX = "__SOAPHTTPPort";
+ private static final String SOAP12_NS = "http://schemas.xmlsoap.org/wsdl/soap12/";
+ private static final QName SOAP12_ADDRESS = new QName(SOAP12_NS, "address");
+ private static final QName SOAP12_BINDING = new QName(SOAP12_NS, "binding");
+ private static final QName SOAP12_BODY = new QName(SOAP12_NS, "body");
+ private static final QName SOAP12_OPERATION = new QName(SOAP12_NS, "operation");
+
+ private static final String BINDING_SUFFIX = "Binding";
+ private static final String SERVICE_SUFFIX = "Service";
+ private static final String PORT_SUFFIX = "Port";
+
+ private boolean requiresSOAP12;
+ private QName soapAddress;
+ private QName soapBinding;
+ private QName soapBody;
+ private QName soapOperation;
+
+ public WSDLDefinitionGenerator(boolean requiresSOAP12) {
+ super();
+ this.requiresSOAP12 = requiresSOAP12;
+ soapAddress = requiresSOAP12 ? SOAP12_ADDRESS : SOAP_ADDRESS;
+ soapBinding = requiresSOAP12 ? SOAP12_BINDING : SOAP_BINDING;
+ soapBody = requiresSOAP12 ? SOAP12_BODY : SOAP_BODY;
+ soapOperation = requiresSOAP12 ? SOAP12_OPERATION : SOAP_OPERATION;
+ }
public Definition cloneDefinition(WSDLFactory factory, Definition definition) throws WSDLException {
Element root = definition.getDocumentationElement();
@@ -73,22 +99,52 @@
return types;
}
- public Binding createBinding(Definition definition, PortType portType) throws WSDLException {
- Binding binding = definition.createBinding();
- binding.setPortType(portType);
- configureBinding(binding, portType);
- SOAPBinding soapBinding =
- (SOAPBinding)definition.getExtensionRegistry().createExtension(Binding.class, SOAP_BINDING);
- soapBinding.setStyle("document");
- soapBinding.setTransportURI("http://schemas.xmlsoap.org/soap/http");
- binding.addExtensibilityElement(soapBinding);
- return binding;
+ public Binding createBinding(Definition definition, PortType portType) {
+ try {
+ Binding binding = definition.createBinding();
+ binding.setPortType(portType);
+ configureBinding(definition, binding, portType);
+ ExtensibilityElement bindingExtension =
+ definition.getExtensionRegistry().createExtension(Binding.class, soapBinding);
+ if (requiresSOAP12) {
+ ((SOAP12Binding)bindingExtension).setStyle("document");
+ ((SOAP12Binding)bindingExtension).setTransportURI("http://schemas.xmlsoap.org/soap/http");
+ } else {
+ ((SOAPBinding)bindingExtension).setStyle("document");
+ ((SOAPBinding)bindingExtension).setTransportURI("http://schemas.xmlsoap.org/soap/http");
+ }
+ binding.addExtensibilityElement(bindingExtension);
+ return binding;
+ } catch (WSDLException e) {
+ throw new IllegalArgumentException(e);
+ }
}
- protected void configureBinding(Binding binding, PortType portType) throws WSDLException {
+ protected void configureBinding(Definition definition, Binding binding, PortType portType) throws WSDLException {
QName portTypeName = portType.getQName();
if (portTypeName != null) {
- binding.setQName(new QName(portTypeName.getNamespaceURI(), portTypeName.getLocalPart() + BINDING_SUFFIX));
+ // Choose <porttype>Binding if available. If this name is in use, insert
+ // separating underscores until there is no clash.
+ for (String suffix = BINDING_SUFFIX; ; suffix = "_" + suffix) {
+ QName name = new QName(portTypeName.getNamespaceURI(), portTypeName.getLocalPart() + suffix);
+ if (definition.getBinding(name) == null) {
+ binding.setQName(name);
+ break;
+ }
+ }
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ public void createBindingOperations(Definition definition, Binding binding, PortType portType) {
+ try {
+ for (Iterator oi = portType.getOperations().iterator(); oi.hasNext();) {
+ Operation operation = (Operation)oi.next();
+ BindingOperation bindingOperation = createBindingOperation(definition, operation, "");
+ binding.addBindingOperation(bindingOperation);
+ }
+ } catch (WSDLException e) {
+ throw new IllegalArgumentException(e);
}
}
@@ -98,26 +154,38 @@
BindingOperation bindingOperation = definition.createBindingOperation();
bindingOperation.setOperation(operation);
configureBindingOperation(bindingOperation, operation);
- SOAPOperation soapOperation =
- (SOAPOperation)definition.getExtensionRegistry().createExtension(BindingOperation.class, SOAP_OPERATION);
- soapOperation.setSoapActionURI(action);
- bindingOperation.addExtensibilityElement(soapOperation);
+ ExtensibilityElement operationExtension =
+ definition.getExtensionRegistry().createExtension(BindingOperation.class, soapOperation);
+ if (requiresSOAP12) {
+ ((SOAP12Operation)operationExtension).setSoapActionURI(action);
+ } else {
+ ((SOAPOperation)operationExtension).setSoapActionURI(action);
+ }
+ bindingOperation.addExtensibilityElement(operationExtension);
if (operation.getInput() != null) {
BindingInput bindingInput = definition.createBindingInput();
configureBindingInput(bindingInput, operation.getInput());
- SOAPBody soapBody =
- (SOAPBody)definition.getExtensionRegistry().createExtension(BindingInput.class, SOAP_BODY);
- soapBody.setUse("literal");
- bindingInput.addExtensibilityElement(soapBody);
+ ExtensibilityElement inputExtension =
+ definition.getExtensionRegistry().createExtension(BindingInput.class, soapBody);
+ if (requiresSOAP12) {
+ ((SOAP12Body)inputExtension).setUse("literal");
+ } else {
+ ((SOAPBody)inputExtension).setUse("literal");
+ }
+ bindingInput.addExtensibilityElement(inputExtension);
bindingOperation.setBindingInput(bindingInput);
}
if (operation.getOutput() != null) {
BindingOutput bindingOutput = definition.createBindingOutput();
configureBindingOutput(bindingOutput, operation.getOutput());
- SOAPBody soapBody =
- (SOAPBody)definition.getExtensionRegistry().createExtension(BindingOutput.class, SOAP_BODY);
- soapBody.setUse("literal");
- bindingOutput.addExtensibilityElement(soapBody);
+ ExtensibilityElement outputExtension =
+ definition.getExtensionRegistry().createExtension(BindingOutput.class, soapBody);
+ if (requiresSOAP12) {
+ ((SOAP12Body)outputExtension).setUse("literal");
+ } else {
+ ((SOAPBody)outputExtension).setUse("literal");
+ }
+ bindingOutput.addExtensibilityElement(outputExtension);
bindingOperation.setBindingOutput(bindingOutput);
}
for (Iterator fi = operation.getFaults().values().iterator(); fi.hasNext();) {
@@ -149,9 +217,8 @@
public Service createService(Definition definition, PortType portType) {
try {
Service service = definition.createService();
- configureService(service, portType);
- Binding binding = createBinding(definition, portType);
- createPort(definition, binding, service);
+ configureService(definition, service, portType);
+ // createPort(definition, binding, service);
definition.addService(service);
return service;
} catch (WSDLException e) {
@@ -162,8 +229,8 @@
public Service createService(Definition definition, Binding binding) {
try {
Service service = definition.createService();
- configureService(service, binding.getPortType());
- createPort(definition, binding, service);
+ configureService(definition, service, binding.getPortType());
+ // createPort(definition, binding, service);
definition.addService(service);
return service;
} catch (WSDLException e) {
@@ -171,28 +238,44 @@
}
}
- protected void configureService(Service service, PortType portType) throws WSDLException {
+ protected void configureService(Definition definition, Service service, PortType portType) throws WSDLException {
QName portTypeName = portType.getQName();
if (portTypeName != null) {
- service.setQName(new QName(portTypeName.getNamespaceURI(), portTypeName.getLocalPart() + SERVICE_SUFFIX));
+ // Choose <porttype>Service if available. If this name is in use, insert
+ // separating underscores until there is no clash.
+ for (String suffix = SERVICE_SUFFIX; ; suffix = "_" + suffix) {
+ QName name = new QName(portTypeName.getNamespaceURI(), portTypeName.getLocalPart() + suffix);
+ if (definition.getService(name) == null) {
+ service.setQName(name);
+ break;
+ }
+ }
}
}
- protected Port createPort(Definition definition, Binding binding, Service service) throws WSDLException {
- Port port = definition.createPort();
- port.setBinding(binding);
- configurePort(definition, port, binding);
- /*
- ExtensibilityElement soapAddress =
- definition.getExtensionRegistry().createExtension(Port.class, SOAP_ADDRESS);
- ((SOAPAddress)soapAddress).setLocationURI("");
- port.addExtensibilityElement(soapAddress);
- */
- service.addPort(port);
- return port;
+ public Port createPort(Definition definition, Binding binding, Service service, String uri) {
+ try {
+ Port port = definition.createPort();
+ port.setBinding(binding);
+ configurePort(port, binding);
+ if (uri != null) {
+ ExtensibilityElement portExtension =
+ definition.getExtensionRegistry().createExtension(Port.class, soapAddress);
+ if (requiresSOAP12) {
+ ((SOAP12Address)portExtension).setLocationURI(uri);
+ } else {
+ ((SOAPAddress)portExtension).setLocationURI(uri);
+ }
+ port.addExtensibilityElement(portExtension);
+ }
+ service.addPort(port);
+ return port;
+ } catch (WSDLException e) {
+ throw new IllegalArgumentException(e);
+ }
}
- protected void configurePort(Definition definition, Port port, Binding binding) throws WSDLException {
+ protected void configurePort(Port port, Binding binding) throws WSDLException {
if (binding.getPortType() != null && binding.getPortType().getQName() != null) {
port.setName(binding.getPortType().getQName().getLocalPart() + PORT_SUFFIX);
}
Modified: incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/java2wsdl/Java2WSDLHelper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/java2wsdl/Java2WSDLHelper.java?rev=652445&r1=652444&r2=652445&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/java2wsdl/Java2WSDLHelper.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/java2wsdl/Java2WSDLHelper.java Thu May 1 00:42:00 2008
@@ -86,6 +86,10 @@
* Utility methods to create WSDL objects from Java interfaces
*/
public class Java2WSDLHelper {
+ // the following 3 switches are temporary for debugging
+ public static boolean newGenerator; // external code sets this to force new generator
+ public static boolean oldGenerator; // external code sets this to force old generator
+ public static boolean printWSDL; // external code sets this to print generated WSDL
private static void register(Map<String, String> map, DataType type) {
if (type == null) {
@@ -104,6 +108,44 @@
}
}
+ //FIXME: temp code to control whether the old or new path is used.
+ // Will be removed when the new path can handle all cases.
+ private static boolean useNewGenerator(JavaInterface iface) {
+ /* restore the following code when the new generator supports exception mapping
+ // check databindings to see if new generator can be used
+ boolean newGenerator = true;
+ for (Operation op : iface.getOperations()) {
+ DataType<List<DataType>> inputType = op.getInputType();
+ for (DataType t : inputType.getLogical()) {
+ newGenerator &= checkDataBinding(t);
+ }
+ DataType outputType = op.getOutputType();
+ newGenerator &= checkDataBinding(outputType);
+ }
+ return newGenerator;
+ */
+ return iface.getQName() != null; // use new generator for @WebService
+ }
+
+ /*
+ //FIXME: temp code to control whether the old or new path is used.
+ // Will be removed when the new path can handle all databindings.
+ private static boolean checkDataBinding(DataType dt) {
+ boolean result = (dt == null ||
+ "java:simpleType".equals(dt.getDataBinding()) ||
+ "java:complexType".equals(dt.getDataBinding()) ||
+ "java:array".equals(dt.getDataBinding()) ||
+ "java.io.Externalizable".equals(dt.getDataBinding()) ||
+ "org.osoa.sca.CallableReference".equals(dt.getDataBinding()) ||
+ "org.apache.axiom.om.OMElement".equals(dt.getDataBinding()) ||
+ "javax.xml.bind.JAXBElement".equals(dt.getDataBinding()));
+ if (!result) {
+ System.out.println("$$ unsupported databinding " + dt.getDataBinding());
+ }
+ return result;
+ }
+ */
+
/**
* Create a WSDLInterfaceContract from a JavaInterfaceContract
*/
@@ -124,11 +166,25 @@
final WSDLDefinition wsdlDefinition = wsdlFactory.createWSDLDefinition();
JavaInterface iface = (JavaInterface)contract.getInterface();
-
- //FIXME: When Interface2WSDLGenerator is fully working, change this code
- // to use it in all cases instead of calling createDefinition()
+
+ //FIXME: When Interface2WSDLGenerator supports all databindings, change this
+ // code to use it in all cases instead of calling createDefinition()
Definition def = null;
- if (iface.getQName() == null) { // plain Java interface
+ if (newGenerator || (!oldGenerator && useNewGenerator(iface))) {
+ /*
+ System.out.println("$$ new gen: " + iface.getName());
+ */
+ try {
+ Interface2WSDLGenerator wsdlGenerator = new Interface2WSDLGenerator(requiresSOAP12);
+ def = wsdlGenerator.generate(iface, wsdlDefinition);
+ } catch (WSDLException e) {
+ throw new RuntimeException(e);
+ }
+
+ } else {
+ /*
+ System.out.println("$$ old gen: " + iface.getName());
+ */
// Create a package2ns map
Map<String, String> pkg2nsMap = new HashMap<String, String>();
for (Operation op : iface.getOperations()) {
@@ -140,27 +196,18 @@
register(pkg2nsMap, outputType);
}
def = createDefinition(pkg2nsMap, iface.getJavaClass(), requiresSOAP12);
+ }
- } else { // interface with JAX-WS annotations
+ // for debugging
+ if (printWSDL) {
try {
- Interface2WSDLGenerator wsdlGenerator = new Interface2WSDLGenerator();
- //FIXME: add support for SOAP 1.2
- def = wsdlGenerator.generate(iface, wsdlDefinition);
+ WSDLWriter writer = javax.wsdl.factory.WSDLFactory.newInstance().newWSDLWriter();
+ writer.writeWSDL(def, System.out);
} catch (WSDLException e) {
throw new RuntimeException(e);
}
}
- /*
- // for debugging
- try {
- WSDLWriter writer = javax.wsdl.factory.WSDLFactory.newInstance().newWSDLWriter();
- writer.writeWSDL(def, System.out);
- } catch (WSDLException e) {
- throw new RuntimeException(e);
- }
- */
-
wsdlDefinition.setDefinition(def);
wsdlInterface.setWsdlDefinition(wsdlDefinition);
wsdlInterface.setRemotable(true);
@@ -358,7 +405,7 @@
WSDLLocatorImpl locator = new WSDLLocatorImpl(new ByteArrayInputStream(os.toByteArray()));
Definition definition = reader.readWSDL(locator);
- processSOAPVersion(definition, requiresSOAP12);
+ // processSOAPVersion(definition, requiresSOAP12);
processNoArgAndVoidReturnMethods(definition, javaInterface);
return definition;
Modified: incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/Java2WSDLGeneratorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/Java2WSDLGeneratorTestCase.java?rev=652445&r1=652444&r2=652445&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/Java2WSDLGeneratorTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/Java2WSDLGeneratorTestCase.java Thu May 1 00:42:00 2008
@@ -47,7 +47,7 @@
DefaultDataBindingExtensionPoint dataBindings = new DefaultDataBindingExtensionPoint();
new DataBindingJavaInterfaceProcessor(dataBindings).visitInterface(iface);
WSDLDefinition wsdlDefinition = new DefaultWSDLFactory().createWSDLDefinition();
- Interface2WSDLGenerator generator = new Interface2WSDLGenerator();
+ Interface2WSDLGenerator generator = new Interface2WSDLGenerator(false);
Definition definition = generator.generate(iface, wsdlDefinition);
// print the generated WSDL file and inline schemas