[397904] Memory leaks in Juno when opening and closing XML Editor - Context Checker
diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextEditor.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextEditor.java index 490cf0e..74d4a74 100644 --- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextEditor.java +++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextEditor.java
@@ -155,6 +155,7 @@ import org.eclipse.ui.texteditor.IWorkbenchActionDefinitionIds; import org.eclipse.ui.texteditor.SourceViewerDecorationSupport; import org.eclipse.ui.texteditor.TextOperationAction; +import org.eclipse.ui.views.contentoutline.ContentOutline; import org.eclipse.ui.views.contentoutline.IContentOutlinePage; import org.eclipse.ui.views.properties.IPropertySheetPage; import org.eclipse.wst.sse.core.StructuredModelManager; @@ -2092,7 +2093,7 @@ } // content outline page else if (IContentOutlinePage.class.equals(required)) { - if (fOutlinePage == null) { + if (fOutlinePage == null && isCalledByOutline()) { ContentOutlineConfiguration cfg = createContentOutlineConfiguration(); if (cfg != null) { ConfigurableContentOutlinePage outlinePage = new ConfigurableContentOutlinePage(); @@ -3672,6 +3673,17 @@ } } + private static boolean isCalledByOutline() { + Class[] elements= new AccessChecker().getClassContext(); + return elements[4].equals(ContentOutline.class) || elements[5].equals(ContentOutline.class); + } + + private static final class AccessChecker extends SecurityManager { + public Class[] getClassContext() { + return super.getClassContext(); + } + } + private IInformationPresenter configureOutlinePresenter(ISourceViewer sourceViewer, SourceViewerConfiguration config) { InformationPresenter presenter = null;