Hi Andy,

As it turns out, I have just managed to get it to work.
I wanted the weaver to point at a package, and i got it to work whenever i 
pointed the following at the weaver:

<include within="com.morty.test..*" />

It was the double '.' that threw me.  No idea why it didnt work with the 
classes/interfaces explicity stated...im putting it down to human error! Many 
thanks for all your help!

Regards,
Andy


----- Original Message ----
From: Andy Clement <[EMAIL PROTECTED]>
To: [email protected]
Sent: Friday, 26 September, 2008 6:04:14 PM
Subject: Re: [aspectj-users] type matching & weaving


Hi Andy,

Possibly I need to know a bit more about specifics (the pointcut at least).  if 
the weaveinfo message comes out then the bytecode has been changed and that 
changed form is what will run.  However, if the weaveinfo indicates weaving has 
happened 'with a runtime test' it means something about your pointcut could not 
be purely statically evaluated and so a small test will occur at runtime to 
determine if the advice should actually run - in this situation you can see the 
weaveinfo but your advice not apparently executing.  Are the files and 
pointcuts something like this?

-- A.java --
interface I {
  int foo();
}

class A implements I {
  public int foo() { return 42; }
}

class Extender extends A {
  public int foo() { return 67; }
}
-- End of A.java --

-- X.java --
aspect X {
  before(): execution(* I+.*(..)) {}
}
-- End of X.java --

-- aop.xml --
<aspectj>
<aspects>
<aspect name="X"/>
</aspects>
<weaver options="-showWeaveInfo -verbose">
  <include within="A"/>
  <include within="I"/>
  <include within="X"/>
  <include within="Extender"/>
</weaver>
</aspectj>
-- End of aop.xml --

java -javaagent:aspectjweaver.jar A
[EMAIL PROTECTED] info AspectJ Weaver Version DEVELOPMENT built on Wednesday 
Sep 24, 2008 at 20:57:28 GMT
[EMAIL PROTECTED] info register classloader [EMAIL PROTECTED]
[EMAIL PROTECTED] info using configuration /C:/asc/ws/aspects/META-INF/aop.xml
[EMAIL PROTECTED] info register aspect X
[EMAIL PROTECTED] weaveinfo Join point 'method-execution(int A.foo())' in Type 
'A' (A.java:6) advised by before advice from 'X' (X.java:2)
[EMAIL PROTECTED] weaveinfo Join point 'method-execution(int Extender.foo())' 
in Type 'Extender' (A.java:14) advised by before advice from 'X' (X.java:2)
[EMAIL PROTECTED] info processing reweavable type X: \X.java
Advice running

I can remove the inclusion of A, I and X from the aop.xml and the same output 
occurs....

Andy.


2008/9/26 <[EMAIL PROTECTED]>

Hi.
I have 3 classes:
1) Interface:myInterface
2) ClassmyClass (implements myInterface)
3) ExtendedmyExtendedClass (extends myClass, and overrides a method)

I have a pointcut defined on a method on myInterface, which at runtime, is 
executed via the extended class. The advice will be run ok whenever I dont add 
any includes to the weaver options.
If however I add the names of the classes via an include  eg <include 
within="com.morty.test.myInterface" />, then the advice is never executed.

The files however are weaved, and the weaveInfo shows the advice being linked, 
with or without the <include>
Obviously, there is a performance hit with having every class go through the 
weaver, and so i want to limit it.

Any idea why this would happen?

Many thanks in advance

Andy
_______________________________________________
aspectj-users mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/aspectj-users
_______________________________________________
aspectj-users mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/aspectj-users

Reply via email to