Hello Andreas, "nested 'FirstChild' structures" means the original code 'securityHeader' via debugger looks like:
securityHeader localName = "Security" firstChild localName="Username Token" firstChild localName="Username" firstChild value="..." nextSibling localName="Password" firstChild value="###" Robert ________________________________ From: Andreas Veithen <andreas.veit...@gmail.com> Sent: Monday, September 11, 2017 4:25:31 PM To: users@ws.apache.org Subject: Re: [AXIOM] Migrating Java code from AXIOM 1.2.13 to 1.2.20 On Mon, Sep 11, 2017 at 10:09 PM, Robert Seletsky <rsele...@unm.edu> wrote: > Thank you Andreas! > > Now have: > > private OMElement createSecurityHeader(String username, String password) { > SOAPFactory factory = OMAbstractFactory.getSOAP11Factory(); > OMNamespace namespaceWSSE = factory.createOMNamespace(WSSE_NS, > WSSE_PREFIX); > > // create the Security header block > OMElement securityHeader = factory.createOMElement("Security", > namespaceWSSE); > OMAttribute attribute = factory.createOMAttribute("mustUnderstand", > null, "1"); > securityHeader.addAttribute(attribute); > > // nest the UsernameToken in the Security header > OMElement usernameTokenElement = > factory.createOMElement(USERNAME_TOKEN_LN, namespaceWSSE); > securityHeader.addChild(usernameTokenElement); > > // nest the Username and Password elements > OMElement usernameElement = factory.createOMElement(USERNAME_LN, > namespaceWSSE); > usernameElement.setText(username); > securityHeader.addChild(usernameElement); > > OMElement passwordElement = factory.createOMElement(PASSWORD_LN, > namespaceWSSE); > passwordElement.setText(password); > OMAttribute attributep = factory.createOMAttribute(PASSWORD_TYPE_ATTR, > null, PASSWORD_TEXT); > securityHeader.addAttribute(attributep); > securityHeader.addChild(passwordElement); > > return securityHeader; > } > } > > But, stepping through original code (Axiom 1.2.13) and the above code (Axiom > 1.2.20), I can see that the original has nested 'FirstChild' structures and > the above code does not. Sorry, but I don't understand what "nested 'FirstChild' structures" means. > > I have looked at http://ws.apache.org/axiom/ , but having difficulty. > > > Robert > ________________________________ > From: Andreas Veithen <andreas.veit...@gmail.com> > Sent: Friday, September 8, 2017 4:48:49 PM > > To: users@ws.apache.org > Subject: Re: [AXIOM] Migrating Java code from AXIOM 1.2.13 to 1.2.20 > > On Thu, Sep 7, 2017 at 9:59 PM, Robert Seletsky <rsele...@unm.edu> wrote: >> Thank You Andreas! >> >> So far I have: >> >> private OMElement createSecurityHeader(String username, String password) { >> >> //OMNamespaceImpl wsseNS = new OMNamespaceImpl(WSSE_NS, WSSE_PREFIX); >> SOAPFactory factory = OMAbstractFactory.getSOAP11Factory(); >> OMNamespace namespaceWSSE = factory.createOMNamespace(WSSE_NS, >> WSSE_PREFIX); >> SOAPEnvelope envelope = factory.getDefaultEnvelope(); >> //OMFactory factory = new SOAP11Factory(); >> >> >> // create the Security header block >> //securityHeader = new OMElementImpl("Security", wsseNS, factory); >> OMElement element = factory.createOMElement("Security", namespaceWSSE); >> OMAttribute attribute = factory.createOMAttribute("mustUnderstand", >> null, "1"); >> element.addAttribute(attribute); >> >> Unsure how to store this in 'envelope' > > I don't understand. The original code has no reference to an envelope at > all. > >> Also what weblinks or books do you recommend? > > http://ws.apache.org/axiom/ > >> >> >> Robert >> >> ________________________________ >> From: Andreas Veithen <andreas.veit...@gmail.com> >> Sent: Thursday, September 7, 2017 11:52:55 AM >> To: users@ws.apache.org >> Subject: Re: [AXIOM] Migrating Java code from AXIOM 1.2.13 to 1.2.20 >> >> Use OMAbstractFactory.getSOAP11Factory() to get the SOAPFactory instance, >> then rewrite your code to use the factory methods until there are no more >> references to internal implementation classes. The resulting code will >> then >> work with both Axiom versions. >> >> Andreas >> >> >> On Sep 7, 2017 4:46 PM, "Robert Seletsky" <rsele...@unm.edu> wrote: >> >> I have the following Java method using AXIOM 1.2.13: >> >> private OMElement createSecurityHeader(String username, String password) { >> OMNamespaceImpl wsseNS = new OMNamespaceImpl(WSSE_NS, WSSE_PREFIX); >> OMFactory factory = new SOAP11Factory(); >> OMElementImpl securityHeader; >> OMElementImpl usernameTokenElement; >> OMElementImpl usernameElement; >> OMElementImpl passwordElement; >> >> // create the Security header block >> securityHeader = new OMElementImpl("Security", wsseNS, factory); >> securityHeader.addAttribute("mustUnderstand", "1", null); >> >> // nest the UsernameToken in the Security header >> usernameTokenElement = new OMElementImpl(USERNAME_TOKEN_LN, wsseNS, >> securityHeader, factory); >> >> // nest the Username and Password elements >> usernameElement = new OMElementImpl(USERNAME_LN, wsseNS, >> usernameTokenElement, factory); >> usernameElement.setText(username); >> >> passwordElement = new OMElementImpl(PASSWORD_LN, >> wsseNS,usernameTokenElement, factory); >> passwordElement.setText(password); >> passwordElement.addAttribute(PASSWORD_TYPE_ATTR, PASSWORD_TEXT, >> null); >> >> return securityHeader; >> } >> } >> >> I want to migrate this code to work with AXIOM 1.2.20. >> >> Looking for a solution and what resources are recommended to do this in >> general? >> >> >> Robert >> University of New Mexico IT >> >> >>