Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

AroundAdvice.java 840B

12345678910111213141516171819202122232425262728293031323334353637
  1. import org.aspectj.testing.Tester;
  2. public aspect AroundAdvice {
  3. public static void main(String[] args) { test(); }
  4. public static void test() {
  5. Tester.checkEqual(new Foo().foo(5), 1+2+3+4+5, "sum");
  6. Tester.checkEqual(new Foo().bar(), "overridden", "bar()");
  7. }
  8. pointcut fooCut(int n): target(Foo) && call(int foo(int)) && args(n);
  9. int around(int n): fooCut(n) {
  10. int N = n;
  11. int sum = 0;
  12. for(int i=0; i<N; i++) {
  13. n = i;
  14. int ret = proceed(n);
  15. sum += ret;
  16. }
  17. return sum;
  18. }
  19. String around(): within(AroundAdvice) && call(String bar()) {
  20. return "overridden";
  21. }
  22. }
  23. class Foo {
  24. public int foo(int x) {
  25. //System.out.println("foo("+x+")");
  26. return x+1;
  27. }
  28. public String bar() {
  29. return "bar()";
  30. }
  31. }