Hi Andriy,
Thank you for your prompt reply :-)
I am not convinced just yet. To confirm we both see this the same way now:
- If resList is null, then there is no response defined in the schema?
(which matches my app's "echo void" test)
My echo void test looks like this; I believe this was generated by some CXF
tooling:
package testwebservicens;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java class for echoVoidResponse complex type.
*
* <p>The following schema fragment specifies the expected content
contained within this class.
*
* <pre>
* <complexType name="echoVoidResponse">
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* </sequence>
* </restriction>
* </complexContent>
* </complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "*echoVoidResponse*")
public class EchoVoidResponse {
}
This is referred by another class generated by CXF like this:
@RequestWrapper(localName = "echoVoid", targetNamespace =
"TestWebServiceNS", className = "testwebservicens.EchoVoid")
@WebMethod(action = "lde:echoVoid")
@ResponseWrapper(localName = "*echoVoidResponse*", targetNamespace =
"TestWebServiceNS", className = "testwebservicens.EchoVoidResponse")
public void echoVoid();
- Then if "!boi.getOutput().getMessageParts().isEmpty()" evaluates to false
then there is actual data on the wire? Would there be no "data" for "void"?
Thank you,
Gary
On Thu, Mar 21, 2019 at 8:17 PM Andriy Redko <[email protected]> wrote:
> Hey Gary,
>
> I think the interpretation is different. The if
> (!boi.getOutput().getMessageParts().isEmpty()) states the
> expecations that response should not be empty. The resList variable (which
> comes from resList = CastUtils.cast(inMsg.getContent(List.class)) a few
> statements above) is the response indicator, if it is null (no response)
> but boi.getOutput().getMessageParts().isEmpty() is "false", it means
> response is expected but was not received.
> I think the code is correct. Thank you.
>
> Best Regards,
> Andriy Redko
>
>
>
> GG> In master, at
> GG> org.apache.cxf.endpoint.ClientImpl.processResult(ClientImpl.java:663),
> we
> GG> throw a IllegalEmptyResponseException where I see:
>
> GG> if (!boi.getOutput().getMessageParts().isEmpty()) {
> GG> //we were supposed to get some output, but didn't.
> GG> throw new IllegalEmptyResponseException("Response
> message
> GG> did not contain proper response data."
> GG> + " Expected: " +
> GG> boi.getOutput().getMessageParts().get(0).getConcreteName());
> GG> }
>
> GG> The test does not seem right:
>
> GG> !boi.getOutput().getMessageParts().isEmpty()
>
> GG> Should the "!" really be there if we want an error is there is no
> response?
>
> GG> Gary
>
>