|
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 =
|