package jetbrains.mps.debugger.java.runtime;
/*Generated by MPS */
import jetbrains.mps.debug.api.AbstractDebugger;
import com.intellij.openapi.components.ApplicationComponent;
import jetbrains.mps.debugger.java.runtime.breakpoints.JavaBreakpointsProvider;
import jetbrains.mps.debug.api.Debuggers;
import jetbrains.mps.debug.api.breakpoints.BreakpointProvidersManager;
import org.jetbrains.annotations.NotNull;
import jetbrains.mps.debug.api.AbstractDebugSessionCreator;
import com.intellij.openapi.project.Project;
import jetbrains.mps.debugger.java.runtime.engine.VmCreator;
import jetbrains.mps.debug.api.breakpoints.IBreakpointsProvider;
import jetbrains.mps.debugger.java.runtime.evaluation.proxies.MirrorUtilImpl;
import jetbrains.mps.debugger.java.runtime.evaluation.EvaluationUtilsImpl;
import jetbrains.mps.debugger.java.api.evaluation.EvaluationUtils;
import jetbrains.mps.debugger.java.api.evaluation.proxies.MirrorUtil;
public class JavaDebugger extends AbstractDebugger implements ApplicationComponent {
private final JavaBreakpointsProvider myJavaBreakpointsProvider = new JavaBreakpointsProvider();
public JavaDebugger(Debuggers debuggers, BreakpointProvidersManager breakpointsProviderManager) {
super("Java", debuggers, breakpointsProviderManager);
}
@NotNull
@Override
public AbstractDebugSessionCreator createDebugSessionCreator(@NotNull Project project) {
return new VmCreator(project);
}
@NotNull
@Override
public IBreakpointsProvider getBreakpointsProvider() {
return myJavaBreakpointsProvider;
}
@NotNull
@Override
public String getComponentName() {
return getName() + " Debugger";
}
@Override
public void initComponent() {
super.init();
myJavaBreakpointsProvider.init();
new MirrorUtilImpl().init();
new EvaluationUtilsImpl().init();
}
@Override
public void disposeComponent() {
EvaluationUtils.getInstance().dispose();
MirrorUtil mirrorUtil = MirrorUtil.getInstance();
if (mirrorUtil != null) {
mirrorUtil.dispose();
}
myJavaBreakpointsProvider.dispose();
super.dispose();
}
}