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);
}
}