[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[news.eclipse.modeling.mdt.uml2.ocl] Re: Validation action failed due to attribute type is 'long'

See bug report at
https://bugs.eclipse.org/bugs/show_bug.cgi?id=164795

Christian W. Damus wrote:
Hi, Andreas,

Yes, the OCL Integer type should be implemented by Long.  Would you mind
opening a bug report?

https://bugs.eclipse.org/bugs/enter_bug.cgi?product=MDT&version=1.0.1&component=UML2%20OCL&bug_severity=normal&form_name=enter_bug

Also, as this is an OCL problem, I am replying to the MDL UML2 OCL
newsgroup, which is the new home of the OCL component.

Thanks,

Christian


Andreas Werner wrote:

The problem is, that Long is not mapped to the primitive type OCL_INTEGER!

So, in order to compare the class attribute with a constant, the
Long.compareTo method is used, which demands a Long type to compare to.
But the given constant is declared as Integer!

A possible solution is to introduce a new attribute which is of type
long. The OCL expression uses then the new attribute instead of a given
value.

Is there another way to solve this???
Please help, because I don't want to pollute my model with such 'compare
attributes'!!!

Why is the Long type not mapped to OCL_INTEGER???
Alternatively why does OCL_INTEGER not base on Long?

Thanks, Andreas


Andreas Werner wrote:
Hi newsgroup,

I defined an attribute invariant via OCL:
self.property>=0

If this property has the type EInt everything is fine and the Validation
action in my GMF editor works as expercted.

But if the type of the property is changed into ELong, I get a
'Validation action failed' message with the following stack trace:

java.lang.ClassCastException: java.lang.Integer
at java.lang.Long.compareTo(Unknown Source)
at org.eclipse.emf.ocl.expressions.impl.EvaluationVisitorImpl.
    visitOperationCallExp(EvaluationVisitorImpl.java:1054)
at org.eclipse.emf.ocl.expressions.impl.OperationCallExpImpl.accept
    (OperationCallExpImpl.java:274)
at org.eclipse.emf.ocl.query.impl.QueryImpl.evaluate(QueryImpl.java:242)
at org.eclipse.emf.ocl.query.impl.QueryImpl.check(QueryImpl.java:278)
...

Is that OCL expression not applicable for 'long' properties?

Thanks, Andreas


PS: I'm using version 1.01 of EMFT OCL.