Hi,

I finally managed to make it work with OMElement (solution 1).

I could not find out what I did wrong with using AXIOMXPath .

Regards,


H.

On Wed, Jul 28, 2010 at 5:47 AM, Deepal Jayasinghe <[email protected]>wrote:

> In your case document element become the SOAP envelop, so you need to
> get the soap header child element and from that you can get the
> elements you want.
>
> Deepal
>
> On Tue, Jul 27, 2010 at 9:53 AM, hideki tihiri <[email protected]>
> wrote:
> > Hi Deepal,
> > Thx for the feedback.
> > I rewrite the code below as I was referring always to root, which I think
> is
> > wrong, so I reprint the code:
> > (I also attached the java class if this is more convenient to try for
> > yourself).
> > The XML STRING:
> > public final static String XML_STRING2 = "" +
> >         "<?xml version=\"1.0\" encoding='UTF-8'?> "+
> > "<soapenv:Envelope
> > xmlns:soapenv=\"http://www.w3.org/2003/05/soap-envelope\";> "+
> > "  <soapenv:Header  xmlns:wsa=\"http://www.w3.org/2005/08/addressing\";>
> "+
> > "    <wsse:Security
> > xmlns:wsse=\"
> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\
> "
> > soapenv:mustUnderstand=\"true\"> "+
> > "      <wsse:UsernameToken
> > xmlns:wsu=\"
> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\
> "
> > wsu:Id=\"UsernameToken-20656006\"> "+
> > "        <wsse:Username>test</wsse:Username> "+
> > "        <wsse:Password
> > Type=\"
> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText\
> ">TEST</wsse:Password>
> > "+
> > "      </wsse:UsernameToken> "+
> > "    </wsse:Security> "+
> > "
> >  <wsa:To>
> http://localhost:8080/server/services/Remove.RemoveHttpSoap12Endpoint/
> </wsa:To>
> > "+
> > "
>  <wsa:MessageID>urn:uuid:463523964E8A11FEB11280155268837</wsa:MessageID>
> > "+
> > "    <wsa:Action>urn:request</wsa:Action> "+
> > "  </soapenv:Header> "+
> > "  <soapenv:Body> "+
> > "    <ns1:request xmlns:ns1=\"http://services.betrust.be\";> "+
> > "
> >
>  
> <ns1:documentUUID>urn:uuid:100009-DFF4E3F5-95F5-7FA7-E73A-FE1F5D3C88F2</ns1:documentUUID>
> > "+
> > "    </ns1:request> "+
> > "  </soapenv:Body> "+
> > "</soapenv:Envelope> ";
> >
> > 1) Via  get the header element first, and then UsernameToken element
> > and finally username element.
> > Node that in the code below I now 'drill-down' from om1 to om2 to om3 and
> so
> > on (I suppose this is the way it should work) ?
> >   OMElement om1 = root.getFirstChildWithName(new
> > QName("http://www.w3.org/2003/05/soap-envelope";, "Envelope"));
> >   OMElement om2 = om1.getFirstChildWithName(new
> > QName("http://www.w3.org/2003/05/soap-envelope";, "Header"));
> >   OMElement om3 = om2.getFirstChildWithName(new
> > QName("
> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd
> ",
> > "Security"));
> >   OMElement om4 = om3.getFirstChildWithName(new
> > QName("
> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd
> ",
> > "UserNameToken"));
> >   OMElement om5 = om4.getFirstChildWithName(new
> > QName("
> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd
> ",
> > "UserName"));
> >   System.out.println("wsse-username:" + om5.getText());
> > ==> Problem is that om1 is null !
> > 2) XPath:
> >       AXIOMXPath xpath = new
> > AXIOMXPath("/Envelope/Header/wsse:Security/wsse:Username");
> >       OMElement node = (OMElement) xpath.selectSingleNode(null);
> >       System.out.println("wsse-username:" + node.getText());
> > ==> The node is null ?
> >
> > Regards,
> > H.
> >
> >
> > On Tue, Jul 27, 2010 at 2:55 PM, Deepal Jayasinghe <[email protected]>
> > wrote:
> >>
> >> On Tue, Jul 27, 2010 at 6:06 AM, hideki tihiri <[email protected]
> >
> >> wrote:
> >> > Hi Deepal,
> >> >
> >> > thx for the reply.
> >> > I tried in 2 different ways but I don't succeed in reading the
> username:
> >> > 1) Via  get the header element first, and then UsernameToken element
> and
> >> > finally username element.
> >> > ByteArrayInputStream xmlStream = new
> >> > ByteArrayInputStream(XML_STRING2.getBytes());
> >> > //Create a builder
> >> > StAXBuilder builder = new StAXOMBuilder(xmlStream);
> >> > // Get root element
> >> > OMElement root = builder.getDocumentElement();
> >> > OMElement headerElem = root.getFirstChildWithName(new
> >> > QName("http://www.w3.org/2003/05/soap-envelope";,
> "soapenv:Envelope"));
> >>
> >> This has to be
> >>  OMElement headerElem = root.getFirstChildWithName(new
> >> QName("http://www.w3.org/2003/05/soap-envelope";, "Envelope"));
> >>
> >> >  headerElem = root.getFirstChildWithName(new
> >> > QName("http://www.w3.org/2003/05/soap-envelope";, "Header"));
> >> >  headerElem = root.getFirstChildWithName(new
> >> >
> >> > QName("
> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd
> ",
> >> > "Security"));
> >> >  headerElem = root.getFirstChildWithName(new
> >> >
> >> > QName("
> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd
> ",
> >> > "UserNameToken"));
> >> >  headerElem = root.getFirstChildWithName(new
> >> >
> >> > QName("
> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd
> ",
> >> > "UserName"));
> >> >  System.out.println("wsse-username:" + headerElem.getText());
> >> > ==> Returns Exception in thread "main" java.lang.NullPointerException
> >> > 2) XPath
> >> > AXIOMXPath xpath = new
> >> >
> >> >
> AXIOMXPath("/soapenv:Envelope/soapenv:Header/wsse:Security/wsse:Username");
> >> This has to be
> >> > AXIOMXPath("/Envelope/Header/wsse:Security/wsse:Username");
> >>
> >>
> >> > xpath.addNamespace("soapenv",
> >> > "http://www.w3.org/2003/05/soap-envelope";);
> >> > xpath.addNamespace("wsse",
> >> >
> >> > "
> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd
> ");
> >> > OMElement node = (OMElement) xpath.selectSingleNode(root);
> >> > System.out.println("wsse-username:" + node.getText());
> >> > ==> Returns Exception in thread "main" java.lang.NullPointerException
> >> > Can you please help ?
> >> > H.
> >> >
> >> > On Mon, Jul 26, 2010 at 11:07 PM, Deepal Jayasinghe <
> [email protected]>
> >> > wrote:
> >> >>
> >> >> Here, you can use two mechanisms, first you can use Xpath based
> >> >> navigation to get the element you need, or else you can get the
> header
> >> >> element first, and then UsernameToken element and finally username
> >> >> element.
> >> >>
> >> >> Deepal
> >> >>
> >> >> On Mon, Jul 26, 2010 at 3:05 PM, hideki tihiri
> >> >> <[email protected]>
> >> >> wrote:
> >> >> > Hi,
> >> >> > I am unable to solve following problem, although it should be
> fairly
> >> >> > simple:
> >> >> > I have folloing SOAP header:
> >> >> > <soapenv:Header
> >> >> > xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope";
> >> >> > xmlns:wsa="http://www.w3.org/2005/08/addressing";>
> >> >> >   <wsse:Security
> >> >> >
> >> >> >
> >> >> > xmlns:wsse="
> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd
> "
> >> >> > soapenv:mustUnderstand="true">
> >> >> >     <wsse:UsernameToken
> >> >> >
> >> >> >
> >> >> > xmlns:wsu="
> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd
> "
> >> >> > wsu:Id="UsernameToken-12592762">
> >> >> >     <wsse:Username>testr</wsse:Username>
> >> >> >     <wsse:Password
> >> >> >
> >> >> >
> >> >> > Type="
> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText
> ">TEST</wsse:Password>
> >> >> >    </wsse:UsernameToken>
> >> >> >   </wsse:Security>
> >> >> >
> >> >> >
> >> >> >   <wsa:To>
> http://localhost:8080/server/services/Remove.RemoveHttpSoap12Endpoint/
> </wsa:To>
> >> >> >
> >> >> >
> >> >> >
>   <wsa:MessageID>urn:uuid:40A03A83C5E5358B181280163771513</wsa:MessageID>
> >> >> >   <wsa:Action>urn:request</wsa:Action>
> >> >> > </soapenv:Header>
> >> >> > I need to check the username .
> >> >> > I have following code:
> >> >> > MessageContext mc = MessageContext.getCurrentMessageContext();
> >> >> > SOAPHeader header = mct.getEnvelope().getHeader();
> >> >> >  OMElement headerElem = header.getFirstChildWithName(new
> >> >> >
> >> >> >
> >> >> > QName("
> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd
> ",
> >> >> > "Username"));
> >> >> >   LOGGER.info("wsse-username:" + headerElem.toString());
> >> >> >
> >> >> > The problem is that a 'null' is logged.
> >> >> > Where do I go wrong ?
> >> >> > Regards,
> >> >> > H.
> >> >>
> >> >>
> >> >>
> >> >> --
> >> >> http://blogs.deepal.org
> >> >>
> >> >> ---------------------------------------------------------------------
> >> >> To unsubscribe, e-mail: [email protected]
> >> >> For additional commands, e-mail: [email protected]
> >> >>
> >> >
> >> >
> >>
> >>
> >>
> >> --
> >> http://blogs.deepal.org
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: [email protected]
> >> For additional commands, e-mail: [email protected]
> >>
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [email protected]
> > For additional commands, e-mail: [email protected]
> >
>
>
>
> --
> http://blogs.deepal.org
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

Reply via email to