package org.eclipse.xtend.maven;
import java.io.File;
import java.io.IOException;
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassVisitor;
import org.objectweb.asm.Opcodes;
import com.google.common.io.Files;
public class ClassFileDebugSourceExtractor {
protected static class Visitor extends ClassVisitor {
public Visitor() {
super(Opcodes.ASM5);
}
protected String source;
@Override
public void visitSource(String arg0, String arg1) {
this.source = arg0;
}
}
public String getDebugSourceFileName(File classFile) throws IOException {
ClassReader cr = new ClassReader(Files.toByteArray(classFile));
Visitor visitor = new Visitor();
cr.accept(visitor, ClassReader.SKIP_CODE | ClassReader.SKIP_FRAMES);
return visitor.source;
}
}