Hi All,

I have just met the NullPointerException when dealing with the soap
request input.

The itnerface is like this

@WebService(name="createSecurityOrder", targetNamespace="http://";)
@XmlSeeAlso({ObjectFactory.class})
public interface CreateSecurityOrder {

    @WebResult(name = "Acknowledgment", targetNamespace = "http://";)
    @RequestWrapper(localName = "createSecurityOrder", targetNamespace
= "http://";, className = "com.ei.CreateSecurityOrder_Type")
    @WebMethod
    @ResponseWrapper(localName = "acknowledgment", targetNamespace = "http://";)
    public Acknowledgment createSecurityOrder(
            @WebParam(name = "miscellaneous", targetNamespace = "http://";)
            PartnerInformation miscellaneous,
            @WebParam(name = "paymentInformation", targetNamespace = "http://";)
            PaymentInformation paymentInformation,
            @WebParam(name = "customerInformation", targetNamespace = "http://";)
            CustomerInformation customerInformation,
            @WebParam(name = "securityBom", targetNamespace = "http://";)
            SecurityBOM securityBom,
            @WebParam(mode = WebParam.Mode.INOUT, name =
"ENVELOPE_HEADER", targetNamespace = "http://";, header = true)
            javax.xml.ws.Holder<EnvelopeHeader> envelopeHeader
    ) throws SecurityOrderException;
}


Order_Type class is like this

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "CreateSecurityOrder", propOrder = {
    "miscellaneous",
    "paymentInformation",
    "customerInformation",
    "securityBom"
})
public class CreateSecurityOrder_Type {

    @XmlElement(required = true)
    protected PartnerInformation miscellaneous;
    @XmlElement(required = true)
    protected PaymentInformation paymentInformation;
    @XmlElement(required = true)
    protected CustomerInformation customerInformation;
    @XmlElement(required = true, nillable=false)
    protected SecurityBOM securityBom;

The cxf configuration is like this
    <cxf:cxfEndpoint id="createSecurityOrder"
                     address="/createSecurityOrder"
                     serviceClass="com.ei.CreateSecurityOrder">
    </cxf:cxfEndpoint>

Route configuration is like this
        from("cxf:bean:createSecurityOrder")
                .routeId("preProcessOrder")
                .wireTap("direct:tap")
                .processRef("validateOrder"));

validateOrderBean is like this
public class ValidateOrder implements Processor {

    @Override
    public void process(Exchange exchange) throws Exception {
        Message in = exchange.getIn();

        List<Object> parameters = in.getBody(List.class);

        // populate parameters
        PartnerInformation partnerInformation = (PartnerInformation)
parameters.get(0);
        PaymentInformation paymentInformation = (PaymentInformation)
parameters.get(1);
        CustomerInformation customerInformation =
(CustomerInformation) parameters.get(2);
        SecurityBOM securityBom = (SecurityBOM) parameters.get(3);
        Holder<EnvelopeHeader> envelopeHeader =
(Holder<EnvelopeHeader>) parameters.get(4);


For some reason, I could not get any value from envelopeHeader when
sending the valid Soap request, I wonder if anyone have any idea on
it.

Also the unit testing did get passed.

Thanks for your time.

Best regards,
Ray

Reply via email to