package org.robolectric.internal.bytecode;
import java.lang.annotation.Annotation;
import org.objectweb.asm.Opcodes;
import org.objectweb.asm.tree.AnnotationNode;
import org.objectweb.asm.tree.ClassNode;
public class ClassInfo {
private final String className;
private final ClassNode classNode;
public ClassInfo(String className, ClassNode classNode) {
this.className = className;
this.classNode = classNode;
}
public boolean isInterface() {
return (classNode.access & Opcodes.ACC_INTERFACE) != 0;
}
public boolean isAnnotation() {
return (classNode.access & Opcodes.ACC_ANNOTATION) != 0;
}
public boolean hasAnnotation(Class<? extends Annotation> annotationClass) {
String internalName = "L" + annotationClass.getName().replace('.', '/') + ";";
if (classNode.visibleAnnotations == null) return false;
for (Object visibleAnnotation : classNode.visibleAnnotations) {
AnnotationNode annotationNode = (AnnotationNode) visibleAnnotation;
if (annotationNode.desc.equals(internalName)) return true;
}
return false;
}
public String getName() {
return className;
}
}