Re: anything wrong?- beginner problem

Jonas Bonér <[email protected]> Sun, 04 May 2003 16:52:21 +0200
Newsgroups gmane.comp.java.aspectwerkz
Message-ID <[email protected]>
Hi Weishan.

* I can't eliminate the case sensitivity, since methods in Java with 
different cases are considered to be different methods.
E.g. void NewFile() is *not* the same method as void newFile().

* The problem with private methods is a known bug that *is* fixed and 
will be patched in the next release. Sorry about that :-(

- Jonas

Zhang Weishan wrote:
> Hi Jonas,
>   Thank you!
>   Is it a bit more convenient to eliminate the case sensitive issue? 
>   Sorry there was another error message and it seems that it could not access private method:
>   
> C:\aspectwerkz>aspectwerkz -cp test/notepad.jar;lib/commons-collections-2.1.jar
> -Daspectwerkz.definition.file=test/samples.xml -Daspectwerkz.metadata.dir=./ Notepad
> --> Notepad::NewFile
> java.lang.IllegalAccessException: Class aspectwerkz.joinpoint.MemberMethodJoinPo
> int can not access a member of class Notepad with modifiers "private"
>         at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:57)
>         at java.lang.reflect.Method.invoke(Method.java:317)
>         at aspectwerkz.joinpoint.MemberMethodJoinPoint.proceed(MemberMethodJoinP
> oint.java:92)
>         at LoggingAdvice.execute(loggingadvice.java:23)
>         at aspectwerkz.advice.MethodAdvice.doExecute(MethodAdvice.java:74)
>         at aspectwerkz.joinpoint.MemberMethodJoinPoint.proceed(MemberMethodJoinP
> oint.java:103)
>         at Notepad.NewFile(Notepad.java)
>         at Notepad.access$000(Notepad.java:63)
>         at Notepad$1.actionPerformed(Notepad.java:175)
>         at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:17
> 64)
> .....
> 
> cheers,
> Weishan
> 
> 
> 
> 
> -----Original Message-----
> From: Jonas Bonér [mailto:[email protected]] 
> Sent: Saturday, May 03, 2003 9:05 PM
> To: Zhang Weishan
> Cc: [email protected]
> Subject: Re: [aspectwerkz-developer] anything wrong?- beginner problem
> 
> Hi Weishan.
> 
> Thanks a lot for helping me catch a nasty bug :-) :
> 
> it is (in the 0.4 release) not possible to define a pointcut that picks 
> out *both* static and member methods; creates errors like the one below.
> This has now been fixed and I will commit it to the CVS among with the 
> other stuff I am working on soon.
> 
> Back to your example: the pointcut selection is *case-sensitive* so you 
> have to use "N.*" if you want to advise the NewFile method.
> And until the bug is patched, don't mix static and member methods in the 
> pointcuts.
> 
> Sorry for this.
> 
> - Jonas
> 
> 
> 
> Zhang Weishan wrote:
> 
>>Hi,
>>  There is method named NewFile(), and if you use ".*", an error is throwed:
>>  C:\aspectwerkz>aspectwerkz -cp test/notepad.jar;lib/commons-collections-2.1.jar
>>-Daspectwerkz.definition.file=test/samples.xml -Daspectwerkz.metadata.dir=_metaD
>>ata Notepad
>>java.lang.Error: should be unreachable
>>        at aspectwerkz.MethodComparator.comparePrefixed(MethodComparator.java:14
>>4)
>>        at aspectwerkz.MethodComparator.compare(MethodComparator.java:68)
>>        at java.util.Arrays.mergeSort(Arrays.java:1237)
>>        at java.util.Arrays.mergeSort(Arrays.java:1244)
>>        at java.util.Arrays.mergeSort(Arrays.java:1245)
>>        at java.util.Arrays.sort(Arrays.java:1185)
>>        at java.util.Collections.sort(Collections.java:151)
>>        at aspectwerkz.AspectWerkz.createMethodRepository(AspectWerkz.java:437)
>>        at aspectwerkz.AspectWerkz.loadMethods(AspectWerkz.java:416)
>>        at aspectwerkz.AspectWerkz.initialize(AspectWerkz.java:386)
>>        at aspectwerkz.joinpoint.MethodJoinPoint.<init>(MethodJoinPoint.java:62)
>>
>>        at aspectwerkz.joinpoint.StaticMethodJoinPoint.<init>(StaticMethodJoinPo
>>int.java:48)
>>        at Notepad.main(Notepad.java)
>>Exception in thread "main"
>>
>>Thanks,
>>Weishan
>>
>>
>>
>>
>>-----Original Message-----
>>From: Jonas Bonér [mailto:[email protected]] 
>>Sent: Saturday, May 03, 2003 6:43 PM
>>To: Zhang Weishan
>>Cc: [email protected]
>>Subject: Re: [aspectwerkz-developer] anything wrong?- beginner problem
>>
>>Hi.
>>
>>Which method/methods are you trying to advise?
>>
>>When I look at your Notepad.java I can't see any methods named something 
>>starting with the letter n. If you want to log all methods in the class 
>>use: .*
>>
>>- Jonas
>>
>>Zhang Weishan wrote:
>>
>>
>>>Hello everyone,
>>>
>>> I tried to run the simple logging advice with a Notepad example, but I 
>>>was in trouble. All the used files, including the xml definition file, 
>>>compiled and source logging advice, compiled and source Notepad reside 
>>>in one directory named test. I jar the complied logging advice and 
>>>Notepad into a notepad.jar.
>>>
>>> The logging advice which is almost the same as the original one, the 
>>>only difference is that I removed the package declaration to make life 
>>>easier.
>>>
>>> Here is the xml definition file which resides:
>>>
>>><aspectwerkz>
>>>
>>>   <advice name="xmt"
>>>
>>>       advice="LoggingAdvice"
>>>
>>>       deploymentModel="perClass"/>
>>>
>>>
>>>
>>>   <aspect class="Notepad">
>>>
>>>       <pointcut type="method" pattern="n.*">
>>>
>>>           <advice-ref name="xmt"/>
>>>
>>>       </pointcut>
>>>
>>>   </aspect>
>>>
>>>
>>>
>>> Here is the command I used to invoke the framework.
>>>
>>>C:\aspectwerkz>aspectwerkz -cp 
>>>test/notepad.jar;lib/commons-collections-2.1.jar
>>>
>>>-Daspectwerkz.definition.file=test/samples.xml 
>>>-Daspectwerkz.metadata.dir=_metaD
>>>
>>>ata Notepad
>>>
>>>
>>>
>>>The notepad runs but there is no logging info displayed in the console. 
>>>No matter what the method pattern, for example, set.*, n.*, it simply 
>>>did not work.
>>>
>>>
>>>
>>>Thanks,
>>>
>>>Weishan
>>>
>>>
>>>
>>
>>
>>
> 
> 


-- 
Jonas
http://freeroller.net/page/jboner





-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf