Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] Two aspects ITDing the same field onto a target type - do you do it?

But do people really know (or care) what ITDs aspect libraries contain?
Or are pehaps aspect libraries not used very much?

Olle

Olle Hallin
Senior Java Developer and Architect
olle.hallin@xxxxxxxx
www.crisp.se
http://www.linkedin.com/in/ollehallin



2010/1/21 Andy Clement <andrew.clement@xxxxxxxxx>
Hi Olle,

yes, that is the main option I am considering (as it is minimal effort
on my part) but I mainly posted to know how much pain a change like
this would cause as this is something that always 'just works' with
the existing strategy.  If enough users complained that it would
affect them, I would try come up with a more sophisticated solution,
but so far no-one seems to mind.  So far I've only ever seen this come
up with AspectJ test programs that are deliberately trying to do it, I
don't have a real world scenario that demonstrates the need for it.

cheers,
Andy

2010/1/21 Olle Hallin <olle.hallin@xxxxxx>:
> Why not let transparent weaving be default, with compile error for name
> clashes?
> If someone (perhaps much later) writes a second ITD (or uses a third-party
> aspect) that causes a name clash, only then the transparent weaving must be
> disabled.
> Olle Hallin
> Senior Java Developer and Architect
> olle.hallin@xxxxxxxx
> www.crisp.se
> http://www.linkedin.com/in/ollehallin
>
>
> 2010/1/20 Andy Clement <andrew.clement@xxxxxxxxx>
>>
>> I'm currently looking at transparent weaving, this is where the
>> resultant bytecode looks more like the user might guess it would based
>> on their declarations.  Consider:
>>
>> class Foo {
>> }
>>
>> aspect Bar {
>>  private int Foo.i
>> }
>>
>> Compiling that will not give field 'i' on Foo *if* you look at
>> Foo.class through javap.  Instead it will be a mangled name.  I would
>> like to preserve the name but it leaves me with this problem:
>>
>> class Foo { }
>>
>> aspect BarOne {
>>  private int Foo.i
>> }
>>
>> aspect BarTwo {
>>  private int Foo.i
>> }
>>
>> which, with the 'old style' of ITDs will work fine as the mangled
>> names won't clash.  In a transparent weaving world I'm trying to
>> decide the best way to handle it, so I thought I'd ask here if anyone
>> is actually doing it?
>> The options would seem to be:
>> - make it a compile error to do it (seems a shame when it could be done
>> before)
>> - one of them gets the name 'i' and the other gets a mangled name.
>> Possible but a lot of implementation work.
>> - make transparent weaving an option and not the default mode, so a
>> user has to request it at compile time. (I'd rather avoid this if I
>> can and have transparent be the default)
>>
>> Remember, there is no change here to ITD semantics, purely in how they
>> are represented in the resultant bytecode.  So - do you ever ITD the
>> same named field onto a type from two different aspects?
>>
>> thanks,
>> Andy
>> _______________________________________________
>> 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


Back to the top