Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] Adding fields to a Class

Hi,
          I tried it and it works. Is the incremental compilation bug
still there ? AJDT still shows that X.TLInterface cannot be resolved
to a type.

Thanks,
Mohan

On 7/8/08, Andy Clement <andrew.clement@xxxxxxxxx> wrote:
> Example:
>  --- Test.java ---
>  public class Test {
>
>   public static void main(String[] argv) {
>     A a = new A();
>     B b = new B();
>     if (a instanceof X.TLInterface) System.out.println("A has it");
>     if (b instanceof X.TLInterface) System.out.println("B has it");
>   }
>  }
>
>  class A {}
>  class B {
>   public void run() {}
>  }
>
>  aspect X {
>   interface TLInterface {}
>
>   ThreadLocal TLInterface.local;
>
>   declare parents: hasmethod(public void run(..)) implements TLInterface;
>
>  }
>  ---------------
>
>  C:\temp>ajc -XhasMember Test.java -showWeaveInfo
>  Type 'X$TLInterface' (Test.java) has intertyped field from 'X'
>  (Test.java:'java.lang.ThreadLocal X$TLInterface.local')
>
>  Extending interface set for type 'B' (Test.java) to include
>  'X$TLInterface' (Test.java)
>
>  Type 'B' (Test.java) has intertyped field from 'X'
>  (Test.java:'java.lang.ThreadLocal X$TLInterface.local')
>
>
>
>  Andy.
>
>
>  2008/7/7 100ji <itz100ji@xxxxxxxxx>:
>
> > Hi all,
>  >
>  > I want to add a ThreadLocal field to all the classes that contain the
>  > run method using aspects. Currently, I have the following aspect code
>  > that gives me a list of all classes that have the run method.
>  >
>  > public aspect AddTaintVarToThread {
>  >       pointcut startThreads(): execution(void *.run());
>  >
>  >       before(Object o) : startThreads() && target(o){
>  >       System.out.println("Hurray! Thread advice works!" +
>  > o.getClass().getName());
>  >       }
>  > }
>  >
>  > Once I get the class name, can I add a field to the class inside a
>  > method call in aspectj? Or more specifically, can I perform a
>  > inter-type declaration inside the advice? If I can't do it this way,
>  > are there better ways? I tried googling list archives but found
>  > nothing. Any pointers will prove helpful.
>  >
>  > TIA,
>  > -S-
>  > _______________________________________________
>  > aspectj-users mailing list
>  > aspectj-users@xxxxxxxxxxx
>  > https://dev.eclipse.org/mailman/listinfo/aspectj-users
>  >
>  _______________________________________________
>  aspectj-users mailing list
>  aspectj-users@xxxxxxxxxxx
>  https://dev.eclipse.org/mailman/listinfo/aspectj-users
>


Back to the top