geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tim McConnell <tim.mcco...@gmail.com>
Subject Re: [Discuss] Model for deployment plans in GEP - Move from EMF to XMLBeans or JAXB?
Date Sat, 15 Mar 2008 03:46:09 GMT
Hi Yun Feng, concerning your item #2 below I believe everyone is in agreement
that this is a good idea. I've opened GERONIMODEVTOOLS-313 and made it a subtask
of our JAXB refactoring tasklist (for which a patch can be attached). Also, as
I've been trying to incorporate some of these new JAXB-generated classes into
our refactoring effort, it seems a little more confusing than it should be.
There are a couple recommendations from David Blevins from his OpenEJB expertise
that we should also consider/use for the GEP. Namely:

--- Not using the "Type" in the java class name
--- Using one package name per namespace


yunfeng ma wrote:
> Cool, great news ...  :)
> 
> I'm trying to replace EMF using JAXB and got some issues need your help.
> 1. Some elements in the deployment plan can not be unmarshalled, such as 
> gbeans in geronimo-web.xml. I'm not sure if it's because 
> geronimo-web-2.0.1.xsd only includes an abstract element "service" which 
> is the parent of "gbean".
> 
> 2. Now the schema files are compiled to generate the model classes 
> during every GEP building. I think the better way is generating the java 
> source codes offline and importing the source codes to svn directly, 
> this provides us a chance to customize the generated source codes (like 
> the way in OpenEJB).
> 
> 3. The deployment plan saved by JAXB after modification is unformatted, 
> only contents are in one line. We need save the deployment plan with 
> well format.
> 
> 4. More elegant way to operate the POJOs generate by JAXB. JAXB uses 
> POJO to represent the element in XML, so how to create a new instance of 
> an element (JAX
> B way is too fussy), how to set/get the properties of an element via 
> property name (JAXB doesn't provide any way for this), how to get the 
> parent instance of an element (JAXB doesn't provide any way for this) etc.
> 
> Any advice for the above issues?
> Thanks a lot.
> 
> -- YunFeng Ma
> 
> Shiva Kumar H R wrote:
> EMF plug-ins are now redundant and have been deleted 
> (GERONIMODEVTOOLS-294). This led to a lot of GEP dependencies going 
> redundant (GERONIMODEVTOOLS-295) and those have also been deleted. 
> (Please see the JIRA comments for detailed information)
> 
> GEP has become Surprisingly Thinner - Just 5.4MB!! (down from 12.6MB - 
> nearly 55% reduction in weight). She is becoming more & more attractive 
> each day ;)
> 
> -- 
> Thanks,
> Shiva
> 
> On Tue, Mar 11, 2008 at 11:48 PM, Shiva Kumar H R <shivahr@gmail.com 
> <mailto:shivahr@gmail.com>> wrote:
> 
>     The remaining two modules (v20.core & v20.ui) have also been
>     ported to an extent. Thanks again Yun Feng for the patch (you seem
>     to be super fast!).
> 
>     Entire GEP builds successfully now. However there is still a lot
>     more porting to be done.
> 
>     --     Thanks,
>     Shiva
> 
>     On Thu, Mar 6, 2008 at 3:31 PM, Shiva Kumar H R <shivahr@gmail.com
>     <mailto:shivahr@gmail.com>> wrote:
> 
>         I have committed Yun Feng's patch into GEP trunk. Thanks very
>         much Yun Feng.
> 
>         Build is successful, except for below two modules:
>         <module>org.apache.geronimo.st.v20.core</module>
>         <module>org.apache.geronimo.st.v20.ui</module>
> 
>         Once those two modules are also ported onto JAXB, complete
>         build would be successful.
> 
>         --         Thanks,
>         Shiva
> 
>         On Wed, Mar 5, 2008 at 10:44 PM, Shiva Kumar H R
>         <shivahr@gmail.com <mailto:shivahr@gmail.com>> wrote:
> 
>             Perfect. Thanks Tim. I will concentrate on the various ui
>             packages.
> 
>             Yun Feng,
>             Would you like to explore handling multiple schema versions?
> 
>             --             Thanks,
>             Shiva
> 
>             On Wed, Mar 5, 2008 at 10:18 PM, Tim McConnell
>             <tim.mcconne@gmail.com <mailto:tim.mcconne@gmail.com>> wrote:
> 
>                 Shiva, with your current experience with the
>                 deployment plan portal, is it safe
>                 to assume you will again concentrate on the visual
>                 aspects of the refactoring
>                 (deployment plan editors, etc..??) If that is the
>                 case, I will concentrate on
>                 the various version specific
>                 server tool cores (e.g., org.apache.geronimo.st.core,
>                 etc)....
> 
>                 Tim McConnell wrote:
>                 > Hi Shiva, thanks for the update. I will review Yun
>                 Feng's patches today
>                 > as well, and start on the refactoring effort as
>                 well.....
>                 >
>                 > Shiva Kumar H R wrote:
>                 >> I will be committing Yun Feng's patch today, to
>                 kick start GEP
>                 >> refactoring :)
>                 >>
>                 >> This patch adds two new directories under plugins:
>                 >> org.apache.geronimo.deployment.v11.jaxbmodel, and
>                 >> org.apache.geronimo.deployment.v21.jaxbmodel
>                 >> which contain JAXB generated classes for our G
>                 plans. The patch has
>                 >> also refactored some part of GEP code to use these
>                 JAXB model classes
>                 >> instead of EMF.
>                 >>
>                 >> We need to continue refactoring rest of GEP code
>                 and eventually get
>                 >> rid of following EMF modules:
>                 >> org.apache.geronimo.deployment.model
>                 >> org.apache.geronimo.deployment.model.edit
>                 >> org.apache.geronimo.v11.deployment.model
>                 >> org.apache.geronimo.v11.deployment.model.edit
>                 >>
>                 >> And further, once we figure out how to handle
>                 multiple schemas, we
>                 >> must be able to merge
>                 org.apache.geronimo.deployment.v11.jaxbmodel and
>                 >> org.apache.geronimo.deployment.v21.jaxbmodel into *one*
>                 >>
>                 >> Once we have such single model which can handle
>                 multiple schemas, I am
>                 >> hoping that we could merge these as well:
>                 >> org.apache.geronimo.st.ui,
>                 >> org.apache.geronimo.st.v1.ui,
>                 >> org.apache.geronimo.st.v11.ui,
>                 >> org.apache.geronimo.st.v20.ui, and
>                 >> org.apache.geronimo.st.v21.ui
>                 >>
>                 >> Just in case we mess up things ;) we have taken
>                 backup of existing GEP
>                 >> trunk under branches/2.1/ . We will be committing
>                 all new code under
>                 >> trunk.
>                 >>
>                 >> And trunk builds might fail for sometime until this
>                 refactoring is
>                 >> complete.
>                 >>
>                 >> --
>                 >> Thanks,
>                 >> Shiva
>                 >>
>                 >> On Tue, Mar 4, 2008 at 2:11 PM, Shiva Kumar H R
>                 <shivahr@gmail.com <mailto:shivahr@gmail.com>
>                 >> <mailto:shivahr@gmail.com
>                 <mailto:shivahr@gmail.com>>> wrote:
>                 >>
>                 >>     There have been further discussions on this in
>                 IRC and in JIRA. As
>                 >>     recommended in
>                 >>
>                 >>
>                 
> http://mail-archives.apache.org/mod_mbox/geronimo-dev/200802.mbox/%3c5da94e5a0802212321m4b282128q89add861e150c64f@mail.gmail.com%3e

> 
>                 >>
>                 >>     I am summarizing those discussions below:
>                 >>     (Tim, DJencks, DBlevins & Yun Feng - Please
>                 correct if am wrong)
>                 >>
>                 >>     1) JAXB/XMLBeans/DConfigBeans:
>                 >>     a) On a further discussion about XMLBeans and
>                 JAXB, we saw that
>                 >>     writing deployment code might turn out be much
>                 easier by using JAXB
>                 >>     rather than XMLBeans.
>                 >>
>                 >>     b) On a discussion about whether GEP should
>                 ideally be using JSR-88
>                 >>     DConfigBeans, we wondered if JSR-88
>                 DConfigBeans are a dead idea &
>                 >>     should be left alone, because No One other than
>                 Geronimo even thinks
>                 >>     about trying to implement them.
>                 >>
>                 >>     So we concluded that it is worth experimenting
>                 with JAXB.
>                 >>
>                 >>     2) Hints from OpenEJB about using JAXB:
>                 >>     a) On a discussion about how OpenEJB uses JAXB,
>                 it seems schemas are
>                 >>     compiled only once (instead of compiling during
>                 every build as is
>                 >>     currently done both in Geronimo and GEP) and
>                 checked in to the
>                 >>     source stream.
>                 >>     I too don't see any point in compiling G
>                 schemas during every build
>                 >>     of GEP, and the one time compilation & check in
>                 approach of OpenEJB
>                 >>     looks ideal to me for GEP also. This would lead
>                 to significant
>                 >>     savings in build time. Please point out if I am
>                 missing something.
>                 >>
>                 >>     b) It seems that the real beauty (& ease of
>                 use) of JAXB comes from
>                 >>     the ability to customize JAXB generated classes
>                 (like (i) adding
>                 >>     interfaces, (ii) removing all their wrappers
>                 for simple types like
>                 >>     string, int, boolean etc, (iii) using Maps
>                 instead of Lists for auto
>                 >>     indexing things that can be keyed, etc).
>                 OpenEJB uses those
>                 >>     customizations. To keep the Customized JAXB
>                 classes and Schema in
>                 >>     sync, OpenEJB has unit tests that read in xml
>                 documents, write them
>                 >>     out again, then compare the results. A similar
>                 approach could be
>                 >>     used in GEP also.
>                 >>
>                 >>     3) Handling multiple schema versions
>                 >>     I guess JAXB could help us better with multiple
>                 version of schemas.
>                 >>     (I mean a single set of JAXB classes being able
>                 to read/write say
>                 >>     geronimo-web.xml in v1.1, v2.0, v2.0.1 etc). We
>                 need to explore this
>                 >>     more.
>                 >>
>                 >>     Tim, Yun Feng and myself are looking at
>                 completing this refactoring
>                 >>     at the earliest so that we could then focus on
>                 other JIRAs/features
>                 >>     & release GEP 2.1. Yun Feng already has a patch
>                 that has ported good
>                 >>     amount of GEP onto JAXB and I am looking at
>                 committing it tomorrow.
>                 >>
>                 >>     If you forsee any concerns with the approaches
>                 above, kindly reply.
>                 >>
>                 >>     --     Thanks,
>                 >>     Shiva
>                 >>
>                 >>
>                 >>     On Tue, Feb 12, 2008 at 2:16 PM, Shiva Kumar H
>                 R <shivahr@gmail.com <mailto:shivahr@gmail.com>
>                 >>     <mailto:shivahr@gmail.com
>                 <mailto:shivahr@gmail.com>>> wrote:
>                 >>
>                 >>         Please see 11-Feb IRC chat btw djencks,
>                 shivahr & mcconne
>                 >>                        
> http://servlet.uwyn.com/drone/log/bevinbot/geronimo/20080211
>                 for
>                 >>         further discussions on this.
>                 >>
>                 >>         As recommended by DJencks we will
>                 experiment using JAXB in GEP
>                 >> 2.1.
>                 >>
>                 >>         --         Thanks,
>                 >>         Shiva
>                 >>
>                 >>
>                 >>         On Feb 11, 2008 9:22 PM, David Jencks
>                 <david_jencks@yahoo.com <mailto:david_jencks@yahoo.com>
>                 >>         <mailto:david_jencks@yahoo.com
>                 <mailto:david_jencks@yahoo.com>>> wrote:
>                 >>
>                 >>
>                 >>             On Feb 11, 2008, at 7:16 AM, Shiva
>                 Kumar H R wrote:
>                 >>
>                 >>>             I went through following tutorials of
>                 JAXB & XMLBeans:
>                 >>>               a) Java Architecture for XML Binding
>                 (JAXB)
>                 >>>
>                 >>>
>                 
> http://java.sun.com/developer/technicalArticles/WebServices/jaxb/
>                 >>>               b) Tutorial: First Steps with XMLBeans
>                 >>>
>                 >>>
>                 
> http://xmlbeans.apache.org/documentation/tutorial_getstarted.html
>                 >>>
>                 >>>             Also searched for comparisons btw
>                 them. Latest one I could
>                 >>>             find is the following blog from Jan'2005:
>                 >>>             http://technology.amis.nl/blog/?p=321
>                 >>>
>                 >>>             I am yet to see the value add JAXB
>                 brings over XMLBeans.
>                 >>>             Am I missing something?
>                 >>
>                 >>             My $0.02:
>                 >>
>                 >>             xmlbeans is a complete and accurate
>                 representation of the
>                 >>             xml infoset.  As a result, you can
>                 easily manipulate the
>                 >>             xml, but you get a slightly peculiar
>                 java object model that
>                 >>             exactly represents the schema and
>                 cannot be modified.
>                 >>
>                 >>             jaxb is focussed on the java pojos and
>                 lets you modify the
>                 >>             pojos considerably from the xml while
>                 still providing
>                 >>             accurate mapping.  This can be much
>                 more convenient for
>                 >>             directly constructing a pojo tree from
>                 xml suitable for
>                 >>             configuring server components.  It
>                 provides fewer validity
>                 >>             checks than xmlbeans.
>                 >>
>                 >>             Openejb is using jaxb and I think their
>                 deployment code is
>                 >>             pretty simple for the complexity they
>                 have to deal with.
>                 >>
>                 >>             thanks
>                 >>             david jencks
>                 >>
>                 >>>
>                 >>>
>                 >>>
>                 >>>             On Feb 11, 2008 4:44 PM, Shiva Kumar H R
>                 >>>             <shivahr@gmail.com
>                 <mailto:shivahr@gmail.com> <mailto:shivahr@gmail.com
>                 <mailto:shivahr@gmail.com>>> wrote:
>                 >>>
>                 >>>
>                 >>>
>                 >>>                     Despite my liking for xmlbeans
>                 and its unique
>                 >>>                     strengths I think a very
>                 strong argument can be
>                 >>>                     made for moving the deployer
>                 code to jaxb.
>                 >>>
>                 >>>                 Interesting!! Let me do some quick
>                 learning of jaxb
>                 >>>                 and start a separate thread on this.
>                 >>>
>                 >>>
>                 >>>                     thanks
>                 >>>                     david jencks
>                 >>>
>                 >>>                     On Feb 8, 2008, at 12:30 AM,
>                 Shiva Kumar H R wrote:
>                 >>>
>                 >>>>                     2) Geronimo Eclipse Plug-in
>                 (GEP):
>                 >>>>                         a) Model framework for
>                 Geronimo deployment
>                 >>>> plans:
>                 >>>>                     Currently it is EMF (Eclipse
>                 Modeling Framework).
>                 >>>>                     With every update to Geronimo
>                 deployment schema,
>                 >>>>                     it's a major pain to generate
>                 new EMF classes. If
>                 >>>>                     however, GEP uses the same
>                 model framework as
>                 >>>>                     that of Geronimo server
>                 (XMLBeans), then at least
>                 >>>>                     this problem would be solved.
>                 IIUC JSR-88
>                 >>>>                     DConfigBeans would be the
>                 ideal model framework
>                 >>>>                     for GEP - in that case even
>                 if the model
>                 >>>>                     framework of server changes
>                 in future, GEP would
>                 >>>>                     be unaffected.
>                 >>>>
>                 >>>>                     --                     Thanks,
>                 >>>>                     Shiva
>                 >>>
>                 >>>
>                 >>>
>                 >>>
>                 >>>                 --                 Thanks,
>                 >>>                 Shiva
>                 >>>
>                 >>>
>                 >>>
>                 >>>             --             Thanks,
>                 >>>             Shiva
>                 >>
>                 >>
>                 >>
>                 >>
>                 >>
>                 >
> 
>                 --
>                 Thanks,
>                 Tim McConnell
> 
> 
> 
> 
> 
> ------------------------------------------------------------------------
> Express yourself instantly with MSN Messenger! MSN Messenger 
> <http://clk.atdmt.com/AVE/go/onm00200471ave/direct/01/>

-- 
Thanks,
Tim McConnell

Mime
View raw message