From: Vance K. <va...@us...> - 2006-08-24 08:55:18
|
User: vancek Date: 06/08/24 01:54:32 Modified: andromda-ejb3/src/main/resources/META-INF/andromda namespace.xml metafacades.xml andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/metafacades EJB3AssociationEndFacadeLogicImpl.java andromda-ejb3/src/changes changes.xml Log: EJB-43 fix issues with the default association cascade Revision Changes Path 1.31 +3 -1 cartridges/andromda-ejb3/src/main/resources/META-INF/andromda/namespace.xml Index: namespace.xml =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/main/resources/META-INF/andromda/namespace.xml,v retrieving revision 1.30 retrieving revision 1.31 diff -u -w -r1.30 -r1.31 --- namespace.xml 25 Jul 2006 06:42:51 -0000 1.30 +++ namespace.xml 24 Aug 2006 08:54:31 -0000 1.31 @@ -620,6 +620,8 @@ <li>REFRESH</li> <li>NONE if one does not exist</li> </ul> + It is possible to comma separate multiple + cascade properties. </documentation> </property> <property name="entityCompositeCascade" required="false"> @@ -648,7 +650,7 @@ </ul> </documentation> </property> - <property name="entityAggergationCascade" required="false"> + <property name="entityAggregationCascade" required="false"> <documentation> Indicates how a UML aggreation should be interpreted to determine cascadable operations that are 1.27 +1 -1 cartridges/andromda-ejb3/src/main/resources/META-INF/andromda/metafacades.xml Index: metafacades.xml =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/main/resources/META-INF/andromda/metafacades.xml,v retrieving revision 1.26 retrieving revision 1.27 diff -u -w -r1.26 -r1.27 --- metafacades.xml 25 Jul 2006 06:42:51 -0000 1.26 +++ metafacades.xml 24 Aug 2006 08:54:31 -0000 1.27 @@ -123,7 +123,7 @@ <property name="type.eJB3EntityFacadeMetaType"/> </mapping> <property reference="entityCompositeCascade"/> - <property reference="entityAggergationCascade"/> + <property reference="entityAggregationCascade"/> <property reference="associationCollectionType"/> <property reference="specificCollectionInterfaces"/> <property reference="defaultCollectionInterface"/> 1.15 +60 -30 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.14 retrieving revision 1.15 diff -u -w -r1.14 -r1.15 --- EJB3AssociationEndFacadeLogicImpl.java 24 Jul 2006 14:02:01 -0000 1.14 +++ EJB3AssociationEndFacadeLogicImpl.java 24 Aug 2006 08:54:31 -0000 1.15 @@ -40,7 +40,7 @@ /** * The default aggregation association cascade property */ - private static final String ENTITY_DEFAULT_AGGREGATION_CASCADE = "entityAggergationCascade"; + private static final String ENTITY_DEFAULT_AGGREGATION_CASCADE = "entityAggregationCascade"; /** * The namespace property storing default collection type for associations @@ -461,6 +461,39 @@ } /** + * Resolves a comma separated list of cascade types from andromda.xml + + * @param cascadesString + * @return fully qualified cascade type sequence + */ + private String getFullyQualifiedCascadeTypeList(String cascadesString) + { + StringBuffer buf = null; + if (StringUtils.isNotBlank(cascadesString)) + { + String[] ct = cascadesString.split(","); + for (int i = 0; i < ct.length; i++) + { + final String value = ct[i].trim(); + if (StringUtils.isNotBlank(value)) + { + if (buf == null) + { + buf = new StringBuffer(); + } + else + { + buf.append(", "); + } + + buf.append(cascadeTable.get(value)); + } + } + } + return buf == null ? null : buf.toString(); + } + + /** * @see org.andromda.cartridges.ejb3.metafacades.EJB3AssociationEndFacadeLogic#handleGetCascadeType() */ protected String handleGetCascadeType() @@ -488,12 +521,10 @@ } cascade = buf.toString(); } - else if (this.isChild()) + else if ((this.getOtherEnd() != null) && + (this.getOtherEnd().isAggregation() || this.getOtherEnd().isComposition())) { cascade = (String)cascadeTable.get(ENTITY_CASCADE_REMOVE); - - if (this.getOtherEnd() != null) - { if (this.getOtherEnd().isComposition()) { if (StringUtils.isBlank(this.getCompositionCascadeType())) @@ -502,13 +533,13 @@ { EJB3EntityFacade entity = (EJB3EntityFacade)this.getType(); cascade = (entity.getDefaultCascadeType().equalsIgnoreCase(ENTITY_CASCADE_NONE) ? - null : (String)cascadeTable.get(entity.getDefaultCascadeType())); + null : this.getFullyQualifiedCascadeTypeList(entity.getDefaultCascadeType())); } } else { cascade = (this.getCompositionCascadeType().equalsIgnoreCase(ENTITY_CASCADE_NONE) ? - null : (String)cascadeTable.get(this.getCompositionCascadeType())); + null : this.getFullyQualifiedCascadeTypeList(this.getCompositionCascadeType())); } } else if (this.getOtherEnd().isAggregation()) @@ -519,14 +550,13 @@ { EJB3EntityFacade entity = (EJB3EntityFacade)this.getType(); cascade = (entity.getDefaultCascadeType().equalsIgnoreCase(ENTITY_CASCADE_NONE) ? - null : (String)cascadeTable.get(entity.getDefaultCascadeType())); + null : this.getFullyQualifiedCascadeTypeList(entity.getDefaultCascadeType())); } } else { cascade = (this.getAggregationCascadeType().equalsIgnoreCase(ENTITY_CASCADE_NONE) ? - null : (String)cascadeTable.get(this.getAggregationCascadeType())); - } + null : this.getFullyQualifiedCascadeTypeList(this.getAggregationCascadeType())); } } } 1.31 +5 -0 cartridges/andromda-ejb3/src/changes/changes.xml Index: changes.xml =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/changes/changes.xml,v retrieving revision 1.30 retrieving revision 1.31 diff -u -w -r1.30 -r1.31 --- changes.xml 11 Aug 2006 15:11:38 -0000 1.30 +++ changes.xml 24 Aug 2006 08:54:32 -0000 1.31 @@ -288,6 +288,11 @@ for the session to <b>Bean</b> instead of <b>Container</b>. This does not affect manageable entity session POJOs as they remain container managed transaction demarcation. </action> + <action dev="vancek" due-to="Bertl" type="fix"> + JIRA EJB-43 - Fix issues with the default setup of association cascade properties, in particular adding + support for multiple cascade options for the default cascade property on entities. Fix the naming + issue with entityAggregationCascade. + </action> </release> </body> </document> \ No newline at end of file |