Use language-specific option for metamodel loading when using emf-model language#2845
Use language-specific option for metamodel loading when using emf-model language#2845
Conversation
…el instance parsing.
…red to parse model instances.
…on contains metamodel files, a warning will be displayed.
There was a problem hiding this comment.
Pull request overview
This PR replaces the prior submission-order-based metamodel loading mechanism for the emf-model language with a language-specific option that allows explicitly specifying .ecore metamodel path(s). As a result, core no longer supports language-controlled submission reordering / ordered parsing, and the relevant Language interface methods are deprecated.
Changes:
- Add
metamodellanguage option foremf-modelto load/register one or more.ecoremetamodel files. - Remove the submission order customization mechanism from core parsing/building and from
EmfModelLanguage. - Adjust EMF model parsing behavior to warn/skip
.ecorefiles found in submissions and update unit test resources accordingly.
Reviewed changes
Copilot reviewed 9 out of 10 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| languages/emf-model/src/test/resources/de/jplag/bookStore.ecore | Adds a test metamodel resource used via the new metamodel-path option. |
| languages/emf-model/src/test/java/de/jplag/emf/model/MinimalModelInstanceTest.java | Updates EMF model instance test to set the metamodel option instead of relying on submission order. |
| languages/emf-model/src/main/java/de/jplag/emf/model/parser/DynamicModelParser.java | Stops implicitly loading metamodels from submission files; warns instead. |
| languages/emf-model/src/main/java/de/jplag/emf/model/MetamodelPathOption.java | Introduces new option that parses/registers metamodel(s) from provided path(s). |
| languages/emf-model/src/main/java/de/jplag/emf/model/EmfModelLanguage.java | Removes submission ordering hooks and exposes EmfLanguageOptions via getOptions(). |
| languages/emf-model/src/main/java/de/jplag/emf/model/EmfLanguageOptions.java | Adds options container for emf-model language (registers the new metamodel option). |
| language-api/src/main/java/de/jplag/options/LanguageOptions.java | Adds addOption(...) helper for registering custom LanguageOption implementations. |
| language-api/src/main/java/de/jplag/Language.java | Deprecates the submission-order-related extension points. |
| core/src/main/java/de/jplag/SubmissionSetBuilder.java | Removes submission-set reordering based on language submission order customization. |
| core/src/main/java/de/jplag/SubmissionSet.java | Always parses submissions in parallel (removes conditional sequential parsing path). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
languages/emf-model/src/main/java/de/jplag/emf/model/MetamodelPathOption.java
Show resolved
Hide resolved
languages/emf-model/src/main/java/de/jplag/emf/model/MetamodelPathOption.java
Show resolved
Hide resolved
languages/emf-model/src/main/java/de/jplag/emf/model/MetamodelPathOption.java
Outdated
Show resolved
Hide resolved
languages/emf-model/src/main/java/de/jplag/emf/model/MetamodelPathOption.java
Outdated
Show resolved
Hide resolved
languages/emf-model/src/main/java/de/jplag/emf/model/parser/DynamicModelParser.java
Outdated
Show resolved
Hide resolved
|
|
@robinmaisch, this PR deprecates a few methods of the public API. Is the next release set to be a major one? I could either remove these methods directly or just deprecate them for now. Any preferences? |



This PR replaces the clunky order-based mechanism to ensure metamodel files are loaded before parsing model files. This is done by introducing a language-specific option, which allows specifying one or more paths to
.ecorefiles. As a consequence, theemf-modellanguage no longer requires a submission order. As this is the only language that uses this feature, we can remove it. The corresponding methods in theLanguageinterface are marked as deprecated.Partly solves #576.
Work in progress, tasks left to do:
Languageinterface should be removed now (only possible if next release is a major one).For release notes:
TODO