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 contributions of export rules and checks to the language #46

Open
rmitin opened this issue Jan 30, 2018 · 0 comments
Open
Assignees

Comments

@rmitin
Copy link
Collaborator

rmitin commented Jan 30, 2018

Sometimes certain class of sources of one given DSL needs to get more support: it infers more types, it has specific constrains, it exports those inferred types to the index. These extensions cannot and should not be part of the core plugin for the language. To implement them separately a mechanism for extensions is needed.

We already have a way to contribute type model inference extensions with com.avaloq.tools.ddk.xtext.modelinference.IAdditionalModelInferrer. Now we generalize it for export rules and checks.

rmitin pushed a commit to rmitin/dsl-devkit that referenced this issue Jan 30, 2018
Generalize existing IAdditionalModelInferrer pattern to support
extending multiple services. For now we add services required for export
grouped together (fingerprint computer, resource description strategy,
qualified name provider) in IAdditionalExport.

We keep IAdditionalModelInferrer as is, but do not register it directly
anymore in an extension point. Instead in extension point we register
ILanguageContribution where we can register extensions for multiple
services. Check extension will then also come into this service. Later
we might need a similar thing for UI services when we are to extend
content assist.

Both *InferrersService and *ExportService get are language specific and
can be injected by languages that support extensions. These services
have default implementations (DefaultAdditionalExportService,
DefaultAdditionalInferrersService) which rely on global
ILanguageContributionService. ILanguageContribution service is the one
that may have different implementations for the standalone builder and
for Eclipse OSGi use case.

Issue dsldevkit#46
rmitin pushed a commit to rmitin/dsl-devkit that referenced this issue Feb 8, 2018
Generalize existing IAdditionalModelInferrer pattern to support
extending multiple services. For now we add services required for export
grouped together (fingerprint computer, resource description strategy,
qualified name provider) in IAdditionalExport.

We keep IAdditionalModelInferrer as is, but do not register it directly
anymore in an extension point. Instead in extension point we register
ILanguageContribution where we can register extensions for multiple
services. Check extension will then also come into this service. Later
we might need a similar thing for UI services when we are to extend
content assist.

Both *InferrersService and *ExportService get are language specific and
can be injected by languages that support extensions. These services
have default implementations (DefaultAdditionalExportService,
DefaultAdditionalInferrersService) which rely on global
ILanguageContributionService. ILanguageContribution service is the one
that may have different implementations for the standalone builder and
for Eclipse OSGi use case.

Issue dsldevkit#46
@rmitin rmitin self-assigned this Feb 8, 2018
rmitin pushed a commit to rmitin/dsl-devkit that referenced this issue Feb 13, 2018
As there can be several name providers, use different cache key for
different class of the name provider.

Issue dsldevkit#46
Change-Id: I1bd922a80219e9ac7e0070449c73f116db67374e
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant