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.

TrackingErrors.aj 3.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import org.aspectj.lang.*;
  2. import org.aspectj.lang.JoinPoint;
  3. public abstract aspect TrackingErrors {
  4. protected abstract pointcut errorScope ();
  5. private pointcut staticContext () : !this(Object);
  6. private pointcut nonStaticContext (Object obj) : this(obj);
  7. private pointcut caughtThrowable (Throwable th) : handler(Throwable+)
  8. && args(th);
  9. private pointcut excluded () : within(TrackingErrors+);
  10. before (Throwable th) : caughtThrowable(th) && errorScope() &&
  11. !excluded() && staticContext() {
  12. processStaticTrackingErrors(th,thisJoinPointStaticPart,thisEnclosingJoinPointStaticPart);
  13. }
  14. before (Throwable th, Object obj) : caughtThrowable(th) && errorScope()
  15. && !excluded() && nonStaticContext(obj) {
  16. processNonStaticTrackingErrors(th,obj,thisJoinPointStaticPart,thisEnclosingJoinPointStaticPart);
  17. }
  18. protected void processStaticTrackingErrors (Throwable th,
  19. JoinPoint.StaticPart tjp, JoinPoint.StaticPart ejp) {}
  20. protected void processNonStaticTrackingErrors (Throwable th, Object obj,
  21. JoinPoint.StaticPart tjp, JoinPoint.StaticPart ejp) {}
  22. protected String getSourceId (JoinPoint.StaticPart ejp) {
  23. String typeName =
  24. ejp.getSignature().getDeclaringTypeName();
  25. String name = ejp.getSignature().getName();
  26. return typeName + "." + name;
  27. }
  28. protected String getProbeId (JoinPoint.StaticPart tjp) {
  29. String sourceLocation =
  30. tjp.getSourceLocation().toString();
  31. return sourceLocation;
  32. }
  33. }
  34. /*public abstract aspect Complex {
  35. protected abstract pointcut scope ();
  36. private pointcut staticContext () : !this(Object);
  37. private pointcut nonStaticContext (Object obj) : this(obj);
  38. private pointcut caughtThrowable (Throwable th) : handler(Throwable+) && args(th);
  39. private pointcut excluded () : within(Complex+);
  40. before (Throwable th) : caughtThrowable(th) && scope() && !excluded() && staticContext() {
  41. processStaticData(th,thisJoinPointStaticPart,thisEnclosingJoinPointStaticPart);
  42. }
  43. before (Throwable th, Object obj) : caughtThrowable(th) && scope() && !excluded() && nonStaticContext(obj) {
  44. processNonStaticData(th,obj,thisJoinPointStaticPart,thisEnclosingJoinPointStaticPart);
  45. }
  46. private void processStaticData (Throwable th, JoinPoint.StaticPart tjp, JoinPoint.StaticPart ejp) {
  47. }
  48. private void processNonStaticData (Throwable th, Object obj, JoinPoint.StaticPart tjp, JoinPoint.StaticPart ejp) {
  49. }
  50. protected String getSourceId (JoinPoint.StaticPart ejp) {
  51. String typeName = ejp.getSignature().getDeclaringTypeName();
  52. String name = ejp.getSignature().getName();
  53. return typeName + "." + name;
  54. }
  55. protected String getProbeId (JoinPoint.StaticPart tjp) {
  56. String sourceLocation = String.valueOf(tjp.getSourceLocation().getLine());
  57. return sourceLocation;
  58. }
  59. }
  60. */