From: Vance K. <va...@us...> - 2006-06-26 06:53:35
|
User: vancek Date: 06/06/25 23:53:33 Modified: andromda-ejb3/src/site/xdoc howto.xml howto16.xml andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/metafacades EJB3ManageableEntityFacadeLogicImpl.java EJB3ManageableEntityAttributeFacadeLogicImpl.java EJB3ManageableEntityAssociationEndFacadeLogicImpl.java EJB3AssociationEndFacadeLogicImpl.java EJB3EntityAttributeFacadeLogicImpl.java andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3 EJB3Profile.java EJB3Globals.java andromda-ejb3/src/changes changes.xml andromda-ejb3/src/main/uml EJB3MetafacadeModel.xml.zip Log: EJB3ManageableEntityAssociationEndFacade extends EJB3AssociationEndFacade and EJB3ManageableEntityAttributeFacade extends EJB3EntityAttributeFacade - refactor to remove method duplication fix isRequired in EJB3AssociationEndFacade and EJB3EntityAttributeFacade to exclude property if entity has a generalization to a mapped superclass add support for default list, set and map types for collection association ends added ability to set association end collection index name and type for map index set default collection interface for association ends java.util.SortedSet from java.util.Collection Revision Changes Path 1.20 +5 -1 cartridges/andromda-ejb3/src/site/xdoc/howto.xml Index: howto.xml =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/site/xdoc/howto.xml,v retrieving revision 1.19 retrieving revision 1.20 diff -u -w -r1.19 -r1.20 --- howto.xml 29 May 2006 06:39:00 -0000 1.19 +++ howto.xml 26 Jun 2006 06:53:32 -0000 1.20 @@ -213,7 +213,11 @@ </p> </li> <li> - <p><a href="howto16.html">Manageable Entities</a></p> + <p> + <a href="howto16.html">Manageable Entities</a></p> + <ul> + <li><p><a href="howto16.html#Manageable_Entities_Tips">Tips</a></p></li> + </ul> </li> <li> <p> 1.5 +9 -0 cartridges/andromda-ejb3/src/site/xdoc/howto16.xml Index: howto16.xml =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/site/xdoc/howto16.xml,v retrieving revision 1.4 retrieving revision 1.5 diff -u -w -r1.4 -r1.5 --- howto16.xml 29 May 2006 01:53:36 -0000 1.4 +++ howto16.xml 26 Jun 2006 06:53:32 -0000 1.5 @@ -99,6 +99,15 @@ <a href="http://galaxy.andromda.org/docs/andromda-cartridges/manageable-entities/index.html"> manageable entities</a> for AndroMDA. </p> + <a name="Manageable_Entities_Tips"/> + <subsection name="Tips"> + <p> + You should assign one attribute of every manageable entity as a unique index. This is + achieved by modelling the <![CDATA[<<Unique>>]]> stereotype on the attribute. As a result, it + will display the unique attribute value for foreign key reference columns when listing entities, + rather than the complete target entity property name-value pairs. + </p> + </subsection> </section> <section name="Next"> <p> 1.4 +7 -1 cartridges/andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/metafacades/EJB3ManageableEntityFacadeLogicImpl.java Index: EJB3ManageableEntityFacadeLogicImpl.java =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/metafacades/EJB3ManageableEntityFacadeLogicImpl.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -w -r1.3 -r1.4 --- EJB3ManageableEntityFacadeLogicImpl.java 24 Apr 2006 02:55:36 -0000 1.3 +++ EJB3ManageableEntityFacadeLogicImpl.java 26 Jun 2006 06:53:32 -0000 1.4 @@ -1,15 +1,22 @@ package org.andromda.cartridges.ejb3.metafacades; import java.text.MessageFormat; +import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; +import java.util.List; import org.andromda.cartridges.ejb3.EJB3Globals; import org.andromda.cartridges.ejb3.EJB3Profile; +import org.andromda.metafacades.uml.AssociationEndFacade; import org.andromda.metafacades.uml.AttributeFacade; +import org.andromda.metafacades.uml.ClassifierFacade; +import org.andromda.metafacades.uml.Entity; import org.andromda.metafacades.uml.EntityAttribute; import org.andromda.metafacades.uml.ManageableEntityAttribute; import org.andromda.metafacades.uml.UMLProfile; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections.Predicate; import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.StringUtils; @@ -278,5 +285,4 @@ return displayAttribute; } - } \ No newline at end of file 1.3 +4 -3 cartridges/andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/metafacades/EJB3ManageableEntityAttributeFacadeLogicImpl.java Index: EJB3ManageableEntityAttributeFacadeLogicImpl.java =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/metafacades/EJB3ManageableEntityAttributeFacadeLogicImpl.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -w -r1.2 -r1.3 --- EJB3ManageableEntityAttributeFacadeLogicImpl.java 17 Feb 2006 02:38:22 -0000 1.2 +++ EJB3ManageableEntityAttributeFacadeLogicImpl.java 26 Jun 2006 06:53:32 -0000 1.3 @@ -24,11 +24,12 @@ } /** - * @see org.andromda.cartridges.ejb3.metafacades.EJB3ManageableEntityAttributeFacadeLogic#handleGetTemporalType() + * @see org.andromda.cartridges.ejb3.metafacades.EJB3ManageableEntityAttributeFacadeLogic#getTemporalType() */ - protected String handleGetTemporalType() + @Override + public String getTemporalType() { - String temporalType = (String)this.findTaggedValue(EJB3Profile.TAGGEDVALUE_PERSISTENCE_TEMPORAL_TYPE); + String temporalType = super.getTemporalType(); if (StringUtils.isBlank(temporalType)) { temporalType = String.valueOf(this.getConfiguredProperty(ENTITY_DEFAULT_TEMPORAL_TYPE)); 1.3 +5 -31 cartridges/andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/metafacades/EJB3ManageableEntityAssociationEndFacadeLogicImpl.java Index: EJB3ManageableEntityAssociationEndFacadeLogicImpl.java =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/metafacades/EJB3ManageableEntityAssociationEndFacadeLogicImpl.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -w -r1.2 -r1.3 --- EJB3ManageableEntityAssociationEndFacadeLogicImpl.java 20 Feb 2006 05:21:15 -0000 1.2 +++ EJB3ManageableEntityAssociationEndFacadeLogicImpl.java 26 Jun 2006 06:53:32 -0000 1.3 @@ -3,7 +3,12 @@ import java.text.MessageFormat; import org.andromda.cartridges.ejb3.EJB3Globals; +import org.andromda.metafacades.uml.ClassifierFacade; +import org.andromda.metafacades.uml.TypeMappings; +import org.andromda.metafacades.uml.UMLMetafacadeProperties; import org.andromda.metafacades.uml.UMLMetafacadeUtils; +import org.andromda.metafacades.uml.UMLProfile; +import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.StringUtils; @@ -15,39 +20,8 @@ public class EJB3ManageableEntityAssociationEndFacadeLogicImpl extends EJB3ManageableEntityAssociationEndFacadeLogic { - public EJB3ManageableEntityAssociationEndFacadeLogicImpl (Object metaObject, String context) { super (metaObject, context); } - - /** - * @see org.andromda.cartridges.ejb3.metafacades.EJB3ManageableEntityAssociationEndFacadeLogic#handleGetLabelName() - */ - protected String handleGetLabelName() - { - String labelNamePattern = (this.isMany() ? - (String)this.getConfiguredProperty(EJB3Globals.LABEL_COLLECTION_NAME_PATTERN) : - (String)this.getConfiguredProperty(EJB3Globals.LABEL_SINGLE_NAME_PATTERN)); - - return MessageFormat.format( - labelNamePattern, - new Object[] {StringUtils.trimToEmpty(this.getName())}); - } - - /** - * @see org.andromda.cartridges.ejb3.metafacades.EJB3ManageableEntityAssociationEndFacadeLogic#handleGetGetterLabelName() - */ - protected String handleGetGetterLabelName() - { - return UMLMetafacadeUtils.getGetterPrefix(this.getType()) + StringUtils.capitalize(this.getLabelName()); - } - - /** - * @see org.andromda.cartridges.ejb3.metafacades.EJB3ManageableEntityAssociationEndFacadeLogic#handleGetSetterLabelName() - */ - protected String handleGetSetterLabelName() - { - return "set" + StringUtils.capitalize(this.getLabelName()); - } } \ No newline at end of file 1.10 +184 -10 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.9 retrieving revision 1.10 diff -u -w -r1.9 -r1.10 --- EJB3AssociationEndFacadeLogicImpl.java 29 May 2006 01:37:57 -0000 1.9 +++ EJB3AssociationEndFacadeLogicImpl.java 26 Jun 2006 06:53:32 -0000 1.10 @@ -35,17 +35,17 @@ /** * The default composite association cascade property */ - public static final String ENTITY_DEFAULT_COMPOSITE_CASCADE = "entityCompositeCascade"; + private static final String ENTITY_DEFAULT_COMPOSITE_CASCADE = "entityCompositeCascade"; /** * The default aggregation association cascade property */ - public static final String ENTITY_DEFAULT_AGGREGATION_CASCADE = "entityAggergationCascade"; + private static final String ENTITY_DEFAULT_AGGREGATION_CASCADE = "entityAggergationCascade"; /** * The namespace property storing default collection type for associations */ - public static final String ASSOCIATION_COLLECTION_TYPE = "associationCollectionType"; + private static final String ASSOCIATION_COLLECTION_TYPE = "associationCollectionType"; /** * A flag indicating whether or not specific (java.util.Set, java.util.List, @@ -53,14 +53,24 @@ * accessors or whether the generic java.util.Collection interface should be * used. */ - public static final String SPECIFIC_COLLECTION_INTERFACES = "specificCollectionInterfaces"; + private static final String SPECIFIC_COLLECTION_INTERFACES = "specificCollectionInterfaces"; /** * The property that defines the default collection interface, this is the * interface used if the property defined by - * {@link #SPECIFIC_COLLECTION_INTERFACES} is true. + * {@link #SPECIFIC_COLLECTION_INTERFACES} is false. */ - public static final String DEFAULT_COLLECTION_INTERFACE = "defaultCollectionInterface"; + private static final String DEFAULT_COLLECTION_INTERFACE = "defaultCollectionInterface"; + + /** + * Stores the default collection index name. + */ + private static final String COLLECTION_INDEX_NAME = "associationEndCollectionIndexName"; + + /** + * Stores the default collection index type. + */ + private static final String COLLECTION_INDEX_TYPE = "associationEndCollectionIndexType"; /** * Represents the EJB3 <code>ALL</code> cascade option and fully qualified representation. @@ -160,6 +170,21 @@ */ private static final String HIBERNATE_ASSOCIATION_CACHE = "hibernateAssociationCache"; + /** + * The 'list' type implementation to use. + */ + private static final String LIST_TYPE_IMPLEMENTATION = "listTypeImplementation"; + + /** + * The 'set' type implementation to use. + */ + private static final String SET_TYPE_IMPLEMENTATION = "setTypeImplementation"; + + /** + * The 'map' type implementation to use. + */ + private static final String MAP_TYPE_IMPLEMENTATION = "mapTypeImplementation"; + // ---------------- constructor ------------------------------- public EJB3AssociationEndFacadeLogicImpl (Object metaObject, String context) @@ -173,6 +198,7 @@ /** * @see org.andromda.metafacades.uml.AssociationEndFacade#getGetterSetterTypeName() */ + @Override public String getGetterSetterTypeName() { String getterSetterTypeName = null; @@ -203,13 +229,12 @@ } else { - getterSetterTypeName = - ObjectUtils.toString(this.getConfiguredProperty(DEFAULT_COLLECTION_INTERFACE)); + getterSetterTypeName = this.getDefaultCollectionInterface(); } } else { - getterSetterTypeName = ObjectUtils.toString(this.getConfiguredProperty(DEFAULT_COLLECTION_INTERFACE)); + getterSetterTypeName = this.getDefaultCollectionInterface(); } } else @@ -256,7 +281,11 @@ { EJB3EntityFacade entity = (EJB3EntityFacade)type; - if (entity.isInheritanceSingleTable() && (entity.getGeneralization() != null)) + /** + * Excluse ONLY if single table inheritance exists + */ + if (entity.isRequiresGeneralizationMapping() && entity.isInheritanceSingleTable() + && !entity.isEmbeddableSuperclassGeneralizationExists()) { required = false; } @@ -553,6 +582,60 @@ } /** + * @see org.andromda.cartridges.ejb3.metafacades.EJB3AssociationEndFacadeLogic#handleGetCollectionTypeImplementation() + */ + protected String handleGetCollectionTypeImplementation() + { + return this.getCollectionTypeImplementation(null); + } + + /** + * @see org.andromda.cartridges.ejb3.metafacades.EJB3AssociationEndFacadeLogic#handleGetCollectionTypeImplementation(java.lang.String) + */ + protected String handleGetCollectionTypeImplementation(String arg) + { + StringBuffer implementation = new StringBuffer(); + if (this.isMany()) + { + implementation.append("new "); + if (this.isSet()) + { + implementation.append(this.getConfiguredProperty(SET_TYPE_IMPLEMENTATION)); + } + else if (this.isMap()) + { + implementation.append(this.getConfiguredProperty(MAP_TYPE_IMPLEMENTATION)); + } + else if (this.isList() || this.isCollection()) + { + implementation.append(this.getConfiguredProperty(LIST_TYPE_IMPLEMENTATION)); + } + + // set this association end's type as a template parameter if required + if (Boolean.valueOf(String.valueOf(this.getConfiguredProperty(UMLMetafacadeProperties.ENABLE_TEMPLATING))) + .booleanValue()) + { + implementation.append("<"); + if (this.isMap()) + { + implementation.append(this.getCollectionIndexType()); + implementation.append(", "); + } + implementation.append(this.getType().getFullyQualifiedName()); + implementation.append(">"); + } + implementation.append("("); + if (StringUtils.isNotBlank(arg)) + { + implementation.append(arg); + } + implementation.append(")"); + } + + return implementation.toString(); + } + + /** * Gets the collection type defined on this association end. * * @return the specific collection type. @@ -564,6 +647,63 @@ } /** + * @see org.andromda.cartridges.ejb3.metafacades.EJB3AssociationEndFacadeLogic#handleGetCollectionIndexType() + */ + protected String handleGetCollectionIndexType() + { + Object value = this.findTaggedValue(EJB3Profile.TAGGEDVALUE_ASSOCIATION_INDEX_TYPE); + if (value == null) + { + value = this.getConfiguredProperty(COLLECTION_INDEX_TYPE); + if (StringUtils.isBlank(ObjectUtils.toString(value))) + { + value = null; + } + } + + if (value != null) + { + if (value instanceof String) + { + value = this.getRootPackage().findModelElement((String)value); + } + if (value instanceof EJB3TypeFacade) + { + value = ((EJB3TypeFacade)value).getFullyQualifiedEJB3Type(); + } + } + return (value != null) ? ObjectUtils.toString(value) : null; + } + + /** + * @see org.andromda.cartridges.ejb3.metafacades.EJB3AssociationEndFacadeLogic#handleGetCollectionIndexName() + */ + protected String handleGetCollectionIndexName() + { + Object value = this.findTaggedValue(EJB3Profile.TAGGEDVALUE_ASSOCIATION_INDEX); + if ((value == null) && this.isConfiguredProperty(COLLECTION_INDEX_NAME)) + { + value = this.getConfiguredProperty(COLLECTION_INDEX_NAME); + if (StringUtils.isBlank(ObjectUtils.toString(value))) + { + value = null; + } + } + + if (value != null) + { + return ObjectUtils.toString(value); + } + final String otherEntityName = ((EJB3EntityFacade)this.getOtherEnd().getType()).getEntityName(); + final Object separator = this.getConfiguredProperty(UMLMetafacadeProperties.SQL_NAME_SEPARATOR); + return EntityMetafacadeUtils.toSqlName( + otherEntityName, + separator) + separator + EntityMetafacadeUtils.toSqlName( + this.getName(), + separator) + separator + "IDX"; + } + + /** * @see org.andromda.cartridges.ejb3.metafacades.EJB3AssociationEndFacadeLogic#handleIsMap() */ protected boolean handleIsMap() @@ -603,6 +743,19 @@ } /** + * @see org.andromda.cartridges.ejb3.metafacades.EJB3AssociationEndFacadeLogic#handleIsCollection() + */ + protected boolean handleIsCollection() + { + boolean isCollection = this.getCollectionType().equalsIgnoreCase(COLLECTION_TYPE_COLLECTION); + if (!isCollection && StringUtils.isBlank(this.getSpecificCollectionType())) + { + isCollection = this.isOrdered(); + } + return isCollection; + } + + /** * @see org.andromda.cartridges.ejb3.metafacades.EJB3AssociationEndFacadeLogic#handleGetLabelName() */ protected String handleGetLabelName() @@ -718,4 +871,25 @@ buffer.append(constraintSuffix); return buffer.toString(); } + + /** + * @see org.andromda.cartridges.ejb3.metafacades.EJB3AssociationEndFacadeLogic#handleGetDefaultCollectionInterface() + */ + protected String handleGetDefaultCollectionInterface() + { + return ObjectUtils.toString(this.getConfiguredProperty(DEFAULT_COLLECTION_INTERFACE)); + } + + /** + * @see org.andromda.cartridges.ejb3.metafacades.EJB3AssociationEndFacadeLogic#handleIsDefaultCollectionInterfaceSortedSet() + */ + protected boolean handleIsDefaultCollectionInterfaceSortedSet() + { + boolean isDefaultSortedSet = false; + if (StringUtils.equals(this.getDefaultCollectionInterface(), EJB3Globals.COLLECTION_INTERFACE_SORTED_SET)) + { + isDefaultSortedSet = true; + } + return isDefaultSortedSet; + } } \ No newline at end of file 1.14 +11 -1 cartridges/andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/metafacades/EJB3EntityAttributeFacadeLogicImpl.java Index: EJB3EntityAttributeFacadeLogicImpl.java =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/metafacades/EJB3EntityAttributeFacadeLogicImpl.java,v retrieving revision 1.13 retrieving revision 1.14 diff -u -w -r1.13 -r1.14 --- EJB3EntityAttributeFacadeLogicImpl.java 24 Apr 2006 02:47:36 -0000 1.13 +++ EJB3EntityAttributeFacadeLogicImpl.java 26 Jun 2006 06:53:32 -0000 1.14 @@ -52,6 +52,7 @@ /** * @see org.andromda.metafacades.uml.AttributeFacade#getGetterName() */ + @Override public String getGetterName() { return "get" + StringUtils.capitalize(super.getName()); @@ -62,13 +63,19 @@ * * @see org.andromda.metafacades.uml.AttributeFacade#isRequired() */ + @Override public boolean isRequired() { boolean required = super.isRequired(); if (this.getOwner() instanceof EJB3EntityFacade) { EJB3EntityFacade entity = (EJB3EntityFacade)this.getOwner(); - if (entity.isInheritanceSingleTable() && entity.getGeneralization() != null) + + /** + * Excluse ONLY if single table inheritance exists + */ + if (entity.isRequiresGeneralizationMapping() && entity.isInheritanceSingleTable() + && !entity.isEmbeddableSuperclassGeneralizationExists()) { required = false; } @@ -81,6 +88,7 @@ * * @see org.andromda.metafacades.uml.AttributeFacade#getDefaultValue() */ + @Override public String getDefaultValue() { String defaultValue = super.getDefaultValue(); @@ -359,6 +367,7 @@ * * @see org.andromda.metafacades.uml.EntityAttribute#getColumnLength() */ + @Override public String getColumnLength() { String columnLength = (String)this.findTaggedValue(EJB3Profile.TAGGEDVALUE_PERSISTENCE_COLUMN_LENGTH); @@ -375,6 +384,7 @@ * * @see org.andromda.metafacades.uml.EntityAttribute#getColumnName() */ + @Override public String getColumnName() { String columnName = (String)this.findTaggedValue(EJB3Profile.TAGGEDVALUE_PERSISTENCE_COLUMN); 1.26 +10 -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.25 retrieving revision 1.26 diff -u -w -r1.25 -r1.26 --- EJB3Profile.java 14 Jun 2006 04:56:57 -0000 1.25 +++ EJB3Profile.java 26 Jun 2006 06:53:32 -0000 1.26 @@ -512,6 +512,16 @@ public static final String TAGGEDVALUE_ASSOCIATION_COLLECTION_TYPE = profile.get("ASSOCIATION_COLLECTION_TYPE"); /** + * Defines the index column type for ejb3 indexed collections + */ + public static final String TAGGEDVALUE_ASSOCIATION_INDEX_TYPE = profile.get("ASSOCIATION_INDEX_TYPE"); + + /** + * Defines the index column for ejb3 indexed collections + */ + public static final String TAGGEDVALUE_ASSOCIATION_INDEX = profile.get("ASSOCIATION_INDEX"); + + /** * Defines whether to exclude the default interceptors for the session operation. */ public static final String TAGGEDVALUE_SERVICE_INTERCEPTOR_EXCLUDE_DEFAULT = 1.13 +5 -0 cartridges/andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/EJB3Globals.java Index: EJB3Globals.java =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/EJB3Globals.java,v retrieving revision 1.12 retrieving revision 1.13 diff -u -w -r1.12 -r1.13 --- EJB3Globals.java 14 Jun 2006 04:56:57 -0000 1.12 +++ EJB3Globals.java 26 Jun 2006 06:53:32 -0000 1.13 @@ -256,4 +256,9 @@ * Seam component scope type CONVERSATION */ public static final String SEAM_COMPONENT_SCOPE_CONVERSATION = "CONVERSATION"; + + /** + * The property representing the default collection interface of java.util.SortedSet + */ + public static final String COLLECTION_INTERFACE_SORTED_SET = "java.util.SortedSet"; } 1.9 +61 -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.8 retrieving revision 1.9 diff -u -w -r1.8 -r1.9 --- changes.xml 17 Jun 2006 12:02:21 -0000 1.8 +++ changes.xml 26 Jun 2006 06:53:33 -0000 1.9 @@ -108,6 +108,67 @@ <action dev="vancek" type="add"> Added FAQ support section menu to site. </action> + <action dev="vancek" type="fix"> + Remove references to attributes modelled with a @Version annotation (optimistic lock value for entity) in + manageable service components. Initial work removed attribute from getAttributes, but that caused problems + from the manageable web tier action methods create and update. To account for this, allow the attribute as + arguement to the methods, but do not call the set accessor. + </action> + <action dev="vancek" type="fix"> + Moved the @Version annotation to the entity attribute. It had no effect on the getter method. + Removed all annotations on the corresponding getter method. + </action> + <action dev="vancek" type="update"> + Render the @Table annotation on every entity to avoid application server detting the default table name + mapped to by this entity. Currently, the annotation is only rendered when there is an inheritence hierarchy + or a mapped superclass. + </action> + <action dev="vancek" type="update"> + Update the default Collection for one-to-many and many-to-many associations to the java.util.SortedSet (in + namespace.xml). + Moving away from bag collection as the default since it is unnecessary in the majority of cases. + As a result, the @org.hibernate.annotations.Sort annotation is also rendered with a NATURAL sort type. + The create and update methods of the manageable service implementation wraps the retrieved bag collection(List) + for the 'many' side of the association with an appropriate collection implementation (unless java.util.List + is specified as the default). + </action> + <action dev="vancek" type="fix"> + Ignore the argument on create and update methods of DAO implementation components where the corresponding + entity attribute is modelled as an optimistic lock value with the Version stereotype. This should be improved + to eliminate the attribute when retrieving the attribute collection. + </action> + <action dev="vancek" type="update"> + Each finder is overloaded in the DAO components. One finder method that doesn't supply a manual query + argument should use the NamedQuery defined on the corresponding entity. Currently, it generates the query. + </action> + <action dev="vancek" type="fix"> + Minor fixes to the EJBQL of the finder methods in the manageable service base for manageable entities. + </action> + <action dev="vancek" type="fix"> + In the findAll method of the manageable service base implementation, the query now includes 'left join fetch' + for all related 'many' association ends where the target entity does not define a display attribute (where + the attribute is modelled with the Unique stereotype). + </action> + <action dev="vancek" type="update"> + Updated the metafacade definitions of EJB3AssociationEndFacadeLogicImpl, EJB3AssociationEndFacadeLogicImpl + and EJB3MessageDrivenOperationFacadeLogicImpl in metafacade.xml. + </action> + <action dev="vancek" type="add"> + Added support for default list, set and map type implementations for collection association ends in + namespace.xml. Also added the ability + for association end collection index name and type (further map support) to be specified via tagged values + @andromda.persistence.collection.index and @andromda.persistence.collection.index.type. This introduced + a new facade called EJB3TypeFacade. + </action> + <action dev="vancek" type="fix"> + Fixed isRequired in EJB3AssociationEndFacade and EJB3EntityAttributeFacade to exclude property if + the entity has a generalization to an mapped superclass. + </action> + <action dev="vancek" type="update"> + EJB3ManageableEntityAssociationEndFacade now also extends EJB3AssociationEndFacade with precedence tagged value + set. EJB3ManageableEntityAttributeFacade also extends EJB3EntityAttributeFacade. This eliminates the + need for the existing overwritten methods in the manageable entity facades. + </action> </release> </body> </document> \ No newline at end of file 1.41 +203 -212 cartridges/andromda-ejb3/src/main/uml/EJB3MetafacadeModel.xml.zip <<Binary file>> |