[
https://issues.apache.org/jira/browse/TUSCANY-2558?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ramkumar Ramalingam updated TUSCANY-2558:
-----------------------------------------
Patch Info: [Patch Available]
> Generated WSDL fails to resolve when packaged in contribution
> --------------------------------------------------------------
>
> Key: TUSCANY-2558
> URL: https://issues.apache.org/jira/browse/TUSCANY-2558
> Project: Tuscany
> Issue Type: Bug
> Affects Versions: Java-SCA-1.3
> Reporter: Lou Amodeo
> Assignee: Ramkumar Ramalingam
> Fix For: Java-SCA-Next
>
> Attachments: calculator.CalculatorService.wsdl, calculator.zip,
> TUSCANY-2558.patch
>
>
> I attempted to package a WSDL in a contribution that was previously generated
> using the WSDL deployment process of binding.ws and received a
> ContributionException with the following cause:
> org.apache.tuscany.sca.interfacedef.wsdl.impl.InvalidWSDLException: The fault
> message MUST have a single part .
> In this case I was attempting to use interface.wsdl with empty binding.ws
> with the following SCDL:
> <?xml version="1.0" encoding="UTF-8"?>
> <composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
> targetNamespace="http://www.ibm.com/samples/sca/calculator"
> name="CalculatorLocatorComposite">
> <component name="CalculatorLocatorComponent">
> <implementation.java class="calculator.CalculatorLocatorImpl"/>
> <reference name="calculator" target="CalculatorComponent">
> <interface.wsdl
> interface="http://calculator/#wsdl.interface(CalculatorService)"/>
> <binding.ws/>
> </reference>
> </component>
> </composite>
> The failure occurs during wsdlFactory.createWSDLInterface in
> WSDLInterfaceProcessor
> private WSDLInterface resolveWSDLInterface(WSDLInterface wsdlInterface,
> ModelResolver resolver) throws ContributionResolveException {
> if (wsdlInterface != null && wsdlInterface.isUnresolved()) {
> // Resolve the WSDL interface
> wsdlInterface = resolver.resolveModel(WSDLInterface.class,
> wsdlInterface);
> if (wsdlInterface.isUnresolved()) {
> // If the WSDL interface has never been resolved yet, do it
> now
> // First, resolve the WSDL definition for the given namespace
> WSDLDefinition wsdlDefinition =
> wsdlFactory.createWSDLDefinition();
> wsdlDefinition.setUnresolved(true);
>
> wsdlDefinition.setNamespace(wsdlInterface.getName().getNamespaceURI());
> WSDLDefinition resolved =
> resolver.resolveModel(WSDLDefinition.class, wsdlDefinition);
> if (!resolved.isUnresolved()) {
> wsdlDefinition.setDefinition(resolved.getDefinition());
> wsdlDefinition.setLocation(resolved.getLocation());
> wsdlDefinition.setURI(resolved.getURI());
>
> wsdlDefinition.getImportedDefinitions().addAll(resolved.getImportedDefinitions());
>
> wsdlDefinition.getXmlSchemas().addAll(resolved.getXmlSchemas());
> wsdlDefinition.setUnresolved(false);
> WSDLObject<PortType> portType =
> wsdlDefinition.getWSDLObject(PortType.class, wsdlInterface.getName());
> if (portType != null) {
> // Introspect the WSDL portType and add the resulting
> // WSDLInterface to the resolver
> try {
>
> wsdlDefinition.setDefinition(portType.getDefinition());
> wsdlInterface =
> wsdlFactory.createWSDLInterface(portType.getElement(), wsdlDefinition,
> resolver);
> wsdlInterface.setWsdlDefinition(wsdlDefinition);
> resolver.addModel(wsdlInterface);
> } catch (InvalidInterfaceException e) {
> ContributionResolveException ce = new
> ContributionResolveException(e);
> error("ContributionResolveException",
> wsdlFactory, ce);
> //throw ce;
> }
> }
>
> I am attaching the generated WSDL.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.