Hi Simone,
Thanks... I did what you said but there is a problem. During the compile
there is no error but it seems the static block doesn't work. I tried to
decompile the target class to see what changes AspectJ has applied and I can
see a static block has been created but it is commented as follow:


  // ERROR //
  static
  {
    // Byte code:
    //   0: new 87    org/aspectj/runtime/reflect/Factory
    //   3: dup
    //   4: ldc 88
    //   6: ldc 90
    //   8: invokestatic 96    java/lang/Class:forName
(Ljava/lang/String;)Ljava/lang/Class;
    //   11: invokespecial 99
org/aspectj/runtime/reflect/Factory:<init>
(Ljava/lang/String;Ljava/lang/Class;)V
    //   14: astore_0
    //   15: aload_0
    //   16: ldc 101
    //   18: aload_0
    //   19: ldc 103
    //   21: ldc 90
    //   23: invokevirtual 107
org/aspectj/runtime/reflect/Factory:makeInitializerSig
(Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/InitializerSignature;
    //   26: iconst_0
    //   27: invokevirtual 111
org/aspectj/runtime/reflect/Factory:makeSJP
(Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
    //   30: putstatic 79    com/foo/listener/MyListener1:ajc$tjp_0
Lorg/aspectj/lang/JoinPoint$StaticPart;
    //   33: goto +28 -> 61
    //   36: astore_0
    //   37: aload_0
    //   38: instanceof 71
    //   41: ifeq +8 -> 49
    //   44: aload_0
    //   45: checkcast 71    java/lang/ExceptionInInitializerError
    //   48: athrow
    //   49: nop
    //   50: invokestatic 77
com/foo/aspect/EventDispatcherAspect:aspectOf
()Lcom/foo/aspect/EventDispatcherAspect;
    //   53: getstatic 79    com/foo/listener/MyListener1:ajc$tjp_0
Lorg/aspectj/lang/JoinPoint$StaticPart;
    //   56: invokevirtual 83
com/foo/aspect/EventDispatcherAspect:ajc$after$com_foo_aspect_EventDispatcherAspect$1$5b3bc9fd
(Lorg/aspectj/lang/JoinPoint$StaticPart;)V
    //   59: aload_0
    //   60: athrow
    //   61: invokestatic 77
com/foo/aspect/EventDispatcherAspect:aspectOf
()Lcom/foo/aspect/EventDispatcherAspect;
    //   64: getstatic 79    com/foo/listener/MyListener1:ajc$tjp_0
Lorg/aspectj/lang/JoinPoint$StaticPart;
    //   67: invokevirtual 83
com/foo/aspect/EventDispatcherAspect:ajc$after$com_foo_aspect_EventDispatcherAspect$1$5b3bc9fd
(Lorg/aspectj/lang/JoinPoint$StaticPart;)V
    //   70: return
    //
    // Exception table:
    //   from    to    target    type
    //   33    36    36    java/lang/Throwable
  }

Regards,
Mohammad
--------------------------
Sun Certified Web Developer
ExpertsExchange Certified, Master:
http://www.experts-exchange.com/M_1938796.html
Have a look at some pictures @ http://pixelshot.wordpress.com/
Do you like to read, see http://brainable.blogspot.com/
For the Persians see http://fekre-motefavet.blogspot.com/
English Forum:
http://n2.nabble.com/English-Phrase-Finder-For-Persians-f3274251.html




On Tue, Apr 27, 2010 at 7:33 PM, Simone Gianni <[email protected]> wrote:

> Hi Mohammad,
> staticinitialization has no target object because when a class is
> initialized there is no instance yet. Probably you can obtain the class and
> other informations using ThisJoinPointStaticPart inside your advice.
>
>     pointcut observerMethods():
>         staticinitialization(@Observer com..*);
>
>    after(): observerMethods() {
>         InitializerSignature initsig =
> (InitializerSignature)ThisJoinPointStaticPart.getSignature();
>         Class klass = initsig.getDeclaringType();
>         // adding 'klass' into Registry
>    }
>
> See http://www.eclipse.org/aspectj/doc/released/runtime-api/index.html for
> more info.
>
> Simone
>
> 2010/4/27 Mohammad Norouzi <[email protected]>
>
>>  Hello
>> I want to register those classes annotated with @Observer in a Registry
>> class... I want this occurs in a static block of such classes:
>>
>>     pointcut observerMethods(Class klass):
>>         staticinitialization(@Observer com..*)
>>         && target(klass);
>>
>>    after(Class klass): observerMethods(klass) {
>>         // adding 'klass' into Registry
>>
>>    }
>>
>> but as I read in manual it is said staticinitialization has no target
>> object... is this right? if yes, how can I obtain the Class of those
>> classes. Can I declare a static-block for matching classes?
>>
>> thanks
>>
>> Regards,
>> Mohammad
>> --------------------------
>> Sun Certified Web Developer
>> Have a look at some pictures @ http://pixelshot.wordpress.com/
>>
>>
>>
>> _______________________________________________
>> 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
>
>
_______________________________________________
aspectj-users mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/aspectj-users

Reply via email to