Dresden OCL Logo
Dresden OCL
OCL support for your modeling language

Contents

Changelog

The Changelog documents changes between different versions of OCL and bugs and issues fixed other time.

Release 3.3 (February, 25th 2014)

  • This is the first release built with maven/tycho
  • Introduction of new Tool: Dresden OCL Debugger
  • Dresden OCL supports Kepler
  • Dresden OCL 3.x support dropped
  • Bug fixes on interpreter
    • some minor bugs where fixed

GUI

  • The OCL Debugger is integrated into the Eclipse Debugger UI

Release 3.2 (September, 24th 2012)

  • Introduction of new Tool: Dresden OCL Metrics
  • Introduction of new Tool: OCL Interpreter Tracer: the cause of interpretation results can now be visualized by displaying a trace tree of an individual interpretation result.
  • Dresden OCL Supports Juno and Indigo
  • Changes on OCL Editor:
    • On .ocl files metadata can be defined using the new @model{model/path} command within comments. This can be single line comments as well as multi line comments. This model path can either be absolute or relative to the corresponding .ocl file.
  • Genreal bug fixes:
    • Enumerations now extend OclAny. Thus, operations of OclAny can now be parsed on enumerations.
    • Properties having the same name within inheritance relations are now shadowed correctly.
  • Bug fixes on UML metamodel adaptation
    • Added missing dependency to org.eclipse.uml.resources. Should now be installable appropiately within non MDT-Eclipse distributions.
    • Adaptation of DataTypes is now supported.
  • Bug fixes on Java metamodel adaptation
    • Java models can now be opened by selecting the .java file instead of the .class file.
  • Bug fixes on Java model instance adaptation
    • Java model instances can now be opened by selecting the .java file instead of the .class file.
  • Bug fixes on XML model instande adaptation
    • XML files having a file name ending with .XML instead of .xml should now be

imported appropriately as well.

  • Bug fixes on OCL Parser/Editor
    • Parsing of recursively defined properties is now supported.
  • Bug fixes on OCL Interpreter
    • Interpretation of recursively defined properties is now supported.
    • Constraints defined in a static context are now interpreted only once for a given set of constraints.
  • Changes on OCL2SQL
    • Closure iterator is now supported.
  • Bug fixes on OCL2AspectJ
    • SortedBy iterator is now supported correctly (requires at least AspectJ 1.6.12.M1).

GUI

  • OCL Editor
    • The outline has been completely revised.
  • Introduction of the new OCL Tracer View (see above)

Release 3.1 (January, 17th 2011)

  • First (inofficial) parts of OCL 2.3 are now supported by Dresden OCL
    • The new closure() iterator is supported by parser, interpreter and Ocl2Java.
    • The String operations <, <=, >=, > are supported.
  • A Bug in the UML2 Metamodel has been fixed.
    • Class diagrams using stereotypes are now adapted correctly.
  • Some bugs of the OCL Parser / Editor have been fixed.
    • Derive and Init constraints defined for static properties are now parsed correctly.
    • The escape underscore for reserved words can now be used.
    • The ASM of nested LetExpressions now has the right order.
    • OclAny.asSet() is now parsed correctly either if used implicitly or explicitly.
    • Wellformednes Rules for Iterators having at most one iterator variable are checked appropriately.
  • Changes on Code Generators
    • The template engine was switched to String Template v. 3.2.1.
  • Improvements on Ocl2Java
    • Generated aspects are named according to their constraints.
    • Statically defined operations and properties are now instrumented correctly.
    • No new super classes are generated for definitions, initial and derived values are introduced anymore.
    • Definitions, Initial and Derived values should now work correctly if fields are accessed directly from other classes.
    • Type Literals are now transformed correctly in all known contexts.
    • InvalidLiterals should now be transformed correctly in all known contexts.
    • Generic types in LetExpressions are now transformed correctly.
    • Nested IterateExpressions using the same names for iterator variables are now handled correctly.
    • Nested IteratorExpressions using the same names for iterator variables are now handled correctly.
    • OclAny.asSet() is now transformed correctly.
    • OclAny.oclIsUndefined() now works on Java primitive types as well.
    • IsUnique() iterators are now transformed correctly if their body expression result in another type than the collection's element type.
    • The patterns <CONSTRAINT_NAME>, <CONSTAINTS_BODY>, and <OBJECT_IN_ILLEGAL_STATE> can now be used to parameterize error messages in violation macros constraint specific.
  • Changes on Ocl2SQL
    • for nested where statements now generated join statements
    • the IteratorExp of OCL will now correctly generated to SQL
    • different SQL code for managed and not managed key references (new template)

GUI

  • All Examples can now be easily imported into Eclipse using import wizards.

Tests

  • Ocl2Java
    • Some test cases have been added testing the right instrumentation of all constraint kinds.

Release 3.0 (September 29th 2010)

  • A new OCL Editor/Parser is now available with Dresden OCL.
    • The editor includes
      • Syntax Highlighting
      • Code completion
      • Outline view of OCL Abstract Syntax
    • The parser includes
      • Type inference wherever possible
  • A new version of the Ocl2Sql Code Generator is now available with Dresden OCL.
  • Some modifications of the pivot model were done.
    • MultiplicityElements are now removed. Multiple elements are now adapted to CollectionTypes.
  • Some bugs in the Java meta-model were fixed.
    • Types built of nested collections or arrays are now adapted correctly.
  • Some bugs in the UML2 meta-model were fixed.
    • Loading UML models containing references to other models should now work appropriately.
    • Reload of UML models now reloads changes of referenced external model elements as well.
  • Some bugs in the OCL Parser were fixed.
    • Recursive operations can now be defined.
    • For a detailed issue list investigate bug tracker on SourceForge.
  • Some bugs in the OCL Interpreter were fixed.
    • The Interpreter now supports interpretation of recursive operations.
    • The comparison of nested collections should now work correctly.
  • Some bugs in Ocl2Java were fixed.
    • Invalid literals are now transformed into the right working Java code.
    • OclAny.oclIsInvalid() is now transformed into working Java code.
    • OclAny.oclIsKindOf() is now transformed into working Java code.
    • OclCollection.sum() is now transformed into working Java code.
    • Fixed bugs in code generation of iterators collectNested(), isUnique(), one(), sortedBy()

GUI

  • Introduction of the new OCL Editor (see above)
  • DresdenOCL now provides its own Eclipse perspective.
  • Improvements of the Model Browser
    • Static operations and properties are now highlighted with different symbols.
    • Constraints and their expressions are now highlighted with sensible symbols.
  • A bug in the Model Instance Browser has been fixed.
    • OCL-defined features are not displayed as undefined in the Model Instance Browser anymore.
  • The Eclipse Package Explorer and Navigator now provide functionalities for Model and Model Instance Import in their pop-up menus.

Release 2.2 (June 16th 2010)

  • Dresden OCL2 for Eclipse now supports OCL 2.2!
    • The only exception is that the new keyword static is not supported yet.
    • Parsing, Interpretation and Java Code Generation of OCL 2.2 is now possible.
  • A new Facade Plug-in containing a facade for all functionalities of Dresden OCL2 for Eclipse has been introduced.
  • Dresden OCL2 for Eclipse now includes a standalone version for non-Eclipse Java projects.
  • The Model and Model Instance Life-cycle Management has been improved.
    • After import, Models can now be removed again.
    • After import, Models can now be refreshed to update external changes.
    • After import, Model Instances can now be removed again.
    • Constraints can now be removed from models again.
    • Defined operations and properties are now removed then their constraints are removed as well.
    • Models can now be observed for changes.
  • A bug in the ModelRegistry was fixed.
    • Adding of Models should now handle NullPointerExceptions correctly.
  • XML Schemas are now supported as models for DresdenOCL.
  • XML files are now supported as model instances for DresdenOCL.
  • Some bugs in the UML2 Meta-Model were fixed.
    • If the top-level package is a UML model or profile directory, these packages are now adapted correctly.
    • In UML2 models containing references to other UML2 models, the referenced models are now imported as part of the model as well.
  • A bug in the EMF Ecore Meta-Model was fixed.
    • In Ecore models containing references to other Ecore models, the referenced models are now imported as part of the model as well.
  • The Java Meta-Model has been modified.
    • Java models can now refer to JAR archives if explicitly defined in a .javamodel File.
  • Some bugs in the basis model instance elements were fixed.
    • Illegal arguments are now handled appropriately.
    • JavaModelInstanceCollections can now be initialized with null values even if they are of the type Set or OrderedSet.
  • Some bugs in the Ecore ModelInstance Type were fixed.
    • Empty model instances now get a created default name.
    • Illegal arguments are now handled appropriately.
    • Types are now resolved, even if their package name is not modeled completely in the Model.
  • Some bugs in the Java ModelInstance Type were fixed.
    • Empty model instances now get a created default name.
    • Illegal arguments are now handled appropriately.
    • The copy mechanism for @pre values works now correctly when invoking empty constructors.
    • The return type of operations and properties is now adapted correctly if the type of the operation or property is a super type of the result's type.
  • Some bugs in the OCL2 Parser were fixed.
    • The Parser now implements the IOclParser interface.
    • If the parsing process fails, no constraints or defined features will be added to the model anymore.
    • The special operations OclAny.oclAsType(), oclIsKindOf(), ... can now contain Property- and OperationCallExpressions instead of simple TypeLiteralExpressions.
    • Collection(T1).product(Collection(T2)) is now parsed appropriately.
  • Some bugs in the OCL2 Interpreter were fixed.
    • Boolean operations and, or, implies are now only interpreted partly if necessary.
    • In IfExpressions either then or else clause is interpreted.
    • Interpretation of nested definitions has now the right context as self variable.
    • Iterate expressions are now interpreted correctly if their source collection is invalid or contains undefined values. Body expressions can result in invalid or undefined without leading to wrong interpretation results.
    • Body Expressions, Definitions, Derive and Init expressions must not be prepared anymore and are only interpreted if referenced.
  • A bug in the OCL2 Interpreter GUI was fixed.
    • The view should not crash with an SWT-Exception for presentation of a large number of results anymore.
  • Complete rewrite of the OCL2 Standard Library; some bugs were fixed.
    • invalid and null values are now created by every library method and no exceptions are thrown
    • consistent way of handling null(undefined) and invalid
    • undefined can be created for AnyType
    • TypeConstants: create BagType, etc. instead of CollectionType -> invalid and undefined collections can be created
    • OclBoolean: and(), or() and implies() accept undefined values and can return OclBooleans (standard, p. 15)
    • union(OclSequence) only on OclSequence instead of SortedCollection
    • excluding(T) now removes all appearances, not only the first
    • OclCollections can return their generic/element type
    • support for the creation of nested OclCollections
    • OclAny: oclIsUndefined() now returns invalid if the object is invalid
    • OclString: substring() returns invalid if lower index is greater than higher index
  • Some bugs in the Ocl22Java Code Generator were fixed.
    • The code generation of OclAny.allInstances() now works appropriately again.
    • The code generation of Collection.flatten() now works appropriately.
    • The code generation of Integer.mod(Integer) now works appropriately.
    • The code generation of Integer.min(Integer) now works appropriately.
    • The code generation of Real.floor() now works appropriately.
    • Transformation of abstract Collection type now works appropriately.
    • The transformation of operations whose arguments are named differently in the constraint's context than in the model now works correctly.
    • The code generation of Constructors now works appropriately.
    • Ocl22Java now supports Arrays instead of Collections wherever possible.

GUI

  • The Model Browser has been improved.
    • Imported models can now be closed again.
    • Parsed constraints can now be removed again.
  • The Model Instance Browser has been improved.
    • Imported model instances can now be closed again.
    • Owned properties of ModelInstanceElements can now be browsed.

Tests

  • A new Modelbus Test Suite Plug-in has been introduced.
  • A new OCL Standard Library Test Suite Plug-in has been introduced.
  • Some test cases have been added to the Generic Model Instance Type Test Suite.
    • Illegal arguments are now tested.
    • Recasts between primitive type instances are now tested.

Release 2.0 (January 11th 2010)

  • The Pivot Model do now contain the PrimitiveTypeKind Void for the adaptation of a void Type for Operations without return Parameter.
  • The ModelBus Architecture was refactored.
    • IModelInstances are now meta model independent.
    • The IModel interface was refactored.
      • A new method getType() was introduced.
      • A new method isInstanceOf(Type) was introduced.
    • The IModelInstance interface and the IModelObject respectively IModelElement interface have been refactored and restructured completely.
  • Some bugs in the UML2 Meta Model were fixed.
    • UML2 models can now contain n-ary associations.
    • Interfaces are now mapped correctly.
    • Abstract DataTypes are no longer adapted.
    • Logging now works properly.
  • Some bugs in the EMF Ecore Meta Model were fixed.
    • Logging now works properly.
  • New Meta Model added: Java.
  • The Java Model Instance Type has been refactored completely.
    • Java instances can now also be imported, if they implement or extend Java Classes or Interfaces defined in the model.
  • The EMF Ecore Model Instance Type has been refactored completely.
  • Some bugs of the OCL-Interpreter were fixed.
    • Constraints are now interpreted for constrained sub-classes as well.
    • Local Variables are now only declared locally.
  • The interpreter plugins have been renamed from tudresden.ocl20.interpreter.* to tudresden.ocl20.pivot.interpreter.*
  • A bug in the Ocl22Java Code Generator was fixed.
    • The variables for Comparators are now right numbered.

GUI

  • A bug in the Wizards were fixed.
    • The Model Import Wizard can now be started when the current focus is on a non tree-like view.
    • The Model Instance Import Wizard can now be started when the current focus is on a non tree-like view.
    • The OCL Constraint Import Wizard can now be started when the current focus is on a non tree-like view.
    • The Java Code Generator can now be started when the current focus is on a non tree-like view.
  • The Model Instance Wizard has been redesigned.
  • The Model Instance Browser has been redesigned.
    • ModeObjects are now also displayed for Sub-Types of selected Types in the Model Browser.
  • The OCL Parser Wizard was redesigned.
    • OCL Files can now also be selected using a 'Browse Workspace' button.
    • The wizard will now switch into the Model Browser after parsing constraints.
  • The Interpreter View was redesigned.
  • Some problems with icons and menu entries in the binary release were fixed.

Tests

  • A new central Test Suite Plug-in has been introduced.
  • A new generic Test Suite for Meta-Models was introduced.
  • A new generic Test Suite for Model Instance Types was introduced.

Release 1.2 (February 26th 2009)

  • The new tool Ocl2Java (ApsectJ code generation for OCL constraints) was added to the release.
  • The royal and loyal example was added to the release.
  • Some Bugs of the OCL-Parser were fixed:
    • Enumerations are now parsed correctly
  • Some Bugs of the OCL-Interpreter were fixed.
    • Operation names are now interpreted correctly
    • Collection operations should now be interpreted correctly.
    • The Variable defined by a LetExpression is now valid in the scope of the LetExpression only.
  • Some Bugs of the Java Standard Library were fixed.
    • Collections from model instances are now adapted correctly.
    • Sets will no longer contain the same model object multiple times.
  • Some Bugs for Ecore instances were fixed.
    • Enumerations are now adapted correctly.
  • Some Bugs for UML2 instances were fixed.
    • UML2 Model instance adaption does now work correctly.
    • UML2 Model instances now support tuple types.

Release 1.1 (December 9th 2008)

  • The UML1.5 meta model works now in the binary release.
  • New meta model added: UML2.0.
  • New example added: Simple-Example.
  • Some Bugs of the OCL-Parser were fixed.
  • Some Bugs of the OCL-Interpreter were fixed.