From: Vance K. <va...@us...> - 2007-04-29 13:45:06
|
User: vancek Date: 07/04/29 06:45:08 Modified: andromda-ejb3/src/site changes.xml andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/metafacades EJB3AssociationEndFacadeLogicImpl.java andromda-ejb3/src/main/resources/templates/ejb3 EntityEmbeddable.vsl andromda-ejb3/src/main/uml EJB3MetafacadeModel.xml.zip andromda-ejb3/src/main/resources/META-INF/andromda profile.xml andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3 EJB3Profile.java Log: ejb-51 - add support for hibernate cascade type on association ends - only when hibernate extensions is enabled Revision Changes Path 1.16 +10 -0 cartridges/andromda-ejb3/src/site/changes.xml Index: changes.xml =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/site/changes.xml,v retrieving revision 1.15 retrieving revision 1.16 diff -u -w -r1.15 -r1.16 --- changes.xml 29 Apr 2007 12:34:28 -0000 1.15 +++ changes.xml 29 Apr 2007 13:45:06 -0000 1.16 @@ -452,6 +452,16 @@ when there is a multi-level single table inhiertance hierarchy, these 2 annotations exist on every parent entity. </action> + <action dev="vancek" due-to="heapifyman" type="add"> + JIRA EJB-51 - Provide support for Hibernate cascade on association ends by modelling the + @andromda.hibernate.cascade tagged value. This will only work if Hibernate extensions is enabled + (persistenceProviderExtensions namespace property is set to hibernate). This request was for the + org.hibernate.annotations.CascadeType.DELETE_ORPHAN cascade type on the one-to-many end, however + support for this annotations is provided for all association types. It's up to the user to restrict + this annotations suitably. i.e. Only specify the DELETE_ORPHAN on the one-to-many end. + To add more than one cascade property, simply comma separate the types when setting the value of + the @andromda.hibernate.cascade tagged value. + </action> </release> </body> </document> \ No newline at end of file 1.18 +16 -0 cartridges/andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/metafacades/EJB3AssociationEndFacadeLogicImpl.java Index: EJB3AssociationEndFacadeLogicImpl.java =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/metafacades/EJB3AssociationEndFacadeLogicImpl.java,v retrieving revision 1.17 retrieving revision 1.18 diff -u -w -r1.17 -r1.18 --- EJB3AssociationEndFacadeLogicImpl.java 17 Jan 2007 00:50:55 -0000 1.17 +++ EJB3AssociationEndFacadeLogicImpl.java 29 Apr 2007 13:45:06 -0000 1.18 @@ -972,4 +972,20 @@ } return isInterfaceSortedSet; } + + /** + * @see org.andromda.cartridges.ejb3.metafacades.EJB3AssociationEndFacadeLogic#handleGetHibernateCascadeType() + */ + protected String handleGetHibernateCascadeType() + { + return (String)this.findTaggedValue(EJB3Profile.TAGGEDVALUE_HIBERNATE_CASCADE); + } + + /** + * @see org.andromda.cartridges.ejb3.metafacades.EJB3AssociationEndFacadeLogic#handleIsHibernateCascadeExists() + */ + protected boolean handleIsHibernateCascadeExists() + { + return StringUtils.isNotBlank(this.getHibernateCascadeType()) ? true : false; + } } \ No newline at end of file 1.49 +42 -7 cartridges/andromda-ejb3/src/main/resources/templates/ejb3/EntityEmbeddable.vsl Index: EntityEmbeddable.vsl =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/main/resources/templates/ejb3/EntityEmbeddable.vsl,v retrieving revision 1.48 retrieving revision 1.49 diff -u -w -r1.48 -r1.49 --- EntityEmbeddable.vsl 29 Apr 2007 12:34:29 -0000 1.48 +++ EntityEmbeddable.vsl 29 Apr 2007 13:45:06 -0000 1.49 @@ -562,6 +562,14 @@ #* *##end }) #* *##end +#* *##if ($hibernateExtensionEnabled) +#* *##if ($target.hibernateCascadeExists) +## +## Set Hibernate cascade if explicitly defined +## + @org.hibernate.annotations.Cascade({${target.hibernateCascadeType}}) +#* *##end +#* *##end #* *##end public $target.getterSetterTypeName ${target.getterName}() { @@ -614,24 +622,35 @@ #* *##elseif ($hibernateExtensionEnabled) #* *##if ($target.list) ## -## Only add the IndexColumn annotation if Hibernate extensions are enabled +## Only add the IndexColumn annotation if Hibernate extensions is enabled ## @org.hibernate.annotations.IndexColumn(name = "${target.collectionIndexName}") #* *##end #* *##end #* *##end -#* *##if ($hibernateExtensionEnabled && $target.associationCacheEnabled) +## +## Add the general Hibernate annotations if Hibernate extensions is enabled +## +#* *##if ($hibernateExtensionEnabled) +#* *##if ($target.associationCacheEnabled) ## ## Add Cache annotations if association cache and Hibernate extensions are both enabled ## @org.hibernate.annotations.Cache(usage = org.hibernate.annotations.CacheConcurrencyStrategy.${target.cacheType}) #* *##end -#* *##if ($hibernateExtensionEnabled && $target.collectionInterfaceSortedSet) +#* *##if ($target.collectionInterfaceSortedSet) ## ## Only add the Sort annotation if interface is SortedSet and Hibernate extentions are enabled ## @org.hibernate.annotations.Sort(type = org.hibernate.annotations.SortType.NATURAL) #* *##end +#* *##if ($target.hibernateCascadeExists) +## +## Set Hibernate cascade if explicitly defined +## + @org.hibernate.annotations.Cascade({${target.hibernateCascadeType}}) +#* *##end +#* *##end #* *##end public $target.getterSetterTypeName ${target.getterName}() { @@ -686,6 +705,14 @@ }) #* *##end #* *##end +#* *##if ($hibernateExtensionEnabled) +#* *##if ($target.hibernateCascadeExists) +## +## Set Hibernate cascade if explicitly defined +## + @org.hibernate.annotations.Cascade({${target.hibernateCascadeType}}) +#* *##end +#* *##end #* *##end public $target.getterSetterTypeName ${target.getterName}() @@ -757,18 +784,26 @@ #* *##end #* *##end #* *##end -#* *##if ($hibernateExtensionEnabled && $target.associationCacheEnabled) +#* *##if ($hibernateExtensionEnabled) +#* *##if ($target.associationCacheEnabled) ## ## Only add the Cache annotation if assocation cache and Hibernate extensions are both enabled ## @org.hibernate.annotations.Cache(usage = org.hibernate.annotations.CacheConcurrencyStrategy.${target.cacheType}) #* *##end -#* *##if ($hibernateExtensionEnabled && $target.collectionInterfaceSortedSet) +#* *##if ($target.collectionInterfaceSortedSet) ## ## Only add Sort annotation if collection interface is SortedSet and Hibernate extensions are enabled ## @org.hibernate.annotations.Sort(type = org.hibernate.annotations.SortType.NATURAL) #* *##end +#* *##if ($target.hibernateCascadeExists) +## +## Set Hibernate cascade if explicitly defined +## + @org.hibernate.annotations.Cascade({${target.hibernateCascadeType}}) +#* *##end +#* *##end #* *##end public $target.getterSetterTypeName ${target.getterName}() { 1.55 +257 -254 cartridges/andromda-ejb3/src/main/uml/EJB3MetafacadeModel.xml.zip <<Binary file>> 1.35 +8 -0 cartridges/andromda-ejb3/src/main/resources/META-INF/andromda/profile.xml Index: profile.xml =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/main/resources/META-INF/andromda/profile.xml,v retrieving revision 1.34 retrieving revision 1.35 diff -u -w -r1.34 -r1.35 --- profile.xml 19 Jan 2007 13:13:46 -0000 1.34 +++ profile.xml 29 Apr 2007 13:45:07 -0000 1.35 @@ -935,6 +935,14 @@ <value>REFRESH</value> </allowedValues> </element> + <element name="HIBERNATE_CASCADE_TYPE"> + <documentation> + Place a user defined Hibernate specific cascade value at an association end. + Hibernate extensions must be enabled. + </documentation> + <value>@andromda.hibernate.cascade</value> + <appliedOnElement>Association ends between <![CDATA[<<Entity>>]]> classes</appliedOnElement> + </element> <element name="ENUMERATION_TYPE"> <documentation> Specifies the enumeration type for the 1.28 +5 -0 cartridges/andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/EJB3Profile.java Index: EJB3Profile.java =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/EJB3Profile.java,v retrieving revision 1.27 retrieving revision 1.28 diff -u -w -r1.27 -r1.28 --- EJB3Profile.java 17 Jan 2007 00:50:56 -0000 1.27 +++ EJB3Profile.java 29 Apr 2007 13:45:08 -0000 1.28 @@ -847,6 +847,11 @@ profile.get("ASSOCIATION_CACHE"); /** + * Defines the tagged value for hibernate cascade on an association end + */ + public static final String TAGGEDVALUE_HIBERNATE_CASCADE = profile.get("HIBERNATE_CASCADE_TYPE"); + + /** * Defines whether query cache is enable for query. */ public static final String TAGGEDVALUE_EJB_USE_QUERY_CACHE = |