Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcbrun2015-04-20 09:30:28 +0000
committerPierre-Charles David2015-04-21 08:29:48 +0000
commita7f6c3607df3ba4bd59d149ca101aa0d77223bc0 (patch)
treee1df9eaecb0de8aee6b1a2270e62189b92da23bd
parent4127adbc9cd745987adfac4fc849eb0ab1eced5f (diff)
downloadorg.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>
-rw-r--r--plugins/org.eclipse.sirius.diagram.sequence/plugin.xml6
-rw-r--r--plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/metamodel/SequenceDiagramMetamodelsProvider.java43
-rw-r--r--plugins/org.eclipse.sirius.diagram/plugin.xml6
-rw-r--r--plugins/org.eclipse.sirius.diagram/src-core/org/eclipse/sirius/diagram/business/internal/dialect/DiagramMetamodelsProvider.java44
-rw-r--r--plugins/org.eclipse.sirius.table/plugin.xml6
-rw-r--r--plugins/org.eclipse.sirius.table/src/org/eclipse/sirius/table/business/internal/dialect/TableMetamodelsProvider.java40
-rw-r--r--plugins/org.eclipse.sirius.tree/plugin.xml6
-rw-r--r--plugins/org.eclipse.sirius.tree/src/org/eclipse/sirius/tree/business/internal/dialect/TreeMetamodelsProvider.java40
-rw-r--r--plugins/org.eclipse.sirius/plugin.xml6
-rw-r--r--plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/dialect/ViewpointMetamodelsProvider.java45
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;
+ }
+
+}

Back to the top