[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[aspectj-users] abstract and concrete aspect in different packages
|
Hi,
If have the following directory structure:
src\aj\util\
- LoggingAspect.aj
src\aj\example1\
- Client.java
- Server.java
- ServerCallLoggingAspect1.aj
src\aj\example2\
- SetGetjava
- Test.java
- SetGetLoggingAspect.aj
LoggingAspect is an abstract aspect:
package aj.util;
public abstract aspect LoggingAspect {
abstract pointcut logEvents();
...
}
I create utilaj.jar with: ajc -sourceroots src\aj\util -outjar utilaj.jar
and utilaj.jar contains aj\util\LoggingAspect.class.
I want to use it in the following concrete aspects:
package aj.example1;
import aj.util.LoggingAspect;
public aspect ServerCallLoggingAspect1 extends LoggingAspect {
pointcut logEvents() : call(* Client.call()) || call(*
Server.getData(..));
}
I use utilaj.jar with: ajc -sourceroots src\aj\example1 -aspectpath
utilaj.jar and get the error:
"ServerCallLoggingAspect.aj:5 inherited abstract pointcut
aj.util.LoggingAspect.logEvents() is not made concrete in
aj.example1.ServerCallLoggingAspect."
If I rename aj.util.LoggingAspect to aj.example1.LoggingAspect, remove the
import statement in ServerCallLoggingAspect and create and use utilaj.jar
again, it works. But then I can'treuse the abstract aspect for aj.example2
two.
So I remove every package name in LoggingAspect, ServerCallLoggingAspect
and SetGetLoggingAspect. But then I have to import aj.example1.Client and
aj.example1.Server etc. or specify the full qualified class name at the
pointcut logEvents().
Because of that it makes no real sense to me to put an aspect in the same
directory with the java files the aspect should be woven in. All aspects
could also be located in one directory (e.g. ajfiles) or whereever you
want.
So the question is, is the above error a bug, or what is the reason for
that? Or would it makes no sense to structure aspects like (or with)
java classes.
Thanx.
--
Thomas
--
mailto:aop@xxxxxxxxxxxxxxxxxx