You may want to change your advice as follows:
@AfterReturning(value = "execution(WeaveMe.new(..)) && this(obj)")
public void aop(WeaveMe obj) {
** obj.setA(100);
}
-Ramnivas
On Wed, Aug 5, 2009 at 8:44 PM, Kay Kay <[email protected]> wrote:
> I am looking for a way to weave a constructor statically so that it calls
> some piece of code at the end of the instantiation process.
>
> I am using AspectJ 1.6.5 .
>
> I looked at the FAQ here at -
> http://www.eclipse.org/aspectj/doc/released/faq.html#q:adviseconstructors.
>
> I need to get the second option with the join point inside the constructor
> .
>
>
> import org.aspectj.lang.annotation.AfterReturning;
> import org.aspectj.lang.annotation.Aspect;
>
> @Aspect
> class ToInject {
>
> @AfterReturning(value = "execution(WeaveMe.new(..))", returning =
> "obj")
> public void aop(WeaveMe obj) {
> * // Warning: advice defined in poc.ToInject has not been applied.*
> obj.setA(100);
> }
> }
>
> class WeaveMe {
>
> private int a;
>
> public int getA() {
> return a;
> }
>
> public void setA(int a) {
> this.a = a;
> }
>
> }
>
> public class App {
>
> public static void main(String[] args) {
> WeaveMe weave = new WeaveMe();
> System.out.println(weave.getA());
> // Error: I am expecting 100 but am getting 0.
> }
> }
>
> The advice does not seem to be working but I get a compiler error in the
> IDE (AJDT 2.0.0 on Eclipse).
>
>
> What I prefer from the weaving is to see the bytecode of WeaveMe
> constructor changed. ( and not that of App , where it is getting called )
> since I need to use this in a larger context of Spring injection.
>
> Can somebody help with the same, as to if the advice is correct. Thanks.
>
> _______________________________________________
> 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