package com.github.sdbg.integration.jdt;
import com.github.sdbg.debug.core.breakpoints.IBreakpointPathResolver;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.model.IBreakpoint;
import org.eclipse.jdt.debug.core.IJavaBreakpoint;
/**
* This class implements support for Java breakpoints which are set on classes that are not
* resources in the workspace. For example - classes in the JRE or other JAR libraries.
*/
public class JDTBreakpointPathResolver implements IBreakpointPathResolver {
public JDTBreakpointPathResolver() {
}
@Override
public String getPath(IBreakpoint breakpoint) throws CoreException {
IJavaBreakpoint bp = (IJavaBreakpoint) breakpoint;
String type = bp.getTypeName();
if (type != null) {
int innerClassIndex = type.indexOf('$');
if (innerClassIndex > 0) {
// For inner classes, return the outermost class name,
// as all inner classes are contained in the file of the outermost class
type = type.substring(0, innerClassIndex);
}
return type.replace('.', '/') + ".java";
} else {
return null;
}
}
@Override
public boolean isSupported(IBreakpoint breakpoint) {
return breakpoint instanceof IJavaBreakpoint;
}
}