Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] ajc 1.6.6 -> 1.6.7+ behavior changes ?

>  Some aspects or classes are already woven before the ITD they rely on has happened.


For a particular compilation we collect up all the aspects we know about. We then apply all the aspects affecting the type structure (inter type declarations, declare parents), then later we apply the advice.

If you are describing a two step process where a compile step is relying on something done via ITD in a later compile step, that is a bit dodgy, but it might work due to reweaving. Since when the ITDs are applied in that second compile we revert all classes back to their pre-weaving state and apply the new aspects alongside the old aspects - effectively we are discarding whatever the initial compile did.

cheers,
Andy


> On Apr 3, 2015, at 6:07 AM, Alexander Kriegisch <Alexander@xxxxxxxxxxxxxx> wrote:
> 
> I have checked out Romain's project from here:
> svn://svn.code.sf.net/p/zvtm/code/ zvtm-code
> 
> What I saw is that module zvtm-cluster wants to weave ITD methods into zvtm-core. There are other aspects relying on ITD-ed methods introduced by other aspects. There seems to be something wrong with the compilation order. Some aspects or classes are already woven before the ITD they rely on has happened. @Andy: Is this something which is to be expected to work? I tried with AspectJ Maven Plugin 1.7 and AspectJ 1.8.5 dependencies for both the plugin and the runtime.
> -- 
> Alexander Kriegisch
> http://scrum-master.de
> 
> 
> Andy Clement schrieb am 03.04.2015 00:59:
> 
> And worth looking at the 1.6.8 readme: http://eclipse.org/aspectj/doc/released/README-168.html <http://eclipse.org/aspectj/doc/released/README-168.html> 
>> 
>> 
>> It starts with:
>> 
>> 
>> The first sentence in the 1.6.7 readme was 'AspectJ 1.6.7 includes some radical internal changes.'
>> 
>> Unfortunately not enough testing was done on 1.6.7 and two nasty issues were found that really needed addressing. Fixes for these issues are all that is new in 1.6.8.
>> 
>> 
>> So I wouldn’t use 1.6.7.  But really you ought to move to 1.8.5 if you can. I won’t be able to fix anything on 1.6.X if you hit something, I’d fix it for 1.8.6.
>> 
>> 
>> cheers,
>> 
>> Andy
>> 
>> 
>>> On Apr 2, 2015, at 1:02 PM, Alexander Kriegisch <Alexander@xxxxxxxxxxxxxx <mailto:Alexander@xxxxxxxxxxxxxx> > wrote:
>>> 
>>> 
>>> Hi Romain.
>>> 
>>> 
>>> Is there any specific reason for you to use an AspectJ version from 2009? How about giving 1.8.5 a try?
>>> 
>>> 
>>> Disregarding the version, do you think you can share your aspect(s) and target class(es), ideally a minimal example reproducing the problem? Even though you say it is unrelated, the Maven POM would also be interesting.
>>> 
>>> 
>>> As for 1.6.6 to 1.6.7 behaviour changes: http://eclipse.org/aspectj/doc/released/README-167.html <http://eclipse.org/aspectj/doc/released/README-167.html> 
>>> 
>>> -- 
>>> 
>>> Alexander Kriegisch
>>> 
>>> 
>>> Schillerplatz 6, 91315 Höchstadt, Germany <x-apple-data-detectors://5/0> 
>>> 
>>> Tel +49 (9193) 52 76, Mob +49 (176) 20 53 07 02 <tel:+49%20(176)%2020%2053%2007%2002> 
>>> 
>>> 
>>> Am 02.04.2015 um 21:10 schrieb Romain Primet <romain.primet@xxxxxxxxx <mailto:romain.primet@xxxxxxxxx> >:
>>> 
>>> 
>>>> Hi list,
>>>> 
>>>> 
>>>> I have an aspectJ-based codebase that currently uses 1.6.6 (compiler and runtime) and builds fine.
>>>> 
>>>> Moving to 1.6.7+, I get errors related to inter-type declarations. Specifically, a library is being weaved by an aspect that declares a new parent for an existing class. This parent supplies three public methods that are called by other aspects and by Java code. These methods are found when using 1.6.6, but not by 1.6.7+ ("[ERROR] The method isReplicated() is undefined for the type Glyph").
>>>> 
>>>> The build is managed by Maven, but running ajc directly (using the command output by mvn -X) yields the same results.
>>>> 
>>>> Trying to restrict the build to the classes and aspects that relate only to the ITD (i.e. not the users of the introduced methods) works, even for 1.6.7+. The generated classes inherit the superclass as expected.
>>>> 
>>>> Beyond using -showWeaveInfo (which is enabled but unfortunately yields no results), is there something I can do to pinpoint the problem?
>>>> 
>>>> It's a bit hard to prune to a minimal test case but the code is available in case someone wants to take it for a spin.
>>>> 
>>>> Apologies if I'm unclear and/or off-topic.
>>>> 
>>>> Cheers!
>>>> 
>>>> Romain
>>>> _______________________________________________
>>>> aspectj-users mailing list
>>>> aspectj-users@xxxxxxxxxxx <mailto:aspectj-users@xxxxxxxxxxx> 
>>>> To change your delivery options, retrieve your password, or unsubscribe from this list, visit
>>>> https://dev.eclipse.org/mailman/listinfo/aspectj-users <https://dev.eclipse.org/mailman/listinfo/aspectj-users> 
>>>> 
>>> 
>>> _______________________________________________
>>> aspectj-users mailing list
>>> aspectj-users@xxxxxxxxxxx <mailto:aspectj-users@xxxxxxxxxxx> 
>>> To change your delivery options, retrieve your password, or unsubscribe from this list, visit
>>> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>> 
>> 
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> To change your delivery options, retrieve your password, or unsubscribe from this list, visit
> https://dev.eclipse.org/mailman/listinfo/aspectj-users



Back to the top