Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] Advice on Advice

Apologies. It was 1:30am and I think my brain turned to jelly after a
long day of doing computery things :)

Here is a sample aspect I am building:

@Aspect
@Configurable
public class MyAspect {
    private static final Log log = LogFactory.getClass(MyAspect.class);
    // Autowired dependencies

    // Pointcuts and advice

    // Happens to be a pointcut of some other Advice
    @Asynchronous
    private Object someMethod(...) {
    }
}

My package depends on another library that defines an Aspect which
cuts across methods annotated with @Asynchronous. Therefore, during
ajc compilation, I would expect to see a message similar to this:
"weaveinfo Join point 'method-call(java.lang.Object
mypackage.someMethod(...))' in Type 'mypackage.MyAspect'
(MyAspect.java:30) advised by around advice from
'anotherpackage.AsynchronousAspect' (from AsynchronousAspect.java))"

But... I don't. The fun part is that when I add a simple log line to
my @Around advice in the MyAspect class, then the ajc compiler picks
up the @Asynchronous aspect and weaves it correctly. Why would adding
a simple thing like logging change my assumptions?

On Tue, Mar 12, 2013 at 12:05 PM, Alexander Kriegisch
<Alexander@xxxxxxxxxxxxxx> wrote:
> Would you mind providing some minimal sample code to reproduce the situation? It is always a good idea to provide the code you ask others to help you fix. ;-)
>
> Alexander Kriegisch
>
>
> Am 12.03.2013 um 00:23 schrieb Jaco le Roux <jabalsad@xxxxxxxxx>:
>
>> Hi,
>>
>> I have an Advice class that declares a method that happens to be a
>> pointcut for other advice. My advice class also has a reference to a
>> static log object. If I print something to the log as part of some
>> @Around advice, the point-cuts are all setup correctly. If I comment
>> this line out, then the method that is a point-cut of the other advice
>> is no longer weaved during compile time (the log message "weaveinfo
>> Join point 'method-call(...)' in type '..' advised by around advice"
>> no longer appears).
>>
>> Why is that my advice doesn't trigger when I don't print to this log
>> file? Does it have to do with the fact that the log object is static
>> and perhaps forces the Aspect class to be instantiated at a different
>> point?
>>
>> Any advice (excuse the pun) appreciated!
>> _______________________________________________
>> aspectj-users mailing list
>> aspectj-users@xxxxxxxxxxx
>> https://dev.eclipse.org/mailman/listinfo/aspectj-users
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/aspectj-users


Back to the top