Re: AlRe: [Fwd: Re: [aspectwerkz-dev] Creating AOPified javadocs]

the_mindstorm <[email protected]> Sat, 28 Aug 2004 20:36:19 +0300
Newsgroups gmane.comp.java.aspectwerkz.devel
Message-ID <[email protected]>
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
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>
>>
> 
>