| Summary: | Runtime doesn't support empty messages for requests and responses | ||||||
|---|---|---|---|---|---|---|---|
| Product: | z_Archived | Reporter: | Andrei Shakirin <andrei.shakirin> | ||||
| Component: | Swordfish | Assignee: | Swordfish Core Inbox <swordfish.core-inbox> | ||||
| Status: | NEW --- | QA Contact: | |||||
| Severity: | normal | ||||||
| Priority: | P3 | ||||||
| Version: | unspecified | ||||||
| Target Milestone: | --- | ||||||
| Hardware: | PC | ||||||
| OS: | Windows XP | ||||||
| Whiteboard: | |||||||
| Attachments: |
|
||||||
Created attachment 170179 [details] WSDL to reproduce the problem Test case: WSDL defines operation with request messages containing no parts: <wsdl:message name="reserveFlightRequest"/> It is allowed by WS-I basic profile. Problem: calling operation causes following exception on runtime: 27.05.2010 15:34:30 org.eclipse.swordfish.plugins.cxf.support.NMROutputStream sendOutputMessage SCHWERWIEGEND: String index out of range: -1 java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at java.lang.String.substring(Unknown Source) at org.eclipse.swordfish.plugins.cxf.support.NMROutputStream.unwrapEnvelope(NMROutputStream.java:215) at org.eclipse.swordfish.plugins.cxf.support.NMROutputStream.getMessageContent(NMROutputStream.java:187) at org.eclipse.swordfish.plugins.cxf.support.NMROutputStream.createNMRMessageExchange(NMROutputStream.java:166) at org.eclipse.swordfish.plugins.cxf.support.NMROutputStream.sendOutputMessage(NMROutputStream.java:89) at org.eclipse.swordfish.plugins.cxf.support.NMROutputStream.doClose(NMROutputStream.java:77) at org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:167) at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66) at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:220) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:466) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:299) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:251) at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124) at $Proxy122.reserveFlight(Unknown Source) at org.eclipse.swordfish.samples.flightreservation.sample.FlightReservationClientInvoker.performRequest(FlightReservationClientInvoker.java:62) at org.eclipse.swordfish.samples.flightreservation.sample.FlightReservationClientInvoker.access$0(FlightReservationClientInvoker.java:59) at org.eclipse.swordfish.samples.flightreservation.sample.FlightReservationClientInvoker$1.run(FlightReservationClientInvoker.java:50) at java.util.TimerThread.mainLoop(Unknown Source) at java.util.TimerThread.run(Unknown Source) 27.05.2010 15:34:30 org.apache.cxf.phase.PhaseInterceptorChain doIntercept INFO: Interceptor has thrown exception, unwinding now org.apache.cxf.interceptor.Fault: Could not send Message. at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:64) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:220) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:466) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:299) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:251) at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124) at $Proxy122.reserveFlight(Unknown Source) at org.eclipse.swordfish.samples.flightreservation.sample.FlightReservationClientInvoker.performRequest(FlightReservationClientInvoker.java:62) at org.eclipse.swordfish.samples.flightreservation.sample.FlightReservationClientInvoker.access$0(FlightReservationClientInvoker.java:59) at org.eclipse.swordfish.samples.flightreservation.sample.FlightReservationClientInvoker$1.run(FlightReservationClientInvoker.java:50) at java.util.TimerThread.mainLoop(Unknown Source) at java.util.TimerThread.run(Unknown Source) Caused by: java.io.IOException: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at org.eclipse.swordfish.plugins.cxf.support.NMROutputStream.sendOutputMessage(NMROutputStream.java:124) at org.eclipse.swordfish.plugins.cxf.support.NMROutputStream.doClose(NMROutputStream.java:77) at org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:167) at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66) at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) ... 12 more Exception in thread "Timer-3" java.lang.RuntimeException: javax.xml.ws.WebServiceException: org.apache.cxf.interceptor.Fault: Could not send Message. at org.eclipse.swordfish.samples.flightreservation.sample.FlightReservationClientInvoker$1.run(FlightReservationClientInvoker.java:52) at java.util.TimerThread.mainLoop(Unknown Source) at java.util.TimerThread.run(Unknown Source) Caused by: javax.xml.ws.WebServiceException: org.apache.cxf.interceptor.Fault: Could not send Message. at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:142) at $Proxy122.reserveFlight(Unknown Source) at org.eclipse.swordfish.samples.flightreservation.sample.FlightReservationClientInvoker.performRequest(FlightReservationClientInvoker.java:62) at org.eclipse.swordfish.samples.flightreservation.sample.FlightReservationClientInvoker.access$0(FlightReservationClientInvoker.java:59) at org.eclipse.swordfish.samples.flightreservation.sample.FlightReservationClientInvoker$1.run(FlightReservationClientInvoker.java:50) ... 2 more Caused by: org.apache.cxf.interceptor.Fault: Could not send Message. at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:64) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:220) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:466) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:299) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:251) at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124) ... 6 more Caused by: java.io.IOException: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at org.eclipse.swordfish.plugins.cxf.support.NMROutputStream.sendOutputMessage(NMROutputStream.java:124) at org.eclipse.swordfish.plugins.cxf.support.NMROutputStream.doClose(NMROutputStream.java:77) at org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:167) at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66) at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) ... 12 more WSDL to reproduce the problem is attached