Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
VIATRA/Releases/Query/MigrateTo0.7
Original article: http://incquery.net/incquery/documentation/newandnoteworthy/migrate-0.7
Contents
Architecture changes
New component: incquery.evm plug-in
New trigger engine component to develop event-driven applications.
The existing integration frameworks validation.runtime and databinding.runtime now depends on this new plug-in.
Renamed all projects
All projects have been renamed to be present in the org.eclipse.incquery namespace. A table showing the new and old names is created for a brief overview.
Old name | New name | Remarks |
---|---|---|
org.eclipse.viatra2.emf.incquery.databinding.runtime | org.eclipse.incquery.databinding.runtime | |
org.eclipse.viatra2.emf.incquery.tooling.generator.databinding | org.eclipse.incquery.databinding.tooling | |
org.eclipse.viatra2.patternlanguage.emf | org.eclipse.incquery.patternlanguage.emf | |
org.eclipse.viatra2.patternlanguage.emf.ui | org.eclipse.incquery.patternlanguage.emf.ui | |
org.eclipse.viatra2.patternlanguage.generator.util | org.eclipse.incquery.patternlanguage.generator | |
org.eclipse.viatra2.patternlanguage.core | org.eclipse.incquery.patternlanguage | |
org.eclipse.viatra2.patternlanguage.core.ui | org.eclipse.incquery.patternlanguage.ui | |
org.eclipse.viatra2.emf.incquery.derived | org.eclipse.incquery.querybasedfeatures.runtime | |
org.eclipse.viatra2.emf.incquery.tooling.generator.derived | org.eclipse.incquery.querybasedfeatures.tooling | |
org.eclipse.viatra2.emf.incquery.base.itc | org.eclipse.incquery.runtime.base.itc | |
org.eclipse.viatra2.emf.incquery.base | org.eclipse.incquery.runtime.base | |
org.eclipse.viatra2.emf.incquery.runtime.gmf | org.eclipse.incquery.runtime.gmf | Restructured GMF specific code |
org.eclipse.viatra2.emf.incquery.validation.runtime.ui.gmf | ||
org.eclipse.viatra2.emf.incquery.runtime.graphiti | org.eclipse.incquery.runtime.graphiti | |
org.eclipse.viatra2.gtasm.patternmatcher.incremental.rete | org.eclipse.incquery.runtime.rete | Version number downgrade to 0.7.0 to match other projects |
org.eclipse.viatra2.emf.incquery.runtime | org.eclipse.incquery.runtime | |
org.eclipse.viatra2.emf.incquery.tooling.core | org.eclipse.incquery.tooling.core | Merging two projects |
org.eclipse.viatra2.emf.incquery.tooling.generator | ||
org.eclipse.viatra2.emf.incquery.tooling.generator.model.ui | org.eclipse.incquery.tooling.generator.model.ui | |
org.eclipse.viatra2.emf.incquery.tooling.generator.model | org.eclipse.incquery.tooling.generator.model | |
org.eclipse.viatra2.emf.incquery.tooling.generator.ui | org.eclipse.incquery.tooling.generator.sampleui | |
org.eclipse.viatra2.emf.incquery.tooling.retevis | org.eclipse.incquery.tooling.ui.retevis | |
org.eclipse.viatra2.emf.incquery.tooling.gui | org.eclipse.incquery.tooling.ui | |
org.eclipse.viatra2.emf.incquery.validation.runtime.ui | org.eclipse.incquery.validation.runtime.ui | |
org.eclipse.viatra2.emf.incquery.validation.runtime | org.eclipse.incquery.validation.runtime | |
org.eclipse.viatra2.emf.incquery.tooling.generator.validation | org.eclipse.incquery.validation.tooling |
Migrating Your Projects
Changes to Generated Code
As the generated code of EMF-IncQuery depends on the EMF-IncQuery runtime, the renaming of the projects cause the generated projects not working. However, we made sure that all the pattern definitions should work in the new release as well. There are three ways to update the existing EMF-IncQuery project:
- Create a new EMF-IncQuery project using the project wizard, and copy the eiq and eiqgen files and possibly any other manually written file to the new project. Matcher (and integration) code is regenerated, and the project will be ready to use.
- Manually update the existing project:
- Open the .project file of the project, and update the nature and builder references. An example for the rewriting is available in the following GitHub Gist:
- Remove all references of generated code from the plugin.xml.
- Trigger a full rebuild of the project to regenerate all matcher and integration code.
- Starting with M3, you can also use the "Update/Add EMF-IncQuery Nature" menu item from the "Configuration" sub-menu on any project (available through right clicking on the project in the Project Explorer view). This performs the procedure described in Step 2 automatically.
API changes
0.7-M2
- Databinding plug-in
- The ObservablePattenMatchList class has been extended with a generic type parameter. Additonally, a new factory method is availabe (similar to other databinding factories). See the class IncQueryObservables for details.
- Query-based Features
- All corresponding code has been moved to a separate plugin.
- The handler, helper and corresponding classes have been renamed. This should not cause problems if you regenerate your code.
- The annotation is changed to @QueryBasedFeature, the old annotation is marked as deprecated.
- Matcher / match API changes
- Some methods dealing with array-based match representations (raw*, arrayToMatch, etc.) were removed from the public matcher interface, as they were no longer needed in the vast majority of use cases.
- Matches can now be either mutable or immutable. For safety reasons, the matchers always produce immutable matches; setting their fields will raise an exception. However, matchers do accept a mutable partial match as query input; for setting up such a partial match, you can request a mutable match instance from the matcher by .newEmptyMatch().
0.7-M3
- Basic API changes
- generated package restructuring
- MatcherFactory -> QuerySpecification
- Matcher initialization: use IncQueryEngine and initialize it first, using .on()
- pattern group renamed
- Advanced API changes
- unmanaged vs advanced engine, initialization
- query specification: registry, use cases?
- change processing callbacks