Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[aspectj-users] Method pattern to match method execution in super class

Hello everyone

I'm fighting with spring security and aspectj joinpoints and have no idea why our joinpoint declaration does not match.

We have the following class and interface structure:

8<-----------------------------

public interface ILookupRepository<T> {
   Iterable<T> findAll();
}

public interface IBaseRepository<T> extends ILookupRepository<T> { }

public abstract class AbstractBaseRepository<T> {
  Iterable<T> findAll();
}

public interface IFooRepository extends IBaseRepository<Foo> { }

public class FooRepository extends AbstractBaseRepository<Foo> implements IFooRepository { }

8<-----------------------------

I now want to match calls to findAll of IFooRepository and use this _expression_:
execution(* com.example.IFooRepository.findAll(..))

This pattern does not match when calling 
IFooRepository repo = ...
repo.findAll();

The signatures that are found and compared against in SignaturePattern.matches are the following:

Iterable net.junisphere.eranger.domain.internal.neo4j.repositories.AbstractBaseRepository.findAll()
Iterable<IBaseEntity> com.example.IBaseRepository<IBaseEntity>.findAll()
Iterable<IBaseEntity> com.example.ILookupRepository<IBaseEntity>.findAll()
Iterable com.example.ILookupRepository<IBaseEntity>.findAll()
Iterable<net.junisphere.eranger.domain.model.IBaseEntity> com.example.ILookupRepository<IBaseEntity>.findAll()
Iterable com.example.ILookupRepository<IBaseEntity>.findAll()


Any ideas why the IFooRepository is not taken into account, but only IBaseRepository and ILookupRepository?


Best regards,
James

Back to the top