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.

ParentsAndPointcuts.java 1.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import org.aspectj.testing.Tester;
  2. public class ParentsAndPointcuts {
  3. public static void main(String[] args) {
  4. ContainerDescriptor d = new ContainerDescriptor();
  5. Tester.check(d instanceof AbstractCaching.Key, "instanceof");
  6. }
  7. }
  8. aspect AspectBug extends AbstractCaching
  9. perthis(execution(ContainerLoader+.new(..)))
  10. {
  11. declare parents: ContainerDescriptor implements AbstractCaching.Key;
  12. protected pointcut loadExecutions( Key key ):
  13. ContainerLoader.containerLoads( *, key );
  14. }
  15. abstract aspect AbstractCaching {
  16. interface Key {}
  17. protected abstract pointcut loadExecutions(Key key);
  18. }
  19. class Key {
  20. }
  21. class ContainerDescriptor {
  22. }
  23. class ActiveContainer {
  24. }
  25. class ContainerLoader {
  26. public ActiveContainer createContainer(ContainerDescriptor c) {
  27. return null;
  28. }
  29. public pointcut containerLoads(ContainerLoader loader,
  30. ContainerDescriptor containerDesc ):
  31. this(loader) && args(containerDesc)
  32. && execution(ActiveContainer ContainerLoader.createContainer
  33. (ContainerDescriptor));
  34. }