@Override
 public AnnotationVisitor visitAnnotation(final String name, final String desc) {
   AnnotationValueDescriptor valueDescriptor = createValue(AnnotationValueDescriptor.class, name);
   valueDescriptor.setType(visitorHelper.getTypeDescriptor(visitorHelper.getType(desc)));
   addValue(name, valueDescriptor);
   return new AnnotationVisitor(valueDescriptor, visitorHelper);
 }
Example #2
0
 @Override
 public org.objectweb.asm.AnnotationVisitor visitParameterAnnotation(
     final int parameter, final String desc, final boolean visible) {
   String annotationType = SignatureHelper.getType(desc);
   if (JAVA_LANG_SYNTHETIC.equals(annotationType)) {
     // Ignore synthetic parameters add the start of the signature, i.e.
     // determine the number of synthetic parameters
     syntheticParameters = Math.max(syntheticParameters, parameter + 1);
     return null;
   }
   ParameterDescriptor parameterDescriptor =
       visitorHelper.getParameterDescriptor(methodDescriptor, parameter - syntheticParameters);
   if (parameterDescriptor == null) {
     LOGGER.warn(
         "Cannot find parameter with index "
             + (parameter - syntheticParameters)
             + " in method signature "
             + containingType.getTypeDescriptor().getFullQualifiedName()
             + "#"
             + methodDescriptor.getSignature());
     return null;
   }
   AnnotationValueDescriptor annotationDescriptor =
       visitorHelper.addAnnotation(
           containingType, parameterDescriptor, SignatureHelper.getType(desc));
   return new AnnotationVisitor(containingType, annotationDescriptor, visitorHelper);
 }
Example #3
0
 @Override
 public void visitMethodInsn(
     final int opcode, final String owner, final String name, final String desc, boolean itf) {
   String methodSignature = SignatureHelper.getMethodSignature(name, desc);
   TypeCache.CachedType targetType =
       visitorHelper.resolveType(SignatureHelper.getObjectType(owner), containingType);
   MethodDescriptor invokedMethodDescriptor =
       visitorHelper.getMethodDescriptor(targetType, methodSignature);
   visitorHelper.addInvokes(methodDescriptor, line, invokedMethodDescriptor);
 }
 @Override
 public void visitEnum(final String name, final String desc, final String value) {
   EnumValueDescriptor valueDescriptor = createValue(EnumValueDescriptor.class, name);
   TypeDescriptor typeDescriptor = visitorHelper.getTypeDescriptor(visitorHelper.getType(desc));
   FieldDescriptor fieldDescriptor =
       visitorHelper.getFieldDescriptor(
           typeDescriptor, visitorHelper.getFieldSignature(value, desc));
   valueDescriptor.setType(visitorHelper.getTypeDescriptor(Enum.class.getName()));
   valueDescriptor.setValue(fieldDescriptor);
   addValue(name, valueDescriptor);
 }
 @Override
 public void visit(final String name, final Object value) {
   if (value instanceof Type) {
     String type = visitorHelper.getType((Type) value);
     ClassValueDescriptor valueDescriptor = createValue(ClassValueDescriptor.class, name);
     valueDescriptor.setValue(visitorHelper.getTypeDescriptor(type));
     addValue(name, valueDescriptor);
   } else {
     PrimitiveValueDescriptor valueDescriptor = createValue(PrimitiveValueDescriptor.class, name);
     TypeDescriptor typeDescriptor = visitorHelper.getTypeDescriptor(value.getClass().getName());
     valueDescriptor.setType(typeDescriptor);
     valueDescriptor.setValue(value);
     addValue(name, valueDescriptor);
   }
 }
Example #6
0
 @Override
 public AnnotationVisitor visitAnnotation(final String desc, final boolean visible) {
   AnnotationValueDescriptor annotationDescriptor =
       visitorHelper.addAnnotation(
           containingType, methodDescriptor, SignatureHelper.getType(desc));
   return new AnnotationVisitor(containingType, annotationDescriptor, visitorHelper);
 }
 @Override
 public void visitClassType(String name) {
   resolvedTypeDescriptor =
       visitorHelper
           .resolveType(SignatureHelper.getObjectType(name), containingType)
           .getTypeDescriptor();
 }
Example #8
0
 @Override
 public void visitTryCatchBlock(
     final Label start, final Label end, final Label handler, final String type) {
   if (type != null) {
     String fullQualifiedName = SignatureHelper.getObjectType(type);
     visitorHelper.resolveType(fullQualifiedName, containingType);
   }
 }
Example #9
0
 @Override
 public void visitFieldInsn(
     final int opcode, final String owner, final String name, final String desc) {
   String fieldSignature = SignatureHelper.getFieldSignature(name, desc);
   TypeCache.CachedType targetType =
       visitorHelper.resolveType(SignatureHelper.getObjectType(owner), containingType);
   FieldDescriptor fieldDescriptor = visitorHelper.getFieldDescriptor(targetType, fieldSignature);
   switch (opcode) {
     case Opcodes.GETFIELD:
     case Opcodes.GETSTATIC:
       visitorHelper.addReads(methodDescriptor, line, fieldDescriptor);
       break;
     case Opcodes.PUTFIELD:
     case Opcodes.PUTSTATIC:
       visitorHelper.addWrites(methodDescriptor, line, fieldDescriptor);
       break;
   }
 }
 /**
  * Create a value descriptor of given type and name and initializes it.
  *
  * @param type The class type.
  * @param name The name
  * @param <T> The type.
  * @return The initialized descriptor.
  */
 private <T extends ValueDescriptor> T createValue(Class<T> type, String name) {
   if (name != null) {
     this.arrayValueDescriptor = null;
   }
   String valueName;
   if (arrayValueDescriptor != null) {
     valueName = "[" + getListValue(this.arrayValueDescriptor).size() + "]";
   } else {
     valueName = name;
   }
   T valueDescriptor = visitorHelper.getValueDescriptor(type);
   valueDescriptor.setName(valueName);
   return valueDescriptor;
 }
Example #11
0
 @Override
 public void visitTypeInsn(final int opcode, final String type) {
   visitorHelper.resolveType(SignatureHelper.getObjectType(type), containingType);
 }
Example #12
0
 @Override
 public void visitMultiANewArrayInsn(final String desc, final int dims) {
   visitorHelper.resolveType(SignatureHelper.getType(desc), containingType);
 }
Example #13
0
 @Override
 public void visitLdcInsn(final Object cst) {
   if (cst instanceof Type) {
     visitorHelper.resolveType(SignatureHelper.getType((Type) cst), containingType);
   }
 }
 @Override
 public void visitInnerClassType(String name) {
   String innerClassName = resolvedTypeDescriptor.getFullQualifiedName() + "$" + name;
   resolvedTypeDescriptor =
       visitorHelper.resolveType(innerClassName, containingType).getTypeDescriptor();
 }