On Wed, Jun 8, 2011 at 3:54 PM, Tudor Girba
<tudor(a)tudorgirba.com> wrote:
Hi,
On 8 Jun 2011, at 15:45, Usman Bhatti wrote:
On Wed, Jun 8, 2011 at 3:10 PM, Tudor Girba
<tudor(a)tudorgirba.com> wrote:
Hi,
On 8 Jun 2011, at 14:21, Simon Denier wrote:
On 8 juin 2011, at 11:52, Usman Bhatti wrote:
I am looking to understand what mse entities are
created for associations (except inheritance i.e. invocations, access, refs) in code and
how to exactly treat the duplicates. I have seen a reference of it in a bug reported for
VerveineJ but I am not sure if this issue has been discussed elsewhere.
For example,
A a;
M()
{
a = new A();
a = new A();
a.CallAMethod();
a.CallAMethod();
}
The above code creates these associations (with Verveinesharp) ..
1. An invocations to A's constructor (duplicate constructor invocation is ignored).
2. A field access to the field a (only one instance is recorded, the others are just
ignored).
3. An invocation to CallAMethod (field access is already recorded so this one is not
considered).
4. A reference from method M() to type A (Duplicate reference is ignored).
To me it seems like there are:
- 2 invocations to A constructor
- 2 field accesses to a
- 2 invocations to CallAMethod
There is no direct reference to class A, only indirect references through the
constructor/method calls.
Yes! This is the correct interpretation.
Usman, please do it like suggested by Simon.
So, we keep the duplicates in MSE. Ok I'll change VerveineSharp to implement this
interpretation. But I do not understand what is mean by direct and indirect references
because as I understand the meta-model provides only one type i.e. a Reference class to
instantiate references. How do we do the different between direct and indirect?
What Simon meant is that in the code there is no Reference to class A. There are only
calls to the constructor A. And a call to a constructor can be considered an indirect
reference. But, the model should only represent what is found in the code.
Is direct reference = static reference?