Skip to main content

Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

OCL/New and Noteworthy/Indigo

Eclipse OCL New and Noteworthy items for the Indigo 3.1.0 release.

Milestone 2

OCL

Ecore

  • 322159 Diagnose and workaround genmodel without Operation Reflection.

Examples

OCLinEcore editor

  • 318119 Save no longer flashes XMI.
  • 320689 Enum and DataType now conform to OclAny so that e.g. oclIsInvalid is no longer undefined.
  • 321171 Reference opposite is now resolvable when the type is qualified.
  • 321493 Unicode characters supported in annotations.
  • 321518 Multi-line annotations supported.
  • 321903 Supertype is now resolvable when qualified.
  • 322675 OCLinEcore menu items now localized to OCLinEcore.
  • 322886 CompleteOCL genmodel registration now findable.

Milestone 3

Examples

OCLinEcore editor

  • 325058 Fix resolution of parameter names.
  • 328480 Fix self in constraints.

Milestone 4

OCL

  • 330489 Fix content of singleton CollectionRange.

Ecore

EMF 2.7.0 is a prerequisite as from M4.

  • 331143 Support Query delegates.

Milestone 5

The migration to the new architecture starts with M5, with a slightly early release mandated by alignment with Xtext 2.0 that becomes available at M5. Without migration, all the editors would be broken, with migration the OCLstdlib and OCLinEcore editors should be improved, although the CompleteOCL editor is temporarily broken. The new architecture features:

  • a standard library defined by the OCL-2.4.oclstdlib model and its editor
    • a org.eclipse.ocl.examples.pivot.standard_library extension point for custom libraries
    • a Java class per operation/iteration/property in org.eclipse.ocl.examples.library...
    • a pre-compiled version org.eclipse.ocl.examples.library.oclstdlib.OCLstdlib autogenerated by Acceleo
  • an intermediate UML-aligned pivot model
  • semantic as well as semantic validation in OCLstdlib and OCLinEcore (and EssentialOCL) editors
  • a stream-lined evaluator aligned to the pivot model and library definition
    • a Value hierarchy to wrap OCL semantics around Java objects
    • an extensible/replaceable ValueFactory for alternate semantics

The new functionality is used automatically when using the editors.

The new functionality may be used embedded within Ecore by changing all occurrences of the "http://www.eclipse.org/emf/2002/Ecore/OCL" URI to "http://www.eclipse.org/emf/2002/Ecore/Pivot".

The new functionality may be used programmatically by changing org.eclipse.ocl.ecore to org.eclipse.ocl.examples.pivot. This is only recommended to enthusiasts at present since the migration guide on detailed API evolution is not yet written.

The migration will continue in 3.1.0 Examples M6, M7 with

  • CompleteOCL editor
  • Use of EssentialOCL editor in the Interactive Console
  • Support for UML

The migration will complete in 4.0 with

  • promotion of org.eclipse.ocl.examples.pivot to org.eclipse.ocl.pivot
  • redirection of "http://www.eclipse.org/emf/2002/Ecore/OCL" to the new functionality
  • introduction of OCL to Java code generation
  • org.eclipse.ocl, org.eclipse.ocl.ecore, org.eclipse.ocl.uml will remain substantially unchanged

OCL

Ecore

  • 251621 Support EAnnotations of missing Ecore eOpposites.
  • 333032 Tuning up the API and Impl introduced by Bug 251621.
  • 333241 Minimize impact of DefaultOppositeEndFinder
  • 332400 Avoid redundant helper creation.
  • 329980 Use @nooverride to clarify API.

Examples

Editor

  • 328075 Hover text indicates static type signature.

Evaluator

  • 191027 Inconsistent invalid numeric comparison issues resolved.
  • 267223 Boolean operations involving null and invalid fixed.
  • 282882 OCL 2.3 treatment of null/invalid comparisons.
  • 283518 null in a collection is valid.
  • 284129 Real/Integer treated as numbers for Tuple type deduction.
  • 286929 invalid in a collection is invalid.
  • 287052 static type information used to interpret eGet return.
  • 287977 Numerous corner case operations issues fixed.
  • 288566 OCL-invalid-with-reason/exception used in preference to Java-null/Java-exception.
  • 290315 Java-null and OCL-null distinct.
  • 291444 Conformance now defined once by library model rather than disparate code.
  • 299862 OrderedSet.insertAt observes OCL equality semantics for duplicates.
  • 299882 Increased Collection polymorphism fixes OrderedSet flatten
  • 299967 Dynamic dispatch of operation overloads supported.
  • 301352 Value hierarchy introduced to localize OCL equality with respect to Java equality semantics.
  • 318047 UML-aligned pivot model introduced.
  • 318048 Library operations factored out to one model-referenced Java class per operation.

Interpreter

  • 290605 BigInteger, BigDecimal used to ensure larger number compliance.
  • 332962 Query Delegate Text Viewer for OCL.

Impact Analyzer

  • 329336 EventManager added as pre-requisite for impact analyzer

Library and AST

  • 152207 Support toString.
  • 190461 OCL 2.3 spellings for UnlimitedNaturalLiteralExp.unlimitedNaturalSymbol.
  • 196873 Introduce OCL standard library as a first class model.
  • 216110 UML-aligned pivot model has OMG spelling of e.g. OclExpression.
  • 246962 OrderedSet and Sequence operations shared via OrderedCollection.
  • 259031 Support OclAny.oclType with reflection.
  • 261008 UnlimitedNatural conforms to Integer.
  • 281710 Support String +.
  • 283052 Pivot model is UML-aligned.
  • 290680 Collection conforms to OclAny.
  • 291721 OclInvalid conforms to OclVoid and not-vice-versa.
  • 299959 oclAsType conformance checked.
  • 326534 Library model loaded from auto-generated code.

Parser

  • 190150 Type expressions now parsed, declared and evaluated.
  • 286737 Tuple parsing errors diagnosed better
  • 288573 Library model used for iterator signature checking
  • 288575 Qualified names more widely supported
  • 296990 forAll/exists arguments now semantically checked against library model
  • 299966 oclIsInState is now an ordinary operation


Milestone 6

Editors

The Complete OCL editor is now useable.

All editors now support hover text feedback for type information.

Complete OCL and OCLinEcore editors support an additional parenthesized argument on an environment name in which a string experession may be specified to explain the invariant violation. The corresponding CompleteOCLEObjectValidator or OCLinEcoreEObjectValidator enables either Complete OCL documents of embedded OCL to participate in validating environments such as an Xtext editor.

Console

An alternative Interactive Xtext Console may be used in which input uses Xtext Essential OCL editor and evaluation uses the new extensible pivot evaluator.

Complete OCL documents may be loaded to augment the evaluator.

Impact Analyzer

An Impact Analyzer has been added to the examples feature. For a set of OCL expressions, based on an EMF Notification and in conjunction with the event manager already added in M5 it can efficiently determine which of the expressions may have changed its value and for which context objects. See org.eclipse.ocl.examples.impactanalyzer.ImpactAnalyzerFactory for an entry point. The Impact Analyzer is well prepared to deal with the hidden opposite properties introduced in M5.

OCL

Ecore

  • 212120, 339052 findPackage strategy selection supports aliases

Examples

Console

Editor

  • 187679 Forward references supported in Complete OCL
  • 316192 Aliases persisted

Impact Analyzer

  • 323223 Added impact analyzer to examples feature

Language

  • 291220 Dynamic dispatch supports override
  • 299841 OclAny.oclAsSet encapsulates anObject->

Milestone 7

Editors

The Complete OCL editor is now useable against UML as well as Ecore models; just import xxx.uml rather than xxx.ecore.

OCL

Ecore

So far, null and invalid handling was rather sloppy. Whenever an exception occurred inside an evaluation, for whatever reason, an exception handler ensured that the entire expression evaluation was considered invalid. However, this did not work correctly for oclIsInvalid() checks. With M7 it is now possible to have an invalid value propagate through variables and operation arguments and get "caught" anywhere in the evaluation by applying oclIsInvalid() to it. Many tests have been added to assert the expected behavior.

Regarding the type checks for null and invalid, we agreed to allow for oclIsTypeOf and oclIsKindOf calls on both, null and invalid, e.g., to test conformance to OclInvalid and OclVoid, as we found the OCL specification to be slightly unclear whether or not this should be permissible. The recommended way for such checks, however, is still using oclIsUndefined() and oclIsInvalid().

Similar to the issues with invalid values a number of issues around null values are now fixed. In particular, the use of null in collection literals (e.g., Set{null}) is now possible. Also, null values can now be used without problems in tuple literals. Tuples can now deal with OclVoid-typed components.

  • 342561 a variety of evaluations involving invalid have been corrected
  • 342644 null values are now allowed in collections, OrderedSet is more consistent
  • 344391 NPEs from null tuple content fixed

Examples

Editor

Complete OCL documents can now complement UML models; just import xxx.uml rather than xxx.ecore.

  • 317398 Keywords are no longer escaped in non-keyword contexts.
  • 324294 Ecore's EReference.eKeys supported in OCLinEcore.
  • 340722 Empty *.ecore file now saves as XMI not text.

Language

  • 293855 Named self now supported for class contexts

SR1

Eclipse OCL New and Noteworthy items for the Indigo 3.1.1 SR1 release.

Ecore

  • 352945 Auto-generated EcoreSwitch code regenerated
  • 353171 NPE for solitary Query delegate

OCLinEcore Editor

  • 348251 IAE when selecting a *.ecore outline element
  • 348256 NPE when editing a *.ecore file
  • 353793 Inter-resource references no longer lost on load
  • 354290 Package reference errors after editing fixed

Complete OCL Editor

  • 351578 Inherited constraints no longer ignored

SR2

Eclipse OCL New and Noteworthy items for the Indigo 3.1.2 SR2 release.

OCLinEcore Editor

  • 362620 Nested packages prefixes no longer corrupted on load

Ecore

  • 360072 'pivot' as well as 'ecore' OCL delegates can be intermixed

Pivot

  • 360072 'pivot' as well as 'ecore' OCL delegates can be intermixed

Back to the top