首页 > 代码库 > AspectJ代码修改

AspectJ代码修改

一:

 

1 public aspect MyAspect {2     pointcut move():3         call(void Point.setX(int));4     before(): move() {5         System.out.println("before call Point.setX");6     }7 }

AOP后,修改了.class文件,修改后为

1   public void setXY(int x, int y)2   {3     System.out.println("Point.setXY is calling...");4     MyAspect.aspectOf().ajc$before$aspects_MyAspect$1$c0539092(); setX(x);5     setY(y);6   }

二:

1 public aspect MyAspect {2     pointcut move():3         call(void Point.setX(int));4     after(): move() {5         System.out.println("before call Point.setX");6     }7 }

修改后:

1   public void setXY(int x, int y)2   {3     System.out.println("Point.setXY is calling...");4     try { setX(x); } catch (Throwable localThrowable) { MyAspect.aspectOf().ajc$after$aspects_MyAspect$1$c0539092(); throw localThrowable; } MyAspect.aspectOf().ajc$after$aspects_MyAspect$1$c0539092();5     setY(y);6   }

三:

1 public aspect MyAspect {2     pointcut move():3         call(void Point.setX(int));4     after() returning: move() {5         System.out.println("before call Point.setX");6     }7 }

修改后:

1   public void setXY(int x, int y)2   {3     System.out.println("Point.setXY is calling...");4     setX(x); MyAspect.aspectOf().ajc$afterReturning$aspects_MyAspect$1$c0539092();5     setY(y);6   }

四:

1 public aspect MyAspect {2     pointcut move():3         call(void Point.setX(int));4     after() throwing: move() {5         System.out.println("before call Point.setX");6     }7 }

修改后:

1   public void setXY(int x, int y)2   {3     System.out.println("Point.setXY is calling...");4     try { setX(x); } catch (Throwable localThrowable) { MyAspect.aspectOf().ajc$afterThrowing$aspects_MyAspect$1$c0539092(); throw localThrowable; }5     setY(y);6   }

 五:

 1 public aspect MyAspect { 2     pointcut move(): 3         call(* *.setX(int)); 4     pointcut canMove(): 5         within(javaexercise.FigureElement); 6      7     Object around(): move(){ 8         System.out.println("around call Point.setX" 9         );10         return proceed();11     }12 }

 

修改后:

 1   public void setXY(int x, int y) 2   { 3     System.out.println("Point.setXY is calling..."); 4     int i = x; Point localPoint = this; setX_aroundBody1$advice(this, localPoint, i, MyAspect.aspectOf(), null); 5     setY(y); 6   } 7   private static final void setX_aroundBody0(Point paramPoint1, Point paramPoint2, int paramInt) 8   { 9     paramPoint2.setX(paramInt);10   }11 12   private static final Object setX_aroundBody1$advice(Point ajc$this, Point target, int x, MyAspect ajc$aspectInstance, AroundClosure ajc$aroundClosure)13   {14     System.out.println("around call Point.setX");15 16     AroundClosure localAroundClosure = ajc$aroundClosure; setX_aroundBody0(ajc$this, target, x); return null;17   }

 六:

 1 public aspect MyAspect { 2     pointcut move(): 3         execution(* *.setX(int)); 4     pointcut canMove(): 5         within(javaexercise.FigureElement); 6      7     Object around(): move(){ 8         System.out.println("around call Point.setX" 9         );10         return proceed();11     }12 }

修改后:

 1   public void setXY(int x, int y) 2   { 3     System.out.println("Point.setXY is calling..."); 4     setX(x); 5     setY(y); 6   } 7   public void setX(int x) 8   { 9     int i = x; setX_aroundBody1$advice(this, i, MyAspect.aspectOf(), null);10   }11   private static final void setX_aroundBody0(Point ajc$this, int x)12   {13     System.out.println("Point.setX is calling...");14     ajc$this.x = x;15   }16 17   private static final Object setX_aroundBody1$advice(Point ajc$this, int x, MyAspect ajc$aspectInstance, AroundClosure ajc$aroundClosure)18   {19     System.out.println("around call Point.setX");20 21     AroundClosure localAroundClosure = ajc$aroundClosure; setX_aroundBody0(ajc$this, x); return null;22   }

七:

 1 public aspect MyAspect { 2     pointcut move(): 3         execution(* *.setX(int)); 4     pointcut canMove(): 5         within(javaexercise.FigureElement); 6      7     before(): move(){ 8         System.out.println("before call Point.setX"); 9     }10 }

修改后:

 1   public void setXY(int x, int y) 2   { 3     System.out.println("Point.setXY is calling..."); 4     setX(x); 5     setY(y); 6   } 7   public void setX(int x) { 8     MyAspect.aspectOf().ajc$before$aspects_MyAspect$1$c0539092(); System.out.println("Point.setX is calling..."); 9     this.x = x;10   }11 aspect类里12   @Before(value="http://www.mamicode.com/move()", argNames="")13   public void ajc$before$aspects_MyAspect$1$c0539092()14   {15     System.out.println("before call Point.setX");16   }

八:

 1 public aspect MyAspect { 2     pointcut move(): 3         execution(* *.setX(int)); 4     pointcut canMove(): 5         within(javaexercise.FigureElement); 6      7     after(): move(){ 8         System.out.println("after call Point.setX"); 9     }10 }

修改后:

 1   public void setXY(int x, int y) 2   { 3     System.out.println("Point.setXY is calling..."); 4     setX(x); 5     setY(y); 6   } 7   public void setX(int x) { 8     try { 9       System.out.println("Point.setX is calling...");10       this.x = x; } catch (Throwable localThrowable) {11       MyAspect.aspectOf().ajc$after$aspects_MyAspect$1$c0539092(); throw localThrowable; } MyAspect.aspectOf().ajc$after$aspects_MyAspect$1$c0539092();12   }

九:

 1 public aspect MyAspect { 2     pointcut move(): 3         execution(* *.setX(int)); 4     pointcut canMove(): 5         within(javaexercise.FigureElement); 6      7     after() returning: move(){ 8         System.out.println("after call Point.setX"); 9     }10 }

修改后:

 1   public void setXY(int x, int y) 2   { 3     System.out.println("Point.setXY is calling..."); 4     setX(x); 5     setY(y); 6   } 7   public void setX(int x) { 8     System.out.println("Point.setX is calling..."); 9     this.x = x;10     MyAspect.aspectOf().ajc$afterReturning$aspects_MyAspect$1$c0539092();11   }

十:

 1 public aspect MyAspect { 2     pointcut move(): 3         execution(* *.setX(int)); 4     pointcut canMove(): 5         within(javaexercise.FigureElement); 6      7     after() throwing: move(){ 8         System.out.println("after call Point.setX"); 9     }10 }

修改后:

 1   public void setXY(int x, int y) 2   { 3     System.out.println("Point.setXY is calling..."); 4     setX(x); 5     setY(y); 6   } 7   public void setX(int x) { 8     try { 9       System.out.println("Point.setX is calling...");10       this.x = x;11       return; } catch (Throwable localThrowable) { MyAspect.aspectOf().ajc$afterThrowing$aspects_MyAspect$1$c0539092(); } throw localThrowable;12   }

 十一:

declare soft:Exception:within(javaexercise.FigureFactory);

修改后:

  1 public class FigureFactory  2 {  3   public FigureFactory()  4   {  5     try  6     {  7       try  8       {  9         return; } catch (Exception localException1) { if ((localException1 instanceof RuntimeException)) throw localException1; throw new SoftException(localException1); }  } catch (Exception localException2) { 10       if ((localException2 instanceof RuntimeException)) throw localException2;  11     }throw new SoftException(localException2); 12   } 13   public static Point makePoint(int x, int y) { 14     try { try {  } catch (Exception localException) { if ((localException instanceof RuntimeException)) throw localException; throw new SoftException(localException); } Point p = new Point(); 15       try { p.setXY(x, y); } catch (Exception localException1) { if ((localException1 instanceof RuntimeException)) throw localException1; throw new SoftException(localException1); } 16       return p; } catch (Exception localException2) { if ((localException2 instanceof RuntimeException)) throw localException2;  } 17     throw new SoftException(localException2); 18   } 19  20   // ERROR // 21   public static Line makeLine(int x1, int y1, int x2, int y2) 22   { 23     // Byte code: 24     //   0: new 31    javaexercise/Line 25     //   3: dup 26     //   4: invokespecial 33    javaexercise/Line:<init>    ()V 27     //   7: goto +26 -> 33 28     //   10: astore 5 29     //   12: aload 5 30     //   14: instanceof 57 31     //   17: ifeq +6 -> 23 32     //   20: aload 5 33     //   22: athrow 34     //   23: new 52    org/aspectj/lang/SoftException 35     //   26: dup 36     //   27: aload 5 37     //   29: invokespecial 55    org/aspectj/lang/SoftException:<init>    (Ljava/lang/Throwable;)V 38     //   32: athrow 39     //   33: astore 4 40     //   35: aload 4 41     //   37: iload_0 42     //   38: iload_1 43     //   39: invokestatic 34    javaexercise/FigureFactory:makePoint    (II)Ljavaexercise/Point; 44     //   42: goto +26 -> 68 45     //   45: astore 6 46     //   47: aload 6 47     //   49: instanceof 57 48     //   52: ifeq +6 -> 58 49     //   55: aload 6 50     //   57: athrow 51     //   58: new 52    org/aspectj/lang/SoftException 52     //   61: dup 53     //   62: aload 6 54     //   64: invokespecial 55    org/aspectj/lang/SoftException:<init>    (Ljava/lang/Throwable;)V 55     //   67: athrow 56     //   68: invokevirtual 36    javaexercise/Line:setP1    (Ljavaexercise/Point;)V 57     //   71: goto +26 -> 97 58     //   74: astore 7 59     //   76: aload 7 60     //   78: instanceof 57 61     //   81: ifeq +6 -> 87 62     //   84: aload 7 63     //   86: athrow 64     //   87: new 52    org/aspectj/lang/SoftException 65     //   90: dup 66     //   91: aload 7 67     //   93: invokespecial 55    org/aspectj/lang/SoftException:<init>    (Ljava/lang/Throwable;)V 68     //   96: athrow 69     //   97: aload 4 70     //   99: iload_2 71     //   100: iload_3 72     //   101: invokestatic 34    javaexercise/FigureFactory:makePoint    (II)Ljavaexercise/Point; 73     //   104: goto +26 -> 130 74     //   107: astore 8 75     //   109: aload 8 76     //   111: instanceof 57 77     //   114: ifeq +6 -> 120 78     //   117: aload 8 79     //   119: athrow 80     //   120: new 52    org/aspectj/lang/SoftException 81     //   123: dup 82     //   124: aload 8 83     //   126: invokespecial 55    org/aspectj/lang/SoftException:<init>    (Ljava/lang/Throwable;)V 84     //   129: athrow 85     //   130: invokevirtual 40    javaexercise/Line:setP2    (Ljavaexercise/Point;)V 86     //   133: goto +26 -> 159 87     //   136: astore 9 88     //   138: aload 9 89     //   140: instanceof 57 90     //   143: ifeq +6 -> 149 91     //   146: aload 9 92     //   148: athrow 93     //   149: new 52    org/aspectj/lang/SoftException 94     //   152: dup 95     //   153: aload 9 96     //   155: invokespecial 55    org/aspectj/lang/SoftException:<init>    (Ljava/lang/Throwable;)V 97     //   158: athrow 98     //   159: aload 4 99     //   161: areturn100     //   162: astore 10101     //   164: aload 10102     //   166: instanceof 57103     //   169: ifeq +6 -> 175104     //   172: aload 10105     //   174: athrow106     //   175: new 52    org/aspectj/lang/SoftException107     //   178: dup108     //   179: aload 10109     //   181: invokespecial 55    org/aspectj/lang/SoftException:<init>    (Ljava/lang/Throwable;)V110     //   184: athrow111     //112     // Exception table:113     //   from    to    target    type114     //   0    7    10    java/lang/Exception115     //   39    42    45    java/lang/Exception116     //   68    71    74    java/lang/Exception117     //   101    104    107    java/lang/Exception118     //   130    133    136    java/lang/Exception119     //   0    162    162    java/lang/Exception120   }121 122   static123   {124     try125     {126       return; } catch (Exception localException) { if ((localException instanceof RuntimeException)) throw localException;  }127     throw new SoftException(localException);128   }129 }

//ERROR//是什么意思,难道是没有反编译成功?

十二:

1     before():get(* javaexercise.Point.*){2         System.out.println("before get");3     }

修改为:

1   public int getX() {2     System.out.println("Point.getX is called...");3     MyAspect.aspectOf().ajc$before$aspects_MyAspect$1$54b470a9(); return this.x;4   }

十三:

1     before():set(* javaexercise.Point.*){2         System.out.println("before set");3     }

修改后:

1   public void setX(int x) {2     System.out.println("Point.setX is calling...");3     MyAspect.aspectOf().ajc$before$aspects_MyAspect$1$48139b5(); this.x = x;4   }

 

AspectJ代码修改