Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] Abstract aspects

André Dantas Rocha wrote:

Hi,
I'm receving an error when trying to concretize a pointcut in an aspect that belongs to another package. The message is: "inherited abstract pointcut package1.AbstractAspect.test() is not made concrete in package2.ConcreteAspect" My code is shown bellow. If I move the ConcreteAspect to the package1 the code works fine. Any suggestions? Thanks, André -----------------------------------------
package package1;
public abstract aspect AbstractAspect {
  abstract pointcut test();
}
-----------------------------------------
package package2; import package1.*; public aspect ConcreteAspect extends AbstractAspect {
  pointcut test() : execution(* *(..));
}
-----------------------------------------
package package2; public class Test {
  public static void main(String[] args) {
    System.out.println("test");
  }
}

Make the pointuct 'public'...

  public abstract pointcut test();

Notice the same behavior with abstract classes and methods, though jikes seems to be a bit more informative:

package p1;
public abstract class A { abstract void f(); }

-------

package p2;
public class C extends p1.A { void f() {} }

>>>>>>>>>>>>>>>>>>

     2. public class C extends p1.A { void f() {} }
                     ^
*** Semantic Error: The abstract method "void f();",
    belonging to the superclass "p1.A", has default access,
    so it is not inherited and cannot be implemented in this
    package. Therefore, class "p2.C" must be abstract.

Jeff
--
Jeffrey Palm --> http://www.ccs.neu.edu/home/jpalm


Back to the top