Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for inverse references navigation #190

Closed
1 task done
pcdavid opened this issue Dec 11, 2020 · 0 comments · Fixed by #191
Closed
1 task done

Add support for inverse references navigation #190

pcdavid opened this issue Dec 11, 2020 · 0 comments · Fixed by #191

Comments

@pcdavid
Copy link
Member

pcdavid commented Dec 11, 2020

  • I have checked that this feature has not yet been suggested by someone else.

Expected behavior

Sirius Desktop supports the eInverse() AQL service in its intepreted expressions to navigate "backwards" on EMF references in the semantic model. This feature is used in a lot of existing VSMs, but we do not support it as it requires setting up AQL properly for that.

Cuttings backs

  • Make the feature configurable (see below).
  • Make the feature lazy (see below).

Potential side effects

The addition of an ECrossReferenceAdapter increases the memory footprint. If that is an issue, maybe this should be configurable (or the adapter installed lazyly on the first invocation of eInverse in a given project).

Describe alternatives you've considered

  • Use one of the EcoreUtil.UsageCrossReferencer.findAll() on every call to CrossReferenceProvider#getInverseReferences. This would avoid the memory overhead, but replace it with a very costly operation on every invocation (rebuild a full UsageCrossReferencer each time).
pcdavid added a commit that referenced this issue Dec 11, 2020
Install an ECrossReferenceAdapter directly on every EditingContext,
and configure the AQL interpreter to use it as the source for
eInverse().

Fixes #190.

Bug: #190
Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
pcdavid added a commit that referenced this issue Jul 16, 2021
Install an ECrossReferenceAdapter directly on every EditingContext,
and configure the AQL interpreter to use it as the source for
eInverse().

Fixes #190.

Bug: #190
Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
pcdavid added a commit that referenced this issue Jul 16, 2021
Install an ECrossReferenceAdapter directly on every EditingContext,
and configure the AQL interpreter to use it as the source for
eInverse().

Fixes #190.

Bug: #190
Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
sbegaudeau pushed a commit that referenced this issue Aug 6, 2021
Install an ECrossReferenceAdapter directly on every EditingContext,
and configure the AQL interpreter to use it as the source for
eInverse().

Bug: #190
Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
sbegaudeau pushed a commit that referenced this issue Aug 6, 2021
Install an ECrossReferenceAdapter directly on every EditingContext,
and configure the AQL interpreter to use it as the source for
eInverse().

Bug: #190
Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
@sbegaudeau sbegaudeau added this to the 0.5.0 milestone Aug 6, 2021
@sbegaudeau sbegaudeau linked a pull request Aug 6, 2021 that will close this issue
16 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants