diff options
| author | cbrun | 2015-04-20 09:30:28 +0000 |
|---|---|---|
| committer | Pierre-Charles David | 2015-04-21 08:29:48 +0000 |
| commit | a7f6c3607df3ba4bd59d149ca101aa0d77223bc0 (patch) | |
| tree | e1df9eaecb0de8aee6b1a2270e62189b92da23bd | |
| parent | 4127adbc9cd745987adfac4fc849eb0ab1eced5f (diff) | |
| download | org.eclipse.sirius-a7f6c3607df3ba4bd59d149ca101aa0d77223bc0.tar.gz org.eclipse.sirius-a7f6c3607df3ba4bd59d149ca101aa0d77223bc0.tar.xz org.eclipse.sirius-a7f6c3607df3ba4bd59d149ca101aa0d77223bc0.zip | |
[461498] Systematically declare Dialect Metamodels as available
There was no guarantee at evaluation time that Ecore models used by
Sirius for representations or VSM models would be accessible in the
context of a Session. This is especially problematic for IInterpreters
implementations which will not do their own lookup in the EMF
EcorePackage registry when a type is not found (AQL notably won't do any
lookup and expect the client code to declare the EPackage to support).
This commit changes this by using the org.eclipse.sirius.mmdescriptor
extension point in each dialect to declare the EPackages used by the
host dialect, making those EPackages usable in a interpreted expression.
Bug: 461498
Change-Id: Ie90ff18040894d27b5714795ee162ad277816dc4
Signed-off-by: Cedric Brun <cedric.brun@obeo.fr>
10 files changed, 242 insertions, 0 deletions
diff --git a/plugins/org.eclipse.sirius.diagram.sequence/plugin.xml b/plugins/org.eclipse.sirius.diagram.sequence/plugin.xml index afedb14633..3db8038714 100644 --- a/plugins/org.eclipse.sirius.diagram.sequence/plugin.xml +++ b/plugins/org.eclipse.sirius.diagram.sequence/plugin.xml @@ -61,4 +61,10 @@ class="org.eclipse.sirius.diagram.sequence.tool.internal.action.repair.SequenceDiagramRepairParticipant"> </repairParticipant> </extension> + <extension + point="org.eclipse.sirius.mmdescriptor"> + <descriptorprovider + class="org.eclipse.sirius.diagram.sequence.business.internal.metamodel.SequenceDiagramMetamodelsProvider"> + </descriptorprovider> + </extension> </plugin> diff --git a/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/metamodel/SequenceDiagramMetamodelsProvider.java b/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/metamodel/SequenceDiagramMetamodelsProvider.java new file mode 100644 index 0000000000..fb54ebd849 --- /dev/null +++ b/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/metamodel/SequenceDiagramMetamodelsProvider.java @@ -0,0 +1,43 @@ +/** + * Copyright (c) 2015 Obeo + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Obeo - initial API and implementation + * + */ +package org.eclipse.sirius.diagram.sequence.business.internal.metamodel; + +import java.util.Collection; +import java.util.Set; + +import org.eclipse.sirius.business.api.extender.MetamodelDescriptorProvider; +import org.eclipse.sirius.ecore.extender.business.api.accessor.EcoreMetamodelDescriptor; +import org.eclipse.sirius.ecore.extender.business.api.accessor.MetamodelDescriptor; +import org.eclipse.sirius.viewpoint.description.Viewpoint; + +import com.google.common.collect.Sets; + +/** + * Provides the descriptors for the sequence diagram metamodels of Sirius. + * + * @author <a href="mailto:cedric.brun@obeo.fr">Cedric Brun</a> + * + */ +public class SequenceDiagramMetamodelsProvider implements MetamodelDescriptorProvider { + + @Override + public Collection<MetamodelDescriptor> provides(Viewpoint vp) { + Set<MetamodelDescriptor> result = Sets.newLinkedHashSet(); + result.add(new EcoreMetamodelDescriptor(org.eclipse.sirius.diagram.sequence.SequencePackage.eINSTANCE)); + result.add(new EcoreMetamodelDescriptor(org.eclipse.sirius.diagram.sequence.description.DescriptionPackage.eINSTANCE)); + result.add(new EcoreMetamodelDescriptor(org.eclipse.sirius.diagram.sequence.description.tool.ToolPackage.eINSTANCE)); + result.add(new EcoreMetamodelDescriptor(org.eclipse.sirius.diagram.sequence.ordering.OrderingPackage.eINSTANCE)); + result.add(new EcoreMetamodelDescriptor(org.eclipse.sirius.diagram.sequence.template.TemplatePackage.eINSTANCE)); + return result; + } + +} diff --git a/plugins/org.eclipse.sirius.diagram/plugin.xml b/plugins/org.eclipse.sirius.diagram/plugin.xml index 723cb33a10..0491a7097d 100644 --- a/plugins/org.eclipse.sirius.diagram/plugin.xml +++ b/plugins/org.eclipse.sirius.diagram/plugin.xml @@ -590,5 +590,11 @@ kind="RepresentationsFile"> </participant> </extension> + <extension + point="org.eclipse.sirius.mmdescriptor"> + <descriptorprovider + class="org.eclipse.sirius.diagram.business.internal.dialect.DiagramMetamodelsProvider"> + </descriptorprovider> + </extension> </plugin> diff --git a/plugins/org.eclipse.sirius.diagram/src-core/org/eclipse/sirius/diagram/business/internal/dialect/DiagramMetamodelsProvider.java b/plugins/org.eclipse.sirius.diagram/src-core/org/eclipse/sirius/diagram/business/internal/dialect/DiagramMetamodelsProvider.java new file mode 100644 index 0000000000..cb4d2eb094 --- /dev/null +++ b/plugins/org.eclipse.sirius.diagram/src-core/org/eclipse/sirius/diagram/business/internal/dialect/DiagramMetamodelsProvider.java @@ -0,0 +1,44 @@ +/** + * Copyright (c) 2015 Obeo + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Obeo - initial API and implementation + * + */ +package org.eclipse.sirius.diagram.business.internal.dialect; + +import java.util.Collection; +import java.util.Set; + +import org.eclipse.sirius.business.api.extender.MetamodelDescriptorProvider; +import org.eclipse.sirius.ecore.extender.business.api.accessor.EcoreMetamodelDescriptor; +import org.eclipse.sirius.ecore.extender.business.api.accessor.MetamodelDescriptor; +import org.eclipse.sirius.viewpoint.description.Viewpoint; + +import com.google.common.collect.Sets; + +/** + * Provides the descriptors for the diagram metamodels of Sirius. + * + * @author <a href="mailto:cedric.brun@obeo.fr">Cedric Brun</a> + * + */ +public class DiagramMetamodelsProvider implements MetamodelDescriptorProvider { + + @Override + public Collection<MetamodelDescriptor> provides(Viewpoint vp) { + Set<MetamodelDescriptor> result = Sets.newLinkedHashSet(); + result.add(new EcoreMetamodelDescriptor(org.eclipse.sirius.diagram.DiagramPackage.eINSTANCE)); + result.add(new EcoreMetamodelDescriptor(org.eclipse.sirius.diagram.description.DescriptionPackage.eINSTANCE)); + result.add(new EcoreMetamodelDescriptor(org.eclipse.sirius.diagram.description.style.StylePackage.eINSTANCE)); + result.add(new EcoreMetamodelDescriptor(org.eclipse.sirius.diagram.description.tool.ToolPackage.eINSTANCE)); + result.add(new EcoreMetamodelDescriptor(org.eclipse.sirius.diagram.description.filter.FilterPackage.eINSTANCE)); + result.add(new EcoreMetamodelDescriptor(org.eclipse.sirius.diagram.description.concern.ConcernPackage.eINSTANCE)); + return result; + } + +} diff --git a/plugins/org.eclipse.sirius.table/plugin.xml b/plugins/org.eclipse.sirius.table/plugin.xml index 8445cfd9b4..87b136a553 100644 --- a/plugins/org.eclipse.sirius.table/plugin.xml +++ b/plugins/org.eclipse.sirius.table/plugin.xml @@ -33,5 +33,11 @@ class="org.eclipse.sirius.table.business.internal.dialect.TableDialect"> </dialect> </extension> + <extension + point="org.eclipse.sirius.mmdescriptor"> + <descriptorprovider + class="org.eclipse.sirius.table.business.internal.dialect.TableMetamodelsProvider"> + </descriptorprovider> + </extension> </plugin> diff --git a/plugins/org.eclipse.sirius.table/src/org/eclipse/sirius/table/business/internal/dialect/TableMetamodelsProvider.java b/plugins/org.eclipse.sirius.table/src/org/eclipse/sirius/table/business/internal/dialect/TableMetamodelsProvider.java new file mode 100644 index 0000000000..6c7a33e5d9 --- /dev/null +++ b/plugins/org.eclipse.sirius.table/src/org/eclipse/sirius/table/business/internal/dialect/TableMetamodelsProvider.java @@ -0,0 +1,40 @@ +/** + * Copyright (c) 2015 Obeo + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Obeo - initial API and implementation + * + */ +package org.eclipse.sirius.table.business.internal.dialect; + +import java.util.Collection; +import java.util.Set; + +import org.eclipse.sirius.business.api.extender.MetamodelDescriptorProvider; +import org.eclipse.sirius.ecore.extender.business.api.accessor.EcoreMetamodelDescriptor; +import org.eclipse.sirius.ecore.extender.business.api.accessor.MetamodelDescriptor; +import org.eclipse.sirius.viewpoint.description.Viewpoint; + +import com.google.common.collect.Sets; + +/** + * Provides the descriptors for the table metamodels of Sirius. + * + * @author <a href="mailto:cedric.brun@obeo.fr">Cedric Brun</a> + * + */ +public class TableMetamodelsProvider implements MetamodelDescriptorProvider { + + @Override + public Collection<MetamodelDescriptor> provides(Viewpoint vp) { + Set<MetamodelDescriptor> result = Sets.newLinkedHashSet(); + result.add(new EcoreMetamodelDescriptor(org.eclipse.sirius.table.metamodel.table.TablePackage.eINSTANCE)); + result.add(new EcoreMetamodelDescriptor(org.eclipse.sirius.table.metamodel.table.description.DescriptionPackage.eINSTANCE)); + return result; + } + +} diff --git a/plugins/org.eclipse.sirius.tree/plugin.xml b/plugins/org.eclipse.sirius.tree/plugin.xml index 27966e9048..b225726e48 100644 --- a/plugins/org.eclipse.sirius.tree/plugin.xml +++ b/plugins/org.eclipse.sirius.tree/plugin.xml @@ -32,5 +32,11 @@ class="org.eclipse.sirius.tree.business.internal.dialect.TreeDialect"> </dialect> </extension> + <extension + point="org.eclipse.sirius.mmdescriptor"> + <descriptorprovider + class="org.eclipse.sirius.tree.business.internal.dialect.TreeMetamodelsProvider"> + </descriptorprovider> + </extension> </plugin> diff --git a/plugins/org.eclipse.sirius.tree/src/org/eclipse/sirius/tree/business/internal/dialect/TreeMetamodelsProvider.java b/plugins/org.eclipse.sirius.tree/src/org/eclipse/sirius/tree/business/internal/dialect/TreeMetamodelsProvider.java new file mode 100644 index 0000000000..1a77432fd8 --- /dev/null +++ b/plugins/org.eclipse.sirius.tree/src/org/eclipse/sirius/tree/business/internal/dialect/TreeMetamodelsProvider.java @@ -0,0 +1,40 @@ +/** + * Copyright (c) 2015 Obeo + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Obeo - initial API and implementation + * + */ +package org.eclipse.sirius.tree.business.internal.dialect; + +import java.util.Collection; +import java.util.Set; + +import org.eclipse.sirius.business.api.extender.MetamodelDescriptorProvider; +import org.eclipse.sirius.ecore.extender.business.api.accessor.EcoreMetamodelDescriptor; +import org.eclipse.sirius.ecore.extender.business.api.accessor.MetamodelDescriptor; +import org.eclipse.sirius.viewpoint.description.Viewpoint; + +import com.google.common.collect.Sets; + +/** + * Provides the descriptors for the tree metamodels of Sirius. + * + * @author <a href="mailto:cedric.brun@obeo.fr">Cedric Brun</a> + * + */ +public class TreeMetamodelsProvider implements MetamodelDescriptorProvider { + + @Override + public Collection<MetamodelDescriptor> provides(Viewpoint vp) { + Set<MetamodelDescriptor> result = Sets.newLinkedHashSet(); + result.add(new EcoreMetamodelDescriptor(org.eclipse.sirius.tree.TreePackage.eINSTANCE)); + result.add(new EcoreMetamodelDescriptor(org.eclipse.sirius.tree.description.DescriptionPackage.eINSTANCE)); + return result; + } + +} diff --git a/plugins/org.eclipse.sirius/plugin.xml b/plugins/org.eclipse.sirius/plugin.xml index 181fa00841..c358b1d82c 100644 --- a/plugins/org.eclipse.sirius/plugin.xml +++ b/plugins/org.eclipse.sirius/plugin.xml @@ -378,5 +378,11 @@ class="org.eclipse.sirius.business.internal.resource.AirDResourceFactory"> </parser> </extension> + <extension + point="org.eclipse.sirius.mmdescriptor"> + <descriptorprovider + class="org.eclipse.sirius.business.internal.dialect.ViewpointMetamodelsProvider"> + </descriptorprovider> + </extension> </plugin> diff --git a/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/dialect/ViewpointMetamodelsProvider.java b/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/dialect/ViewpointMetamodelsProvider.java new file mode 100644 index 0000000000..2aa601c4fa --- /dev/null +++ b/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/dialect/ViewpointMetamodelsProvider.java @@ -0,0 +1,45 @@ +/** + * Copyright (c) 2015 Obeo + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Obeo - initial API and implementation + * + */ +package org.eclipse.sirius.business.internal.dialect; + +import java.util.Collection; +import java.util.Set; + +import org.eclipse.sirius.business.api.extender.MetamodelDescriptorProvider; +import org.eclipse.sirius.ecore.extender.business.api.accessor.EcoreMetamodelDescriptor; +import org.eclipse.sirius.ecore.extender.business.api.accessor.MetamodelDescriptor; +import org.eclipse.sirius.viewpoint.description.Viewpoint; + +import com.google.common.collect.Sets; + +/** + * Provides the descriptors for the core metamodels of Sirius. + * + * @author <a href="mailto:cedric.brun@obeo.fr">Cedric Brun</a> + * + */ +public class ViewpointMetamodelsProvider implements MetamodelDescriptorProvider { + + @Override + public Collection<MetamodelDescriptor> provides(Viewpoint vp) { + Set<MetamodelDescriptor> result = Sets.newLinkedHashSet(); + result.add(new EcoreMetamodelDescriptor(org.eclipse.sirius.viewpoint.ViewpointPackage.eINSTANCE)); + result.add(new EcoreMetamodelDescriptor(org.eclipse.sirius.viewpoint.description.DescriptionPackage.eINSTANCE)); + result.add(new EcoreMetamodelDescriptor(org.eclipse.sirius.viewpoint.description.style.StylePackage.eINSTANCE)); + result.add(new EcoreMetamodelDescriptor(org.eclipse.sirius.viewpoint.description.tool.ToolPackage.eINSTANCE)); + result.add(new EcoreMetamodelDescriptor(org.eclipse.sirius.viewpoint.description.validation.ValidationPackage.eINSTANCE)); + result.add(new EcoreMetamodelDescriptor(org.eclipse.sirius.viewpoint.description.audit.AuditPackage.eINSTANCE)); + result.add(new EcoreMetamodelDescriptor(org.eclipse.sirius.description.contribution.ContributionPackage.eINSTANCE)); + return result; + } + +} |
