You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Instrumentation.java 1.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import java.lang.reflect.Field;
  2. import org.aspectj.lang.reflect.*;
  3. public aspect Instrumentation {
  4. pointcut nofl() : !within(Instrumentation);
  5. pointcut getField() : get(* *) && nofl() && !get(* System.out) ;
  6. after() : getField() {
  7. final FieldSignature signature = (FieldSignature) thisJoinPointStaticPart.getSignature();
  8. StringBuffer jpInfo = new StringBuffer();
  9. jpInfo.append("getField(* ").append(signature.getName()).append(")");
  10. final Field field = signature.getField();
  11. jpInfo.append(" getField()='").append(signature.getField()).append("'");
  12. final Class<?> declaringType = signature.getDeclaringType();
  13. jpInfo.append(" getDeclaringType()='"+declaringType).append("'");
  14. final Object receiver = thisJoinPoint.getTarget();
  15. if (receiver == null) {
  16. jpInfo.append(" signature.getTarget() is null (only ok if static)");
  17. }
  18. System.out.println(jpInfo.toString());
  19. }
  20. /*
  21. pointcut setField() : set(* *) && nofl();
  22. after() : setField() {
  23. System.out.println("setField()");
  24. final FieldSignature signature = (FieldSignature) thisJoinPointStaticPart
  25. .getSignature();
  26. final Field field = signature.getField();
  27. if (field == null)
  28. System.out.println(" - field " + signature.getName()
  29. + " is null...bug!");
  30. final Class<?> declaringType = signature.getDeclaringType();
  31. if (declaringType == null)
  32. System.out.println(" - declaringType for the field "
  33. + signature.getName() + " is null...bug!");
  34. final Object receiver = thisJoinPoint.getTarget();
  35. if (receiver == null)
  36. System.out.println(" - target (receiver) for the field "
  37. + signature.getName() + " is null...bug!");
  38. }
  39. */
  40. }