建坛林 wrote:
> Hello, Werner.Thanks for your reply and good suggestion.
> 
> the problem you refer to does exists. At the begining, i myself want to 
> implements a adapter to bridge the gap between these two Parsers. So i 
> offers a much more obvious one. Obviously, it 's not a good one.
Well, it's not that it is a bad idea per se. I am just looking at things
from a different perspective. Well, quite some perspectives .. ;-).

a) If we go for an approach where you build the StAX* classes from
scratch (without relying on existing cod base, that is), you'll b
creating lots of code that already exists in the current e.g.
UnmarshalHandler class(es). Now, I don't really like the idea of code
duplication, but trying to refactor this would clearly make this work
far bigger in size (and thus not really acceptable for the GSoC program).

b) As already mentioned, there's one thing that should not really
change, i.e. the classes the user interacts with. At least not in an
ideal world. I know that we now and then have to change the public
interfaces, but this should be as limited as possible.

Having said that, one way to improve things for Castor XML in the future
is to introduce interfaces, which currently do not exist on the XML side
of things.

Looking forward to your follow-up.

Werner
> I'll 
> try to read more material to verify your suggestion.
> (i will describe it in uml in my next letter)
> 
> and there is another idea we can try as the picture in the accessory show:
> as stax is attractive in filtering our preferable partical(event). we 
> can first refine the xml by stax  then use the existed SAXhandler to 
> finish the rest
> un~/marshalling work. but is it  a adapter. it seems a bit not.
> 
> 2008/4/3, Werner Guttmann <[EMAIL PROTECTED] 
> <mailto:[EMAIL PROTECTED]>>:
> 
>     Hi Jiantan,
> 
>     looking at your ideas, I wonder whether this approach is a good one
>     (though it is a valid one). Let me try to express  my thoughts
>     (slightly unstructured):
> 
>     - Is is really a good idea to expose the technologies we are using
>     internally to parse an XML document to the user. In other words,
>     should the user know and explicitely have to use classes that carry
>     names that are linked to a technology such as SAX or STaX ? Is there
>     a way to make this more transparent ?
> 
>     - Would it be possible to layer the approaches ? Personally, I see
>     the main benefits of a STaX parser in the context of XML data
>     binding that it would be absolutely easy to restrict the scope of
>     processing during e.g. unmarshalling. In other words, within a
>     biggish XML document navigate to a (smaller) subset and only use
>     this subset as the input for unmarshalling. Such a layering could be
>     achieved by creating an adapter that sits between the StAX parser
>     and the UnmarshalHandler (which implements SAX ContentHandler), and
>     translates STaX events into SAX events. This way, we would avoid
>     having to completely write a new STaXUnmarshalHandler (and all the
>     logic currently sitting in UnmarshalHandler).
> 
>     Werner
> 
> 
>     建坛林 wrote:
> 
>         1.introduction  marshalling is the processing of convert a
>         Object into xml(or other structured) file, while unmarshalling
>         is the reverse processing of marshalling. This techonology is
>         very useful in data binding and data transfering.
>         Marshaller/Unmarshaller is the very object that responsible for
>         doing these work. For marshaller/unmarshaller to do the
>         marshalling work, it need the help of a xml parser. There are
>         two kinds of xml parser nowaday:one is based on dom model, the
>         other is based on stream model.As to the latter one, we got sax
>         and stax. sax is a push parser, while stax is a pull parser. I
>         think castor's purpose of switching between the sax and stax is
>         to make castor more adaptive to different situations.
> 
>         2.solution
> 
>          i think the work should be done to the class Marshaller and
>         UnMarshaller in Castor source.
>         Make Marshaller.java,UnMarshller
>         .java upper class instead of final class
>            class Marshaller {
>               private int parserType;
>               Marshaller marshaller = new SAXMarshaller() ;
>               ...
>               public static void marshal(Object obj,Writer writer);
>               public static void marshal(Object obj,int parserType);
>               public static void marshal(Object obj,Marshaller marshaller);
>               ...
>               public void setMarshaller(Marshaller marshaller);
>               public Marshaller getMarshaller();
>               ...
>           }
>             class UnMarshaller {
>               private int parserType;
>               UnMarshaller unMarshaller = new SAXUnMarshaller()
>               public Object unmarshal(InputSource in){
>                       unMarshaller.unmarshal(in);
>               }
>               public Object unmarshal(InputSource in, int parserType);
>               public Object unmarshal(InputSource in,UnMarshaller
>         unmarshaller);
>               ...
>               public void setUnMarshaller(UnMarshaller unMarshaller);
>               public UnMarshaller getUnMarshaller();
>               ...
>           }
>         this Un~/Marshaller keeps the common methods of SAXMarshaller
>         and StaxMarshaller,
>         default use a SAXMarshller in order to make the existed code
>         unchanged;we change the Marshaller by using the specific
>         constructor and setUn~/Marshaller method. In this case,
>         it's flexible to switch from sax to stax,vice versa. It seems
>         this pattern is much more like
>         the strategy pattern. we just abstract the algorithm of
>         un~/Marshal. and it's flexible to
>         switch between these algorithm.
> 
>          the former Marshaller.java can be a SAXMarshller.java and
>         SAXUnMarshaller.java.
>          class SAXMarshaller extends Marshaller {
>          ...
>          }
> 
>           class SAXUnMarshaller extends UnMarshaller {
>           ...
>          }
> 
>          we can add by the following new Implementation of Marshaller
>          class StaxMarshaller implements Marshaller {
>          ...
>          }
> 
>           class StaxUnMarshaller implements UnMarshaller {
>           ...
>          }
> 
> 
>         make MarshallingHandler ,UnMarshallingHandler upper class
>         instead of final class just like
>         we did to Marshaller,UnMarshller
> 
>         the specific work we have to do is in implemented a new
>         StaxMarshallerHandler and StaxUnMarshallerHandler
> 
>         to implement the Un~/Marshalling in stax way
> 
>          class SAXMarshallingHandler extends MarshallingHandler {
>             }
> 
>          class SAXUnMarshallingHandler extends UnMarshallingHandler {
>           }
> 
>          class StaxMarshallingHandler extends MarshallingHandler {
>             }
> 
>          class StaxUnMarshallingHandler extends UnMarshallingHandler {
>           }
>         And the specific implementation of  StaxMarshallingHandler is
>         associated with how to map
>         a object to xml(and the reverse process).The detail of this can
>         refer the implementation
>         of StaxMarshallingHandler(former  MarshallingHandler).
> 
>         3.self-introduction
>         http://docs.google.com/Doc?docid=dc42tcq9_88gtxts6fv&hl=en
>         <http://docs.google.com/Doc?docid=dc42tcq9_88gtxts6fv&hl=en>
>         <http://docs.google.com/Doc?docid=dc42tcq9_88gtxts6fv&hl=en
>         <http://docs.google.com/Doc?docid=dc42tcq9_88gtxts6fv&hl=en>>
> 
> 
>         Jiantan Lin
> 
> 
>         2008/4/3, Werner Guttmann <[EMAIL PROTECTED]
>         <mailto:[EMAIL PROTECTED]> <mailto:[EMAIL PROTECTED]
>         <mailto:[EMAIL PROTECTED]>>>:
> 
>            HI,
> 
>            I have recently asked all the students that have submitted an
>            application to be mentored by one of the existing Castor
>         committer
>            sto subscribe to this mailing list, so that we can ask questions
>            about their proposal and vice versa.
> 
>            Can I please ask all students to introduce themselves
>         briefly, and
>            once again describe their proposals. It's especially the benefits
>            for the project that I am personally interested in.
> 
>            Thanks
>            Werner
> 
>          
>          ---------------------------------------------------------------------
>            To unsubscribe from this list, please visit:
> 
>              http://xircles.codehaus.org/manage_email
> 
> 
> 
> 
> 
>     ---------------------------------------------------------------------
>     To unsubscribe from this list, please visit:
> 
>       http://xircles.codehaus.org/manage_email
> 
> 
> 
> 
> ------------------------------------------------------------------------
> 
> 
> ------------------------------------------------------------------------
> 
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
> 
>     http://xircles.codehaus.org/manage_email


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to