diff options
author | Camille Letavernier | 2019-03-14 10:31:13 +0000 |
---|---|---|
committer | Patrick Tessier | 2019-05-06 11:58:35 +0000 |
commit | f13d47654fd242d83b6e7db2d2aac29fc478bbdf (patch) | |
tree | d215d8578015a2d6dd601f3e436d92ff974f3a61 /plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src | |
parent | 89bc31de7736a1bfe9add4fdb050a98fa22ef697 (diff) | |
download | org.eclipse.papyrus-f13d47654fd242d83b6e7db2d2aac29fc478bbdf.tar.gz org.eclipse.papyrus-f13d47654fd242d83b6e7db2d2aac29fc478bbdf.tar.xz org.eclipse.papyrus-f13d47654fd242d83b6e7db2d2aac29fc478bbdf.zip |
Bug 543723: [Performances] Improve the ClassLoaderHelper
https://bugs.eclipse.org/bugs/show_bug.cgi?id=543723
- Add a context URI or Bundle to all methods in ClassLoaderHelper
- The context is used to find the most appropriate bundle to load the
given class, to avoid relying on a very expensive Eclipse Buddy Policy
Change-Id: Ia3c7cc86397643ff3fad634391dce68e5d509d4c
Signed-off-by: Camille Letavernier <cletavernier@eclipsesource.com>
Diffstat (limited to 'plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src')
2 files changed, 5 insertions, 3 deletions
diff --git a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org/eclipse/papyrus/infra/gmfdiag/common/helper/GMFDiagramViewTypeHelper.java b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org/eclipse/papyrus/infra/gmfdiag/common/helper/GMFDiagramViewTypeHelper.java index a5e7cb15026..b93b36dc903 100755 --- a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org/eclipse/papyrus/infra/gmfdiag/common/helper/GMFDiagramViewTypeHelper.java +++ b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org/eclipse/papyrus/infra/gmfdiag/common/helper/GMFDiagramViewTypeHelper.java @@ -17,6 +17,7 @@ package org.eclipse.papyrus.infra.gmfdiag.common.helper; import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.util.EcoreUtil; import org.eclipse.gmf.runtime.notation.Diagram; import org.eclipse.papyrus.infra.gmfdiag.common.AbstractPapyrusGmfCreateDiagramCommandHandler; import org.eclipse.papyrus.infra.gmfdiag.common.Activator; @@ -55,12 +56,12 @@ public class GMFDiagramViewTypeHelper extends AbstractViewTypeHelper<PapyrusDiag protected ViewPrototype doGetPrototypeFor(PapyrusDiagram diagramKind) { String commandClassName = diagramKind.getCreationCommandClass(); if (commandClassName != null) { - Class<?> creationCommandClass = ClassLoaderHelper.loadClass(commandClassName); + Class<? extends AbstractPapyrusGmfCreateDiagramCommandHandler> creationCommandClass = ClassLoaderHelper.loadClass(commandClassName, AbstractPapyrusGmfCreateDiagramCommandHandler.class, EcoreUtil.getURI(diagramKind)); if (creationCommandClass != null) { AbstractPapyrusGmfCreateDiagramCommandHandler command; try { - command = (AbstractPapyrusGmfCreateDiagramCommandHandler) creationCommandClass.newInstance(); + command = creationCommandClass.newInstance(); } catch (Exception e) { Activator.log.error(e); return null; diff --git a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org/eclipse/papyrus/infra/gmfdiag/common/service/palette/PapyrusPaletteViewer.java b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org/eclipse/papyrus/infra/gmfdiag/common/service/palette/PapyrusPaletteViewer.java index acaf88c6089..0b21791948c 100644 --- a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org/eclipse/papyrus/infra/gmfdiag/common/service/palette/PapyrusPaletteViewer.java +++ b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org/eclipse/papyrus/infra/gmfdiag/common/service/palette/PapyrusPaletteViewer.java @@ -30,6 +30,7 @@ import org.eclipse.swt.widgets.Shell; /** * Extended Palette Viewer, to have a new customize dialog + * * @since 3.0 */ public class PapyrusPaletteViewer extends PaletteViewerEx { @@ -53,7 +54,7 @@ public class PapyrusPaletteViewer extends PaletteViewerEx { for (IConfigurationElement e : config) { String customizerClassName = e.getAttribute(CUSTOMIZER_ATTRIBUTE); try { - Class<? extends PaletteCustomizerDialog> advancedCustomizerDialogClass = ClassLoaderHelper.loadClass(customizerClassName).asSubclass(PaletteCustomizerDialog.class); + Class<? extends PaletteCustomizerDialog> advancedCustomizerDialogClass = ClassLoaderHelper.loadClass(customizerClassName, PaletteCustomizerDialog.class, e.getContributor().getName()); if (advancedCustomizerDialogClass != null) { Constructor<? extends PaletteCustomizerDialog> constructor = advancedCustomizerDialogClass.getConstructor(Shell.class, PaletteCustomizer.class, PaletteRoot.class); if (constructor != null) { |