Changes Report

Release History

VersionDateDescription
3.3-SNAPSHOTnot yet releasedFirst release candidate of version 3.3
3.22006-11-09Version 3.2 final
3.12005-11-10Version 3.1 final
3.1-RC12005-06-19First milestone release of version 3.1
3.02005-05-08Version 3.0 final
3.0-RC22005-04-25Second release candidate for version 3.0
3.0-RC12005-03-27First release candidate for version 3.0
3.0M32004-12-26A stable development release for version 3, milestone 3
3.0M22004-08-09A stable development release for version 3, milestone 2


Release 3.3-SNAPSHOT - not yet released

TypeChangesBy
fixCorrected possible collision in generated javascript validation routines. Fixes BPM-299.draftdog
updateIntroduced "axis2GeneratedWrappedMessageReceiverRendersFaultsAsBeans" namespace property to the webservice cartridge, it allows users to select whether or not to render faults as regular beans (similar to what is done in responses with value objects). The default is 'false' which means this update is backward compatible with earlier versions of the cartridge.draftdog
updateUpdated webservices cartridge: simplified generated WSDL by avoiding the incremental numbering scheme (we don't have support for overloading anyway). The WrappedMessageReceiver now returns exception value objects in the fault detail message so that the client can properly access any additional data other than the error message.draftdog
fixThe Freemarker template engine plug-in did not find the templates when it ran in a multi-classloa der environment like Maven. Now, it uses the context classloader to find the templates.mattes3
addAdded support for Lingo remoting to the Spring cartridge. Fixes SPRING-190.freter
updateMigrate M1 site docs to M2. Add site plugins. Remove M1 site xml files.vancek
addThe EMF repository plug-in can now read *.emx files from RSA directly without the need to convert them to *.uml2, first. It also checks for the IBM-specific metamodels for graphical elements in UML diagrams. If it finds them on the classpath, it registers them with the EMF package factory registry.mattes3

Release 3.2 - 2006-11-09

TypeChangesBy
addThe meta cartridge now supports code generation for PSM metaclasses. Assign the stereotype PSMmetaclass to a class, and you will get a base class and/or an implementation class for it. Then, you can make your metafacades return instances of the PSM metaclasses. Finally, make your templates use these instances. For more info, see the "10 steps to write a cartridge" tutorial on www.andromda.org.mattes3
addThe Hibernate cartridge now supports distributed entity caching with ehCache 1.2. Fixes HIB-192.freter
addThe projct generator now supports a shortText property on prompt items to allow for better looking graphical UIs. The J 2EE and Spring RCP project cartridge have been adjusted accordingly. Fixes ANDROMDAPP-16.freter
fixThe hibernate cartridge did not properly support lists on many2many association ends, this has been fixed thanks to a patch from Paul Pavlidis. Fixes HIB-170.draftdog
updateThe generated enumerations now supports Java generics when enableTemplating has been set to true . Thanks to a patch from Jens Vagts. Fixes JAVA-27.draftdog
updateInitializing collections is now taking into account Java generics when enableTemplating has been set to true . Thanks to a patch from Jens Vagts. Fixes HIB-162.draftdog
fixWhen using manageable entities it could happen that a server-side SQL exception is thrown due to an invalid HSQL query. This was due to a missing check when passing in an array: the array was tested for null but not for array.length == 0 . This has been resolved. Fixes SPRING-147.draftdog
fixThe hibernate byte Blob type has new nullSafeGet and nullSafeSet method implementations, thanks to a patch from Darius Schier. Fixes HIB-166.draftdog
updatePluralization of English words has been updated to more correctly determine the proper plural. This means that those users using words other than the ones that are being tested might see different accessor names on their b eans, it might result in compilation failures due to files in version control but merely updating those files to reflect the new name will do the trick. Fixes UMLMETA-66.draftdog
fixSeveral fixes have been applied to the CRUD implementation in the Spring cartridge. These fixes will be apparent when using CRUD on entities which extend other entities.draftdog
addThe Spring cartridge has a new optional outlet value-objects , used to emit CRUD value objects to, that way you can have them generated separately into a common component.draftdog
addThe Hibernate cartridge's namespace has two new outlets: entity-mappings and user-types. The .hbm.xml files will be emitted to the former while the latter will be used for Hibernate enumeration user-types and the String Clob and Blob types. This will allow you to have your POJOs generated into a dedicated location such as common/target/src. The andromdapp:generate plugin has been updated to have both outlets point to the generated code of the core component.draftdog
addSpring service interfaces and default service exceptions are now emitted to a dedicated outlet called service-interfaces. Make sure to update your andromda.xml, the proper value for this namespace property is the generated source code directory for the 'common' component, if you have generated your project using andromd app:generate this is ${common.generated.dir}.draftdog
addServices and entities now are allowed to realize interfaces. Any interfaces generalized by other interfaces won't be taken into account. Fixes UMLMETA-62.draftdog
updateorg::andromda::metafacades::uml::ClassifierFacade::associationEnds has been changed to {ordered} in order to match org::andromda::metafacades::uml::AssociationFacade::associationEnds so that the generated methods org.andromda.metafacades.uml.ClassifierFacade#getAssociationEnds() and org.andromda.metafacades.uml.AssociationFacade#getAssociationEnds() have the same signature (List return type instead of Collection). If you have written your own cartridge then you'll have to regenerate it. If one of your metafacades overrides org::andromda::metafacades::uml::ClassifierFacade::associationEnds then you'll have to change #getAssociationEnds()'s return type to java.util.List. Patch from Cédric Vidal. Fixes UMLMETA-61.cwbrandon
addorg.andromda.metafacades.uml.AssociationClassFacade now extends both org.andromda.metafacades.uml.ClassifierFacade and org.andromda.metafacades.uml.AssociationFacade. The property associationClass : boolean has also been added to ClassifierFacade and AssociationFacade so that templates and other metafacade s can act accordingly. Note that in order for the association classes in your model to be recognized by AndroMDA as such, you must use a UML editor that exports UML:AssociationClass in a XMI 1.1 compliant way. MagicDraw 9.x is not compliant in that respect but, there is an XSLT stylesheet that normalizes MagicDraw 9.x models into a UML:AssociationClass XMI 1.1 compliant file. It's available under JIRA issue UMLMETA-28. You can tell AndroMDA to apply that XSLT before processing in the configuration using transformations. Patch from Cédric Vidal. Fixes UMLMETA-61.cwbrandon
addThe hibernate entity factories now have additional constructors making it easier to construct them using a single call.draftdog
addValue objects will now have extra constructors making it easier to properly populate them, there will a constructor taking all properties (including the inherited ones), and a constructor taking only those properties that are required and/or read-only.draftdog
addA new namespace property has been introduced: columnNamePrefix . It allows you to have all column names prefixed with a certain character sequence.draftdog
addManageable entities now support generalization (inheritance).draftdog
addValue objects that have 'frozen' attributes or associations will no longer have a setter method generated for these features.draftdog
addUsing the enableTemplating namespace property it is now possible to enable templating (i.e. generics in Java). A class or datatype with template parameters will have them rendered in their fully qualified name if this property is set to true. In addition the Hibernate cartridge also supports strongly typed associations, instead of just return a java.util.Collection the cartridge will now return java.util.Collection<MyType>. Fixes UMLMETA-58.draftdog

Release 3.1 - 2005-11-10

TypeChangesBy
updateThe UMLMetafacadeModel-.xml.zip has been renamed to andromda-metafacades-uml-.xml.zip . This requires that you update any cartridge models that point to the old file name by doing a search and replace in your XMI.cwbrandon
fixThe generated Javadoc information for the generic facades as well as the cartridge facades is now correctly presenting the interfaces instead of the implementation classes, in doing so the documentation available in the respective meta-models is present. Fixes SITE-30.draftdog
addThe Spring cartridge now supports generating bean configuration for beans that do already exist (e.g. in a third-party library). Fixes SPRING-112.freter
updateIn order for the presentat ion metafacades to be made generic enough for use within other frameworks (such as JSF), the following additional tagged values have been renamed:
Old NameNew Name
@andromda.struts.action.success.message@andromda.presentation.action.success.message
@andromda.struts.action.warning.message@andromda.presentation.action.warning.message
@andromda.struts.view.field.required@andromda.presentation.view.field.required
@andromda.presentation.web.view.field.readonly@andromda.presentation.view.field.readonly
@andromda.struts.view.field.format@andromda.presentation.view.field.format
@andromda.struts.view.field.multibox@andromda.presentation.view.field.multibox
@andromda.struts.view.field.radio@andromda.presentation.view.field.radio
@andromda.struts.view.field.validwhen@andromda.presentation.web.view.field.validwhen
@andromda.struts.view.field.validators@andromda.presentation.web.view.field.validators
@andromda.struts.view.field.reset@andromda.struts.view.field.reset
@andromda.struts.view.table.maxrows@andromda.struts.view.table.maxrows
@andromda.struts.view.table.export@andromda.presentation.view.table.export
@andromda.struts.view.table.sortable@andromda.presentation.view.table.sortable
@andromda.struts.exception.type@andromda.presentation.exception.type
If you're using Magic Draw, the only thing you'll need to do is open your model and touch it (i.e. make a small change so its ready to be saved), and save it. If you're using another modeling tool that won't work with the andromda-profile, the best way to upgrade your model is to just open up the XMI and do a search and replace from the old to new values.
cwbrandon
fixFixed a bug in the code generation for RMI remoting. Fixes SPRING-106.freter
updateSlight change to the applicationContext.xml file. It will now be rendered more compact, resulting in a more readable XML outline in your favorite XML editor. Fixes SPRING-103.freter
addThe Java cartridge now generates Java interfaces from UML interfaces. Operations are generated as method signatures, instance attributes are generated as getter/setter signatures, classifier attributes are generated as static final constants with default values. Association ends are generated as getter/setter signatures. Fixes JAVA-23.mattes3
updateThe bpm4struts cartridge now supports arrays of custom types for tables, this is interesting when you are using dates in columns and you want to specify a custom format, in this case you'll just need to add a tagged value to the corresponding attribute of the array's type. This feature elegantly integrates with the use of value objects and POJO entities such as found in Hibernate. Fixes BPM-238.draftdog
updateHandling of options in bpm4struts has been improved, if you are using this feature please beware that the option values sent from the client to the server are no longer equal to the message keys used. This has been changed to sent the selection index instead 0,1,2,... and so on. Fixes BPM-230.draftdog
updateThe validation framework used in bpm4struts has been updated, it is now required to use Struts 1.2.7 and commons-validator 1.1.4 (later versions are also fine). Older projects using the latest bpm4struts cartridge will need to update these dependencies. The andromdapp:generate tool has been updated to take this change into account, so generating a new project will also solve this prob lem. Not updating these dependencies will break validation support in the presentation layer, you'll also see an exception stacktrace in the server output.draftdog
updateIn order for the presentation metafacades to be made generic enough for use within other frameworks (besides struts), the following tagged values have been renamed:
Old NameNew Name
@andromda.struts.action.type@andromda.presentation.web.action.type
@andromda.struts.action.tablelink@andromda.presentation.web.action.tablelink
@andromda.struts.action.form.scope@andromda.presentation.web.action.form.scope
@andromda.struts.action.resettable@andromda.presentation.web.action.resettable
@andromda.struts.view.field.type@andromda.presentation.web.view.field.type
@andromda.struts.view.field.tablelink@andromda.presentation.web.view.field.tablelink
@andromda.struts.table.columns@andromda.presentation.view.table.columns
@andromda.struts.action.redirect@andromda.prese ntation.web.action.redirect
@andromda.struts.view.field.calendar@andromda.presentation.web.view.field.calendar
If you're using Magic Draw, the only thing you'll need to do is open your model and touch it (i.e. make a small change so its ready to be saved), and save it. If you're using another modeling tool that won't work with the andromda-profile, the best way to upgrade your model is to just open up the XMI and do a search and replace from the old to new values.
cwbrandon
addTable links in bpm4struts are now allowed to target any arbitrary column, see the online store sample for an implementation (the title column on the second page sends the id value for that row when clicked). Fixes BPM-225.draftdog
addWith the bpm4struts cartridge it is now possible to submit selected rows, see the new documentation here: Submitting selected rows . Fixes BPM-169.draftdog
addSupport for error pages has been added to the bpm4struts cartridge, by default HTTP error codes 400, 403, 404 and 500 are supported, as well as exceptions not caught by Struts. Fixes BPM-213.draftdog
updateEach <> in the bpm4struts cartridge will result in the generation of a JSP page. This page will use include statements to construct its content fr om other .jspf files (jspf stands for JSP fragment), there will be a .jspf file for each action, table, set of page variables, etc..

The action JSP files have been renamed from my-action.jsp to my-action.jspf to be more consistent with the rest of the application. If you are overriding generated action JSPs and using the copy-over feature you will need to rename those files to have the .jspf extension or you application will not properly function.

draftdog
addJSP resources generated by the bpm4struts cartridge will no longer be directly accessible, all of them are now shielded by a Struts action. Fixes BPM-220.draftdog
addMost web pages will no longer be directly accessible, a default security constraint will be generated into the web.xml descriptor, even if security hasn't been enabled. A few exceptions exist such as the calendar popup or a JSP rendering JavaScript, but the most important use-case pages will be protected. Fixes BPM-219.draftdog
fixA small fix that might affect your project, the request URI used for displaytag tables in the bpm4struts cartridge has been changed, it will no longer reference the target page but the action trigger instead. This means data will be reloaded when you are trying to export or navigate.draftdog
addThe JBPM cartridge now provides a strongly typed interface to the modeled processes.draftdog
addSpring criteria queries now support firstResult and fetchSize .draftdog
updateThe andromda-profile has been broken up into sub-profiles: process, persistence, service, meta, etc. In order to successfully use this new profile with a Magic Draw model, you'll need to do 2 things: First, add several new dependencies to your project.xml (or regenerate a project using the andromdapp plugin), see this forum thread for more information. Second, you must open and save your model once to update all profile references, after that you should be able to successfully build.cwbrandon
addHibernate Cartridge now also supports "union-subclass" inheritance mapping for Hibernate 3.x projects. Fixes HIB-115.carloslcuenca
addAndroMDA can now handle more than one repository at a given time. This means you'll need to make a slight modification to your andromda configuration file (typically found in mda/conf/andromda.xml of your project) by defining the repositories element. Fixes CORE-77.cwbrandon
addThe andromdapp:generate tool is now able to generate projects using the jBpm workflow engine< /a> , selecting this option implies the use of Hibernate 3 (you will not longer be prompted for it).draftdog
updateThe andromdapp:generate tool now generates the versions of all dependencies into the build.properties file in the root of the project.draftdog
updateThe BPM4Struts tagged values @andromda.struts.usecase.activity and @andromda.struts.controller.usecase have been renamed to @andromda.presentation.usecase.activity and @andromda.presentation.controller.usecase.cwbrandon
addThe CRUD feature now supports many2many relationships between manageable entities. The page will contain a list in which multiple selections can be made, for each such navigable relation end. Fixes BPM-210.draftdog
updateChanges have been applied to the generic UML metafacade layer, more specifically in the way state machines are handled. The ActivityGraphFacade now generalizes a new facade called StateMachineFacade, and a few refactorings were required to properly model this new addition, most importantly, association ends have been renamed according. These changes can impact your code generation in case you are accessing these properties directly. It is also possible you have compilation errors if you have a custom facade generalizing the ActivityGraphFac ade. It will be sufficient to merely replace references to the activity graph by references to the state machine. In doing so you will remain complete backwards compatible with your previous code base. Fixes UMLMETA-42.draftdog
fixAn issue was fixed in the bpm4struts cartridge regarding the generation of dummy data in the controller implementation classes: the dummy inner class used for table form properties wasn't used at all, this would lead into compilation errors during build time.draftdog
addAdded a new "project cartridge" that generates a project for rich client development using Eclipse. Build script is Ant based. Eclipse is used to build .class files. Build script is for running AndroMDA, creating databases, and deployment to JBoss. Fixes ANDROMDAPP-3.joelkoz
updateUpdated AndroMDA Ant tasks to use the new project generation system of 3.2. To use an Ant based version of the app generator, execute the build.xml build script from the distribution's "ant" directory. Fixes ANT-30.joelkoz
addCreated a new a global namespace property named "toToTag" that can specify what text to prefix all comments in generated code that mark code that the end user needs to modify. This allows users of various IDEs to quickly see what modifications they need to make in a generated project (for example, Eclipse users can set the tag to "TODO", the default Eclipse task tag). Fixes MISC-37.joelkoz
updateSpring cartridge now generates default implementations for the "ValueObje ct to Entity" and "Entity to ValueObject" conversion routines found in entity DAOs.joelkoz
updateAdded support for Acegi Security when used in a Rich Client project. Currently works with Acegi 0.9.0joelkoz
addHibernate 3.0 has a feature that allows a DOM4J tree to be retrieved and saved from the database. A new transform type was added to each entity's DAO (TRANSFORM_XML). This allows objects in the database to be retrieved as a DOM4J XML tree rather than a POJO. Saving of DOM4J back to the database is also supported (as far as it is supported in Hibernate - the feature has problems with nested objects). To activate, add the following properties to your default namespace: "hibernateXMLPersistence" (set to true), and "hibernateXMLPersistIDAsAttribute" (usually set to true) Fixes HIB-141.joelkoz

Release 3.1-RC1 - 2005-06-19

TypeChangesBy
fixSchema2XMI is now able to map to database types with their precision defined. Fixes SCHEMATOXMI-1.cwbrandon
addProperty references are now defined in a namespace descriptor in which each namespace component (cartridge, translation-library, and metafacades must be registered within). Unfortunately this change is not backwards compatible with 3.0 cartridges, to upgrade 3.0 cartridges to be 3.2 compatible, you will need to create a META-IN F/andromda/namespace.xml descriptor per cartridge and register the cartridge and metafacades (as well as any namespace properties and its defaults) in this file. Fixes CORE-72.cwbrandon
addThe Spring cartridge can now generate for Hiberante 3 (as well as Hibernate 2 as before). Version 2 is the default, in order to change the version to 3, you must set the hibernateVersion namespace property with a value of 3 .cwbrandon
updateIn bpm4struts it is now also possible to have non-event parameters survive the trip to the next use-case, previously only event parameters would only be able to do that because they would be immediately present in the HTTP request. More is documented here.draftdog
addThe Hibernate cartridge can now generate for Hibernate 3 (as well as Hibernate 2 as before). Version 2 is the default, in order to change the version to 3, you need to define the version namespace property with a value of 3 .carloslcuenca
addMajor performance improvements have been added to the AndroMDA core, as well as a new feature called the AndroMDA Server which dramatically enhances the performance of AndroMDA.cwbrandon
addAndroMDA is now configured through a single XML configuratio n file. This means both the Ant task and Maven plugin just point to this file. Please see the configuration documentation for more information. Fixes CORE-67.cwbrandon
addManageable entities can now have non-required fields hidden if desired, it is also possible to use textareas instead of plain textfields. Fixes BPM-186.draftdog
updateImplemented an improvement in the bpm4struts cartridge related to the i18n of messages. It is now possible to have all messages normalized before they are being rendered into the resource bundle. This means that elements with the same name will use the same message key, previouly each element had its own message key which could easily lead to very large resource bundles. This feature is disabled by default but can be enabled by using the normalizeMessages namespace property and setting it to true . Fixes BPM-181.draftdog
addTemplate merging now occurs before template processing happens, this means you can merge in dynamic content into templates (previously it was only static content). Fixes CORE-55.cwbrandon
addWhen using manageable entities it is now possible to have binary data uploaded into 'blob' fields, just use datatype::Blob and a file-upload field will be generated automatically. It is not possible to actually show the value of a 'blob' field in the table, a default label will be shown instead. Fixes BPM-186.draftdog
updateIf you want anyone to be able to access a use-case when security is enabled, then simply do not associate any actors to it. This functionality replaces the <> stereotype. Fixes BPM-195.draftdog
fixFixed an issue that rendered the create method taking all required properties uncompilable when the multiplicity of an association end was 1..*. Fixes SPRING-73.cwbrandon
fixA set of improvements and new features for managing CRUD entities have been implemented
  1. An issue with Konqueror has been resolved: select boxes did not change value when clicking on the Copy link
  2. Comboboxes now retain their value after updating an entity
  3. Enumeration types are now properly handled when the literal type is a primitive
  4. Switching to an entity from the drop-down list will remember the current entity's (if any) identifier and will pre-select any corresponding list with this value
  5. Required fields now have an asterisk next to them
  6. Modeling a default value for an attribute is now supported: the field will have this as a default value
  7. An entity referencing itself would not be able to have an instance pointing to itself (foreign key being equal to the primary key), Hibernate would complain about different objects with the same identifier being loaded in the same session; this has been fixed
draftdog
updateWarning, error and success messages are now stored in session scope, the Struts request processes now properly handles this and removes them once they have been accessed the first time, this feature is available since Struts 1.2.4. Except for the dependency on Struts 1.2.4 this update is transparent. Fixes BPM-170.draftdog

Release 3.0 - 2005-05-08

TypeChangesBy
updatePackage filtering has been changed to use the correct '::' namespace separator instead of the java specific separator; this means that whenever you apply package filtering you'll have to use the '::' seperator between packages instead of '.' (see for Ant or maven.andromda.modelPackage.n.name for Maven).cwbrandon
updateGenerating CRUD for entities has been updated:
  1. Identifiers are only rendered when explicitly modeled (unless the manageableIdDisplayStrategy namespace property is used).
  2. Dates are handled in a special way, if no time information is given the generated code will assume the user wishes to search in the scope of an entire day instead of the exact date (matching that date at midnight).
draftdog

Release 3.0-RC2 - 2005-04-25

TypeChangesBy
addThe AndroMDA App Maven Plugin can now generate standalone war files (that can be deployed to Tomcat ). Fixes MAVEN-23.cwbrandon
addHibernate entities (which are marked as serializable) will now contain a field serialVersionUID in order to satisfy Versioning of Serializable Objects and Always Declare Serial Version Uid. Users can override the automatically calculated SUID by setting the tagged value "@andromda.serialVersionUID". Fixes HIB-87.freter
addMapping files can now extend other mapping files (this allows you to only add or customize the specific mapping entries you need and inherit the rest). For more information see extending and overriding mappings. Fixes CORE-40.cwbrandon
updateBpm4struts no longer generates the custom-resources.properties file, you will need to merge your own properties into the default bundle. If you project still contains JSP files with messages read from the custom bundle you can safely point them to the default bundle (by removing the bundle attribute). Read this page for more info: Bpm4Struts i18n.draftdog
addIt is now possible to merge the entire contents of one or more files into a merge-point. Please see the merge-point documentation for more information. Fixes CORE-62.cwbrandon
addIt is now possible to specify XSL transformation templates to be applied to the model(s) before model processing begins, please see the AndroMDA Maven Plugin or the AndroMDA Ant Task (depending on what you use) for more information. Fixes CORE-56.cwbrandon
addIt is now possible to use the <> stereotype on use-cases that need to be accessible for anyone, even when security has been enabled. Fixes BPM-107.draftdog
updateThe AndroMDA Ant task has been refactored out of the Core, and the package name has changed to org.andromda.ant.task, Maven users are not affected by this change, however Ant users will need to update the package from the old org.andromda.core.anttasks to the new org.andromda.ant.task.cwbrandon
addThe encoding can now be set for both the Ant Task and the AndroMDA Maven plugin, maven.andromda.outputEncoding is the required property for the Maven plugin, and the outputEncoding is the attribute for the Andromda Ant task. Please see the documentation for each for more information. Fixes CORE-59.cwbrandon
addThe new table-link feature in the bpm4struts cartridge now supports arbitrary parameters, they are no longer restricted to the ones that match a column. Fixes BPM-168.draftdog
addMeta element inheritance is now taken into account when the AndroMDA Core searches for mappings, this means that cartridge writers no longer need to create multiple mappings for each meta element class name, they can just map a base meta element class name and any inherited ones will automatically be mapped. Fixes CORE-19.cwbrandon
addThe meta cartridge now supports generation of multiple inheritance for metafacades. Fixes META-4.cwbrandon
addThe hibernate cartridge now allows to define indexes on the foreign key columns generated by entities associations.carloslcuenca
updateIt is now possible to model events that submit a table row in bpm4struts, also the way to model hyperlinks in table columns has changed. Please see the updated table documentation , as this feature is not backwards compatible with the old way of doing this, a necessary evil before releasing the final version of AndroMDA 3.0. Fixes BPM-162.draftdog
fixBpm4Struts now allows a new namespace property called defaultTableExportTypes, it takes a space-separated list of export types that will be used by default by the displaytag tables, valid types are any combination of csv, xml, excel and pdf, use none to disable exporting for tables. In addition the @andromda.struts.view.table.export tagged value can now also take the none value to turn off export for the corresponding table. Fixes BPM-163.draftdog
fixMappings are now required to use the correct '::' namespace separator istead of the Java specific '.' separator. This requires any custom type mapping files to replace all occurances of '.' with '::' (for example datatype.Long now needs to be mapped as datatype::Long within the JavaMappings.xml file). Fixes MISC-29.cwbrandon
fixClient-side validation for dates have been improved, the default one which is taken from commons-validator only supports a very limited subset of the features one would expect. We are now explicitely overriding this JavaScript routine in validator-rules.xml . Fixes BPM-160.draftdog
fixIt is now possible to seemlessly pass form data across different use-cases, the target form will be populated using the matching properties from the source form . Fixes BPM-157.draftdog
addThe Spring Cartridge DAO transformation methods can now be generated for UML datatypes as well (in addition to value objects), just draw a dependency from an entity to a datatype, and the corresponding transform method will be generated on the DAO. This is useful when you need to return a single field from an entity.cwbrandon
addThe Spring Cartridge DAOs now contain create and update operations that take a collection of entities (similar to the already existing DAO remove operation). Please note that this change requires you to upgrade Spring to 1.1.5 or above.cwbrandon
updateWhen generating value objects for webservices, the webservice cartridge no longer generates its own value objects but instead uses the ones generated from the java cartridge, it's just required to set the useArraysForMultiplicitiesOfTypeMany namespace property to true (so that arrays are generated for association ends with multiplicities of type many) and make sure you have the value-objects namespace property defined for the java cartridge.cwbrandon
fixMany-to-many relationships, where only a single table is involved, are not causing the Hibernate SchemaExport tool to choke anymore. This bug was rela ted to the generated foreign key constraint names. Fixes HIB-82.draftdog
fixThe calendar support has completely been rewritten, make sure your JSPs reflect the latest changes if you're using the copy-over feature. Fixes BPM-81.draftdog

Release 3.0-RC1 - 2005-03-27

TypeChangesBy
addThe Hibernate cartridge now generates readable foreign key constraint names where possible. This information is generated into the mapping files and is processed by the SchemaExport tool when generating the database schema DDL. The @andromda.persistence.foreignkey.constraint tagged value can be used to override the default name. Fixes HIB-81.draftdog
addIt is now possible to model page-to-page transitions with the bpm4struts cartridge. An intermediate Struts action will transparently be generated. Fixes BPM-154.draftdog
addThe Spring cartridge now has configurable transactions for Spring service operations. This change required the rename of @andromda.transaction.type to @andromda.ejb.transaction.type to prevent conflicts with the spring service transaction tagged value (@andromda.spring.transaction.type) and to be consistent with other cartridge specific tagged values. Fixes SPRING-52.cwbrandon
updateHibernate enumerations (generated by the Hibernate cartridge) now extend the regular java enumerations generated by the java cartridg e (so that they can co-exist peacefully). Note, you'll now need to enable the enumerations outlet from the java cartridge when using the hibernate enumerations. Fixes HIB-71.cwbrandon
updateThe <> stereotype has been renamed to <> . UML tools that do not import the latest version of the andromda profile will need to have the stereotype renamed by the user.draftdog
addThe caching of metafacade properties can now be disabled (even on a per cartridge basis), just use the enableMetafacadePropertyCaching namespace property. Most properties are being cached now for reasons of performance.draftdog
addThe spring cartridge now supports nullable attributes in criteria finders. Fixes SPRING-47.freter
fixA bug in the OCL query translation library was causing some relational operations (such as '<>' and '<=') to be incorrectly translated to '>' , this has been fixed. Fixes OCL-9.cwbrandon
addThe bpm4struts cartridge now supports exporting to PDF, existing projects will need to include the IText v0.99 dependency. Add this dependency to your /web/project.xml .draftdog
addThe spring cartridge now supports modeled hibernate criteria finders (Thanks to Stefan Reichert and Peter Friese). Fixes SPRING-38.cwbrandon
update. Fixes CORE-15.cwbrandon
addThe bpm4struts cartridge now generates a displaytag.properties file, the labels used by the displaytag library are not internationalized, you will need to update the library to version 1.0. Fixes BPM-13.draftdog
fixBpm4Struts templates have moved into cartridge subdirectories and have been given proper names, make sure to update your own templates if you are overriding these resources.draftdog
addThe bpm4struts cartridge now support displaytag table decorators. Just use the @andromda.struts.view.table.decorator=true tagged value on your table to have an empty decorator generated for it. By default the decorator class names end with Decorator, but this can be changed using the tableDecoratorSuffix namespace property. Don't forget to configure the decorators outlet to point to a directory in your existing project. The generated decorators will only be generated the first time, they will not be overwritten. Fixes BPM-147.draftdog
addThe Hibernate Cartridge now supports lists, sets, maps and ba gs for mapping collections. Fixes HIB-20.carloslcuenca
fixAn issue with the bpm4struts multibox feature has been resolved: the checkbox widget was not being rendered and a link was present instead. This problem manifested itself in the online-store sample. Fixes SAMPLES-6.draftdog
fixBpm4Struts now correctly exports to all known displaytag supported formats, there was a bug where simple properties were being exported with surrounding HTML tags.

Caution: the use of @andromda.struts.view.table.export has changed! It is no longer recommended to specify a space separated combination of formats, instead it is now best to specify multiple values (MagicDraw allows you to add values from a combobox). The previous way is still supported but this might change in the future.

Fixes BPM-127.
draftdog
addAdded a new tagged value for bpm4struts: @andromda.struts.view.field.validators. It allows you to specify your own validators for parameters, just don't forget to use the merge point in validator-rules.xml. Fixes BPM-110.draftdog
addIt is now possible to specify multiple formats for parameters using the @andromda.struts.view.field.format tagged value, thanks to a contribution from Kishore . Fixes BPM-138.draftdog
addBpm4Struts now supports a new namespace property: actionPathPrefix, it allows more control on the way action paths are being rendered in struts-config.xml.draftdog
addThe Spring Cartridge and Hibernate Cartridge now supports EhCache as the second level cache manager. Properties, associations, and queries can be configured to be cacheable.carloslcuenca
addThe cartridge now supports dynamic-insert and dynamic-update hibernate properties for entities. Fixes HIB-61.carloslcuenca
addAll existing cartridges emitting Java source code now include a license-header merge point, just use the merge-mapping feature to have it replaced with your own license statement, the merge-point is called // license-header java merge-point . Fixes MISC-24.draftdog
fixSuperfluous *.hbm.xml files are no longer generated when a subclass strategy is used with hibernate inheritance. Fixes HIB-48.cwbrandon
fixWhen using a class strategy with hibernate inheritance, not-null values are now correctly set to "false" for all subclass properties. Fixes HIB-58.cwbrandon
addThe Spring Cartridge now provides Spring remoting support (thanks to Peter Friese). Fixes SPRING-34.cwbrandon
addA new attribute has been introduced on the template element within the cartridge descriptor (andromda-cartridge.xml). It's called outputOnEmptyElements and allows a cartridge writer to determine whether or not a file should be output when there are no elements collected when using the outputToSingleFile flag.cwbrandon
fixThe Spring Cartridge now generates a valid DAO inheritance hiearchy when inheritance between entities is modeled. Fixes SPRING-37.cwbrandon
updateThe Spring Cartridge must now be used in conjunction with the Hibernate Cartridge when using Hibernate persistence.cwbrandon
updateThe pattern matching exception handler gen erated by bpm4struts now correctly handles exceptions that are instances of java.lang.Throwable and any of it's decendants (previously it only handled java.lang.Exception instances). Fixes BPM-136.cwbrandon
updateThe bpm4struts cartridge no longer requires you to model the <> , <> and <> stereotypes. These stereotypes can be implied by the model and therefore are considered redundant. This has only been made possible by the recent metafacade mapping changes which allow the mapping based on the target metafacade's properties. Fixes BPM-34.draftdog
addMetafacades can now be mapped to meta model objects based on their properties. This allows us to define metafacades for things that can be inferred by certain conditions of the model instead of needing to use stereotypes for everything. Fixes CORE-6.cwbrandon
fixNavigable entity association ends are now required to have a public visibility (an OCL constraint has been added to validate this). Fixes HIB-53.cwbrandon
fixEntity attributes are now required to have a public visibility (an OCL constraint has been added to validate this). Fixes SPRING-26.cwbrandon
updateThe Spring Cartridge and Hibernate Cartridge now generate child cascade's correctly based on whether or not t he default-cascade for the entity is set to all or save-update. Fixes SPRING-33.cwbrandon
updateThe Meta Cartridge now generates real inheritance (not delegated) when the super metafacade class is in the same package. Delegated inheritance is now only generated when the super metafacade's package is different.cwbrandon
updateAll usages of @andromda.struts.view.field.type=radio must now omit any trailing parameters, so specifying "radio 4" or "radio a,b,c" is no longer allowed. The trailing parameters go into a new tagged value called @andromda.struts.view.field.radio and can only be used if the field type specified is of type radio.draftdog
addEager loading of relationships is now correctly supported when using composition. Fixes SPRING-29.cwbrandon
addBpm4struts is now able to generate id attributes in the web.xml descriptor, just use the generateWebXmlIds namespace property.draftdog
addSpring DAO names are now completely configurable. Patterns can be configured in the namespace properties section. Fixes SPRING-23.cwbrandon
addEntity query operations (i.e. finder s) can now be determined though modeling the query flag as true on the operation (for now the finder method stereotype still works, however it is now deprecated in favor of this query flag and will be removed in the future). Fixes UMLMETA-13.cwbrandon
addNow it is possible to enable Hibernate proxies for Entities in the hibernate Cartridge. Fixes HIB-33.carloslcuenca
addAn external configuration file can now configure logging for AndroMDA. See loggingConfigurationUri for information on how to use it with Ant. See maven.andromda.loggingConfigurationUri for information on how to use with Maven. Fixes CORE-16.cwbrandon
addMetafacades can now be mapped on the basis that more than one stereotype is required. Fixes CORE-39.cwbrandon
updateCompletely removed XDoclet from the Hibernate cartridge.cwbrandon
addAdded a howto for the Spring cartridge.draftdog
addHibernate entities in the Spring cartridge now have a factory operation on each entity that allows creation of new entity instances (this elminiates the need to call the implementation specific constructor for each entity when constructing a new instance). Fixes SPRING-20.cwbrandon
addProvide the ability t o have entity association lazy loading within the service tier (all entity associations should be able to be lazily loaded within ALL service operations, as well as ALL DAO operations).cwbrandon
fixImplemented enumeration support for the Hibernate and Spring cartridges. Fixes HIB-15.draftdog
addALL OCL string operations are now supported by the Query Translation Library Fixes OCL-1.cwbrandon
fixTemplate object properties can now be specified more than once in the andromda-cartridge.xml. Fixes CORE-38.cwbrandon
addThe Hibernate and Spring cartridges are now able to define query cache settings. Fixes HIB-34.carloslcuenca
fixThe Query Translation Library was using the OCL exists() expression incorrectly. Changed to use the correct includes() expression instead.cwbrandon
addThe Query Translation Library is now able to correctly handle order by expressions (t his is accompished using the standard -> sortedBy() construct in OCL.cwbrandon
fixThe Query Translation Library is now able to correctly handle grouped expressions. Fixes OCL-7.cwbrandon
fixThe Spring cartridge is now able to correctly auto-detect when the inverse flag should be true/false on associations within the hibernate cfg.xml files. Fixes SPRING-18.cwbrandon
fixFixed a *critical* bug in bpm4struts: when an action state would defer to more than one controller operation the action state's forward would be called after each operation call. This is very dangerous in combination with the session because code is not executed in the expected order anymore.draftdog
addAll profile information has been externalized into mapping files. This means that its now VERY easy to change the default stereotype names, tagged values, or datatypes. You can use the new profileMappingsUri to point to a mappings file that overrides any default profile values. Fixes CORE-32.cwbrandon
addBpm4Struts now supports final states pointing to locations or resources outside of the scope of the UML model. This is achieved by giving the final state a name starting with either / or http:// , alternatively you can make use of the "hyperlink" feature as available in some UML tools, just make sure to hyperlink t o a web page (sometimes UML tools distinguish between different types of hyperlinks). Fixes BPM-96.draftdog
updateThe JMI 1.4 API has been published on the AndroMDA website, you can find it in the navigation menu under the "developers" section. Fixes SITE-14.draftdog
updateThe tagged value @andromda.ejb.transactionType has been renamed to @andromda.transaction.type (this was needed because of that fact we already had an @andromda.transaction.type and we don't need duplicates).cwbrandon
updateThe andromda-profile-XXX.xml.zip has been updated to restrict the values you can assign to a tagged-value, enumerations have been used instead of plain String types. Unfortunately most UML tools will not support this feature, Poseidon included; the reason the fact that tagged-value references are not implemented. MagicDraw, however, has an impeccable support and you'll find it even easier to model than before.draftdog
addAdded a compatibility list of UML tools that have been tested, courtesy of Daniel S. Haischt . This list has been added to the website here .draftdog
addAdded the slides used for the presentation at the university of Antwerp, you can download them at the resources page.draftdog
fixFix minor Spring cartridge bug ( released with 3.0M3), operations on the service base class now have the correct protected access.cwbrandon
updateBpm4Struts now properly supports datatype.File in controller operations too, this was still missing since the form interfaces where not properly exposing the file member. This fix is only interesting to you in case you're making use of the file-upload support. Fixes BPM-112.draftdog
updateThe Spring cartridge has been updated with an improvement that will make it easier to transform entities into other objects such as value objects. Simply draw a dependency from an entity to a value object and the entity's DAO will support transformation into that value object on it's methods (i.e. when loading an entity instance, or finding a list of entity instances you can optionally pass in a transformation flag argument - by default no transformation is done). You will need to implement the transformation yourself in the entity's DAO, but calls to this method are automatically invoked depending on the transformation flag you are using.draftdog

Release 3.0M3 - 2004-12-26

TypeChangesBy
addThe ability to define the OuterJoin association fetching strategy within an association end within the Hibernate Cartridge Fixes HIB-27.carloslcuenca
addRefactored exception handling. Exceptions are now recorded in exception dump files. The file name convention is timestamp.exc. Timestamp takes the form YYMMDDHHMMSS[_SUFFIX ] . Suffix is an incrementing number which is used when two or more exceptions occur in the same second.amartinwest
addThe ability to filter (or select) the cartridges you want to perform model processing has been introduced. Please see maven.andromda.cartridgeFilter for more information on how to use this new feature with the maven plugin, or cartridgeFilter for more information on how to use it directly with the AndroMDA Ant task. Fixes CORE-33.cwbrandon
addMerge support has been enabled: A new namespace property named mergeMappingsUri has been introduced which allows you to defined mapping files for merging. These files behave just like the other mapping files (i.e. languageMappings, sqlMappings, etc) and can be used within each namespace or within the default namespace. Please see mergeMappingsUri for more information. Fixes CORE-23.cwbrandon
addTranslation of OCL to Hibernate QL has been improved to use named (instead of unnamed) parameters, please see the issue for more detailed information. Fixes OCL-5.cwbrandon
addThe Spring cartridge DAO business operations are now a ble to lazily load relationships between entites, they also have required parameter checks generated (just like all Spring service operations).cwbrandon
addThe Spring cartridge has a new feature: <> operations can now be toggled to classifier or instance scope; the former will put the operation on the entity's DAO, while the latter will simply put the operation into the entity implementation class. Most UML tools allow this feature on an operation by selecting the desired state in the operation's properties dialog. Fixes SPRING-9.draftdog
addThe bpm4struts-cartridge now generates more styles in the CSS files that are created for each <> , by default these styles are empty but it is very easy to customize them to fine-tune the layout for your pages.
  1. form labels and fields
  2. form buttons (submit and reset)
  3. displaytag:table headers
  4. displaytag:table columns
Fixes BPM-114.
draftdog
fixIn bpm4struts it is now possible to send parameters from one action state to another, and this in the scope of an action; it is therefore not needed anymore to have parameters entering or exiting a page, any action state will do. These parameters will also be recorded in the corresponding action form.draftdog
fixBpm4Struts internal plumbing has significan tly improved, this will be most noticeable in the performance. This fix is the first part of a series of improvements in order to support large and complex models which would yield JVM overflow errors. Fixes BPM-102.draftdog
fixIn bpm4struts you must now draw dependencies from the <> to the associated <> classes instead of simply using associations.draftdog
addThe AndroMDA Hibernate cartridge supports hibernate's Three Inheritance Strategies and allows root entities to be generated as interfaces.amwest
addThe AndroMDA Spring cartridge can now model (and have generated) full role based security for the optional Session EJB wrappers.cwbrandon
addThe ModelElementFacades association to DependencyFacade has been renamed from dependencies to targetDependencies . This was necessary due to the fact the dependencies returned were target dependencies only and did not include source dependencies. A new association was added to DependencyFacade called sourceDependencies which can retrieve all source dependencies for a model element.cwbrandon
addThe AndroMDA Web Service cartridge can now have web services secured through modeling.cwbrandon
addThe bpm4struts generated web.xml file now contains some merge points, similar to XDoclet. If you want you can completely ignore them because they are commented out. But for some people it might be useful to insert fragments into the web.xml without overriding the template.draftdog
addAdded support for lazily loaded relationships collections in Hibernate and Spring, it is sufficient to use the aggregation kind of an association end (composite is not lazy, the other kinds are lazy) but you can always override the default values using the newly define @andromda.hibernate.lazy tagged value.draftdog
addBpm4Struts now supports file uploads, just use the pre-defined datatype.File from the profile (or create it yourself) on an event parameter.draftdog
addAdded new tagged value to BPM4Struts called @andromda.struts.view.field.reset which allows one to specify specific fields that should be reset on a transition. This is useful when you want certain fields to be res et after action execution but you don't want the entire form to be reset.cwbrandon
addfrom the exception, and add it to the request as a struts action error. You then place this new key in your custom message resources with a corresponding message, and next time the error occurs this new message will be displayed (instead of the exception). The exception handling pattern and a few other related properties are configurable, you can learn more about them on BPM4Struts Namespace Properties . NOTE: if the pattern can not be found in an exception processing continues as normal and the exception will be displayed.cwbrandon
addTable and action now have their own dedicated CSS style, per generated JSP another CSS file will be generate by bpm4struts; in this file you can locally override any defined styles.draftdog
fixThe 'validwhen' validation feature has finally been implemented. It is now possible with bpm4struts to additionally validate a specific field check for certain runtime conditions. This feature is mostly used to confirm passwords; this example has been added to the online-store.draftdog
addSpecifi c generated pieces of JSP code has its own style, a stylesheet is generated for each page.draftdog
updateThe bpm4struts cartridge now overwrites all jsps pages and stylesheets upon regeneration. This is very important for users of earlier versions.draftdog
updateUpdated the getting started guide.draftdog
updateThis update is the last one that will impact the way users model their Struts application. A change was needed due to a missing feature: "multibox". In order to properly fix it some other changes were required too.
  1. You can now put any widget in a table, you can do that by simply linking an event parameter using the @andromda.struts.view.field.tablelink tagged value to an incoming table collection. You must of course link to an existing table column.
  2. Previously performing this step would simply create a hyperlink, now you would need to set the event parameter's @andromda.struts.view.field.type tagged value to 'link' in order to achieve that.
  3. Due to HTML limitations you can only make links to the same table from a single action. The reason is that there can be only one form around the table. If you still want to have multiple actions working on the same table you will need to patch in manually using JavaScript (setting the target action URL).
  4. If you want to use the multibox feature you need first to model a collection or array page-variable that contains the values against which to match. Next you create a table link, thereby selecting the table column. Finally you set the field type of the event parameter to something like this (assuming the multibox collection is called 'myValues') @andromda.struts.view.field.type = multibox:myValues
  5. The online store has been extended with an example of this, just open the model and check out the 'buy this item' action. The 'test' and 'available' parameters are rendered as widgets in the table, the 'available' column is a multibox. Please also note how the multibox collection (called 'availableItems') is preloaded by the 'loadItems' controller operations.

I strongly recommend not relying too much on the widgets-in-table feature yet, it is experimental and is likely to change in the future. The reason it has been put in is to see whether or not it is usable. A restriction currently is that you will not have any way to submit the changes you make in the table, for that to work we would need to apply some updates to the rendered rows so a submit button could properly trigger the sending of the form.

Fixes BPM-83.
draftdog
addThe AndroMDApp Maven plugin has been improved to include Spring and the WebService cartridges as options when generating an AndroMDA powered Maven application.cwbrandon
fixAndroMDA now automatically assigns a suitable name to association ends with a 'many' cardinality and an empty name. Before only the name of the target classifier was taken into account, now it is analyzed and a proper (English) name is constructed (word:words, key:keys, property:properties). If your code relies on such unlabeled association ends it might be possible that an AndroMDA run on your UMl model will result in code that is uncompilable in combination with your existing implementation classes, a simple rename will be sufficient.draftdog
updateThe metafacades now have their properties no longer modeled as operations but as attributes, wherever possible. This has no effect on code already generated. In addition boolean accessor methods now have their names properly rendered according to the Java Bean specification (getXXX becomes isXXX). Fixes UMLMETA-3.draftdog
updateThe Xdoclet dependency, WebDoclet to be exact, has been removed from the bpm4struts-cartridge; now the struts-config.xml and validation.xml files are generated directly by AndroMDA. The Ant-tool and the maven plugins, used to generate a default AndroMDA project, have also been updated to reflect this change.draftdog
addThe AndroMDA Spring cartridge (a cartridge based on th e Spring Framework ) has moved from the contrib module to the main andromda codebase. To learn how to use this new cartridge, please see the the documentation herecwbrandon
updateThe latest major update has been improved: it is now no longer needed to add tagged values onto controller operation arguments. The cartridge will auto-detect the appropriate value. In addition more validation constraints have been added to inform the user of any cartridge modeling errors. Fixes BPM-72.draftdog
updateThe latest major bpm4struts update did not prove to be a very elegant solution, this led us to revise the implementation and come up with an alternative one. Here's a list of what has changed:
  1. parameters with the same name and in the same use-case are required to also be of the same type
  2. form fields do no longer have their name prefixed with the name of the action
  3. forms now implement an interface for each controller operation they defer to
  4. it is now needed to put arguments in the controller operations, these arguments will be available in the form interface that is accessible programmatically
  5. these arguments will need to have the @andromda.struts.view.field.type tagged value set to 'select' in case you want to prepopulate a list of entries (see sam ples)
  6. currently it is also needed to specify the table columns (just as you would on a collection-type page variable) in case the argument maps onto an event parameter which is displayed in tabular format, but this will be solved soon

All of this means this will break the compilation of your current codebase using one of the previous AndroMDA versions.

Fixes BPM-71.
draftdog
updateOverloaded a controller method for accessing the session objects, the new method allows to choose whether or not to create the session in case it does not exist yet (default is true ). Also implemented some improvements in handling the session objects and the session itself. Fixes BPM-32.draftdog
addThe andromda task and maven plugin, now support an attribute called failOnModelValidationErrors which allows us to turn on/off whether or not model processing should fail/stop if ANY model validation errors occur.cwbrandon
updateThe hibernate cartridge now generates its own hibernate.cfg.xml which means the jboss-service.xml generated by xdoclet is no longer needed. With this change, multiple new namespace properties were added for configuring this configuration file.cwbrandon
addJust like you can use success messages on action transitions we now have the possibility to use warning messages, simply add the tagged value @andromda.struts.action.warning.message to the action transition and set its value to the message you want to have displayed (will be i18n'ed). Warning messages will be rendered in yellowish. In addition all messages are now supported on any transition, and you may have more than one message on such a transition (unlimited). Fixes BPM-69.draftdog
updateThe controllers associated to session objects have different methods to access those objects. The 'clearXXX' method has been renamed to 'removeXXX'. Fixes BPM-32.draftdog
addA new namespace property 'versionProperty' has been added, it is used to determine which property/attribute name to use for versioning entities.cwbrandon
addThere is a new link in the download section (menu), it is called 'resources' and it will contain resources on AndroMDA such as tutorials and slides.draftdog
addA new namespace property is available to set a default date format to use for date fields in your bpm4struts, not specifying this value will use dd/MM/yyyy as the default date format.draftdog
fixThis change fixes some issues with the most recent updates for bpm4struts:
  1. We no longer have the controller operation interfaces the forms were implementing
  2. Instead we have a controller operation for each different action that defers to them, this means you sometimes have the same operation more than once with only a different argument type for the form. This seems to be the most optimal and realistic implementation, forms cannot be shared using interfaces aggregating the fields because field names carry the action name as a prefix and this cannot be changed because in that case validation rules would be impossible to determine for fields that have the same name and type over different page actions.
  3. It should now be possible to easily send parameters between use-cases
draftdog
updateControllers and their implementation have changed names. The abstract parent classes now no longer have the 'Interface' suffix, the descendants have the 'Impl' suffix. This has been done for consistency with other cartridges and because it is cleaner not to have any suffix on the interface or abstract parents.draftdog
updateIt is now possible to specify labels and values differently for selectable parameters such as in comboboxes and lists. The form containing such a parameter will have two new properties: 'valueList' and 'labelList'. If you do not specify the 'labelList' property it will assume the values of the 'valueList'. The backing list has been made readonly because it will construct a special array to be handled by the Struts tags. Fixes BPM-44.draftdog
updateController implementation do not get form types passed in the argument, instead there is an interface aggregating common form properties, this way forms of several different types implementing this interface can be passed in. This elegantly allows a single controller operation to be called from different actions (which each have their own form).draftdog
updateA major change has been incorporated into the cartridge, you will have to be very careful when migrating to a version after this date. ActionForms are back into the request scope so their properties will not be persisted into the session as was the case before. Bpm4Struts now is intelligent enough to determine which properties should be available in which ActionForm (even in ambiguous cases such as cyclic processes or when multiple actions target multiple pages without a 1-to-1 mapping. The reason for this drastic change was a possible bug in the server-side validation framework. It would happen that forms were not properly recognized on the server while the client could parse them fine. In order to properly migrate you should at least need to fix the controller implementations (you will have compilation errors otherwise), unfortunately you will need to update all JSP pages. The changes are minimal so you might consider looking at the differences manually (we are back at using the Struts HTML tag library instead of the plain old HTML tags directly).draftdog
updateThe validating flag has been renamed to the more a ppropriate xmlValidation. At the same time a new modelValidation flag has been added that allows us to turn on/off model validation during processing. By default model validation occurs, however its sometimes nice to turn it off for performance reasons (i.e. you have a really big model).cwbrandon
addWe now have session objects, these instances can be handled through protected controller methods. Controller interfaces are abstract classes now, so make sure you use 'extends' instead of 'implements' when using the cartridge after this date. Fixes BPM-32.draftdog
updateThe namespace property 'breadCrumbs' (boolean) has been replaced by the property 'maxBreadCrumbs' (integer). To disable breadcrumbs specify zero. Additionally the tabledecorator has been removed, it was only used to render specific HTML code but a more elegant solution has been put in place. Fixes BPM-36.draftdog
updateA new namespace property has been added that can be used for any cartridge, its called mergeLocation, for more information see Overriding cartridge resources.cwbrandon
addFor those who want it online help will be generated for your application, by default it is enabled. You can override this by setting the 'onlineHelp' property to 'false' in your bpm4struts namespace. It currently supports documentation on use-cases, action transitions, event parameters and pages. Fixes BPM-48.draftdog
updateTooltips are now handled in JavaScript. We had to remove the doctypes for that to work properly in Firefox and Mozilla. It will be improved in the future. The reason we have these JS tooltips is that now it can also support images and text of arbitrary length.draftdog
updatePattern masks for input field validation must not include the leading '^' and trailing '$' anymore. Some CASE tools such as MagicDraw don't handle them well.draftdog
updateThe table link tagged value changed name: @andromda.struts.action.tablelink is now @andromda.struts.view.field.tablelink , the reason is that the location for this tagged value is the parameter and not the transition (as in the very beginning).draftdog
updateForm bean fields now have the name of their action prepended to their name (only for event parameters, page variables are unchanged). Using bpm4struts after this date will require you to update your controller implementations or a compilation error will occur. This change was needed in order to allow event parameters to have the same names in a single use-case. Without this feature the form would contain the same field name more than once, and that is not allowed in Java.draftdog
addA new namespace property has been added: 'dummyData'. You can either give it a 'true' or 'false' value. The default is 'true'. If the value is 'true' a 'dummy data' will be rendered in places like the controller, if set to 'false' this dummy data will not be generated.draftdog
updatetoJavaClassName and toJavaMethodName in StringUtilsHelper have been renamed to more language generic "upperCamelCaseName" and "lowerCamelCaseName".cwbrandon
addA new namespace property has been added: 'tableNamePrefix'.cwbrandon
addA new namespace property has been added: 'breadCrumbs'. You can either give it a 'true' or 'false' value. The default is 'true'. If the value is 'true' a 'history' is rendered at the top of each page, also known as breadcrumbs: it allows you to navigate back and forth between the pages already visited. The scope of the breadcrumbs is restricted to the context use-case. Fixes BPM-36.draftdog
addRequired fields now have an asterisk rendered next to their label. (Only if validation has been enabled) Fixes BPM-39.draftdog
addAdded the following tagged value: @andromda.struts.view.field.tablelink . You can use it to create hyperlinks to actions in the columns of a table. Fixes BPM-45.draftdog
addDate input field now have a popup calendar to choose the date from and h ave it automaitcally rendered into the appropriate format. Fixes BPM-23.draftdog

Release 3.0M2 - 2004-08-09

TypeChangesBy
addCartridges now allow generation based on metafacade type (and optionally its properties), in addition to stereotypes.cwbrandon
addIt is now possible to create a hyperlink from a final state to a use-case and have the cartridge interpret it as the next use-case to navigate to. Fixes BPM-14.draftdog
updateThe maven build has been changed
  • All artifacts now reside in the 'andromda' groupId of the maven repository. This means for those using Maven for their projects, they'll need to specify 'andromda' as the groupId (for dependencies) instead of the old 'andromda-cartridges' for cartridges and 'andromda-translation-libraries' for translation-libraries.
  • Bootstrap dependencies are now stored in CVS. They are renamed to the current version and copied to the remote repository during the build ( they used to be stored remotely).
cwbrandon
updateThe Ant task was changed to allow multiple models to be specified using a URL. This included adding a new element and eliminating the modelURL attribute from the task.cwbrandon
addEnabled support for tools that do not allow putting graphs inside use-cases. It is now sufficient to put the @andromda.struts.usecase.activity tagged value on the use-case and assign it the name of an activity graph.draftdog
addEnabled support for tools that do not allow assigning model elements to classifiers. It is now possible to put a @andromda.struts.controller.usecase tagged value on the controller and assigning it the name of a use-case.draftdog
addTagged value prefix of "@andromda" was added back to all tagged values. It was causing naming conflicts with XDoclet tags when it was just "@".cwbrandon
addAdded new resource element to the andromda-cartridge.xml that allows non template resources (like images, jars, etc) to be included and output from a cartridge.cwbrandon
updateAll JSPs have been updated to render XHTML 1.0 compatible content, the content-type declaration has been updated and any HTML comment has been changed to comply to the XHTML standard. You will need an XHTML compatible browser to properly view the pages. By default bpm4struts generates HTML 4.0 compliant JSPs but by setting the 'xhtml' namespace property to 'true' it will render XHTML.draftdog
updateThe 'sheet' attribute in the template element has been renamed to 'path'.cwbrandon
addIn bpm4struts there is a new namespace property: xhtml. The property 'securityEnabled' has been renamed to 'security'.draftdog
updateThe 'overWrite' attribute in the template element has been renamed to 'overwrite'.cwbrandon
addA new feature has been added that will allow users to import legacy database schemas and have an XMI file generated from them. This will make it easier to port development of legacy systems to AndroMDA.cwbrandon
addA new cartridge is available for publishing services as web-services, this cartridge is to be used in combination with either the EJB, Hibernate, or Java cartridge.cwbrandon
addTabular data can now automatically be displayed using paging, sorting and exporting features, the displaytag tag-library is used.draftdog
addOCL support provides the following features:
  • Metamodels will now have their constraints validated during code generation.
  • Finder queries for persisted entities can now be expressed using OCL.
cwbrandon