use of com.newrelic.weave.UtilityClass in project newrelic-java-agent by newrelic.
the class AgentPreprocessors method markUtilityClasses.
/**
* Visit classes and add a "@UtilityClass" annotation on anything that doesn't have "@Weave" or "@SkipIfPresent"
*/
ClassVisitor markUtilityClasses(ClassVisitor cv) {
return new ClassVisitor(WeaveUtils.ASM_API_LEVEL, cv) {
private boolean isUtilityClass = true;
@Override
public AnnotationVisitor visitAnnotation(String desc, boolean visible) {
if (Type.getDescriptor(Weave.class).equals(desc) || Type.getDescriptor(SkipIfPresent.class).equals(desc) || Type.getDescriptor(WeaveWithAnnotation.class).equals(desc)) {
this.isUtilityClass = false;
}
return super.visitAnnotation(desc, visible);
}
@Override
public void visitEnd() {
if (isUtilityClass) {
addUtilityClassAnnotation(cv);
}
super.visitEnd();
}
private ClassVisitor addUtilityClassAnnotation(ClassVisitor cv) {
AnnotationVisitor av = cv.visitAnnotation(Type.getDescriptor(UtilityClass.class), true);
av.visit("weavePackageName", weavePackageName);
av.visitEnd();
return cv;
}
};
}
Aggregations