package jetbrains.mps.debug.api; /*Generated by MPS */ import com.intellij.openapi.components.ApplicationComponent; import org.apache.log4j.Logger; import org.apache.log4j.LogManager; import java.util.List; import java.util.ArrayList; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import com.intellij.openapi.application.ApplicationManager; public class Debuggers implements ApplicationComponent { private static final Logger LOG = LogManager.getLogger(Debuggers.class); private final List<IDebugger> myDebuggers = new ArrayList<IDebugger>(); public Debuggers() { } @NotNull @Override public String getComponentName() { return "Debuggers"; } @Override public void initComponent() { } @Override public void disposeComponent() { } public void registerDebugger(@NotNull IDebugger debugger) { synchronized (myDebuggers) { myDebuggers.add(debugger); } } public void unRegisterDebugger(@NotNull IDebugger debugger) { boolean removed; synchronized (myDebuggers) { removed = myDebuggers.remove(debugger); } if (!(removed)) { LOG.warn("Debugger " + debugger.getName() + " was not registered."); } } public List<IDebugger> getDebuggers() { synchronized (myDebuggers) { List<IDebugger> debuggers; debuggers = new ArrayList<IDebugger>(myDebuggers); return debuggers; } } @Nullable public IDebugger getDebuggerByName(@NotNull String name) { for (IDebugger debugger : getDebuggers()) { if (name.equals(debugger.getName())) { return debugger; } } return null; } @NotNull public IDebugger getDebuggerByNameSafe(@NotNull String name) throws DebuggerNotPresentException { IDebugger debugger = getDebuggerByName(name); if (debugger != null) { return debugger; } throw new DebuggerNotPresentException("Cannot find debugger " + name); } public static Debuggers getInstance() { return ApplicationManager.getApplication().getComponent(Debuggers.class); } }