Skip to main content
Jump to: navigation, search

OCL/New and Noteworthy/Neon

< OCL‎ | New and Noteworthy
Revision as of 06:15, 23 May 2016 by (Talk | contribs) (Milestone 5)

Eclipse OCL New and Noteworthy items for the Neon 6.1.0 release.

Release Overview

This minor release fixes many bugs and provides enhanced extensibility for OCL-based applications such as QVT.

The Pivot code base has moved to Java 8 to exploit the type-based @NonNull annotations and eliminate the need to distribute a clone of the Java 7 support. Java 7 related support such as org.eclipse.ocl.jdt.annotation7 and org.eclipse.ocl.examples.codegen.asm3 are no longer distributed; only ASM 5 is supported.

The Classic Ecore/UML support retains Java 5 source compatibility.

The Neon release is installable on Luna, Mars and Neon platforms; movement to Java 8 terminates Helios, Indigo, Juno and Kepler installability.

Milestone 1

Code Generation

  • 471118 _ no longer used as an identifier (avoiding Java 8 deprecation)
  • 471948 Custom messages are supported again in code generated validations
  • 474307 EList returns no longer inhibit Ecore Editor delete commands


  • 469967 Concurrent editor no longer leads to a stuck /* Please Wait */
  • 471785 Problem in imported files no longer shown at local lines
  • 473249 Unresolved references due to stale Complete OCL context fixed


  • 473632 CollectionRange to a more negative last no longer includes first

Pivot UML

  • 470805 Operations are no longer ignored for UML DataTypes
  • 472261 Constraints may be specified for Signals
  • 472469 UML DataType generals treated as superclasses
  • 474085 Stereotypes are no longer ignored in the Xtext OCL Console

Milestone 2


  • 476438 *.oclas no longer requires explicit registration for standalone usage
  • 477283 Complete OCL references to subpackages no longer fail

Pivot UML

  • 476463 Post-Mars regression preventing use of OCL editor in Papyrus fixed
  • 476662 InstanceSpecification EnumerationLiteral properties no longer malfunction
  • 476769 OCLforUML::Validation at last controls Papyrus InstanceSpecification validation
  • 478416 Non-OCL Constraints are now tolerated

Milestone 3


  • 479405 Names using special sequences such as :: may now be used.
  • 480018 DataTypes no longer convert to their behavioral type prematurely.
  • 480635 EnumLiterals may now have annotations.

Milestone 4

Many fixes relate to support for auto-generation in conjunction with the QVTd project.


  • 480567 oclContainer/oclContents library properties added
  • 482264 silent syntax errors in profiles diagnosed
  • 482788 iterator variable names can now use arbitrary characters

Milestone 5

The code base for the Pivot plugins now requires a Java 8 BREE and uses the standard org.eclipse.jdt.annotation.@NonNull rather than the legacy clone org.eclipse.ocl.jdt.annotation7.@NonNull.

Pivot UML

  • 485225 allInstances() now works for Stereotypes
  • 485586 OCL parsing no longer fails for too simple UML models

Milestone 6

In conventional metamodeling, myElement.oclAsType(MyDerivedElement) supports casting myElement to the type MyDerivedElement. myElement is typically an M1 instance of the M2 class MyDerivedElement.

In a UML Object Diagram, an InstanceValue may need to be cast to an instance of a type defined in the same diagram, same meta-level. This was previously supported by some pragmatic functionality that endeavored to be helpful in identifying which meta-levels were actually in use. Such pragmatic functionality was of course flaky, difficult to understand and ambiguous for e.g. an InstanceSpecification.

The M6 support for the Pivot-based OCL introduces the new library operation oclAsModelType(aType) which may be used to cast to a type defined in the model. oclAsType(aType) may now only be used to cast to a type in the metamodel.

Using oclAsModelType() in the Xtext OCL Console gives similar but more undertstandable functionality to the M1/M2 pull-down menu option of the OCL Console.

The oclTypes() operation is also provided in anticipation of multi-classification for SMOF.

The oclModelTypes() operation supports the multi-classification of UML.

The oclModelType() and oclIsModelKindOf() counterparts to oclType() and oclIsKIndOf() are also provided.


  • 488278 Long Integers are now correctly persisted - needed by QVTo.


  • 487181 CS models may now have embedded OCL.
  • 487217 Imports are now relocated with respect to their importing module.
  • 487320 Complex unary expressions now parenthesized after AS2CS conversion.
  • 487322 Import of a Model now imports its top level packages.
  • 487342 ShadowExp names are now qualified after AS2CS conversion.
  • 487797 oclAsModelType() supports use of types at the same meta-level.
  • 488374 Abstract collection types such as UniqueCollection cannot be a most derived common type solution.
  • 488879 OclEnumeration introduced rather than Enumeration as the implicit user Enumeration supertype.
  • 489948 OperationCallExp.isVirtual added to the Pivot model.

Pivot UML

  • 485471 OclStereotype added as the implicit supertype of all user Stereotypes. aStereotype allInstances() works.


  • 456235 Hovertext for Java class references no longer gives a UI freeze.
  • 489310 Extension oclstdlib operations can now have a useable ClassLoader.

Milestone 7


  • 473825 Reload problems mitigated by tolerating a UI freeze on open.
  • 491966 Type-diagnosing hovertext takes precedence over marker hovertext.


  • 492800 Template parameters may now be used with bidirectional properties.


  • 492293 Collections are now null-free by default.

Pivot UML

  • 423905 Navigation to/from Associations/AssociationClasses is supported.


Complete OCL

  • 491845 A Complete OCL load failure no longer re-fails while attempting to report the failure.


  • 492960 References to EKeys are now persisted in Ecore.



  • 494227 Problems with unresolved pivot proxies in the Sample Ecore Editor resolved..




Eclipse OCL New and Noteworthy items for the Neon 6.1.1 SR1 release.


Eclipse OCL New and Noteworthy items for the Neon 6.1.2 SR2 release.

Back to the top