[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] generate a StackTraceElement

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

[quote Wes Isberg::on 2/10/2005 9:11 PM]
|> pointcut advices(JoinPoint jp): adviceexecution() && args(jp) &&
|> within(...)
|
| You can't bind the JoinPoint available in advice this way.
|

Why not? I think I have even read about this in one of AJ book (Cookbook?).

- --
:alex |.::the_mindstorm::.|

| The code below works, logging all the adviceexecution
| join points.
|
| Valerio, do you instead want to log the join points being
| advised by the advice (in Main below, staticinitialization
| and method-execution)?  If the pointcuts were named and
| enumerable, you could do that, but it's awkward.  What's
| the use-case for this? Does the variable
| thisEnclosingJoinPointStaticPart help?
|
| Wes
|
| ------------------ bug/Main.java
| package bugs;
|
| import org.aspectj.lang.JoinPoint;
| import org.aspectj.lang.Signature;
| import org.aspectj.lang.reflect.SourceLocation;
|
| /**
|  */
| public class Main {
|
|     public static void main(String[] args) {
|     }
| }
| aspect A {
|     before() : within(Main) {
|         System.out.println("before() "
|              + thisJoinPointStaticPart);
|     }
| }
| aspect B implements IAspect {
|     before() : adviceexecution() && !within(B) {
|         log(thisJoinPointStaticPart);
|     }
|     void log(JoinPoint.StaticPart jp) {
|         Signature sig = jp.getSignature();
|         SourceLocation loc = jp.getSourceLocation();
|         StackTraceElement ste = new StackTraceElement
|             (sig.getDeclaringType().getName(), sig.getName(),
|                 loc.getFileName(), loc.getLine());
|         System.out.println("BeforeAndAfter advice: "+ ste);
|     }
| }
|
|
|
|> ------------Original Message------------
|> From: Alexandru Popescu <alexandru.popescu@xxxxxxxxx>
|> To: aspectj-users@xxxxxxxxxxx
|> Date: Thu, Feb-10-2005 10:16 AM
|> Subject: Re: [aspectj-users] generate a StackTraceElement
|>
| [quote Valerio Schiavoni::on 2/10/2005 6:44 PM]
| | On Thursday 10 February 2005 16:29, Alexandru Popescu wrote:
| |> The only available pointcut related to aspects is the
| adviceexecution() but
| |> you cannot refine it further to match a before advice and after
| advice.
| |
| | i don't need to refine it. It'd be enough to be able to "dump" the
| stack
| | everytime an advice is executed.
| |
| | i tried with :
| |
| | pointcut Advices(): adviceexecution() && within(TraceAspect);
| |
| |     after(): Advices() {
| |           StackTraceElement ste = new StackTraceElement
| | (thisJoinPoint.getSignature().getDeclaringType().getName(),
| |                 thisJoinPoint.getSignature().getName(),
| |                 thisJoinPoint.getSourceLocation().getFileName(),
| |                 thisJoinPoint.getSourceLocation().getLine());
| |          System.out.println("BeforeAndAfter advice: "+ ste);
| | }
| |
| | so, if another advice is present, i want to get info about that join
| point.
| | This is not possible? If so...why ?
| |
| | thanks,
| | valerio
|
| I think what you are looking for is something in this direction:
|
| pointcut advices(JoinPoint jp): adviceexecution() && args(jp) &&
| within(...)
|
| --
| :alex |.::the_mindstorm::.|
_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
http://dev.eclipse.org/mailman/listinfo/aspectj-users

| _______________________________________________
| aspectj-users mailing list
| aspectj-users@xxxxxxxxxxx
| http://dev.eclipse.org/mailman/listinfo/aspectj-users


-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (MingW32)

iD8DBQFCC7i5TTDTje0R2dgRAp2cAJ9aXgpux84+BDEsNCFrvFbqPnqgRACaAwgh
lEQpjClpH6nDezCBm6ZM58Q=
=Ri8P
-----END PGP SIGNATURE-----