OCL/New and Noteworthy/2019-03
Eclipse OCL New and Noteworthy items for the 2019-03 (6.7.0) release.
This minor release fixes a few bugs and provides enhanced extensibility for OCL-based applications such as QVT.
The significant changes for the Pivot-based OCL are:
- Addition of persistence of the Map type as an Ecore EMap
This change fixes a bug whereby EMap declarations such as EAnnotation.details were treated as an OrderedSet(EStringToStringMapEntry) rather than as Map(String,String). Code using the erroneous interpretaion such as
eAnnotation.details->select(e | e.key = 'wanted' and e.value <> null)
must be recoded as
eAnnotation.details->select(k <- v | k = 'wanted' and v <> null)
The prevailing Eclipse OCL release candidate is auto-tested every week on Oxygen, Photon, 2018-09 and 2018-12 platforms using Jenkins on Linux.
2019-03 release should be installable on Mars and Neon platforms provided Xtext 2.9 or greater is also installed.
The 2019-03 sources are buildable on 2019-03 only.
Java 8 on Windows was used to develop and test the milestones of this release.
Java 11 on Windows was briefly used to maintain and test the 2019-03 release candidates. It appears to work although Java code generation/compilation seems nearly three times slower - see Bug 565563.
Java 8 on Jenkins, Linux was used to build and test the release candidates.
The Classic Ecore/UML plugins have been tested on Mars, Neon, Oxygen and Photon and on a Java 5 Virtual Machine. Standalone execution requires only the org.eclipse.osgi plugin from Eclipse Kepler or a spoof of org.eclipse.osgi.util.NLS and org.eclipse.osgi.framework.
The Pivot plugins require at least a Java 8 Virtual Machine and at least Xtext 2.9.1. Testing on Oxygen has a couple of test failures. Testing on Mars and Neon has a few editor/console startup failures.
The fix for ineffective caching may have an undesirable side effect if OCL evaluations occur before and after some significant model change. This may be avoided by invoking PivotUtil.removeAdapter(resourceSet) to remove the stale caches.
- 443003 Ecore EMap idiom supported as an OCL Map / MapValue
- 529372 allInstances()/opposites caches are no longer recomputed many times per validation
- 543173 A TemplateParameter-typed Property no longer fails to parse
- 543178 A Java Exception during a validation no longer terminates residual validations
- 543187 The lowerbound of a TemplateParameter no determines available opposite Properties
- 543221 allInstances and opposites now cached effectively during a validation and nested evaluations
- 543143 Many warnings fixed in generated model code
- 543334 Pivot expression annotations no longer stripped from XXXPackageImpl
The null-safe operation call fixes may now diagnose latent faults.
Eliminate of the non-API ints from XXXPackage interfaces significantly reduces the size. The removed ints are available by using e.g. XXXPackage.Literals.YYY.getClassifierId()
- 471114 Eliminate unstable ints from XXXPackage APIs.
- 543599 Use of unsafe operation call sources now diagnosed.
- 543608 Non-Boolean valued Constraints now diagnosed.
- 543608 Complete OCL init/derive are npw both treated as (default) value expressions.
- 483246 Exceptions causing invalid evaluation are now logged as warnings to avoid AERI escalation.
- 542588 Opening Validity View no longer fails with a Class Cast Exception
- 544182 Global ProjectMap now tracks project opens/closes, late launches no longer fail with stale projects.
- 544187 Global ProjectMap now tracks project opens/closes, late launches no longer fail with stale projects.
- 544189 MultiValidationJob no longer does a full validation per incremental build.
- 544189 Stale markers from removed files now removed.
- 544245 Validations shortly after startup no longer incur a CME.
Milestone 3 was accidentally released one week early. Milestone 3a occurs at the correct time.
- 471114 Validation preferences are now keyed by their EOperation literal rather than a String literal.
- 543603 Editor shows problems immediately rather than after first edit.
- 544189 Problem markers update on file save, with or without OCL nature.
- 544431 OCL validation should no longer occur on closed projects.
- 544551 String::+ and String::concat may now have null sources.
- 544552 Many library operations now declare their parameters as not-null.
- 544734 Builder no longer excludes tool much for non-trivial incliusion/exclusion paths.
- 544737 QVTd / OCL builders no longer reset each other's markers.
- 544737 Builder no longer reports unresolved JavaClassCS references to Java implementations
- 544737 Builder no longer leaves stale markers after full build.
- 544787 org.eclipse.ocl.examples.standalone.StandaloneApplication now has a main() for direct invocation
- 544903 Comments warn that requiring OCL to create the external ResourceSet can incur significant shutdown costs.