From 0491666a941e9b6bdd48e11e9633225bdb9de284 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Wed, 13 Jul 2011 15:37:15 +0200 Subject: [PATCH] PositionManagerFactory extension point --- .../debugger/impl/DebuggerManagerImpl.java | 12 +++++--- .../intellij/debugger/DebuggerManager.java | 3 ++ .../debugger/PositionManagerFactory.java | 30 +++++++++++++++++++ resources/src/META-INF/IdeaPlugin.xml | 4 +++ 4 files changed, 45 insertions(+), 4 deletions(-) create mode 100644 java/debugger/openapi/src/com/intellij/debugger/PositionManagerFactory.java diff --git a/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerManagerImpl.java b/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerManagerImpl.java index 047ca94375a5..e8d4facbe81b 100644 --- a/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerManagerImpl.java +++ b/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerManagerImpl.java @@ -15,10 +15,7 @@ */ package com.intellij.debugger.impl; -import com.intellij.debugger.DebuggerBundle; -import com.intellij.debugger.DebuggerManagerEx; -import com.intellij.debugger.NameMapper; -import com.intellij.debugger.PositionManager; +import com.intellij.debugger.*; import com.intellij.debugger.apiAdapters.TransportServiceWrapper; import com.intellij.debugger.engine.*; import com.intellij.debugger.settings.DebuggerSettings; @@ -41,6 +38,7 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.colors.EditorColorsListener; import com.intellij.openapi.editor.colors.EditorColorsManager; import com.intellij.openapi.editor.colors.EditorColorsScheme; +import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.project.Project; import com.intellij.openapi.projectRoots.JavaSdk; import com.intellij.openapi.projectRoots.JavaSdkVersion; @@ -198,6 +196,12 @@ public class DebuggerManagerImpl extends DebuggerManagerEx { process.appendPositionManager(positionManager); } } + for(PositionManagerFactory factory: Extensions.getExtensions(PositionManagerFactory.EP_NAME, myProject)) { + final PositionManager manager = factory.create(debugProcess); + if (manager != null) { + process.appendPositionManager(manager); + } + } } public void processDetached(final DebugProcess process, final boolean closedByUser) { debugProcess.removeDebugProcessListener(this); diff --git a/java/debugger/openapi/src/com/intellij/debugger/DebuggerManager.java b/java/debugger/openapi/src/com/intellij/debugger/DebuggerManager.java index c0f0bfede608..26b02c8e970f 100644 --- a/java/debugger/openapi/src/com/intellij/debugger/DebuggerManager.java +++ b/java/debugger/openapi/src/com/intellij/debugger/DebuggerManager.java @@ -46,6 +46,9 @@ public abstract class DebuggerManager implements ProjectComponent, JDOMExternali public abstract String getVMClassQualifiedName(PsiClass aClass); + /** + * @deprecated use PositionManagerFactory extension point instead + */ public abstract void registerPositionManagerFactory(Function factory); public abstract void unregisterPositionManagerFactory(Function factory); diff --git a/java/debugger/openapi/src/com/intellij/debugger/PositionManagerFactory.java b/java/debugger/openapi/src/com/intellij/debugger/PositionManagerFactory.java new file mode 100644 index 000000000000..12d01c08ed36 --- /dev/null +++ b/java/debugger/openapi/src/com/intellij/debugger/PositionManagerFactory.java @@ -0,0 +1,30 @@ +/* + * Copyright 2000-2011 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.debugger; + +import com.intellij.debugger.engine.DebugProcess; +import com.intellij.openapi.extensions.ExtensionPointName; +import org.jetbrains.annotations.Nullable; + +/** + * @author yole + */ +public interface PositionManagerFactory { + ExtensionPointName EP_NAME = ExtensionPointName.create("com.intellij.debugger.positionManagerFactory"); + + @Nullable + PositionManager create(DebugProcess process); +} diff --git a/resources/src/META-INF/IdeaPlugin.xml b/resources/src/META-INF/IdeaPlugin.xml index 398073393100..4e648ae57daf 100644 --- a/resources/src/META-INF/IdeaPlugin.xml +++ b/resources/src/META-INF/IdeaPlugin.xml @@ -78,6 +78,10 @@ + +