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.9KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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.CrosscuttingMembers;
  15. import org.aspectj.weaver.ResolvedType;
  16. import org.aspectj.weaver.ShadowMunger;
  17. import org.aspectj.weaver.patterns.PatternParser;
  18. import org.aspectj.weaver.patterns.PerClause;
  19. import org.aspectj.weaver.patterns.PerSingleton;
  20. import org.aspectj.weaver.patterns.TestScope;
  21. public class NonstaticWeaveTestCase extends WeaveTestCase {
  22. {
  23. regenerate = false;
  24. }
  25. public NonstaticWeaveTestCase(String name) {
  26. super(name);
  27. }
  28. public void testBefore() throws IOException {
  29. String s = "before(): get(* *.*) -> void Aspect.ajc_before()";
  30. PerClause per = new PerSingleton();
  31. per = per.concretize(world.resolve("Aspect"));
  32. ShadowMunger myMunger = this.makeConcreteAdvice(s, 0, per);
  33. weaveTest(getStandardTargets(), "NonStaticBefore", myMunger);
  34. }
  35. public void testBeforeCflow() throws IOException {
  36. String s = "before(): get(* *.*) -> void Aspect.ajc_before()";
  37. PerClause per = new PatternParser("percflow(execution(void main(..)))").maybeParsePerClause();
  38. per.resolve(new TestScope(new String[0], new String[0], world));
  39. ResolvedType onAspect = world.resolve("Aspect");
  40. CrosscuttingMembers xcut = new CrosscuttingMembers(onAspect,true);
  41. onAspect.crosscuttingMembers = xcut;
  42. per = per.concretize(onAspect);
  43. ShadowMunger myMunger = this.makeConcreteAdvice(s, 0, per);
  44. xcut.addConcreteShadowMunger(myMunger);
  45. weaveTest(getStandardTargets(), "CflowNonStaticBefore", xcut.getShadowMungers());
  46. }
  47. public void testBeforePerThis() throws IOException {
  48. String s = "before(): call(* println(..)) -> void Aspect.ajc_before()";
  49. PerClause per = new PatternParser("pertarget(call(* println(..)))").maybeParsePerClause();
  50. per.resolve(new TestScope(new String[0], new String[0], world));
  51. ResolvedType onAspect = world.resolve("Aspect");
  52. CrosscuttingMembers xcut = new CrosscuttingMembers(onAspect,true);
  53. onAspect.crosscuttingMembers = xcut;
  54. per = per.concretize(onAspect);
  55. ShadowMunger myMunger = this.makeConcreteAdvice(s, 0, per);
  56. xcut.addConcreteShadowMunger(myMunger);
  57. // List mungers = new ArrayList();
  58. // mungers.add(myMunger);
  59. // mungers.addAll(onAspect.getExtraConcreteShadowMungers());
  60. weaveTest(getStandardTargets(), "PerThisNonStaticBefore", xcut.getShadowMungers());
  61. }
  62. }