Hai All,

I have a wsdl with a single service and many operations.

The typical payload for an operation will look like this
<soapEnv:Envelope>

<soapEnv:Header>
<sessonId>123123123141341</sessionId>
<source>32312312312312</source>

<security>
<usernameToken>
<userName>afjlksdajflas</userName>
<password>fsdakljfaskljf</password>
</usernameToken>
</security>

<soapEnv:Header>

<soapEnv:Body>
</soapEnv:Body>

</soapEnv:Envelope>

wsdl fragments corrosponding to that are given here

<wsdl:types>
        <xsd:schema
            targetNamespace="xxxx"
            elementFormDefault="qualified">
            <xsd:include schemaLocation="wsdl_types.xsd" />
            <xsd:element name="sessionid" type="xsd:string" />
            <xsd:element name="source" type="xsd:string" />
        </xsd:schema>
</wsdl:types>


<!--  Message definitions  -->
    <wsdl:message name="session">
        <wsdl:part name="sessionTokenHeader" element="types:sessionid" />
    </wsdl:message>

    <wsdl:message name="security">
        <wsdl:part name="usernameTokenHeader" element="wsse:Security" />
    </wsdl:message>

    <wsdl:message name="source">
        <wsdl:part name="sourceTokenHeader" element="types:source" />
    </wsdl:message>


<wsdl:operation name="myoperation">
            <wsdl:input>
                <wsdlsoap:header message="tns:session"
                    part="sessionTokenHeader" use="literal" />
                <wsdlsoap:header message="tns:security"
                    part="usernameTokenHeader" use="literal" />
                <wsdlsoap:header message="tns:source"
                    part="sourceTokenHeader" use="literal" />
                <wsdlsoap:body use="literal" />
            </wsdl:input>
            <wsdl:output>
                <wsdlsoap:body use="literal" />
            </wsdl:output>
            <wsdl:fault name="fault">
                <wsdlsoap:fault name="fault" use="literal" />
            </wsdl:fault>
        </wsdl:operation>

The stub got generated has the following code to add the headers
// add the children only if the parameter is not null
                                        if (sessionId563!=null){


org.apache.axiom.om.OMElement omElementsessionId563 = toOM(sessionId563,
optimizeContent(new javax.xml.namespace.QName("xxxx", "myoperation")));

org.apache.axiom.soap.SOAPHeaderBlock soapHeaderBlocksessionId563 =
env.getHeader().addHeaderBlock(omElementsessionId563.getLocalName(),
omElementsessionId563.getNamespace());

soapHeaderBlocksessionId563.addChild(omElementsessionId563.getFirstElement
());

                                        }

                                        // add the children only if the
parameter is not null
                                        if (security564!=null){


org.apache.axiom.om.OMElement omElementsecurity564 = toOM(security564,
optimizeContent(new javax.xml.namespace.QName("xxxx", "myoperation")));

org.apache.axiom.soap.SOAPHeaderBlock soapHeaderBlocksecurity564 =
env.getHeader().addHeaderBlock(omElementsecurity564.getLocalName(),
omElementsecurity564.getNamespace());

soapHeaderBlocksecurity564.addChild(omElementsecurity564.getFirstElement());

                                        }

                                        // add the children only if the
parameter is not null
                                        if (source565!=null){


org.apache.axiom.om.OMElement omElementSource565 = toOM(Source565,
optimizeContent(new javax.xml.namespace.QName("xxxxx", "myoperation")));

org.apache.axiom.soap.SOAPHeaderBlock soapHeaderBlocksource565 =
env.getHeader().addHeaderBlock(omElementSource565.getLocalName(),
omElementSource565.getNamespace());

soapHeaderBlockSource565.addChild(omElementSource565.getFirstElement());

                                        }

If u look at the bold stuff results in a null pointer, here i will explain
how
omElementsource565 = <source>31234234213<source>
soapHeaderBlocksource565 =<soap/>
omElementSource565.getFirstElement() = null;
soapHeaderBlockSource565.addChild(omElementSource565.getFirstElement());
throws a null pointer....

Is there something i am doing wrong is this a problem with the code
generation?
I am using axis2-1.3RC2, namespaces are omitted in the examle
Thanks in advance
-- 
Rgds
Mehar

Reply via email to