package railo.transformer.bytecode.util;
import java.io.IOException;
import java.io.InputStream;
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassVisitor;
import railo.commons.lang.StringUtil;
import railo.runtime.type.util.ListUtil;
public class SourceNameClassVisitor extends ClassVisitor {
private String sourceName;
public SourceNameClassVisitor(int arg0) {
super(arg0);
}
@Override
public void visitSource(String source, String debug) {
super.visitSource(source, debug);
if(!StringUtil.isEmpty(source)){
String name=ListUtil.last(source, "/\\");
if(StringUtil.endsWithIgnoreCase(name, ".cfc")) {
this.sourceName=name;
}
}
}
public static String getSourceName(Class clazz) throws IOException {
String name = "/"+clazz.getName().replace('.', '/')+".class";
InputStream in=clazz.getResourceAsStream(name);
ClassReader classReader=new ClassReader(in);
SourceNameClassVisitor visitor = new SourceNameClassVisitor(4);
classReader.accept(visitor, 0);
return visitor.sourceName;
}
}