[QVTO] How to handle optional attributes with primitive types? [message #485763] |
Mon, 14 September 2009 20:52 |
Eclipse User |
|
|
|
Originally posted by: broerkens.web.de
Dear all,
I am using QVTO with a metamodel that contains optional (0..1
multiplicity) attributes which are of type EBoolean.
In order to be able to distinguish between 'true', 'false' (the default)
and '<not set>' the property 'unsettable' is set to 'true'.
In Java I can find out if the attribute is set by calling 'eIsSet()'.
In QVTO I tried the following expression to check if the value of an
optional attribute was set:
obj.myOptionalAttribute->notEmpty()
This worked fine for most attributes. Unfortunately, it doesn't work for
attributes of type EBoolean (or enumerations).
Did I find a bug in QVTO/OCL or is there another way for finding out if
an optional attribute is set in QVTO?
Thank you very much in advance.
Kind regards
Mark
|
|
|
Re: [QVTO] How to handle optional attributes with primitive types? [message #485925 is a reply to message #485763] |
Tue, 15 September 2009 14:21 |
Eclipse User |
|
|
|
Originally posted by: dvorak.radek.gmail.com
Hi Mark,
The current QVTO provides a limited set of reflective operations, as
defined
by OMG spec in 8.3.4 section.
Though in MOF there is Element::isSet(Property) operation, which is an
analog
of ecore's eIsSet(...), it's not available to the transformation writer
currently.
The spec is actually not very clear about what can be used from MOF
reflection in QVT, see http://www.omg.org/issues/issue11056.txt.
The only workaround that comes into my mind for now, is to define an
operation in
a java black-box library, which delegates to ecore, something like:
@Operation(contextual=true)
public static boolean isPropertySet(Object self, String featureName);
Applicable in QVT like bellow (after the library is imported):
obj.isPropertySet(myOptionalAttribute);
At the moment, there is no standard way to perform such a check.
I have to review the behavior you have used for some of the attribute types
checking.
Regards,
/Radek
On Mon, 14 Sep 2009 22:52:33 +0200, Mark Br?oerkens <broerkens@web.de>
wrote:
> Dear all,
>
> I am using QVTO with a metamodel that contains optional (0..1
> multiplicity) attributes which are of type EBoolean.
> In order to be able to distinguish between 'true', 'false' (the default)
> and '<not set>' the property 'unsettable' is set to 'true'.
> In Java I can find out if the attribute is set by calling 'eIsSet()'.
>
> In QVTO I tried the following expression to check if the value of an
> optional attribute was set:
>
> obj.myOptionalAttribute->notEmpty()
>
> This worked fine for most attributes. Unfortunately, it doesn't work for
> attributes of type EBoolean (or enumerations).
>
> Did I find a bug in QVTO/OCL or is there another way for finding out if
> an optional attribute is set in QVTO?
>
> Thank you very much in advance.
>
> Kind regards
>
>
> Mark
|
|
|
|
Powered by
FUDForum. Page generated in 0.04029 seconds