diff options
author | cbrun | 2015-04-13 15:31:01 +0000 |
---|---|---|
committer | cbrun | 2015-04-17 16:12:52 +0000 |
commit | d6f03116306271a4639cd9c4fc03e98c8402fb47 (patch) | |
tree | 1a573e760e6a8d1fabe1ed33909fb0daafc3ee60 /plugins/org.eclipse.sirius.editor/src-gen | |
parent | b35e7360613534c2b6b8520fb1326d03eeda94e8 (diff) | |
download | org.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')
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); |