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