axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dasarath Weeratunge <dasarathweeratu...@yahoo.com>
Subject Re: [Axis2] Proposal - DOM Implementation for Axis2
Date Mon, 16 May 2005 14:24:44 GMT

--- Ruchith Fernando <ruchith.fernando@gmail.com>
wrote:
> Hi All,
> 
> In implementing WS-Security capabilities on Axis 2.0
> we will have to
> convert the OM to DOM and provide the complete
> SOAPEnvelope as a DOM
> implementation.
> The following changes and additions are proposed to
> the OM
> implementation to support this.
> 
> 1.) The org.w3c.dom.* interfaces will be implemented
> extending the OM
> Impls. (org.apache.axis.dom.*)
> Also there will be an implementation of
> org.apache.axis.soap.*
> interfaces extending from the DOMImpls.
> (org.apache.axis.dom.soap.*)
> In this situation we will have to change some of the
> method names in
> the OM interfaces. E.g.: getNextSibling,
> getPreviousSibling in OMNode

Please reconsider this decision. I thought we had
decided to write a shim-DOM impl on *top* of OM. If we
keep on changing things here an there we are again
going soon find our selves in a mess- worst still we
just concluded a review of that part of the OM API.

eek! no thanks please.

--dasarath

> 
> 2.) A DOMSOAPFactory implementing the SOAPFactory
> will be introduced
> to provide the DOM_SOAP impls. to the
> StAXSOAPModelBuilder
> 
> 3.) How to switch the builder when the security
> related handlers takes over:
> 
> Since the security handlers depend on the DOM
> interfaces, they  cannot
> work with pure OM instances. They expect DOM impls.
> So now there's a
> need to switch from normal OM factory to DOM
> factory. Therefore
> following method is proposed to to handle this.
> 
> There will be some processing of the SOAPEnvelope
> before it reaches
> the security handlers.
> And there will be a reference to this partially
> built SOAPEnvelope in
> the MessageContext object. This SOAPEnvelope
> consists only of pure OM
> based elements (org.apache.axis.soap.*). Now we get
> the pull parser
> from the SOAPEvelope we have through the
> OMStAXWrapper (This is used
> to get the pull events from OMElements,
> irrespectiveof their build
> state)
> 
> PullParser pp =
> messageContext.getSOAPEnvelope().getPullParser()
> //Returns a pp pointing to the start of the document
> 
> Then we create a new StAXSOAPModelBuilder passing
> the DOMSOAPFactory
> together with the pull parser returned from the
> SOAPEnvelope.
> 
> StAXSOAPModelBuilder builder = new
> StAXSOAPModelBuilder(pp, new DOMFactory())
> 
> At this point the SOAPEnvelope reference in the
> message context is
> pointing to the older pure OM based SOAPEnvelope.
> This will have to reassigned to the new OM+DOM based
> SOAPEnvelope, as 
> shown below:
> 
>
messageContext.setEnvelope(builder.getDocumentElement());
> // This will
> set the reference to the new DOMSOAPEnvelopeImpl
> 
> Therefore to achieve this we need to have remember
> the following point
> as a best practise : DON'T POINT TO THE SOAP
> ENVELOPE OF A MESSAGE,
> JUST POINT TO THE MESSAGE_CONTEXT ONLY.
> 
> I think this is one of the best use cases which
> shows the beauty of
> the Factory and Builder concept used in Axis2 - OM
> design :)
> 
> Thanks,
> Ruchith
> 


		
Discover Yahoo! 
Use Yahoo! to plan a weekend, have fun online and more. Check it out! 
http://discover.yahoo.com/

Mime
View raw message