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); }