Re: AlRe: [Fwd: Re: [aspectwerkz-dev] Creating AOPified javadocs]
the_mindstorm <[email protected]> Mon, 06 Sep 2004 13:59:42 +0300
| Newsgroups | gmane.comp.java.aspectwerkz.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi! Jonas can you please check the Creating AOPified javadocs thread and let me know about your opinions. I want to get started with this and I have waited for you and Mik to come back and tell me your insights. ./the_mindstorm Quote [the_mindstorm]: > First of all thank you very much for the answers and for the time put in > answering. > > Quote Alex:: > >> Question: why do you need to dig that much in AW. Are you driving some >> sort >> of comparison ? > > > I try to understand the full power behind the scenes. For the moment, > even if the AspectJ seems to me to be the most used I guess that the > full adoption will come from a pure java solution (my 2cent about > management heads - and some experience behind this ;-) ) > > Another reason would be the lack of technical insights on AOP (a few > papers - in fact, I have just one, and some discussions on mail lists). > I have almost always considered the code as the best documentation. > >> Are you planning to build an add-on product on it that >> requires deep knowledge on it ? Do you plan to write a paper at AOSD >> 05 on >> the weaver architecture of AJ/AW/JBoss ? > > > Not for the moment, as I do not consider myself an enough knower of AJ > and AW. > However, the 1st AOP contact was with JBoss and I didn't agree with > their interception - aop confusion (I am not sure if they move along this). > >> >> PS: I don't like to give architecture insight since it is a moving >> target, >> so all that things may change within 2 months if some new good idea >> emerge >> ;-) AW architecture is probably in its 5th or 6th iteration - at least. > > > Here you almost touched another reason I love to dig into AW (maybe some > good idea will emerge ;-) ). > I will try to restrict/reduce my questions in the future :-(. > > ::the_mindstorm > >> >> Alex >> >> >> ----- Original Message ----- >> From: "the_mindstorm" <[email protected]> >> To: <[email protected]> >> Sent: Saturday, August 28, 2004 3:29 AM >> Subject: Re: AlRe: [Fwd: Re: [aspectwerkz-dev] Creating AOPified >> javadocs] >> >> >> >>> Quote Alex:: >>> >>> >>>> In Tiger, annotations are not in javadoc and are strong typed thru the >> >> >> help >> >>>> of an interface. >>>> >>>> @Before(myPointcut) >>>> public void myBeforeAdvice(...) >>>> >>>> java sources with javadoc + javac compiled + AW AnnotationC tool >> >> >> generates >> >>>> new class files (offline) >>>> just as >>>> java sources with annotations + javac Tiger compiled class files >>>> >>>> produce class files where annotations are represented in the bytecode. >>> >>> >>> I went to code to better understand this. As far as i get it, >>> AdviceInfo-s >> >> >> are added as attributes >> >>> at allowed/interesting points. What I am not sure I understood is the >> >> >> following: >> >>> according to JVM spec the attribute struct is >>> >>> attribute_info { >>> u2 attribute_name_index; >>> u4 attribute_length; >>> u1 info[attribute_length]; >>> } >>> >>> it seems to me that info is just a byte array and you use this for >> >> >> serializing AdviceInfo? >> >>> >>> 2. This is a separate question. In AsmHelper.loadClass(ClassLoader, >> >> >> byte[], String) you are using a >> >>> loader to load ClassLoader and than invoke its defineClass method. >>> Why are >> >> >> you using this mechanism? >> >>> (In order to simulate the CL hierarchy?) >>> >>> 3. I saw the above method is used in 2 different compilers >>> JitCompiler and >> >> >> JoinPointCompiler? >> >>> Where are these used? (I guess they are used at classloading for >>> weaving, >> >> >> ain't it?). What is the >> >>> difference between 'em and in which of the situation are used? >>> >>> 4. I am reading now the Advice Weaving in AspectJ (Hilsdale & Hugunin). >> >> >> The inline weaving you are >> >>> working on will look like the described solution used by AspectJ? >>> >>> ::the_mindstorm >>> >>> PS: I hope that I am not bothering too much with this kind of questions >> >> >> (but I am trying to get an >> >>> inside view >>> >>>> Alex >>>> >>>> >>>> >>>> ----- Original Message ----- >>>> From: "Jack Tang" <[email protected]> >>>> To: <[email protected]> >>>> Sent: Friday, August 27, 2004 6:09 PM >>>> Subject: Re: [Fwd: Re: [aspectwerkz-dev] Creating AOPified javadocs] >>>> >>>> >>>> >>>> >>>>> <Quote> >>>>> >>>>>>> phase 1 and 2 are gone with J2SE 5. >>>>>> >>>>>> >>>>>> The solution must not take to much into account this, as i consider >> >> >> that >> >>>> the switch to J5 will take >>>> >>>> >>>>> </Quote> >>>>> How about Tiger's javadoc? How does he solve *annotation* in javadoc? >>>>> >>>>> P.S: I am a stranger to Tiger >>>>> >>>>> /Jack >>>>> >>>>> >>>>> >>>>> On Fri, 27 Aug 2004 18:59:40 +0300, the_mindstorm >>>>> <[email protected]> wrote: >>>>> >>>>> >>>>>> Quote Alex:: >>>>>> >>>>>> >>>>>> >>>>>>> Hi >>>>>>> Looks like you forgot the diagram. >>>>>>> How will you handle call pointcut matching at source level (and not >>>> >>>> >>>> bytecode >>>> >>>> >>>>>>> level) with QDox ? I don't think it is possible, since QDox does not >>>>>>> modelize method bodies. >>>>>> >>>>>> >>>>>> Correct. This is why I am thinking that the 1st solution is more >> >> >> suited. >> >>>>>> >>>>> c >>>>> >>>>> >>>>>> a long time. >>>>>> >>>>>> >>>>>> >>>>>>> phase 3 is wrong may be: we do not parse javadoc tag. We parse >>>> >>>> >>>> annotations >>>> >>>> >>>>>>> in bytecode (that get there thru AnnotationC or J2SE 5 javac). >>>>>> >>>>>> >>>>>> Interesting. I missed this. Alex can you pls detail a little this >>>> >>>> >>>> mechanism. >>>> >>>> >>>>>> An interesting point is that the javadoc will use the compiler/weaver >> >> >> in >> >>>> offline mode (or will use >>>> >>>> >>>>>> the inline weaver ;-) ). >>>>>> >>>>>> >>>>>> >>>>>>> phase 4 is : weave class files as they gets loaded thru classloaders >>>> >>>> >>>> (not >>>> >>>> >>>>>>> java sources) >>>>>>> Or may be you confused me , since I made the assumption that those >>>> >>>> >>>> phases >>>> >>>> >>>>>>> were executing one after another. >>>>>>> >>>>>>> Some more ideas: As you may know AspectJ has a declare error >>>>>>> construct >>>> >>>> >>>> that >>>> >>>> >>>>>>> allows to report design error based on pointcuts (ie : do not >>>>>>> call new >>>>>>> Stuff() unless within the factory method code etc). The tool design >>>> >>>> >>>> and the >>>> >>>> >>>>>>> underlying weaver requirements should handle this as well. >>>>>> >>>>>> >>>>>> There are intentions in AW to support all the AspectJ features? Is >> >> >> there >> >>>> a roadmap? >>>> >>>> >>>>>> ::the_mindstorm >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>>> Alex >>>>>>> >>>>>>> ----- Original Message ----- >>>>>>> From: "Jack Tang" <[email protected]> >>>>>>> To: <[email protected]> >>>>>>> Sent: Friday, August 27, 2004 4:53 PM >>>>>>> Subject: Re: [aspectwerkz-dev] Creating AOPified javadocs >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>>> Hello Alexandru >>>>>>>> >>>>>>>> After reading Alex's comments, I think I got some points. If >> >> >> something >> >>>>>>>> wrong, please correct me, Alex. >>>>>>>> >>>>>>>> The key of this problem is when to collect aop model information >>>>>>>> and >>>>>>>> who will supply these information. Two solution list here: >>>>>>>> >>>>>>>> 1.javac + weave classes + generate stubs and javadoc [method 1 and >>>>>>>> method with emitted join points] >>>>>>>> 2.parse sources + generate stubs and javadoc >>>>>>>> >>>>>>>> And I divide AW engine workflow into five phrase(maybe more,but >>>>>>>> here >>>>>>>> I think five is enough). >>>>>>>> 1.hook phrase : pipe BootClasspathStarter/JDWPStarter after >>>>>>>> java.lang.ClassLoader >>>>>>>> 2.preProcess phrase: initialize preProcessor,filter certain CL and >>>> >>>> >>>> modify >>>> >>>> >>>>>>> CL >>>>>>> >>>>>>> >>>>>>> >>>>>>>> 3.parse phrase : parse xml and javadoc @tags >>>>>>>> 4.compile phrase : compile Java source >>>>>>>> 5.transform/weave phrase: weave the cross-cutting info >>>>>>>> >>>>>>>> diagram like this: >>>>>>>> (see attached file) >>>>>>>> >>>>>>>> Let's discuss solution 2 first. We should parse java sources by >>>>>>>> ourself using QDox, then parse xml def, finally we structure aop >>>>>>>> domain model by our hand. This solution is better to me first >>>>>>>> impression, because I dream he can avoid "compile phrase". But >>>>>>>> maybe >>>>>>>> it's my daydream. >>>>>>>> >>>>>>>> And if we refer to solution 1, "compile phrase" has to be involved, >>>>>>>> but we can access aop domain model easily through weaver context. >>>>>>>> >>>>>>>> >>>>>>>> /Jack >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>> >>> >> >> > >