Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[aspectj-users] Problem with @Aspect using generics

Hello,
I have following problem with following Aspect:

@Aspect
public class CounterAspect extends AbstractMoskitoAspect {

@Around(value = "execution(* *(..)) && (@annotation(method))")
    public Object countMethod(ProceedingJoinPoint pjp, Count method) throws Throwable {
    return count(pjp, method.producerId(), method.subsystem(), method.category());
    }

@Around(value = "execution(* *(..)) && (@annotation(method))")
public Object countByParameter(ProceedingJoinPoint pjp, CountByParameter method) throws Throwable {
return countByParameter(pjp, method.producerId(), method.subsystem(), method.category());
}

@Around(value = "execution(* *.*(..)) && (@within(clazz))")
    public Object countClass(ProceedingJoinPoint pjp, Count clazz) throws Throwable {
    return count(pjp, clazz.producerId(), clazz.subsystem(), clazz.category());
    }

private Object countByParameter(ProceedingJoinPoint pjp, String aProducerId, String aSubsystem, String aCategory) throws Throwable {
....

It works. However, since I have two similar aspects that differ only in using some internal classes, I made my super class using generics:
public class AbstractMoskitoAspect<S extends IStats> {

@Aspect
public class CounterAspect extends AbstractMoskitoAspect<CounterStats> {

this breaks the build instantly with the very unhelpful error message:
[ERROR] Failed to execute goal org.codehaus.mojo:aspectj-maven-plugin:1.4:compile (default) on project moskito-aop: Compiler errors:
[ERROR] error at @Around(value = "execution(* *(..)) && (@annotation(method))")
[ERROR] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[ERROR] /Users/another/projects/moskito/moskito-aop/java/net/anotheria/moskito/aop/aspect/CounterAspect.java:24:0::0 the parameter pjp is not bound in [all branches of] pointcut
[ERROR] error at @Around(value = "execution(* *(..)) && (@annotation(method))")
[ERROR] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[ERROR] /Users/another/projects/moskito/moskito-aop/java/net/anotheria/moskito/aop/aspect/CounterAspect.java:29:0::0 the parameter pjp is not bound in [all branches of] pointcut
[ERROR] error at @Around(value = "execution(* *.*(..)) && (@within(clazz))")
[ERROR] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[ERROR] /Users/another/projects/moskito/moskito-aop/java/net/anotheria/moskito/aop/aspect/CounterAspect.java:34:0::0 the parameter pjp is not bound in [all branches of] pointcut

what am i doing wrong here?


aspectj 1.6.11, mvn 3, mvn aspectj plugin 1.4
how to reproduce:
checkout http://svn.anotheria.net/opensource/moskito/trunk/
edit net.anotheria.moskito.aop.aspect.CounterAspect, change
public class CounterAspect extends AbstractMoskitoAspect {
to
public class CounterAspect extends AbstractMoskitoAspect<CounterStats> {

run mvn clean install

thanks for your time
Leon











Back to the top