OCL and Ecore object relationships [message #70192] |
Tue, 05 May 2009 17:04 |
Eclipse User |
|
|
|
Originally posted by: jose.hernandez.smartstream-stp.com
Hi,
Would anyone be able to explain how MDT OCL goes about determining what
objects to return when EClass.allInstances() is invoked?
Regards,
Jose
|
|
|
Re: OCL and Ecore object relationships [message #70217 is a reply to message #70192] |
Tue, 05 May 2009 20:58 |
|
--=-FhHnWREGoVkBFyoVot7u
Content-Type: text/plain
Content-Transfer-Encoding: 7bit
Hi, Jose,
The implementation of the allInstances() operation relies on an "extent
map" provided to the interpreter by the EvaluationEnvironment. This
evaluation environment is constructed by the OCL facade object or by a
Query, using the metamodel-specific EnvironmentFactory.
The default implementation of the extent map for all metamodels is one
that lazily computes the extents of classes within the scope of a
Resource, that resource being the one containing the EObject that is the
"self" of an OCL expression evaluation. You can provide your own
extent-map implementation if you like, for example to search an entire
ResourceSet for instances of a class.
So, by default, the expression EClass.allInstances() will return all
EClasses in the same resource as the context EObject.
To plug in your own extent map implementation, I suggest you extend the
LazyExtentMap class provided by the OCL API. Then, initialize your OCL
instance with a custom EnvironmentFactory implementation that creates a
custom EvaluationEnvironment implementation that creates your extent
map.
HTH,
Christian
On Tue, 2009-05-05 at 18:04 +0100, Jose Hernandez wrote:
> Hi,
>
> Would anyone be able to explain how MDT OCL goes about determining what
> objects to return when EClass.allInstances() is invoked?
>
> Regards,
> Jose
>
>
--=-FhHnWREGoVkBFyoVot7u
Content-Type: text/html; charset="utf-8"
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
<META NAME="GENERATOR" CONTENT="GtkHTML/3.24.1.1">
</HEAD>
<BODY>
Hi, Jose,<BR>
<BR>
The implementation of the allInstances() operation relies on an "extent map" provided to the interpreter by the EvaluationEnvironment. This evaluation environment is constructed by the OCL facade object or by a Query, using the metamodel-specific EnvironmentFactory.<BR>
<BR>
The default implementation of the extent map for all metamodels is one that lazily computes the extents of classes within the scope of a Resource, that resource being the one containing the EObject that is the "self" of an OCL expression evaluation. You can provide your own extent-map implementation if you like, for example to search an entire ResourceSet for instances of a class.<BR>
<BR>
So, by default, the expression EClass.allInstances() will return all EClasses in the same resource as the context EObject.<BR>
<BR>
To plug in your own extent map implementation, I suggest you extend the LazyExtentMap class provided by the OCL API. Then, initialize your OCL instance with a custom EnvironmentFactory implementation that creates a custom EvaluationEnvironment implementation that creates your extent map.<BR>
<BR>
HTH,<BR>
<BR>
Christian<BR>
<BR>
On Tue, 2009-05-05 at 18:04 +0100, Jose Hernandez wrote:
<BLOCKQUOTE TYPE=CITE>
<PRE>
Hi,
Would anyone be able to explain how MDT OCL goes about determining what
objects to return when EClass.allInstances() is invoked?
Regards,
Jose
</PRE>
</BLOCKQUOTE>
</BODY>
</HTML>
--=-FhHnWREGoVkBFyoVot7u--
|
|
|
Powered by
FUDForum. Page generated in 0.03434 seconds