On 28 April 2010 00:30, Mohammad Norouzi <
mnrz57@xxxxxxxxx> wrote:
> 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 <
simoneg@xxxxxxxxxx> 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 <
mnrz57@xxxxxxxxx>
>>>
>>> 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
>>>
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
>>
>
>
> _______________________________________________
> 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