Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "MDT/UML2/New and Noteworthy/Luna"
(New and Noteworthy for Luna m3) |
(UML2 Luna milestone 4) |
||
Line 32: | Line 32: | ||
This milestone was completed on December 20, 2014. | This milestone was completed on December 20, 2014. | ||
+ | |||
+ | ====Bug [https://bugs.eclipse.org/bugs/show_bug.cgi?id=180744 180744]==== | ||
+ | |||
+ | The '''UML Editor''' menu sports a new '''Element → Expand Templates...''' action that reifies template bindings, replacing (''in situ'') the binding relationships in the bound element with elements merged from the templates. Constructs supported include | ||
+ | |||
+ | * template bindings for packages, classifiers, and operations | ||
+ | * bindings to multiple templates | ||
+ | * multiple bindings to the same template | ||
+ | * substitution of operands in name expressions (useful for disambiguating parameter substitutions from multiple bindings) | ||
+ | |||
+ | So, for example, a "deployment system" package that binds the same "system" package template twice, once for hardware components and once for software components. <tt>SoftwareSpec</tt> and <tt>HardwareSpec</tt> substitute for the <tt>ResourceKind</tt> in the template and the name of the <tt>Allocation</tt> class in the template is an expression in which the first segment is substituted by default with the string "Resource". | ||
+ | |||
+ | [[Image:uml2nn_180744before.png]] | ||
+ | |||
+ | The template expansion algorithm is based on package merge. Most of the options are defaulted to values appropriate for template expansion, but the options for handling redundant generalizations and capabilities trace annotations are left to the user to decide. | ||
+ | |||
+ | [[Image:uml2nn_180744expand.png]] | ||
+ | |||
+ | The result of the expansion shows the substitution of parts of the name expressions for the <tt>SoftwareAllocation</tt> and <tt>HardwareAllocation</tt> which otherwise, using the default substitution, would both be named <tt>ResourceAllocation</tt>. Also, a trace annotation references all of the elements in the expanded package that were merged from the <tt>system</tt> template (just as in package merges). | ||
+ | |||
+ | [[Image:uml2nn_180744after.png]] | ||
+ | |||
+ | ====Bug [https://bugs.eclipse.org/bugs/show_bug.cgi?id=403374 403374]==== | ||
+ | |||
+ | UML-to-Ecore conversion (and, consequently, code generation) now supports transformation of OCL invariant constraints in EMF's non-API style for classes. These generate code only in the <tt>XyzValidator</tt> class, not as validation operations in the model API. This enhancement provides parity with constraint transformations for data types, which in EMF only support the non-API style of validation. | ||
+ | |||
+ | This model: | ||
+ | |||
+ | [[Image:uml2nn_403374model.png]] | ||
+ | |||
+ | Generates this code: | ||
+ | |||
+ | [[Image:uml2nn_403374code.png]] | ||
+ | |||
+ | ====Bug [https://bugs.eclipse.org/bugs/show_bug.cgi?id=412912 412912]==== | ||
+ | |||
+ | The EMF.Edit item providers for the '''default''' attribute of the UML '''Property''' and '''Parameter''' metaclasses are improved to create values of more appropriate type than '''LiteralString''' where possible: | ||
+ | |||
+ | * for property or parameter of an '''Enumeration''' type, an '''InstanceValue''' referencing the '''EnumerationLiteral''' selected by the user from a pick-list | ||
+ | * for property or parameter of '''Boolean''' type, a '''LiteralBoolean''' with the value selected by the user from a <tt>true</tt>/<tt>false</tt> pick-list | ||
+ | * for property or parameter of '''Integer''' type, a '''LiteralInteger''' with the value entered by the user as text | ||
+ | * for property or parameter of '''UnlimitedNatural''' type, a '''LiteralUnlimitedNatural''' with the value entered by the user as text | ||
+ | * for property or parameter of '''Real''' type, a '''LiteralReal''' with the value entered by the user as text | ||
+ | * in other cases, a '''LiteralString''' is created | ||
+ | |||
+ | [[Image:uml2nn_412912.png]] | ||
== Milestone 5 == | == Milestone 5 == | ||
This milestone was completed on January 31, 2014. | This milestone was completed on January 31, 2014. |
Revision as of 12:21, 27 January 2014
MDT UML2 New and Noteworthy items for the Kepler release.
For a complete list of the enhancements provided in the Luna release, see the Luna Project Plan.
Contents
Milestone 3
This milestone was completed on November 15, 2013.
Bug 251963
The UML2 package merge algorithm now injects documentation into the generated API to indicate the source package of classes, properties, and operations that originate in merge increments when the Capabilities merge option is enabled. For API elements defined in the receiving package of the merge, no such annotation is included in the documentation.
Bug 268444
The Apply Stereotype action's dialog is enhanced to let the user specify an alternative resource in which to store the resultant stereotype application(s).
Bug 397508
A new class org.eclipse.uml2.uml.validation.UMLTraversalStrategy implements an EMF Validation Framework "traversal strategy" that applications may register to let validation operations discover the instances of stereotypes that are attached to UML model elements, to validate them.
Bug 409396
A new UML-to-Ecore conversion option, available in the EMF model importer and the profile definition action, lets the user determine how to handle properties that are untyped. In a UML model, a property that has no type can take any value; it is simply unconstrained. However, EMF cannot generate code for such a property, so now UML2 lets the user either substitute EObject type (the "Process" option), issue a warning ("Report"), or omit the property altogether ("Discard").
Milestone 4
This milestone was completed on December 20, 2014.
Bug 180744
The UML Editor menu sports a new Element → Expand Templates... action that reifies template bindings, replacing (in situ) the binding relationships in the bound element with elements merged from the templates. Constructs supported include
- template bindings for packages, classifiers, and operations
- bindings to multiple templates
- multiple bindings to the same template
- substitution of operands in name expressions (useful for disambiguating parameter substitutions from multiple bindings)
So, for example, a "deployment system" package that binds the same "system" package template twice, once for hardware components and once for software components. SoftwareSpec and HardwareSpec substitute for the ResourceKind in the template and the name of the Allocation class in the template is an expression in which the first segment is substituted by default with the string "Resource".
The template expansion algorithm is based on package merge. Most of the options are defaulted to values appropriate for template expansion, but the options for handling redundant generalizations and capabilities trace annotations are left to the user to decide.
The result of the expansion shows the substitution of parts of the name expressions for the SoftwareAllocation and HardwareAllocation which otherwise, using the default substitution, would both be named ResourceAllocation. Also, a trace annotation references all of the elements in the expanded package that were merged from the system template (just as in package merges).
Bug 403374
UML-to-Ecore conversion (and, consequently, code generation) now supports transformation of OCL invariant constraints in EMF's non-API style for classes. These generate code only in the XyzValidator class, not as validation operations in the model API. This enhancement provides parity with constraint transformations for data types, which in EMF only support the non-API style of validation.
This model:
Generates this code:
Bug 412912
The EMF.Edit item providers for the default attribute of the UML Property and Parameter metaclasses are improved to create values of more appropriate type than LiteralString where possible:
- for property or parameter of an Enumeration type, an InstanceValue referencing the EnumerationLiteral selected by the user from a pick-list
- for property or parameter of Boolean type, a LiteralBoolean with the value selected by the user from a true/false pick-list
- for property or parameter of Integer type, a LiteralInteger with the value entered by the user as text
- for property or parameter of UnlimitedNatural type, a LiteralUnlimitedNatural with the value entered by the user as text
- for property or parameter of Real type, a LiteralReal with the value entered by the user as text
- in other cases, a LiteralString is created
Milestone 5
This milestone was completed on January 31, 2014.