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.

NonstaticWeaveTestCase.java 2.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. /* *******************************************************************
  2. * Copyright (c) 2002 Palo Alto Research Center, Incorporated (PARC).
  3. * All rights reserved.
  4. * This program and the accompanying materials are made available
  5. * under the terms of the Eclipse Public License v1.0
  6. * which accompanies this distribution and is available at
  7. * http://www.eclipse.org/legal/epl-v10.html
  8. *
  9. * Contributors:
  10. * PARC initial implementation
  11. * ******************************************************************/
  12. package org.aspectj.weaver.bcel;
  13. import java.io.IOException;
  14. import org.aspectj.weaver.*;
  15. import org.aspectj.weaver.patterns.*;
  16. public class NonstaticWeaveTestCase extends WeaveTestCase {
  17. {
  18. regenerate = false;
  19. }
  20. public NonstaticWeaveTestCase(String name) {
  21. super(name);
  22. }
  23. public void testBefore() throws IOException {
  24. String s = "before(): get(* *.*) -> void Aspect.ajc_before()";
  25. PerClause per = new PerSingleton();
  26. per = per.concretize(world.resolve("Aspect"));
  27. ShadowMunger myMunger = this.makeConcreteAdvice(s, 0, per);
  28. weaveTest(getStandardTargets(), "NonStaticBefore", myMunger);
  29. }
  30. public void testBeforeCflow() throws IOException {
  31. String s = "before(): get(* *.*) -> void Aspect.ajc_before()";
  32. PerClause per = new PatternParser("percflow(execution(void main(..)))").maybeParsePerClause();
  33. per.resolve(new TestScope(new String[0], new String[0], world));
  34. ResolvedType onAspect = world.resolve("Aspect");
  35. CrosscuttingMembers xcut = new CrosscuttingMembers(onAspect,true);
  36. onAspect.crosscuttingMembers = xcut;
  37. per = per.concretize(onAspect);
  38. ShadowMunger myMunger = this.makeConcreteAdvice(s, 0, per);
  39. xcut.addConcreteShadowMunger(myMunger);
  40. weaveTest(getStandardTargets(), "CflowNonStaticBefore", xcut.getShadowMungers());
  41. }
  42. public void testBeforePerThis() throws IOException {
  43. String s = "before(): call(* println(..)) -> void Aspect.ajc_before()";
  44. PerClause per = new PatternParser("pertarget(call(* println(..)))").maybeParsePerClause();
  45. per.resolve(new TestScope(new String[0], new String[0], world));
  46. ResolvedType onAspect = world.resolve("Aspect");
  47. CrosscuttingMembers xcut = new CrosscuttingMembers(onAspect,true);
  48. onAspect.crosscuttingMembers = xcut;
  49. per = per.concretize(onAspect);
  50. ShadowMunger myMunger = this.makeConcreteAdvice(s, 0, per);
  51. xcut.addConcreteShadowMunger(myMunger);
  52. // List mungers = new ArrayList();
  53. // mungers.add(myMunger);
  54. // mungers.addAll(onAspect.getExtraConcreteShadowMungers());
  55. weaveTest(getStandardTargets(), "PerThisNonStaticBefore", xcut.getShadowMungers());
  56. }
  57. }