Bug 578290 - [Sirius][ModelExplorer] The SiriusDiagram customization must be registered in architecture context for UML
Change-Id: Ie2054dc73856fb6b157df0ff86fb417e8c353e0a
Signed-off-by: Vincent Lorenzo <vincent.lorenzo@cea.fr>
diff --git a/features/org.eclipse.papyrus.uml.siriusdiag.feature/feature.xml b/features/org.eclipse.papyrus.uml.siriusdiag.feature/feature.xml
index 02d9a3b..0b4a007 100755
--- a/features/org.eclipse.papyrus.uml.siriusdiag.feature/feature.xml
+++ b/features/org.eclipse.papyrus.uml.siriusdiag.feature/feature.xml
@@ -24,6 +24,13 @@
version="0.0.0"/>
<plugin
+ id="org.eclipse.papyrus.sirius.integration.uml.architecture"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
id="org.eclipse.papyrus.uml.sirius.clazz.diagram"
download-size="0"
install-size="0"
diff --git a/plugins/integration/pom.xml b/plugins/integration/pom.xml
new file mode 100755
index 0000000..bdeb0d4
--- /dev/null
+++ b/plugins/integration/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.papyrus.sirius-plugins</groupId>
+ <artifactId>org.eclipse.papyrus.sirius.plugins</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </parent>
+
+ <groupId>org.eclipse.papyrus.sirius.plugins-integration</groupId>
+ <artifactId>org.eclipse.papyrus.sirius.plugins.integration</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <packaging>pom</packaging>
+
+ <name>Papyrus-Sirius Integration Plugins</name>
+ <description>Container of the Papyrus-Sirius Plugins in charge of the integration with Papyrus</description>
+
+ <modules>
+ <module>uml</module>
+ </modules>
+</project>
diff --git a/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/.classpath b/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/.classpath
new file mode 100755
index 0000000..e801ebf
--- /dev/null
+++ b/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/.project b/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/.project
new file mode 100755
index 0000000..1f4c7de
--- /dev/null
+++ b/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.sirius.integration.uml.architecture</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.papyrus.plugin.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.papyrus.plugin.nature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/.settings/org.eclipse.jdt.core.prefs b/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/.settings/org.eclipse.jdt.core.prefs
new file mode 100755
index 0000000..c9545f0
--- /dev/null
+++ b/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,9 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
diff --git a/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/META-INF/MANIFEST.MF b/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/META-INF/MANIFEST.MF
new file mode 100755
index 0000000..2d71930
--- /dev/null
+++ b/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/META-INF/MANIFEST.MF
@@ -0,0 +1,20 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name
+Bundle-SymbolicName: org.eclipse.papyrus.sirius.integration.uml.architecture;singleton:=true
+Bundle-Version: 0.7.0.qualifier
+Bundle-Activator: org.eclipse.papyrus.sirius.integration.uml.architecture.Activator
+Bundle-Vendor: %Bundle-Vendor
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.23.0,4.0.0)",
+ org.eclipse.papyrus.infra.architecture;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.papyrus.infra.architecture.representation;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.papyrus.infra.architecture.representation.edit;bundle-version="[2.0.0,3.0.0)",
+ org.eclipse.papyrus.infra.core.architecture;bundle-version="[3.1.0,4.0.0)",
+ org.eclipse.papyrus.infra.siriusdiag.modelexplorer;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.papyrus.uml.architecture;bundle-version="[2.0.0,3.0.0)",
+ org.eclipse.papyrus.uml.diagram.common;bundle-version="[5.0.0,6.0.0)",
+ org.eclipse.papyrus.uml.modelexplorer;bundle-version="[3.1.0,4.0.0)",
+ org.eclipse.ui;bundle-version="[3.119.0,4.0.0)"
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Automatic-Module-Name: org.eclipse.papyrus.sirius.integration.uml.architecture
+Bundle-ActivationPolicy: lazy
diff --git a/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/OSGI-INF/l10n/bundle.properties b/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/OSGI-INF/l10n/bundle.properties
new file mode 100755
index 0000000..141748b
--- /dev/null
+++ b/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/OSGI-INF/l10n/bundle.properties
@@ -0,0 +1,3 @@
+#Properties file for org.eclipse.papyrus.sirius.integration.uml.architecture
+Bundle-Vendor = Eclipse Modeling Project
+Bundle-Name = Papyrus-Sirius - UML Architecture Contribution (Incubation)
\ No newline at end of file
diff --git a/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/about.html b/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/about.html
new file mode 100755
index 0000000..3e183aa
--- /dev/null
+++ b/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 30, 2017</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 2.0 ("EPL"). A copy of the EPL is available
+at <a href="https://www.eclipse.org/legal/epl-2.0/">https://www.eclipse.org/legal/epl-2.0/</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/build.properties b/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/build.properties
new file mode 100755
index 0000000..ad13e8c
--- /dev/null
+++ b/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/build.properties
@@ -0,0 +1,9 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ resources/,\
+ OSGI-INF/,\
+ about.html
+src.includes = about.html
diff --git a/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/plugin.xml b/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/plugin.xml
new file mode 100755
index 0000000..95f905e
--- /dev/null
+++ b/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/plugin.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.papyrus.infra.architecture.models">
+ <model
+ path="resources/sirius-uml.architecture">
+ </model>
+ </extension>
+
+</plugin>
+
diff --git a/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/pom.xml b/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/pom.xml
new file mode 100755
index 0000000..75598ec
--- /dev/null
+++ b/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/pom.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.papyrus.sirius.plugins.integration-uml</groupId>
+ <artifactId>org.eclipse.papyrus.sirius.plugins.integration.uml</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>org.eclipse.papyrus.sirius.integration.uml.architecture</artifactId>
+ <version>0.7.0-SNAPSHOT</version>
+ <packaging>eclipse-plugin</packaging>
+
+</project>
\ No newline at end of file
diff --git a/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/resources/sirius-uml.architecture b/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/resources/sirius-uml.architecture
new file mode 100755
index 0000000..b5b068e
--- /dev/null
+++ b/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/resources/sirius-uml.architecture
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<architecture:ArchitectureDomain xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:architecture="http://www.eclipse.org/papyrus/infra/core/architecture" xmlns:custom="http://www.eclipse.org/papyrus/emf/facet/custom/0.2.incubation/custom" xmlns:customizationconfiguration="http://www.eclipse.org/papyrus/emf/facet/architecture/configuration" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:elementtypesconfigurations="http://www.eclipse.org/papyrus/infra/elementtypesconfigurations/1.2" xmi:id="_pNW38LaHEeiKuPQLywy7Og" id="org.eclipse.papyrus.softwareEngineering" name="Software Engineering" description="The domain of developing software systems" icon="platform:/plugin/org.eclipse.papyrus.uml.architecture/icons/domain.gif">
+ <contexts xmi:type="architecture:ArchitectureDescriptionLanguage" xmi:id="_-tAb0Lp2EeiViqj5DY8SRQ" id="org.eclipse.papyrus.infra.services.edit.TypeContext" name="UML" creationCommandClass="org.eclipse.papyrus.uml.diagram.common.commands.CreateUMLModelCommand">
+ <viewpoints xmi:type="architecture:ArchitectureViewpoint" xmi:id="_1tp4cOEIEeiLVapXeWCJtQ" id="org.eclipse.papyrus.uml.analysis" name="Software Analysis" icon="platform:/plugin/org.eclipse.papyrus.uml.architecture/icons/viewpoint.gif"/>
+ <viewpoints xmi:type="architecture:ArchitectureViewpoint" xmi:id="_dmWHgLp3EeiViqj5DY8SRQ" id="org.eclipse.papyrus.uml.design" name="Software Design" description="" icon="platform:/plugin/org.eclipse.papyrus.uml.architecture/icons/viewpoint.gif"/>
+ <metamodel xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/5.0.0/UML#/"/>
+ <treeViewerConfigurations xmi:type="customizationconfiguration:EMFFacetTreeViewerConfiguration" xmi:id="_CumAsCmwEeugfKShn9DTcQ">
+ <customizationReferences xmi:type="customizationconfiguration:CustomizationReference" xmi:id="_DLqXMCmwEeugfKShn9DTcQ">
+ <referencedCustomization xmi:type="custom:Customization" href="platform:/plugin/org.eclipse.papyrus.infra.siriusdiag.modelexplorer/resources/SiriusDiagram.custom#/"/>
+ <applicationRule xmi:type="customizationconfiguration:AbsoluteOrder" xmi:id="_QVkzwCmwEeugfKShn9DTcQ" order="10"/>
+ </customizationReferences>
+ </treeViewerConfigurations>
+ </contexts>
+</architecture:ArchitectureDomain>
diff --git a/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/src/org/eclipse/papyrus/sirius/integration/uml/architecture/Activator.java b/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/src/org/eclipse/papyrus/sirius/integration/uml/architecture/Activator.java
new file mode 100755
index 0000000..75103b0
--- /dev/null
+++ b/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/src/org/eclipse/papyrus/sirius/integration/uml/architecture/Activator.java
@@ -0,0 +1,57 @@
+/******************************************************************************
+ * Copyright (c) 2022 CEA LIST, Artal Technologies
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Vincent Lorenzo (CEA LIST) - vincent.lorenzo@cea.fr - Initial API and implementation
+ *****************************************************************************/
+package org.eclipse.papyrus.sirius.integration.uml.architecture;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.papyrus.sirius.integration.uml.architecture"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/usecases.md b/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/usecases.md
new file mode 100755
index 0000000..56da398
--- /dev/null
+++ b/plugins/integration/uml/org.eclipse.papyrus.sirius.integration.uml.architecture/usecases.md
@@ -0,0 +1,5 @@
+#org.eclipse.papyrus.sirius.integration.uml.architecture
+This plugin is in charge to provide the required UML Architecture configuration to support Sirius Diagram
+
+- Sirius Diagram EMFFacet customization, to display Sirius Diagram into the ModelExplorer
+- ElementType for Sirius Diagram in order to ensure the deletion of the diagram when its context is deleted (TODO).
diff --git a/plugins/integration/uml/pom.xml b/plugins/integration/uml/pom.xml
new file mode 100755
index 0000000..2ead0b7
--- /dev/null
+++ b/plugins/integration/uml/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.papyrus.sirius.plugins-integration</groupId>
+ <artifactId>org.eclipse.papyrus.sirius.plugins.integration</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </parent>
+
+ <groupId>org.eclipse.papyrus.sirius.plugins.integration-uml</groupId>
+ <artifactId>org.eclipse.papyrus.sirius.plugins.integration.uml</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <packaging>pom</packaging>
+
+ <name>Papyrus-Sirius UML Integration Plugins</name>
+ <description>Container of the Papyrus-Sirius Plugins in charge of the integration with the UML part of Papyrus</description>
+
+ <modules>
+ <module>org.eclipse.papyrus.sirius.integration.uml.architecture</module>
+ </modules>
+</project>
diff --git a/plugins/pom.xml b/plugins/pom.xml
index b5e2b71..1148798 100755
--- a/plugins/pom.xml
+++ b/plugins/pom.xml
@@ -22,6 +22,7 @@
<module>core</module>
<module>doc</module>
<module>infra</module>
+ <module>integration</module>
<module>uml</module>
</modules>
</project>
diff --git a/tests/org.eclipse.papyrus.sirius.bundles.tests/src/org/eclipse/papyrus/sirius/bundles/tests/internal/BundleTestsUtils.java b/tests/org.eclipse.papyrus.sirius.bundles.tests/src/org/eclipse/papyrus/sirius/bundles/tests/internal/BundleTestsUtils.java
index 92ead63..2284e8f 100755
--- a/tests/org.eclipse.papyrus.sirius.bundles.tests/src/org/eclipse/papyrus/sirius/bundles/tests/internal/BundleTestsUtils.java
+++ b/tests/org.eclipse.papyrus.sirius.bundles.tests/src/org/eclipse/papyrus/sirius/bundles/tests/internal/BundleTestsUtils.java
@@ -400,7 +400,10 @@
public static void checkAutomaticBundleName(List<Bundle> bundles) {
StringBuilder builder = new StringBuilder();
for (Bundle current : bundles) {
- final String bundleSymbolicName = current.getHeaders().get(BUNDLE_SYMBOLIC_NAME);
+ String bundleSymbolicName = current.getHeaders().get(BUNDLE_SYMBOLIC_NAME);
+ if (bundleSymbolicName.contains(";")) {//$NON-NLS-1$ // probably followed by singleton=true
+ bundleSymbolicName = bundleSymbolicName.substring(0, bundleSymbolicName.indexOf(";"));//$NON-NLS-1$
+ }
final String value = current.getHeaders().get(AUTOMATIC_MODULE_NAME);
if (null == value) {
builder.append(NLS.bind("The plugin {0} don't declare the property Automatic-Module-Name.\n", bundleSymbolicName)); //$NON-NLS-1$