self construct ignored
----------------------
Key: OCL-15
URL: http://jira.andromda.org/browse/OCL-15
Project: OCL Translation
Type: Bug
Components: AndroMDA Validation
Environment: WinXP, Java 1.4
Reporter: Dominik Hofmann
Assigned to: Chad Brandon
Priority: Minor
I tried to use “self” in one of my constraints, but it seems to be ignored by
AndroMDA. According to my understanding of OCL self should reference the
context object of a constraint:
“Each OCL expression is written in the context of an instance of a specific
type. In an OCL expression, the reserved word self is used to refer to the
contextual instance. For instance, if the context is Company, then self refers
to an instance of Company.” OCL SPEC
But this is not the case. (May be my constraint is wrong.)
Example:
Metafacade BstereoFacade
- one property: btag: String
Metafacade AstereoFacade
properties:
- atag: String
- associatedBs: Collection (of BstereoFacade)
Constraint on AstereoFacade: (supposed to check if the btag’s of all associated
BstereoFacades have the same value as the atag of the context object)
context AstereoFacade inv: associatedBs->forAll(btag = self.atag)
This causes the following error:
No property named 'atag', found on element
'de.ifis.guidsl_facade.BstereoFacadeLogicImpl[TestClass2]'
According to my understanding of self, it should be of type AstereoFacade,
which has a atag property.
What also confuses me is that there is no difference in the code generated for:
context AstereoFacade inv: associatedBs->forAll(btag = self.atag)
context AstereoFacade inv: associatedBs->forAll(btag = atag)
=> using self makes no difference
-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server.
Download it for free - -and be entered to win a 42" plasma tv or your very
own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php