Hi Andy,

I'll answer what I can now:

I've tried with 1.8.3 and 1.8.5, same result.

I'll send you the aspect we're using privately if that's OK.

What is 'binary weaving'?  I've only heard of load-time and compile time
weaving...

Will try some of your suggestions tomorrow when I'm in the office...

Cheers!

Tim






On Mon, May 11, 2015 at 7:55 PM, Andy Clement <[email protected]>
wrote:

> Hey,
>
> So we do indeed see the rogue entry in that javap:
>
>   public int compareTo(java.lang.Object);
>     flags: ACC_PUBLIC, ACC_BRIDGE, 0x200
>
> Who on earth put that 0x200 in there! (ACC_INTERFACE)
>
> Question going through my mind:
> - what aspects are applying to the class containing this method? (What
> kind of pointcuts/advice)
> - if you still use the aspectj compiler but no aspects apply to this
> class, does it still break that method?
> - what version of AspectJ is in use? Have you tried with 1.8.5?
> - Would it work if binary weaving rather than compile time weaving?
>
> But even if I knew all the answers to those questions, I’m not sure it’ll
> help me pin it down - I’d be trying to recreate it just like you are. One
> difference between compiling in different contexts (in the IDE or with
> maven) is the ordering of compilation, which can sometimes influence
> things. The ordering can be influenced by the names of things so in trying
> to recreate it can be important to keep the type names/package names the
> same - not just that you have a compareTo method that needs a bridge
> method.  It is possible to turn on verbose mode to see the compile order
> and confirm how it varies between the two.
>
> I could probably fix it very quickly if I could have it failing locally
> for me. We could create some debug builds but it’d take a while to home in
> on the issue. If I’m debugging it myself I’m probably putting breakpoints
> in a few places: org.aspectj.apache.bcel.classfile.Method constructor that
> takes a modifiers set. the setModifiers in that same area of the code.
> There are a number of representations of Methods (JDT, AspectJ, BCEL) - any
> of them could be making a mistake.
>
> cheers,
> Andy
>
> On May 11, 2015, at 1:39 AM, Tim Webster <[email protected]> wrote:
>
> Hi Andy,
>
> I'm struggling to reproduce this in a separate project, although it still
> occurs in the original project.
>
> Not sure what to try next...any ideas?
>
> Tim
>
>
> On Fri, May 8, 2015 at 4:07 PM, Andy Clement <[email protected]>
> wrote:
>
>> Modifiers are played with in a number of places, if you can create a bit
>> of sample code that shows the problem I’m happy to look into it. I tried to
>> create the problem but couldn’t.
>>
>> What does the javap -verbose output look like for the woven result
>> (rather than the decompiler you are using).
>>
>> cheers,
>> Andy
>>
>> On May 8, 2015, at 6:27 AM, Tim Webster <[email protected]> wrote:
>>
>>
>> Hi,
>>
>> In our woven aspectJ code, it seems that bridge methods are being
>> incorrectly marked as interfaces.
>>
>> for example, in the following (decompiled) class here is the non-woven
>> compareTo() method:
>>
>>     public int compareTo(TopicId topicId)
>>     {
>>         DocumentTypeId documentTypeId = (DocumentTypeId)topicId;
>>         int result = super.compareTo(topicId);
>>         if(0 == result)
>>             result = doCompareTo(documentTypeId);
>>         return result;
>>     }
>>
>>     public volatile int compareTo(Object x0)
>>     {
>>         return compareTo((TopicId)x0);
>>     }
>>
>>
>>
>> *And here is the woven version:*
>>
>>
>>     public int compareTo(TopicId topicId)
>>     {
>>         DocumentTypeId documentTypeId = (DocumentTypeId)topicId;
>>         int result = super.compareTo(topicId);
>>         if(result == 0)
>>             result = doCompareTo(documentTypeId);
>>         return result;
>>     }
>>
>>    public volatile *interface* int compareTo(Object obj)
>>     {
>>         return compareTo((TopicId)obj);
>>     }
>>
>>
>> This is causing some static analysis tools to fail, so it's a problem.
>>
>> Does anyone have any idea where I can start with investigating why this
>> would be happening?
>>
>> Thanks,
>>
>>
>>
>>
>>
>> _______________________________________________
>> aspectj-users mailing list
>> [email protected]
>> 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
>> [email protected]
>> 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
> [email protected]
> 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
> [email protected]
> 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
[email protected]
To change your delivery options, retrieve your password, or unsubscribe from 
this list, visit
https://dev.eclipse.org/mailman/listinfo/aspectj-users

Reply via email to