These are implementation details that may change in new releases. Andreas
On Tue, Sep 12, 2017 at 4:24 PM, Robert Seletsky <rsele...@unm.edu> wrote: > 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 >>> >>> >>>