I'm ok with having an "interface" for parent, but not another class.

-- Chinthaka

> -----Original Message-----
> From: jayachandra [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, June 01, 2005 7:32 PM
> To: axis-dev@ws.apache.org
> Subject: Re: [Axis2] Need for children API for OMDocument
> 
> While duplicating the child API into OMDocument I got stuck at something.
> The addChild() method of in turn tries to setParent(), and the
> datamember parent is rigidly typed to be an OMElement only.
>      /**
>      * Field parent
>      */
>     protected OMElementImpl parent;
> 
> Now that OMDocument can also be a parent other than just OMElement, my
> suggestion would be to have a wrapper interface OMParent that contains
> in it the child API methods ( 6 of them). Its good to have child
> navigation API within OMParent than anywhere else (currently it's in
> OMElement). Subsequently OMElementImpl class and OMDocument class if
> they implement this OMParent all the existing code will remain to be
> intact with the additional desired functionality that OMDocument can
> hold multiple entities in it.
> 
> Thanks
> Jaya
> 
> My idea boils down to something like
> 
> //child navigation API methods will be shifted from OMElement to
> OMParent interface
> public interface OMParent {
>   public void addChild(OMNode omNode);
>   public Iterator getChildrenWithName(QName elementQName) throws
> OMException;
>   public OMElement getFirstChildWithName(QName elementQName) throws
> OMException;
>   public Iterator getChildren();
>   public void setFirstChild(OMNode node);
>   public OMNode getFirstChild();
> }
> 
> //OMElementImpl should implement OMParent
> public class OMElementImpl extends OMNodeImpl implements OMParent,...{...}
> 
> //OMDocument should implement OMParent
> public class OMDocument implements OMParent {...}
> 
> //The parent datamember in OMNodeImpl will be typed as OMParent type
> public class OMNodeImpl implements OMNode {
> ...
> protected OMParent parent;  // << parent should no longer be OMElementImpl
> type
> ...
> ...
> }
> 
> Thank you
> Jayachandra
> 
> On 6/1/05, jayachandra <[EMAIL PROTECTED]> wrote:
> > Yeah! that's a wise way rather than extending OMElement. Apart being
> > more clear on the readability front it also reduces unnecessary
> > placeholders from creeping into OMDocument.
> >
> > Jaya
> >
> > On 6/1/05, Aleksander Slominski <[EMAIL PROTECTED]> wrote:
> > > jayachandra wrote:
> > >
> > > >Can someone respond on this, plz.
> > > >
> > > >
> > > why not model it exactly as it is in XML Infoset - so have children
> API
> > > but do not extend OMElement just duplicate it (AFAICT Document is not
> > > Element ...)
> > > http://www.w3.org/TR/xml-infoset/#infoitem.document
> > >
> > > alek
> > >
> > > >Thanks
> > > >Jaya
> > > >
> > > >On 5/31/05, jayachandra <[EMAIL PROTECTED]> wrote:
> > > >
> > > >
> > > >>Hi devs,
> > > >>
> > > >>I have two suggestions regarding OMDocument
> > > >>
> > > >>First - a trivial one:
> > > >>---------------------------
> > > >>It lacks an interface definition in the package org.apache.axis.om
> and
> > > >>a direct implementation class with name OMDocument.java is coded in
> > > >>the o.a.a.om.impl.llom package. In line with how rest of the code is
> > > >>arranged, I suggest we have in o.a.a.om package an interface with
> name
> > > >>OMDocument.java listing out the setter and getter methods for
> > > >>rootElement. And in the OMFactory interface we will add an extra
> > > >>signature something like createOMDocument so as to enable other than
> > > >>llom factory to be able to provide OMDocument implementation. Let
> the
> > > >>implementation class in impl.llom package be named as
> > > >>OMDocumentImpl.java
> > > >>
> > > >>Second - this is a critical design issue:
> > > >>--------------------------------------------------------
> > > >>Looking at the current OMDocument support I've realized that it
> > > >>doesn't have a child navigation API. We might be doing away without
> it
> > > >>as far as soap processing is considered. But without the child
> > > >>navigation API in it, XMLInfoset can never be fully supported
> because
> > > >>in an XML document other than the unique root element, at the same
> > > >>level we can have several other nodes like documentation comments,
> > > >>processing instructions, DTD element etc.
> > > >>Enabling child API in OMDocument, implementation wise is not any
> > > >>difficult. It can be just making it extend OMElement. Something like
> > > >>public interface OMDocument extends OMElement ;
> > > >>
> > > >>Semantically if the above looks confusing and weird (OMDocument
> being
> > > >>an OMElement !!??!!), alternatively we can copy paste the already
> > > >>coded child API functionality of OMElementImpl into OMDocumentImpl
> > > >>letting OMDocument to stand on its own without extending any other
> > > >>interface. Also, performance wise these changes are not going to add
> > > >>any significant overhead.
> > > >>
> > > >>Anticipating thoughts, ideas, suggestions
> > > >>
> > > >>Regards
> > > >>Jaya
> > > >>
> > > >>
> > > >>
> > > >
> > > >
> > > >
> > > >
> > >
> > >
> > > --
> > > The best way to predict the future is to invent it - Alan Kay
> > >
> > >
> >
> >
> > --
> > -- Jaya
> >
> 
> 
> --
> -- Jaya



Reply via email to