Hello CXF Users,
If a SEI has annotations of the form:
@GET
@Path(" thepath ")
@WebResult(name = "methodResponseData"")
@XmlElementWrapper(name = "ListOfMethodResponseData")
public MethodResponseData" method() throws MyAppException;
how can we treat the the situation where method returns null?
With my current cxf-2.5, jdk1.7.0_01 setup the use of null simply
outputs an empty string.
For REST:
If the return of method() is null the xml outputs nothing (zero bytes).
For SOAP:
If the return of method() is null the xml is simply the soap envelope
and wrapper.
The wrapper of course appears because I am using the
@SOAPBinding(parameterStyle=ParameterStyle.WRAPPED,use=Use.LITERAL)
annotation.
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<MyApp:methodResponse xmlns:MyApp="http://mynamespace/"/>
</soap:Body>
</soap:Envelope>
When using the wsdl2java client code this works as expected and the
return value of the method as created by CXF is null.
One solution to treat the null return value would be instead to throw
some application exception of the kind ResponseNotFoundException.
Another is to return an empty xml tag such as
<methodResponseData />
This is more desirable than the exception in the case of our application.
Question:
1) Is it possible to get
REST output of the form:
<methodResponseData />
and
SOAP output of the form:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<MyApp:methodResponse xmlns:MyApp="http://mynamespace/">
<methodResponseData/>
</MyApp:methodResponse>
</soap:Body>
</soap:Envelope>
and still have the CXF client return a null method response
2) Is the idea to use an empty xml tag to represent null a bad one
such as <methodResponseData/>? Is there a better way to handle this
problem?
Thank you,
Miguel Feitosa