Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcbrun2015-10-05 09:05:00 +0000
committerCedric Brun2015-10-06 15:26:50 +0000
commitd727426be4cf852efe745f37f0d108979ae9a0c6 (patch)
treedd9e94e507ec3ab750b440c5248428f519de1952
parent040b81f3df11343dd3c8cf8c5a339496ac4ec8d3 (diff)
downloadorg.eclipse.sirius-d727426be4cf852efe745f37f0d108979ae9a0c6.tar.gz
org.eclipse.sirius-d727426be4cf852efe745f37f0d108979ae9a0c6.tar.xz
org.eclipse.sirius-d727426be4cf852efe745f37f0d108979ae9a0c6.zip
[479019] Introduce and use a MetamodelDescriptorProvider2 API
This API extends the original MetamodelDescriptorProvider API so that it can be called even when no Viewpoint is enabled. This allow implementers to declare accessible metamodels in a systematic way and is used by Sirius itself so that the Ecore models capturing representation data are known by the interpreters even if no Viewpoint has been selected. Bug: 479019 Change-Id: I6243f43470522c3e1f6496bde4ac63c9a890e0ff Signed-off-by: Cedric Brun <cedric.brun@obeo.fr>
-rw-r--r--plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/metamodel/SequenceDiagramMetamodelsProvider.java12
-rw-r--r--plugins/org.eclipse.sirius.diagram/src-core/org/eclipse/sirius/diagram/business/internal/dialect/DiagramMetamodelsProvider.java12
-rw-r--r--plugins/org.eclipse.sirius.doc/doc/Release_Notes.html4
-rw-r--r--plugins/org.eclipse.sirius.doc/doc/Release_Notes.textile1
-rw-r--r--plugins/org.eclipse.sirius.ecore.extender/src/org/eclipse/sirius/ecore/extender/business/api/accessor/MetamodelDescriptor.java8
-rw-r--r--plugins/org.eclipse.sirius.table/src/org/eclipse/sirius/table/business/internal/dialect/TableMetamodelsProvider.java12
-rw-r--r--plugins/org.eclipse.sirius.tree/src/org/eclipse/sirius/tree/business/internal/dialect/TreeMetamodelsProvider.java11
-rw-r--r--plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/api/extender/MetamodelDescriptorProvider.java8
-rw-r--r--plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/api/extender/MetamodelDescriptorProvider2.java39
-rw-r--r--plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/dialect/ViewpointMetamodelsProvider.java12
-rw-r--r--plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/extender/EcoreIntrinsicMetamodelDescriptorProvider.java32
-rw-r--r--plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/extender/MetamodelDescriptorManagerImpl.java27
12 files changed, 142 insertions, 36 deletions
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
index fb54ebd849..81ea9b94ac 100644
--- 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
@@ -12,9 +12,10 @@
package org.eclipse.sirius.diagram.sequence.business.internal.metamodel;
import java.util.Collection;
+import java.util.Collections;
import java.util.Set;
-import org.eclipse.sirius.business.api.extender.MetamodelDescriptorProvider;
+import org.eclipse.sirius.business.api.extender.MetamodelDescriptorProvider2;
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;
@@ -27,10 +28,10 @@ import com.google.common.collect.Sets;
* @author <a href="mailto:cedric.brun@obeo.fr">Cedric Brun</a>
*
*/
-public class SequenceDiagramMetamodelsProvider implements MetamodelDescriptorProvider {
+public class SequenceDiagramMetamodelsProvider implements MetamodelDescriptorProvider2 {
@Override
- public Collection<MetamodelDescriptor> provides(Viewpoint vp) {
+ public Collection<MetamodelDescriptor> provides(Collection<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));
@@ -39,5 +40,10 @@ public class SequenceDiagramMetamodelsProvider implements MetamodelDescriptorPro
result.add(new EcoreMetamodelDescriptor(org.eclipse.sirius.diagram.sequence.template.TemplatePackage.eINSTANCE));
return result;
}
+
+ @Override
+ public Collection<MetamodelDescriptor> provides(Viewpoint vp) {
+ return Collections.<MetamodelDescriptor>emptyList();
+ }
}
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
index cb4d2eb094..79321ed66a 100644
--- 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
@@ -12,9 +12,10 @@
package org.eclipse.sirius.diagram.business.internal.dialect;
import java.util.Collection;
+import java.util.Collections;
import java.util.Set;
-import org.eclipse.sirius.business.api.extender.MetamodelDescriptorProvider;
+import org.eclipse.sirius.business.api.extender.MetamodelDescriptorProvider2;
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;
@@ -27,10 +28,10 @@ import com.google.common.collect.Sets;
* @author <a href="mailto:cedric.brun@obeo.fr">Cedric Brun</a>
*
*/
-public class DiagramMetamodelsProvider implements MetamodelDescriptorProvider {
+public class DiagramMetamodelsProvider implements MetamodelDescriptorProvider2 {
@Override
- public Collection<MetamodelDescriptor> provides(Viewpoint vp) {
+ public Collection<MetamodelDescriptor> provides(Collection<Viewpoint> vps) {
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));
@@ -41,4 +42,9 @@ public class DiagramMetamodelsProvider implements MetamodelDescriptorProvider {
return result;
}
+ @Override
+ public Collection<MetamodelDescriptor> provides(Viewpoint vp) {
+ return Collections.<MetamodelDescriptor>emptyList();
+ }
+
}
diff --git a/plugins/org.eclipse.sirius.doc/doc/Release_Notes.html b/plugins/org.eclipse.sirius.doc/doc/Release_Notes.html
index e8f639440c..78d302be50 100644
--- a/plugins/org.eclipse.sirius.doc/doc/Release_Notes.html
+++ b/plugins/org.eclipse.sirius.doc/doc/Release_Notes.html
@@ -387,6 +387,10 @@
<li><span class="label label-success">Added</span> The class
<code>org.eclipse.sirius.common.tools.api.interpreter.StandardServices</code> has been added. This class owns methods used for service: interpreter.
</li>
+ <li><span class="label label-success">Added</span> The class
+ <code>org.eclipse.sirius.business.api.extender.MetamodelDescriptorProvider2</code> has been added and should be prefered instead of implementing
+ <code>MetamodelDescriptorProvider</code>.
+ </li>
<li><span class="label label-info">Modified</span>
<code>org.eclipse.sirius.ecore.extender.business.api.permission.IPermissionAuthority.canDeleteInstance(EObject)</code> when called for an object will not be called for children of this object as we know it will return true because if we can delete a parent object we can delete its children.
</li>
diff --git a/plugins/org.eclipse.sirius.doc/doc/Release_Notes.textile b/plugins/org.eclipse.sirius.doc/doc/Release_Notes.textile
index e3c44d5169..f4b05e52dc 100644
--- a/plugins/org.eclipse.sirius.doc/doc/Release_Notes.textile
+++ b/plugins/org.eclipse.sirius.doc/doc/Release_Notes.textile
@@ -106,6 +106,7 @@ h4. Changes in @org.eclipse.sirius@
* <span class="label label-success">Added</span> The method @addEvaluateSelectionExpressionTask@ has been added in class @org.eclipse.sirius.tools.api.command.AbstractCommandFactory@ to allow selection after tool execution.
* <span class="label label-success">Added</span> The class @org.eclipse.sirius.common.tools.api.interpreter.StandardServices@ has been added. This class owns methods used for service: interpreter.
+* <span class="label label-success">Added</span> The class @org.eclipse.sirius.business.api.extender.MetamodelDescriptorProvider2@ has been added and should be prefered instead of implementing @MetamodelDescriptorProvider@.
* <span class="label label-info">Modified</span> @org.eclipse.sirius.ecore.extender.business.api.permission.IPermissionAuthority.canDeleteInstance(EObject)@ when called for an object will not be called for children of this object as we know it will return true because if we can delete a parent object we can delete its children.
* <span class="label label-info">Modified</span> @org.eclipse.sirius.tools.api.command.DCommand@ no more inherits of @IUndoableCommand@ because useless since undo/redo is managed by EMF Transaction.
* <span class="label label-danger">Removed</span> @org.eclipse.sirius.business.api.helper.task.ICommandTask.undo()/redo()@ methods removed because they are useless since undo/redo is managed by EMF Transaction.
diff --git a/plugins/org.eclipse.sirius.ecore.extender/src/org/eclipse/sirius/ecore/extender/business/api/accessor/MetamodelDescriptor.java b/plugins/org.eclipse.sirius.ecore.extender/src/org/eclipse/sirius/ecore/extender/business/api/accessor/MetamodelDescriptor.java
index 10cb3de01b..272fbc55b3 100644
--- a/plugins/org.eclipse.sirius.ecore.extender/src/org/eclipse/sirius/ecore/extender/business/api/accessor/MetamodelDescriptor.java
+++ b/plugins/org.eclipse.sirius.ecore.extender/src/org/eclipse/sirius/ecore/extender/business/api/accessor/MetamodelDescriptor.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2009 THALES GLOBAL SERVICES.
+ * Copyright (c) 2007, 2015 THALES GLOBAL SERVICES and others.
* 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
@@ -10,9 +10,11 @@
*******************************************************************************/
package org.eclipse.sirius.ecore.extender.business.api.accessor;
-//TODOCBR comment this !
/**
- * .
+ * A Marker interface for descriptors representing metamodels. These instances
+ * will be passed around by Sirius from the MetamodelDescriptorProviders to the
+ * interpreters and model accessors which have to query for a more specific type
+ * they can handle.
*
* @author cbrun
*/
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
index 6c7a33e5d9..2299648808 100644
--- 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
@@ -12,9 +12,10 @@
package org.eclipse.sirius.table.business.internal.dialect;
import java.util.Collection;
+import java.util.Collections;
import java.util.Set;
-import org.eclipse.sirius.business.api.extender.MetamodelDescriptorProvider;
+import org.eclipse.sirius.business.api.extender.MetamodelDescriptorProvider2;
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;
@@ -27,14 +28,19 @@ import com.google.common.collect.Sets;
* @author <a href="mailto:cedric.brun@obeo.fr">Cedric Brun</a>
*
*/
-public class TableMetamodelsProvider implements MetamodelDescriptorProvider {
+public class TableMetamodelsProvider implements MetamodelDescriptorProvider2 {
@Override
- public Collection<MetamodelDescriptor> provides(Viewpoint vp) {
+ public Collection<MetamodelDescriptor> provides(Collection<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;
}
+
+ @Override
+ public Collection<MetamodelDescriptor> provides(Viewpoint vp) {
+ return Collections.<MetamodelDescriptor>emptyList();
+ }
}
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
index 1a77432fd8..d72fe1e723 100644
--- 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
@@ -12,9 +12,10 @@
package org.eclipse.sirius.tree.business.internal.dialect;
import java.util.Collection;
+import java.util.Collections;
import java.util.Set;
-import org.eclipse.sirius.business.api.extender.MetamodelDescriptorProvider;
+import org.eclipse.sirius.business.api.extender.MetamodelDescriptorProvider2;
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;
@@ -27,14 +28,18 @@ import com.google.common.collect.Sets;
* @author <a href="mailto:cedric.brun@obeo.fr">Cedric Brun</a>
*
*/
-public class TreeMetamodelsProvider implements MetamodelDescriptorProvider {
+public class TreeMetamodelsProvider implements MetamodelDescriptorProvider2 {
@Override
- public Collection<MetamodelDescriptor> provides(Viewpoint vp) {
+ public Collection<MetamodelDescriptor> provides(Collection<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;
}
+ @Override
+ public Collection<MetamodelDescriptor> provides(Viewpoint vp) {
+ return Collections.<MetamodelDescriptor> emptyList();
+ }
}
diff --git a/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/api/extender/MetamodelDescriptorProvider.java b/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/api/extender/MetamodelDescriptorProvider.java
index f6af82e2ee..220ec0959e 100644
--- a/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/api/extender/MetamodelDescriptorProvider.java
+++ b/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/api/extender/MetamodelDescriptorProvider.java
@@ -18,16 +18,24 @@ import org.eclipse.sirius.viewpoint.description.Viewpoint;
/**
* Provider able to return a list of MetamodelDescriptor from viewpoints.
*
+ * This interfaces is deprecated, MetamodelDescriptorProvider2 should be used
+ * instead as it provides the ability to handle several Viewpoints at once.
+ *
* @author cbrun
*
*/
+@Deprecated
public interface MetamodelDescriptorProvider {
/**
* return the list of metamodel descritor provided by the viewpoint.
*
+ * This method is deprecated and will not be called if the class implements
+ * {@link MetamodelDescriptorProvider2}.
+ *
* @param vp
* any representation description.
* @return the list of metamodel descritor provided by the viewpoint.
*/
+ @Deprecated
Collection<MetamodelDescriptor> provides(Viewpoint vp);
}
diff --git a/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/api/extender/MetamodelDescriptorProvider2.java b/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/api/extender/MetamodelDescriptorProvider2.java
new file mode 100644
index 0000000000..b8ab794921
--- /dev/null
+++ b/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/api/extender/MetamodelDescriptorProvider2.java
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * 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.api.extender;
+
+import java.util.Collection;
+
+import org.eclipse.sirius.ecore.extender.business.api.accessor.MetamodelDescriptor;
+import org.eclipse.sirius.viewpoint.description.Viewpoint;
+
+/**
+ * Provider able to return a list of MetamodelDescriptor from viewpoints. This
+ * is an evolution of the {@link MetamodelDescriptorProvider} API so that
+ * implementers can declare MetamodelDescriptors even if no Viewpoint is
+ * enabled.
+ *
+ * @author cbrun
+ *
+ */
+public interface MetamodelDescriptorProvider2 extends MetamodelDescriptorProvider {
+ /**
+ * Return the list of metamodel descritor provided by the selected
+ * viewpoints.
+ *
+ * @param vps
+ * A list of selected Viewpoints. This list might be empty and
+ * yet the adopter might want to provide metamodel descriptors
+ * anyway.
+ * @return the list of metamodel descritor provided by the viewpoint.
+ */
+ Collection<MetamodelDescriptor> provides(Collection<Viewpoint> vps);
+}
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
index 2aa601c4fa..99729d845a 100644
--- 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
@@ -12,9 +12,10 @@
package org.eclipse.sirius.business.internal.dialect;
import java.util.Collection;
+import java.util.Collections;
import java.util.Set;
-import org.eclipse.sirius.business.api.extender.MetamodelDescriptorProvider;
+import org.eclipse.sirius.business.api.extender.MetamodelDescriptorProvider2;
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;
@@ -27,10 +28,10 @@ import com.google.common.collect.Sets;
* @author <a href="mailto:cedric.brun@obeo.fr">Cedric Brun</a>
*
*/
-public class ViewpointMetamodelsProvider implements MetamodelDescriptorProvider {
+public class ViewpointMetamodelsProvider implements MetamodelDescriptorProvider2 {
@Override
- public Collection<MetamodelDescriptor> provides(Viewpoint vp) {
+ public Collection<MetamodelDescriptor> provides(Collection<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));
@@ -41,5 +42,10 @@ public class ViewpointMetamodelsProvider implements MetamodelDescriptorProvider
result.add(new EcoreMetamodelDescriptor(org.eclipse.sirius.description.contribution.ContributionPackage.eINSTANCE));
return result;
}
+
+ @Override
+ public Collection<MetamodelDescriptor> provides(Viewpoint vp) {
+ return Collections.<MetamodelDescriptor>emptyList();
+ }
}
diff --git a/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/extender/EcoreIntrinsicMetamodelDescriptorProvider.java b/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/extender/EcoreIntrinsicMetamodelDescriptorProvider.java
index 3031604b03..ccb4ccfe7f 100644
--- a/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/extender/EcoreIntrinsicMetamodelDescriptorProvider.java
+++ b/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/extender/EcoreIntrinsicMetamodelDescriptorProvider.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2010 THALES GLOBAL SERVICES.
+ * Copyright (c) 2008, 2015 THALES GLOBAL SERVICES and others.
* 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
@@ -12,9 +12,10 @@ package org.eclipse.sirius.business.internal.extender;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.sirius.business.api.extender.MetamodelDescriptorProvider;
+import org.eclipse.sirius.business.api.extender.MetamodelDescriptorProvider2;
import org.eclipse.sirius.business.api.query.ViewpointQuery;
import org.eclipse.sirius.ecore.extender.business.api.accessor.EcoreMetamodelDescriptor;
import org.eclipse.sirius.ecore.extender.business.api.accessor.MetamodelDescriptor;
@@ -28,23 +29,25 @@ import org.eclipse.sirius.viewpoint.description.Viewpoint;
* @author cbrun
*
*/
-public class EcoreIntrinsicMetamodelDescriptorProvider implements MetamodelDescriptorProvider {
+public class EcoreIntrinsicMetamodelDescriptorProvider implements MetamodelDescriptorProvider2 {
/**
*
* {@inheritDoc}
*/
- public Collection<MetamodelDescriptor> provides(final Viewpoint vp) {
+ public Collection<MetamodelDescriptor> provides(final Collection<Viewpoint> vps) {
final Collection<MetamodelDescriptor> result = new ArrayList<MetamodelDescriptor>();
- for (final RepresentationDescription desc : new ViewpointQuery(vp).getAllRepresentationDescriptions()) {
- for (final EPackage pak : desc.getMetamodel()) {
- result.add(getMetamodelDescriptor(pak));
+ for (Viewpoint vp : vps) {
+ for (final RepresentationDescription desc : new ViewpointQuery(vp).getAllRepresentationDescriptions()) {
+ for (final EPackage pak : desc.getMetamodel()) {
+ result.add(getMetamodelDescriptor(pak));
+ }
}
- }
-
- for (final RepresentationExtensionDescription ext : vp.getOwnedRepresentationExtensions()) {
- for (final EPackage pak : ext.getMetamodel()) {
- result.add(getMetamodelDescriptor(pak));
+
+ for (final RepresentationExtensionDescription ext : vp.getOwnedRepresentationExtensions()) {
+ for (final EPackage pak : ext.getMetamodel()) {
+ result.add(getMetamodelDescriptor(pak));
+ }
}
}
@@ -60,5 +63,10 @@ public class EcoreIntrinsicMetamodelDescriptorProvider implements MetamodelDescr
return new EcoreMetamodelDescriptor(pak);
}
}
+
+ @Override
+ public Collection<MetamodelDescriptor> provides(Viewpoint vp) {
+ return Collections.<MetamodelDescriptor>emptyList();
+ }
}
diff --git a/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/extender/MetamodelDescriptorManagerImpl.java b/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/extender/MetamodelDescriptorManagerImpl.java
index 12d9837d33..2b2e99b6ad 100644
--- a/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/extender/MetamodelDescriptorManagerImpl.java
+++ b/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/extender/MetamodelDescriptorManagerImpl.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008 THALES GLOBAL SERVICES.
+ * Copyright (c) 2008, 2015 THALES GLOBAL SERVICES and others.
* 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
@@ -12,16 +12,19 @@ package org.eclipse.sirius.business.internal.extender;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashSet;
import java.util.List;
import org.eclipse.sirius.business.api.extender.MetamodelDescriptorManager;
import org.eclipse.sirius.business.api.extender.MetamodelDescriptorProvider;
+import org.eclipse.sirius.business.api.extender.MetamodelDescriptorProvider2;
import org.eclipse.sirius.common.tools.api.util.EclipseUtil;
import org.eclipse.sirius.ecore.extender.business.api.accessor.MetamodelDescriptor;
import org.eclipse.sirius.viewpoint.SiriusPlugin;
import org.eclipse.sirius.viewpoint.description.Viewpoint;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Sets;
+
/**
* Implementation for the manager.
*
@@ -58,12 +61,24 @@ public class MetamodelDescriptorManagerImpl implements MetamodelDescriptorManage
* {@inheritDoc}
*/
public Collection<MetamodelDescriptor> provides(final Collection<Viewpoint> enabledViewpoints) {
- final Collection<MetamodelDescriptor> result = new HashSet<MetamodelDescriptor>();
+ final Collection<MetamodelDescriptor> result = Sets.newLinkedHashSet();
+ for (MetamodelDescriptorProvider2 provider : Iterables.filter(providers, MetamodelDescriptorProvider2.class)) {
+ final Collection<MetamodelDescriptor> provided = provider.provides(enabledViewpoints);
+ if (provided != null) {
+ result.addAll(provided);
+ }
+ }
for (Viewpoint vp : enabledViewpoints) {
for (MetamodelDescriptorProvider provider : providers) {
- final Collection<MetamodelDescriptor> provided = provider.provides(vp);
- if (provided != null) {
- result.addAll(provided);
+ /*
+ * Implementers of MetamodelDescriptorProvider2 have been called
+ * before.
+ */
+ if (!(provider instanceof MetamodelDescriptorProvider2)) {
+ final Collection<MetamodelDescriptor> provided = provider.provides(vp);
+ if (provided != null) {
+ result.addAll(provided);
+ }
}
}
}

Back to the top