Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] Catching/monitoring for Constructors

See comments below:

> public aspect ThreadTest {
>     pointcut all():execution(*.new(..)) && !within(ThreadTest) &&
> !within(Holder) &&!within(com.vladium..*);
>
>     after(): all()
>     {
>          System.out.println("Success");
>     }
> }
This aspect works as expected, I hope.  Remember that only classes in
your project and in your inpath are woven (ie- java.lang.String is not
woven unless it is on your inpath).


> public aspect ThreadTest {
>     pointcut all():execution(* *.*(..)) && !within(ThreadTest) &&
> !within(Holder) &&!within(com.vladium..*);
>
>     after(): all()
>     {
>         System.out.println("Success");
>         }
>     }
> }

This is working as expected and will not pick out constructors.  What
is happening here is that you are using the execution primitive
pointcut with a method pattern.  Method patterns are different from
constructor patterns, even though execution (and call) can use both.

You may want to try this pointcut instead (warning haven't tried this out):
     pointcut all(): (execution(* *.*(..)) || execution(*.*(..))) &&
!within(ThreadTest) && !within(Holder) &&!within(com.vladium..*);

The second execution uses a constructor pattern.  You can see this
because it does not have a return clause.

Here is a more precise description of what patterns look like:
http://www.eclipse.org/aspectj/doc/released/progguide/semantics-pointcuts.html#pattern-summary
Here is a more precise description of what patterns are applicable to
which primitive pointcuts:
http://www.eclipse.org/aspectj/doc/released/progguide/semantics-pointcuts.html#primitive-pointcuts

hope this helps,
--a
> I just noticed this and actually am more interested in catching calls to
> init(..) made by a Tomcat server, but general curiousity is getting the
> better of me.  Also, the calls to init() are sometimes returning null
> thisJoinPoint.getTarget() calls, so I figure a solution to the constructor
> mystery may help me.
>
> If you have any ideas on the init() or new() calls, let me know.
>
> Thanks!
> Tyler
>
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>
>


Back to the top