The WSDL generated by binding.ws for a method with an array as input generates errors when invoking this method. ----------------------------------------------------------------------------------------------------------------
Key: TUSCANY-3901 URL: https://issues.apache.org/jira/browse/TUSCANY-3901 Project: Tuscany Issue Type: Bug Affects Versions: Java-SCA-2.0-Beta2 Reporter: Antonio De Berardis @Remotable public interface CrmService { public void test(String[] arr); } generate the following WSDL: <wsdl:definitions name="CrmServiceService" targetNamespace="http://interfaces/"> <wsdl:types> <xs:schema targetNamespace="http://jaxb.dev.java.net/array" version="1.0"> <xs:complexType final="#all" name="stringArray"> <xs:sequence> <xs:element maxOccurs="unbounded" minOccurs="0" name="item" nillable="true" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:schema> <xs:schema attributeFormDefault="qualified" elementFormDefault="unqualified" targetNamespace="http://interfaces/"> <xs:element name="test"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" minOccurs="0" name="arg0" nillable="true" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="testResponse"> <xs:complexType/> </xs:element> </xs:schema> </wsdl:types> <wsdl:message name="test"> <wsdl:part name="test" element="test"> </wsdl:part> </wsdl:message> <wsdl:message name="testResponse"> <wsdl:part name="testResponse" element="testResponse"> </wsdl:part> </wsdl:message> <wsdl:portType name="CrmService"> <wsdl:operation name="test"> <wsdl:input message="test"> </wsdl:input> <wsdl:output message="testResponse"> </wsdl:output> </wsdl:operation> </wsdl:portType> <wsdl:binding name="CrmServiceBinding" type="CrmService"> <SOAP:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="test"> <SOAP:operation/> <wsdl:input> <SOAP:body use="literal"/> </wsdl:input> <wsdl:output> <SOAP:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="CrmService"> <wsdl:port name="CrmServiceSOAP11Port" binding="CrmServiceBinding"> <SOAP:address location="http://localhost:8087/CrmComponent/CrmService"/> </wsdl:port> </wsdl:service> </wsdl:definitions> Calling the method form a simple java client causes: GRAVE: java.lang.IllegalArgumentException: Argument is not an array org.apache.tuscany.sca.databinding.TransformationException: java.lang.IllegalArgumentException: Argument is not an array at org.apache.tuscany.sca.core.databinding.transformers.Array2ArrayTransformer.transform(Array2ArrayTransformer.java:100) at org.apache.tuscany.sca.databinding.DefaultTransformerExtensionPoint$LazyPullTransformer.transform(DefaultTransformerExtensionPoint.java:209) at org.apache.tuscany.sca.databinding.impl.MediatorImpl.mediate(MediatorImpl.java:116) at org.apache.tuscany.sca.core.databinding.transformers.Input2InputTransformer.transform(Input2InputTransformer.java:232) at org.apache.tuscany.sca.core.databinding.transformers.Input2InputTransformer.transform(Input2InputTransformer.java:46) at org.apache.tuscany.sca.databinding.DefaultTransformerExtensionPoint$LazyPullTransformer.transform(DefaultTransformerExtensionPoint.java:209) at org.apache.tuscany.sca.databinding.impl.MediatorImpl.mediate(MediatorImpl.java:116) at org.apache.tuscany.sca.databinding.impl.MediatorImpl.mediateInput(MediatorImpl.java:444) at org.apache.tuscany.sca.core.databinding.wire.DataTransformationInterceptor.processRequest(DataTransformationInterceptor.java:69) at org.apache.tuscany.sca.core.invocation.InterceptorAsyncImpl.invoke(InterceptorAsyncImpl.java:57) at org.apache.tuscany.sca.core.invocation.RuntimeInvoker.invoke(RuntimeInvoker.java:125) at org.apache.tuscany.sca.core.invocation.RuntimeInvoker.invoke(RuntimeInvoker.java:108) at org.apache.tuscany.sca.core.assembly.impl.RuntimeEndpointImpl.invoke(RuntimeEndpointImpl.java:298) at org.apache.tuscany.sca.binding.ws.jaxws.JAXWSBindingProvider.invoke(JAXWSBindingProvider.java:207) at org.apache.tuscany.sca.binding.ws.jaxws.JAXWSBindingProvider.invoke(JAXWSBindingProvider.java:61) at com.sun.xml.internal.ws.api.server.InstanceResolver$1.invokeProvider(InstanceResolver.java:245) at com.sun.xml.internal.ws.server.InvokerTube$2.invokeProvider(InvokerTube.java:145) at com.sun.xml.internal.ws.server.provider.SyncProviderInvokerTube.processRequest(SyncProviderInvokerTube.java:67) at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Fiber.java:587) at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Fiber.java:546) at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Fiber.java:531) at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Fiber.java:428) at com.sun.xml.internal.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:232) at com.sun.xml.internal.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:460) at com.sun.xml.internal.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:233) at com.sun.xml.internal.ws.transport.http.server.WSHttpHandler.handleExchange(WSHttpHandler.java:95) at com.sun.xml.internal.ws.transport.http.server.WSHttpHandler.handle(WSHttpHandler.java:80) at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:83) at sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:83) at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:86) at sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:589) at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:83) at sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:561) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:679) Caused by: java.lang.IllegalArgumentException: Argument is not an array at java.lang.reflect.Array.getLength(Native Method) at org.apache.tuscany.sca.core.databinding.transformers.Array2ArrayTransformer.transform(Array2ArrayTransformer.java:89) ... 35 more -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira