Bug 572601 - [Robotics, Designer] Loading a resource from a worker thread causes an exception and in turn eventually blocks UI

- Use new methods in base designer (ElementUtils)
- Remove non-necessary dependencies in CDT editor

Change-Id: I909f34d4297579f6e36e790019d4c75c0c6a4640
Signed-off-by: Ansgar Radermacher <ansgar.radermacher@cea.fr>
diff --git a/plugins/codegen/org.eclipse.papyrus.robotics.codegen.common/src/org/eclipse/papyrus/robotics/codegen/common/utils/Helpers.java b/plugins/codegen/org.eclipse.papyrus.robotics.codegen.common/src/org/eclipse/papyrus/robotics/codegen/common/utils/Helpers.java
index b8ffd44..e2c1493 100644
--- a/plugins/codegen/org.eclipse.papyrus.robotics.codegen.common/src/org/eclipse/papyrus/robotics/codegen/common/utils/Helpers.java
+++ b/plugins/codegen/org.eclipse.papyrus.robotics.codegen.common/src/org/eclipse/papyrus/robotics/codegen/common/utils/Helpers.java
@@ -20,7 +20,6 @@
 import org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.External;
 import org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.Ptr;
 import org.eclipse.papyrus.designer.transformation.core.transformations.TransformationContext;
-import org.eclipse.papyrus.uml.tools.utils.PackageUtil;
 import org.eclipse.papyrus.uml.tools.utils.StereotypeUtil;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.NamedElement;
@@ -55,11 +54,7 @@
 	 * @return the element, if found, null otherwise
 	 */
 	public static Type getTypeFromRS(Element element, URI resourceURI, String qualifiedName, boolean needCopy) {
-		NamedElement ne = ElementUtils.getQualifiedElementFromRS(element, qualifiedName);
-		if (ne == null) {
-			PackageUtil.loadPackage(resourceURI, element.eResource().getResourceSet());
-			ne = ElementUtils.getQualifiedElementFromRS(element, qualifiedName);
-		}
+		NamedElement ne = ElementUtils.getQualifiedElementFromRS(element, resourceURI, qualifiedName);
 		if (needCopy) {
 			// return a copy using the current copier (avoid referencing copy and original URI)
 			ne = TransformationContext.current.copier.getCopy(ne);
diff --git a/plugins/customization/org.eclipse.papyrus.robotics.core/src/org/eclipse/papyrus/robotics/core/provider/RoboticsContentProvider.java b/plugins/customization/org.eclipse.papyrus.robotics.core/src/org/eclipse/papyrus/robotics/core/provider/RoboticsContentProvider.java
index 3b3de82..8d340e7 100644
--- a/plugins/customization/org.eclipse.papyrus.robotics.core/src/org/eclipse/papyrus/robotics/core/provider/RoboticsContentProvider.java
+++ b/plugins/customization/org.eclipse.papyrus.robotics.core/src/org/eclipse/papyrus/robotics/core/provider/RoboticsContentProvider.java
@@ -207,8 +207,10 @@
 			if (uri.segmentCount() > 0 && uri.segment(0).length() > 0) {
 				// URI of model
 				Resource r = tempRS.getResource(uri, true);
-				Package subRoot = (Package) r.getContents().get(0);
-				return getChildren(subRoot);
+				if (r != null && r.getContents().size() > 0) {
+					Package subRoot = (Package) r.getContents().get(0);
+					return getChildren(subRoot);
+				}
 			} else {
 				// URI of plugin or pathmap
 				return ScanUtils.modelsFromPath(uri, extension).toArray();
diff --git a/plugins/customization/org.eclipse.papyrus.robotics.library/src/org/eclipse/papyrus/robotics/library/advice/AdviceUtil.java b/plugins/customization/org.eclipse.papyrus.robotics.library/src/org/eclipse/papyrus/robotics/library/advice/AdviceUtil.java
index f10c22a..1badeb5 100644
--- a/plugins/customization/org.eclipse.papyrus.robotics.library/src/org/eclipse/papyrus/robotics/library/advice/AdviceUtil.java
+++ b/plugins/customization/org.eclipse.papyrus.robotics.library/src/org/eclipse/papyrus/robotics/library/advice/AdviceUtil.java
@@ -19,7 +19,6 @@
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.papyrus.designer.languages.common.base.ElementUtils;
 import org.eclipse.papyrus.robotics.library.util.RoboticsLibResource;
-import org.eclipse.papyrus.uml.tools.utils.PackageUtil;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.uml2.uml.Classifier;
 import org.eclipse.uml2.uml.Element;
@@ -38,19 +37,14 @@
 	public static Classifier getPattern(Element anElement, String patternQN) {
 		Classifier pattern = getPatternWoMessage(anElement, patternQN);
 		if (pattern == null) {
-			PackageUtil.loadPackage(RoboticsLibResource.ROBOTICS_LIB_URI, anElement.eResource().getResourceSet());
-			pattern = getPatternWoMessage(anElement, patternQN);
-			if (pattern == null) {
-				Display.getDefault().syncExec(new Runnable() {
-
-					@Override
-					public void run() {
-						MessageDialog.openWarning(Display.getCurrent().getActiveShell(),
-								"Can not find communication pattern",
-								String.format("Cannot find communication pattern %s.", patternQN));
-					}
-				});
-			}
+			Display.getDefault().syncExec(new Runnable() {
+				@Override
+				public void run() {
+					MessageDialog.openWarning(Display.getCurrent().getActiveShell(),
+							"Can not find communication pattern",
+							String.format("Cannot find communication pattern %s.", patternQN));
+				}
+			});
 		}
 		return pattern;
 	}
@@ -65,7 +59,7 @@
 	 * @return the communication, if found, null otherwise
 	 */
 	public static Classifier getPatternWoMessage(Element anElement, String patternQN) {
-		NamedElement pattern = ElementUtils.getQualifiedElementFromRS(anElement, patternQN);
+		NamedElement pattern = ElementUtils.getQualifiedElementFromRS(anElement, RoboticsLibResource.ROBOTICS_LIB_URI, patternQN);
 		if (pattern instanceof Classifier) {
 			return (Classifier) pattern;
 		}
diff --git a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.cdteditor/META-INF/MANIFEST.MF b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.cdteditor/META-INF/MANIFEST.MF
index 854900a..98b79ab 100644
--- a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.cdteditor/META-INF/MANIFEST.MF
+++ b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.cdteditor/META-INF/MANIFEST.MF
@@ -9,7 +9,6 @@
  org.eclipse.papyrus.infra.core.log;bundle-version="[1.2.0,3.0.0)",
  org.eclipse.papyrus.designer.languages.cpp.profile;bundle-version="1.1.0",
  org.eclipse.papyrus.uml.tools;bundle-version="[4.3.0,6.0.0)",
- org.eclipse.papyrus.designer.languages.common.texteditor.model;bundle-version="1.1.0",
  org.eclipse.papyrus.uml.tools.utils;bundle-version="[3.4.0,5.0.0)",
  org.eclipse.papyrus.uml.diagram.common;bundle-version="[3.4.0,5.0.0)",
  org.eclipse.papyrus.designer.languages.common.extensionpoints;bundle-version="1.1.0",
@@ -28,7 +27,6 @@
  org.eclipse.papyrus.robotics.ros2.reverse;bundle-version="0.7.0",
  org.eclipse.papyrus.robotics.core;bundle-version="0.7.0",
  org.eclipse.papyrus.robotics.codegen.common;bundle-version="0.8.0",
- org.eclipse.emf.transaction;bundle-version="1.9.0",
  org.eclipse.emf.workspace;bundle-version="1.5.0",
  org.eclipse.papyrus.infra.core;bundle-version="[3.1.0,5.0.0)",
  org.eclipse.papyrus.infra.emf.gmf;bundle-version="[1.3.0,3.0.0)",
diff --git a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen/src/org/eclipse/papyrus/robotics/ros2/codegen/utils/TransformationUtils.java b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen/src/org/eclipse/papyrus/robotics/ros2/codegen/utils/TransformationUtils.java
index 26f210f..0e8c2bc 100644
--- a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen/src/org/eclipse/papyrus/robotics/ros2/codegen/utils/TransformationUtils.java
+++ b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen/src/org/eclipse/papyrus/robotics/ros2/codegen/utils/TransformationUtils.java
@@ -16,12 +16,9 @@
 
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.emf.transaction.TransactionalEditingDomain;
-import org.eclipse.emf.transaction.util.TransactionUtil;
 import org.eclipse.papyrus.designer.languages.common.base.ElementUtils;
 import org.eclipse.papyrus.designer.transformation.core.transformations.ExecuteTransformationChain;
 import org.eclipse.papyrus.designer.transformation.profile.Transformation.M2MTrafoChain;
-import org.eclipse.papyrus.uml.tools.utils.PackageUtil;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.NamedElement;
 import org.eclipse.uml2.uml.Package;
@@ -55,13 +52,7 @@
 	 * @return the ROS2 transformation chain
 	 */
 	public static M2MTrafoChain getChain(Element element) {
-		TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(element);
-
-		NamedElement rosChainCl = ElementUtils.getQualifiedElementFromRS(element, ROS2_TRANSFORMATION_CHAIN);
-		if (rosChainCl == null) {
-			PackageUtil.loadPackage(RosHelpers.ROS_LIBRARY_URI, domain.getResourceSet());
-			rosChainCl = ElementUtils.getQualifiedElementFromRS(element, ROS2_TRANSFORMATION_CHAIN);
-		}
+		NamedElement rosChainCl = ElementUtils.getQualifiedElementFromRS(element, RosHelpers.ROS_LIBRARY_URI, ROS2_TRANSFORMATION_CHAIN);
 		if (rosChainCl != null) {
 			return UMLUtil.getStereotypeApplication(rosChainCl, M2MTrafoChain.class);
 		}