[ https://issues.apache.org/jira/browse/TUSCANY-3901?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Scott Kurz updated TUSCANY-3901: -------------------------------- Assignee: Scott Kurz Summary: Problem unwrapping repeated elements (for maxOccurs>1) payloads using DOM databinding (from JAX-WS binding.ws impl) (was: The WSDL generated by binding.ws for a method with an array as input generates errors when invoking this method.) > Problem unwrapping repeated elements (for maxOccurs>1) payloads using DOM > databinding (from JAX-WS binding.ws impl) > ------------------------------------------------------------------------------------------------------------------- > > 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 > Assignee: Scott Kurz > Labels: array, wsdl > > @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