Hi Owen,

 

There's an additional bug in Log4jExecutionTracing. It looks like I don't
have the right set up to commit code to the codehaus project any more but
see the attached files for a fix to both the bug that Ramnivas caught and
the other one (a mistake in the pointcut for the staticinitialization
clause). This also has a test and changes the Log4jTracer to trace at info
level.

 

From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Owen Corpening
Sent: Thursday, October 16, 2008 9:02 PM
To: aspectj-users@eclipse.org
Subject: Re: [aspectj-users] question on ajlib:

 

Ah, I had removed the pertypewithin(Traced) as part of my detective work ...
however adding it back with the + as you said still does not give me
weaveinfo showing:

 

Join point 'constructor-execution(void com.AjlibTest.DummyObject.<init>())'
in Type 'com.AjlibTest.DummyObject' (DummyObject.java:2) advised by before
advice from 'com.AjlibTest.TestTraceAspect' (Log4jExecutionTracing.aj:17)

 

And the println I put inside the before advice in Log4jExecutionTracing.aj
is still not printing. Nevertheless this is defintely more progress than I
made so far ...

 

All I have found is that removing pertypewithin(Traced+) and
"staticinitialization(*) &&" causes me to get weaveinfo messages such as the
above.

 

I am getting logging from the ExecutionTracing class, just the "tracer = new
Log4jTracer(name);" is not getting executed, the tracer is still the
printststream.

 

Thanks!!

owen

 

----- Original Message ----
From: Ramnivas Laddad <[EMAIL PROTECTED]>
To: aspectj-users@eclipse.org
Sent: Thursday, October 16, 2008 8:36:29 PM
Subject: Re: [aspectj-users] question on ajlib:

It looks like there is a bug in Log4jExecutionTracing. You need to change
pertypewithin(Traced) to pettypewithin(Traced+) in Log4jExecutionTracing.

 

Once I do that, I get the following output:

trace enter: com.AjlibTest.DummyObject() , this:
[EMAIL PROTECTED]

trace exit: com.AjlibTest.DummyObject()

trace enter: int com.AjlibTest.DummyObject.someMethod(int) , this:
[EMAIL PROTECTED], args: arg 0 = 5

trace exit: int com.AjlibTest.DummyObject.someMethod(int), return = 7

 

BTW, the runtime check that you see is due to the if() pointcut used to
enable/disable the tracing.

 

-Ramnivas

 

2008/10/16 Owen Corpening <[EMAIL PROTECTED]>

Well I repeat I am still coming up to speed on some of the non-beginner
spots in aspectj ... so I put a println in the before advice in
Log4jExecutionTracing -- it never printed anything.

 

So I hacked it by removing the "staticinitialization(*) && " and it prints,
and I get the weaveinfo output as before but in addition I get 

 

Join point 'constructor-execution(void com.AjlibTest.DummyObject.<init>())'
in Type 'com.AjlibTest.DummyObject' (DummyObject.java:2) advised by before
advice from 'com.AjlibTest.TestTraceAspect' (Log4jExecutionTracing.aj:17)
[with runtime test]

Join point 'method-execution(int com.AjlibTest.DummyObject.someMethod(int))'
in Type 'com.AjlibTest.DummyObject' (DummyObject.java:4) advised by before
advice from 'com.AjlibTest.TestTraceAspect' (Log4jExecutionTracing.aj:17)
[with runtime test]

 

So it defintely was not weaving the Log4jExecutionTracing before advice. For
verboseness here is my hacked Log4jExecutionTracing and my aspect extending
it:

 

/**

 * @author Ron Bodkin with code drawn from Matthew Webster's example posted
to aj-users 1/28/2005

 */

package org.codehaus.ajlib.util.tracing;

 

/**

 * Typical idiom of log4j tracing of method execution: trace to a different
logger for

 * each type.

 */

public abstract aspect Log4jExecutionTracing extends ExecutionTracing  {

          protected interface Traced {}

          

          public pointcut scope() : within(Traced+);

          

          //TODO: test, e.g., what if staticinitialization of a type when
tracing something?!

    //before(): staticinitialization(*) && inScope() {

    before(): inScope() {

          System.out.println("in log4j");

        String name =
thisJoinPointStaticPart.getSignature().getDeclaringTypeName();

        tracer = new Log4jTracer(name);

          }

}

 

package com.AjlibTest;

import org.codehaus.ajlib.util.tracing.Log4jExecutionTracing;

public aspect TestTraceAspect extends Log4jExecutionTracing {

    declare parents: com.AjlibTest.DummyObject implements Traced;

}

 

Since this posting is as long as the Magna Carta already here are my
HelloWorld and DummyObject classes:

 

package com.AjlibTest;

public class HelloWorld

{

          public static void main(String[] args)

          {

                   DummyObject ao = new DummyObject();

                   ao.someMethod(5);

          }

}

 

package com.AjlibTest;

public class DummyObject

{

          public int someMethod(int i)

          {

                   return 7;

          }

}

 

thanks,

owen

 

----- Original Message ----
From: Ron Bodkin <[EMAIL PROTECTED]>
To: aspectj-users@eclipse.org

Sent: Wednesday, October 15, 2008 9:11:51 PM
Subject: RE: [aspectj-users] question on ajlib:

Hi Owen,

 

This indicates that the before advice is in fact applying in your test.
Could it be that you aren't seeing log output because the
Log4jExecutionTracing aspect traces to a log4j logger at debug level, and
that you need to enable debug output in your log4j configuration? 

 

From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Owen Corpening
Sent: Wednesday, October 15, 2008 4:24 PM
To: aspectj-users@eclipse.org
Subject: Re: [aspectj-users] question on ajlib:

 

Well it seems to have put the Traced interface on my DummyObject class ...

 

Description  Resource Path Location Type

Extending interface set for type 'com.AjlibTest.DummyObject'
(DummyObject.java) to include
'org.codehaus.ajlib.util.tracing.Log4jExecutionTracing$Traced'
(TestTraceAspect.aj)  aspectLib        Unknown  Java Problem

Join point 'constructor-execution(void com.AjlibTest.DummyObject.<init>())'
in Type 'com.AjlibTest.DummyObject' (DummyObject.java:2) advised by
afterReturning advice from 'com.AjlibTest.TestTraceAspect'
(ExecutionTracing.aj:56) [with runtime test]    aspectLib        Unknown
Java Problem

Join point 'constructor-execution(void com.AjlibTest.DummyObject.<init>())'
in Type 'com.AjlibTest.DummyObject' (DummyObject.java:2) advised by
afterThrowing advice from 'com.AjlibTest.TestTraceAspect'
(ExecutionTracing.aj:76) [with runtime test]    aspectLib        Unknown
Java Problem

Join point 'constructor-execution(void com.AjlibTest.DummyObject.<init>())'
in Type 'com.AjlibTest.DummyObject' (DummyObject.java:2) advised by before
advice from 'com.AjlibTest.TestTraceAspect' (ExecutionTracing.aj:45) [with
runtime test]   aspectLib        Unknown  Java Problem

Join point 'method-execution(int com.AjlibTest.DummyObject.someMethod(int))'
in Type 'com.AjlibTest.DummyObject' (DummyObject.java:4) advised by
afterReturning advice from 'com.AjlibTest.TestTraceAspect'
(ExecutionTracing.aj:51) [with runtime test]    aspectLib        Unknown
Java Problem

Join point 'method-execution(int com.AjlibTest.DummyObject.someMethod(int))'
in Type 'com.AjlibTest.DummyObject' (DummyObject.java:4) advised by
afterThrowing advice from 'com.AjlibTest.TestTraceAspect'
(ExecutionTracing.aj:76) [with runtime test]    aspectLib        Unknown
Java Problem

Join point 'method-execution(int com.AjlibTest.DummyObject.someMethod(int))'
in Type 'com.AjlibTest.DummyObject' (DummyObject.java:4) advised by before
advice from 'com.AjlibTest.TestTraceAspect' (ExecutionTracing.aj:45) [with
runtime test]   aspectLib        Unknown  Java Problem

 

 

----- Original Message ----
From: Andy Clement <[EMAIL PROTECTED]>
To: aspectj-users@eclipse.org
Sent: Wednesday, October 15, 2008 12:44:55 PM
Subject: Re: [aspectj-users] question on ajlib:

Hi Owen,

 

Does compiling with -showWeaveInfo show whether your declare parents is or
is not working?

 

Andy.

2008/10/15 Owen Corpening <[EMAIL PROTECTED]>

Probably a syntactical error, the before() in Log4jExecutionTracing never
gets executed, I bet my "declare parents" isn't right, first time I ever
came across that, I guess I haven't been keeping up with aj1.5:

 

package com.AjlibTest;

import org.codehaus.ajlib.util.tracing.Log4jExecutionTracing;

public aspect TestTraceAspect extends Log4jExecutionTracing {

    declare parents: com.AjlibTest.DummyObject implements Traced;

}

 

my package looks like this:

./com/AjlibTest/DummyObject.java

./com/AjlibTest/HelloWorld.java

./com/AjlibTest/TestTraceAspect.aj

 

Anyone see my goof?

 

thanks,

owen

 

----- Original Message ----
From: Ron Bodkin <[EMAIL PROTECTED]>
To: aspectj-users@eclipse.org

Sent: Tuesday, October 14, 2008 12:00:12 AM
Subject: RE: [aspectj-users] question on ajlib:

Hi Owen,

 

Traced is a protected interface that is defined within Log4jExecutionTracing
itself. You just use the aspect by extending it and using declare parents to
make the relevant classes you want to trace implement traced, as in:

 

public aspect MyLog4jExecutionTracing extends Log4jExecutionTracing {

     declare parents: com.bigboxco.myapp..* implements Traced;

}

 

From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Owen Corpening
Sent: Thursday, October 09, 2008 6:41 AM
To: aspectj-users@eclipse.org
Subject: [aspectj-users] question on ajlib:

 

With regards to ajlib:

http://fisheye.codehaus.org/browse/ajlib-incubator/org.codehaus.ajlib

 

There is a class Log4jExecutionTracing not covered in the unit tests and for
which there are no examples of its usage. It uses a class called "Traced"
that I don't see anywhere and I *think* that is at the core of my not
comprehending how to use this class.

 

Basically if I have a test tracing aspect like this it works great
(DummyObject is the class whose methods are to be traced):

 

package com.AjlibTest;

import org.codehaus.ajlib.util.tracing.ExecutionTracing;

public aspect TestTraceAspect extends ExecutionTracing

{

    public pointcut scope() : within(DummyObject);

    before(): scope()

    {

         System.out.println("Tracing");

    }

}

 

But if I change ExecutionTracing to Log4jExecutionTracing it doesn't weave
anything (advice defined in com.AjlibTest.TestTraceAspect has not been
applied [Xlint:adviceDidNotMatch]).

 

much appreciated,

Owen

 

 

 


_______________________________________________
aspectj-users mailing list
aspectj-users@eclipse.org
https://dev.eclipse.org/mailman/listinfo/aspectj-users

 

 


__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 


_______________________________________________
aspectj-users mailing list
aspectj-users@eclipse.org
https://dev.eclipse.org/mailman/listinfo/aspectj-users

 

 

Attachment: ExtensibleTracing.aj
Description: Binary data

Attachment: Log4jExecutionTracing.aj
Description: Binary data

Attachment: Log4jTracer.aj
Description: Binary data

Attachment: Log4jExecutionTracingTestCase.aj
Description: Binary data

_______________________________________________
aspectj-users mailing list
aspectj-users@eclipse.org
https://dev.eclipse.org/mailman/listinfo/aspectj-users

Reply via email to