Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcbrun2015-04-13 15:31:01 +0000
committercbrun2015-04-17 16:12:52 +0000
commitd6f03116306271a4639cd9c4fc03e98c8402fb47 (patch)
tree1a573e760e6a8d1fabe1ed33909fb0daafc3ee60 /plugins/org.eclipse.sirius.editor/src-gen
parentb35e7360613534c2b6b8520fb1326d03eeda94e8 (diff)
downloadorg.eclipse.sirius-d6f03116306271a4639cd9c4fc03e98c8402fb47.tar.gz
org.eclipse.sirius-d6f03116306271a4639cd9c4fc03e98c8402fb47.tar.xz
org.eclipse.sirius-d6f03116306271a4639cd9c4fc03e98c8402fb47.zip
[464514] Blacklist Sirius and dependencies for workspace classloading
The list of bundles for which we should never ever load a class from the workspace is computed based runtime inspection of the org.eclipse.sirius bundles and their dependencies. Bug: 464514 Change-Id: I1416a165f4404112ab5f50d8b5214914ff82f895 Signed-off-by: Cedric Brun <cedric.brun@obeo.fr>
Diffstat (limited to 'plugins/org.eclipse.sirius.editor/src-gen')
-rw-r--r--plugins/org.eclipse.sirius.editor/src-gen/org/eclipse/sirius/editor/editorPlugin/SiriusEditorPlugin.java27
-rw-r--r--plugins/org.eclipse.sirius.editor/src-gen/org/eclipse/sirius/editor/utils/WorkspaceClassLoading.java12
2 files changed, 36 insertions, 3 deletions
diff --git a/plugins/org.eclipse.sirius.editor/src-gen/org/eclipse/sirius/editor/editorPlugin/SiriusEditorPlugin.java b/plugins/org.eclipse.sirius.editor/src-gen/org/eclipse/sirius/editor/editorPlugin/SiriusEditorPlugin.java
index 854f7b4ae0..729f4dc1ac 100644
--- a/plugins/org.eclipse.sirius.editor/src-gen/org/eclipse/sirius/editor/editorPlugin/SiriusEditorPlugin.java
+++ b/plugins/org.eclipse.sirius.editor/src-gen/org/eclipse/sirius/editor/editorPlugin/SiriusEditorPlugin.java
@@ -11,6 +11,8 @@ package org.eclipse.sirius.editor.editorPlugin;
// Start of user code imports
+import java.util.Set;
+
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.emf.common.EMFPlugin;
import org.eclipse.emf.common.ui.EclipseUIPlugin;
@@ -25,8 +27,11 @@ import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
+import com.google.common.collect.Sets;
+
// End of user code imports
/**
@@ -59,6 +64,8 @@ public final class SiriusEditorPlugin extends EMFPlugin {
private static WorkspaceEPackageRegistry workspaceEPackageRegistry;
+ private static Set<String> siriusRuntimeBundles = Sets.newLinkedHashSet();
+
// End of user code fields
/**
@@ -169,6 +176,18 @@ public final class SiriusEditorPlugin extends EMFPlugin {
}
/**
+ * return a set containing all the symbolic names of bundles which are part
+ * of the Sirius runtime and are currently installed in the platform.
+ *
+ * @return a set containing all the symbolic names of bundles which are part
+ * of the Sirius runtime and are currently installed in the
+ * platform.
+ */
+ public static Set<String> getSiriusRuntimeBundles() {
+ return siriusRuntimeBundles;
+ }
+
+ /**
* The actual implementation of the Eclipse <b>Plugin</b>.
*/
public static class Implementation extends EclipseUIPlugin {
@@ -188,6 +207,14 @@ public final class SiriusEditorPlugin extends EMFPlugin {
public void start(BundleContext context) throws Exception {
super.start(context);
workspaceEPackageRegistry = new WorkspaceEPackageRegistry(true);
+ for (Bundle bnd : context.getBundles()) {
+ String name = bnd.getSymbolicName();
+ if (name != null && name.startsWith("org.eclipse.sirius")) {
+ if (name.indexOf("sample") == -1 && name.indexOf("tests") == -1) {
+ siriusRuntimeBundles.add(name);
+ }
+ }
+ }
}
@Override
diff --git a/plugins/org.eclipse.sirius.editor/src-gen/org/eclipse/sirius/editor/utils/WorkspaceClassLoading.java b/plugins/org.eclipse.sirius.editor/src-gen/org/eclipse/sirius/editor/utils/WorkspaceClassLoading.java
index ad9bc56a9d..8a37cd1aab 100644
--- a/plugins/org.eclipse.sirius.editor/src-gen/org/eclipse/sirius/editor/utils/WorkspaceClassLoading.java
+++ b/plugins/org.eclipse.sirius.editor/src-gen/org/eclipse/sirius/editor/utils/WorkspaceClassLoading.java
@@ -143,8 +143,14 @@ public class WorkspaceClassLoading extends BundleClassLoading {
};
- public WorkspaceClassLoading() {
+ private Set<String> doNotLoadFromWorkspace;
+ public WorkspaceClassLoading() {
+ doNotLoadFromWorkspace = Sets.newLinkedHashSet();
+ for (String siriusBundle : SiriusEditorPlugin.getSiriusRuntimeBundles()) {
+ doNotLoadFromWorkspace.add(siriusBundle);
+ doNotLoadFromWorkspace.addAll(super.getBundleDependencies(siriusBundle));
+ }
}
protected Collection<Object> findCallees(IPluginModelBase model) {
@@ -484,7 +490,7 @@ public class WorkspaceClassLoading extends BundleClassLoading {
Collection<String> symbolicNames = getDependenciesFromPDE(pdeModel);
for (String requirementSymbolicName : symbolicNames) {
IPluginModelBase requiredDep = symbolicNamestoModels.get(requirementSymbolicName);
- if (requiredDep != null) {
+ if (requiredDep != null && !doNotLoadFromWorkspace.contains(requirementSymbolicName)) {
workspaceDependencies.add(requiredDep);
} else {
Bundle bnd = Platform.getBundle(requirementSymbolicName);
@@ -497,7 +503,7 @@ public class WorkspaceClassLoading extends BundleClassLoading {
}
}
IPluginModelBase currentProject = symbolicNamestoModels.get(projectName);
- if (currentProject != null) {
+ if (currentProject != null && !doNotLoadFromWorkspace.contains(projectName)) {
workspaceDependencies.add(currentProject);
} else {
Bundle bnd = Platform.getBundle(projectName);

Back to the top