[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[mdt-ocl.dev] Complete OCL and custom message support

Hi Guys

I've just done a major examples commit so that we now have support for

Complete OCL editing with semantic validation/feedback
Complete OCL evaluation
Complete OCL validation

Complete OCL can therefore be used as a definition language for Xtext validation giving users a three way Java/CHECKS/Complete OCL choice for model enhancement. Only Complete OCL provides a tool-independent solution that is re-useable outside the Xtext environment.
I've supported OCL defined validation failure messages:

In Ecore: augment the 'MyConstraint' key and its Boolean-valued OCL expression by an 'MyConstraint$message' key and a String-valued OCL expression.

In OCLinEcore: put the message expression in parentheses

invariant MyConstraint('my message') : myCheck();

In Complete OCL: put the message expression in parentheses

inv MyConstraint('my message') : myCheck()
OclAny::oclType() now returns Classifier that is a Pivot Model Class, so message expressions can exploit reflection. (There seems to be no difference between 'UML' Type, Classifier and Class once Complete OCL has required all types to be extensible, so unifying these names is a round-tu-it.)
Pending a resolution of EMF Bug 337792, the in-Ecore message functionality requires generated Validators to inherit OCLinEcoreEObjectValidator rather than EObjectValidator. To get message support for dynamic models the registration of a default EObjectValidator for 'null' must be replaced by a default OCLinEcoreEObjectValidator.

Complete OCL validation is enabled by registering a CompleteOCLEObjectValidator for the package. At the moment I do this from an Xtext JavaValidator, but one day it should be auto-generated by a CompleteOCLValidatorFragment.
This provides the Xtext environment that I've been wanting for the EclipseCon tutorial, so apart from minor bug-fixing, I don't plan to do much more before EclipseCon. If CQ4866 progresses, I may be able to commit the revised Console with Complete OCL support.

Any feedback on the useability of editors in the latest build very welcome.


        Ed Willink