[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'
|
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.