Bug 61007 - concrete pointcut cannot be implemented in another package
Summary: concrete pointcut cannot be implemented in another package
Status: RESOLVED INVALID
Alias: None
Product: AspectJ
Classification: Tools
Component: Compiler (show other bugs)
Version: 1.1.1   Edit
Hardware: PC Linux
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: Jim Hugunin CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-05-05 06:15 EDT by juergen.blocksdorf CLA
Modified: 2004-05-05 06:37 EDT (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description juergen.blocksdorf CLA 2004-05-05 06:15:16 EDT
I put my general aspect with an abstract pointcut into one package. The
application-specific (concrete) aspect should be located in another package: 


 // File aspects/AbstractAspect.java 
 package aspects;
 public abstract aspect AbstractAspect {
   abstract pointcut myPointcut();
   before(): myPointcut() {
     System.out.println("before myPointcut.");
   }
 }


 // File myApp.ConcreteAspect.java
 package myApp;
 public aspect ConcreteAspect extends aspects.AbstractAspect {
   pointcut myPointcut(): execution( void myApp.RunTest.say(String));
 }



 // File myApp/RunTest.java
 package myApp;
 public class RunTest{
   public static void main(String[] args){
     say( "Hello");
   }
	
   public static void say(String msg){
     System.out.println(msg);
   }	
 }


The ajc-compilers in version 1.1.1 and 1.2rc1 don't compile it:


[jb@SHARK test]$ /usr/local/java/aspectj-1.2rc1/bin/ajc -classpath
.:/usr/local/java/aspectj-1.2rc1/lib/aspectjrt.jar @default.lst
/home/jb/projects/test/aspects/AbstractAspect.java:5 error inherited abstract
pointcut aspects.AbstractAspect.myPointcut() is not made concrete in
myApp.ConcreteAspect
abstract pointcut myPointcut();
                  ^^^^^^^^^^

/home/jb/projects/test/myApp/ConcreteAspect.java:4 error inherited abstract
pointcut aspects.AbstractAspect.myPointcut() is not made concrete in
myApp.ConcreteAspect
public aspect ConcreteAspect extends aspects.AbstractAspect
              ^^^^^^^^^^^^^


2 errors


If you move ConcreteAspect into the same package as the abstract aspect it works
fine.
Comment 1 juergen.blocksdorf CLA 2004-05-05 06:37:22 EDT
Sorry, I found out that I have to declare the abstract pointcut as public.