Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] bridge methods incorrectly marked as interface

I use the AspectJ Maven Plugin regularly. Maybe I can see something in your configuration if you post the Relevant part of your POM. I am quite busy these days, but maybe I can take a look during the weekend if Andy has not solved the problem by then anyway.

Regards
-- 
Alexander Kriegisch


Am 08.05.2015 um 17:28 schrieb Tim Webster <tim.webster@xxxxxxxxx>:

Andy,

It seems to be only happening when using the Maven AspectJ plugin.  With Ant (IAJC), the bridge method is marked as synthetic.

So I'll explore that avenue....

On Fri, May 8, 2015 at 4:19 PM, Tim Webster <tim.webster@xxxxxxxxx> wrote:
Hi Andy,

Here is the output of javap -verbose.

I'll see if I can reproduce it on something other than our codebase that I can share...

Classfile /D:/sonar/for_sonarsource/DocumentTypeId.class
  Last modified 08-May-2015; size 5512 bytes
  MD5 checksum c84da5d4a8a1f14b807d5a97bf38f0d8
  Compiled from "DocumentTypeId.java"
public class aquila.administrator.topic.domain.DocumentTypeId extends aquila.administrator.topic.domain.TopicId
  SourceFile: "DocumentTypeId.java"
  RuntimeVisibleAnnotations:
    0: #98()
    org.aspectj.weaver.WeaverVersion: length = 0xC
     00 07 00 00 00 00 01 49 3E 40 B7 48 
    org.aspectj.weaver.WeaverState: length = 0x434
     53 00 00 00 00 01 00 39 4C 61 71 75 69 6C 61 2F
     61 64 6D 69 6E 69 73 74 72 61 74 6F 72 2F 63 6F
     6D 6D 6F 6E 2F 61 73 70 65 63 74 73 2F 69 6D 70
     6C 2F 4A 61 76 61 42 65 61 6E 41 73 70 65 63 74
     3B 00 00 03 EF 00 63 00 00 05 F5 00 21 00 01 00
     03 00 00 00 03 00 1A 00 05 00 06 00 01 00 07 00
     00 00 02 00 08 00 04 00 0A 00 0B 00 00 00 19 00
     0C 00 0B 00 01 00 07 00 00 00 02 00 0D 00 08 00
     01 00 0E 00 0F 00 02 00 10 00 00 00 08 00 00 00
     21 00 00 03 22 00 11 00 00 00 33 00 01 00 01 00
     00 00 05 2A B7 00 12 B1 00 00 00 02 00 14 00 00
     00 0A 00 02 00 00 00 22 00 04 00 23 00 15 00 00
     00 0C 00 01 00 00 00 05 00 16 00 17 00 00 00 01
     00 0E 00 18 00 02 00 10 00 00 00 08 00 00 00 29
     00 00 03 FA 00 11 00 00 00 5C 00 03 00 04 00 00
     00 0C 2A 2B 2C B7 00 19 2A 2D B5 00 1C B1 00 00
     00 02 00 14 00 00 00 0E 00 03 00 00 00 2A 00 06
     00 2B 00 0B 00 2C 00 15 00 00 00 2A 00 04 00 00
     00 0C 00 16 00 17 00 00 00 00 00 0C 00 1E 00 0B
     00 01 00 00 00 0C 00 1F 00 0B 00 02 00 00 00 0C
     00 0A 00 0B 00 03 00 01 00 20 00 21 00 02 00 10
     00 00 00 08 00 00 00 32 00 00 05 21 00 11 00 00
     00 2F 00 01 00 01 00 00 00 05 2A B4 00 1C B0 00
     00 00 02 00 14 00 00 00 06 00 01 00 00 00 33 00
     15 00 00 00 0C 00 01 00 00 00 05 00 16 00 17 00
     00 00 01 00 22 00 23 00 02 00 10 00 00 00 08 00
     00 00 3A 00 00 05 CE 00 11 00 00 00 3E 00 02 00
     02 00 00 00 06 2A 2B B5 00 1C B1 00 00 00 02 00
     14 00 00 00 0A 00 02 00 00 00 3B 00 05 00 3C 00
     15 00 00 00 16 00 02 00 00 00 06 00 16 00 17 00
     00 00 00 00 06 00 0A 00 0B 00 01 00 01 00 24 00
     25 00 02 00 10 00 00 00 08 00 00 00 44 00 00 06
     D3 00 11 00 00 00 92 00 02 00 02 00 00 00 32 2A
     2B A6 00 05 04 AC 2B C1 00 01 9A 00 05 03 AC 2A
     B4 00 1C C7 00 05 03 AC 2A B4 00 1C 2B C0 00 01
     B4 00 1C B6 00 26 9A 00 05 03 AC 2A 2B B7 00 2A
     AC 00 00 00 03 00 14 00 00 00 26 00 09 00 00 00
     45 00 05 00 46 00 07 00 48 00 0E 00 49 00 10 00
     4B 00 17 00 4C 00 19 00 4E 00 2A 00 4F 00 2C 00
     51 00 15 00 00 00 16 00 02 00 00 00 32 00 16 00
     17 00 00 00 00 00 32 00 2B 00 2C 00 01 00 2D 00
     00 00 06 00 04 07 08 08 12 00 01 00 2E 00 2F 00
     02 00 10 00 00 00 08 00 00 00 59 00 00 08 ED 00
     11 00 00 00 73 00 03 00 02 00 00 00 2F BB 00 30
     59 2A B6 00 32 B8 00 35 B7 00 39 12 3B B6 00 3D
     2A B6 00 41 B6 00 3D 12 3B B6 00 3D 2A B6 00 44
     B6 00 3D B6 00 46 4C 2B B6 00 49 AC 00 00 00 02
     00 14 00 00 00 16 00 05 00 00 00 5B 00 0E 00 5C
     00 1A 00 5D 00 26 00 5B 00 2A 00 5F 00 15 00 00
     00 16 00 02 00 00 00 2F 00 16 00 17 00 00 00 2A
     00 05 00 4B 00 0B 00 01 00 02 00 4C 00 4D 00 02
     00 10 00 00 00 08 00 00 00 6F 00 00 0D 42 00 11
     00 00 00 40 00 02 00 02 00 00 00 0C 2A B4 00 1C
     2B B6 00 44 B8 00 4E AC 00 00 00 02 00 14 00 00
     00 06 00 01 00 00 00 70 00 15 00 00 00 16 00 02
     00 00 00 0C 00 16 00 17 00 00 00 00 00 0C 00 54
     00 17 00 01 00 01 00 55 00 56 00 02 00 10 00 00
     00 08 00 00 00 78 00 00 0E 69 00 11 00 00 00 7E
     00 02 00 04 00 00 00 17 2B C0 00 01 4E 2A 2B B7
     00 57 3D 1C 9A 00 09 2A 2D B7 00 59 3D 1C AC 00
     00 00 03 00 14 00 00 00 16 00 05 00 00 00 7A 00
     05 00 7C 00 0B 00 7D 00 0F 00 7E 00 15 00 81 00
     15 00 00 00 2A 00 04 00 00 00 17 00 16 00 17 00
     00 00 00 00 17 00 5B 00 5C 00 01 00 0B 00 0C 00
     5D 00 5E 00 02 00 05 00 12 00 54 00 17 00 03 00
     2D 00 00 00 09 00 01 FD 00 15 01 07 00 01 00 02
     00 5F 00 00 00 02 00 60 00 61 00 00 00 06 00 01
     00 62 00 00 
  minor version: 0
  major version: 51
  flags: ACC_PUBLIC, ACC_SUPER

Constant pool:
    #1 = Class              #2            //  aquila/administrator/topic/domain/DocumentTypeId
    #2 = Utf8               aquila/administrator/topic/domain/DocumentTypeId
    #3 = Class              #4            //  aquila/administrator/topic/domain/TopicId
    #4 = Utf8               aquila/administrator/topic/domain/TopicId
    #5 = Utf8               serialVersionUID
    #6 = Utf8               J
    #7 = Utf8               ConstantValue
    #8 = Long               1l
   #10 = Utf8               documentType
   #11 = Utf8               Ljava/lang/String;
   #12 = Utf8               PROPERTYNAME_DOCUMENTTYPE
   #13 = String             #10           //  documentType
   #14 = Utf8               <init>
   #15 = Utf8               ()V
   #16 = Utf8               org.aspectj.weaver.MethodDeclarationLineNumber
   #17 = Utf8               Code
   #18 = Methodref          #3.#19        //  aquila/administrator/topic/domain/TopicId."<init>":()V
   #19 = NameAndType        #14:#15       //  "<init>":()V
   #20 = Utf8               LineNumberTable
   #21 = Utf8               LocalVariableTable
   #22 = Utf8               this
   #23 = Utf8               Laquila/administrator/topic/domain/DocumentTypeId;
   #24 = Utf8               (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
   #25 = Methodref          #3.#26        //  aquila/administrator/topic/domain/TopicId."<init>":(Ljava/lang/String;Ljava/lang/String;)V
   #26 = NameAndType        #14:#27       //  "<init>":(Ljava/lang/String;Ljava/lang/String;)V
   #27 = Utf8               (Ljava/lang/String;Ljava/lang/String;)V
   #28 = Fieldref           #1.#29        //  aquila/administrator/topic/domain/DocumentTypeId.documentType:Ljava/lang/String;
   #29 = NameAndType        #10:#11       //  documentType:Ljava/lang/String;
   #30 = Utf8               businessGroup
   #31 = Utf8               topicCode
   #32 = Utf8               getDocumentType
   #33 = Utf8               ()Ljava/lang/String;
   #34 = Utf8               setDocumentType
   #35 = Utf8               (Ljava/lang/String;)V
   #36 = Utf8               equals
   #37 = Utf8               (Ljava/lang/Object;)Z
   #38 = Methodref          #39.#41       //  java/lang/String.equals:(Ljava/lang/Object;)Z
   #39 = Class              #40           //  java/lang/String
   #40 = Utf8               java/lang/String
   #41 = NameAndType        #36:#37       //  equals:(Ljava/lang/Object;)Z
   #42 = Methodref          #3.#41        //  aquila/administrator/topic/domain/TopicId.equals:(Ljava/lang/Object;)Z
   #43 = Utf8               obj
   #44 = Utf8               Ljava/lang/Object;
   #45 = Utf8               StackMapTable
   #46 = Utf8               hashCode
   #47 = Utf8               ()I
   #48 = Class              #49           //  java/lang/StringBuilder
   #49 = Utf8               java/lang/StringBuilder
   #50 = Methodref          #1.#51        //  aquila/administrator/topic/domain/DocumentTypeId.getBusinessGroup:()Ljava/lang/String;
   #51 = NameAndType        #52:#33       //  getBusinessGroup:()Ljava/lang/String;
   #52 = Utf8               getBusinessGroup
   #53 = Methodref          #39.#54       //  java/lang/String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
   #54 = NameAndType        #55:#56       //  valueOf:(Ljava/lang/Object;)Ljava/lang/String;
   #55 = Utf8               valueOf
   #56 = Utf8               (Ljava/lang/Object;)Ljava/lang/String;
   #57 = Methodref          #48.#58       //  java/lang/StringBuilder."<init>":(Ljava/lang/String;)V
   #58 = NameAndType        #14:#35       //  "<init>":(Ljava/lang/String;)V
   #59 = String             #60           //  *
   #60 = Utf8               *
   #61 = Methodref          #48.#62       //  java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
   #62 = NameAndType        #63:#64       //  append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
   #63 = Utf8               append
   #64 = Utf8               (Ljava/lang/String;)Ljava/lang/StringBuilder;
   #65 = Methodref          #1.#66        //  aquila/administrator/topic/domain/DocumentTypeId.getTopicCode:()Ljava/lang/String;
   #66 = NameAndType        #67:#33       //  getTopicCode:()Ljava/lang/String;
   #67 = Utf8               getTopicCode
   #68 = Methodref          #1.#69        //  aquila/administrator/topic/domain/DocumentTypeId.getDocumentType:()Ljava/lang/String;
   #69 = NameAndType        #32:#33       //  getDocumentType:()Ljava/lang/String;
   #70 = Methodref          #48.#71       //  java/lang/StringBuilder.toString:()Ljava/lang/String;
   #71 = NameAndType        #72:#33       //  toString:()Ljava/lang/String;
   #72 = Utf8               toString
   #73 = Methodref          #39.#74       //  java/lang/String.hashCode:()I
   #74 = NameAndType        #46:#47       //  hashCode:()I
   #75 = Utf8               hashString
   #76 = Utf8               doCompareTo
   #77 = Utf8               (Laquila/administrator/topic/domain/DocumentTypeId;)I
   #78 = Methodref          #79.#81       //  aquila/administrator/common/utils/ObjectUtilities.doCompareObject:(Ljava/lang/Comparable;Ljava/lang/Comparable;)I
   #79 = Class              #80           //  aquila/administrator/common/utils/ObjectUtilities
   #80 = Utf8               aquila/administrator/common/utils/ObjectUtilities
   #81 = NameAndType        #82:#83       //  doCompareObject:(Ljava/lang/Comparable;Ljava/lang/Comparable;)I
   #82 = Utf8               doCompareObject
   #83 = Utf8               (Ljava/lang/Comparable;Ljava/lang/Comparable;)I
   #84 = Utf8               documentTypeId
   #85 = Utf8               compareTo
   #86 = Utf8               (Laquila/administrator/topic/domain/TopicId;)I
   #87 = Methodref          #3.#88        //  aquila/administrator/topic/domain/TopicId.compareTo:(Laquila/administrator/topic/domain/TopicId;)I
   #88 = NameAndType        #85:#86       //  compareTo:(Laquila/administrator/topic/domain/TopicId;)I
   #89 = Methodref          #1.#90        //  aquila/administrator/topic/domain/DocumentTypeId.doCompareTo:(Laquila/administrator/topic/domain/DocumentTypeId;)I
   #90 = NameAndType        #76:#77       //  doCompareTo:(Laquila/administrator/topic/domain/DocumentTypeId;)I
   #91 = Utf8               topicId
   #92 = Utf8               Laquila/administrator/topic/domain/TopicId;
   #93 = Utf8               result
   #94 = Utf8               I
   #95 = Utf8               SourceFile
   #96 = Utf8               DocumentTypeId.java
   #97 = Utf8               RuntimeVisibleAnnotations
   #98 = Utf8               Laquila/administrator/common/aspects/Observable;
   #99 = Utf8               Synthetic
  #100 = Utf8               ajc$tjp_0
  #101 = Utf8               Lorg/aspectj/lang/JoinPoint$StaticPart;
  #102 = NameAndType        #100:#101     //  ajc$tjp_0:Lorg/aspectj/lang/JoinPoint$StaticPart;
  #103 = Fieldref           #1.#102       //  aquila/administrator/topic/domain/DocumentTypeId.ajc$tjp_0:Lorg/aspectj/lang/JoinPoint$StaticPart;
  #104 = Utf8               makeJP
  #105 = Utf8               (Lorg/aspectj/lang/JoinPoint$StaticPart;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lorg/aspectj/lang/JoinPoint;
  #106 = NameAndType        #104:#105     //  makeJP:(Lorg/aspectj/lang/JoinPoint$StaticPart;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lorg/aspectj/lang/JoinPoint;
  #107 = Utf8               org/aspectj/runtime/reflect/Factory
  #108 = Class              #107          //  org/aspectj/runtime/reflect/Factory
  #109 = Methodref          #108.#106     //  org/aspectj/runtime/reflect/Factory.makeJP:(Lorg/aspectj/lang/JoinPoint$StaticPart;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lorg/aspectj/lang/JoinPoint;
  #110 = Utf8               setDocumentType_aroundBody0
  #111 = Utf8               (Laquila/administrator/topic/domain/DocumentTypeId;Ljava/lang/String;Lorg/aspectj/lang/JoinPoint;)V
  #112 = Utf8               ajc$this
  #113 = Utf8               java/lang/Object
  #114 = Class              #113          //  java/lang/Object
  #115 = Utf8               aquila/administrator/topic/domain/DocumentTypeId$AjcClosure1
  #116 = Class              #115          //  aquila/administrator/topic/domain/DocumentTypeId$AjcClosure1
  #117 = Utf8               ([Ljava/lang/Object;)V
  #118 = NameAndType        #14:#117      //  "<init>":([Ljava/lang/Object;)V
  #119 = Methodref          #116.#118     //  aquila/administrator/topic/domain/DocumentTypeId$AjcClosure1."<init>":([Ljava/lang/Object;)V
  #120 = Integer            69649
  #121 = Utf8               linkClosureAndJoinPoint
  #122 = Utf8               (I)Lorg/aspectj/lang/ProceedingJoinPoint;
  #123 = NameAndType        #121:#122     //  linkClosureAndJoinPoint:(I)Lorg/aspectj/lang/ProceedingJoinPoint;
  #124 = Utf8               org/aspectj/runtime/internal/AroundClosure
  #125 = Class              #124          //  org/aspectj/runtime/internal/AroundClosure
  #126 = Methodref          #125.#123     //  org/aspectj/runtime/internal/AroundClosure.linkClosureAndJoinPoint:(I)Lorg/aspectj/lang/ProceedingJoinPoint;
  #127 = Utf8               aspectOf
  #128 = Utf8               ()Laquila/administrator/common/aspects/impl/JavaBeanAspect;
  #129 = NameAndType        #127:#128     //  aspectOf:()Laquila/administrator/common/aspects/impl/JavaBeanAspect;
  #130 = Utf8               aquila/administrator/common/aspects/impl/JavaBeanAspect
  #131 = Class              #130          //  aquila/administrator/common/aspects/impl/JavaBeanAspect
  #132 = Methodref          #131.#129     //  aquila/administrator/common/aspects/impl/JavaBeanAspect.aspectOf:()Laquila/administrator/common/aspects/impl/JavaBeanAspect;
  #133 = Utf8               setterCalled
  #134 = Utf8               (Lorg/aspectj/lang/ProceedingJoinPoint;Laquila/administrator/common/aspects/JavaBean;)V
  #135 = NameAndType        #133:#134     //  setterCalled:(Lorg/aspectj/lang/ProceedingJoinPoint;Laquila/administrator/common/aspects/JavaBean;)V
  #136 = Methodref          #131.#135     //  aquila/administrator/common/aspects/impl/JavaBeanAspect.setterCalled:(Lorg/aspectj/lang/ProceedingJoinPoint;Laquila/administrator/common/aspects/JavaBean;)V
  #137 = Methodref          #1.#88        //  aquila/administrator/topic/domain/DocumentTypeId.compareTo:(Laquila/administrator/topic/domain/TopicId;)I
  #138 = Utf8               org.aspectj.weaver.WeaverVersion
  #139 = Utf8               org.aspectj.weaver.WeaverState
  #140 = String             #96           //  DocumentTypeId.java
  #141 = Utf8               (Ljava/lang/String;Ljava/lang/Class;)V
  #142 = NameAndType        #14:#141      //  "<init>":(Ljava/lang/String;Ljava/lang/Class;)V
  #143 = Methodref          #108.#142     //  org/aspectj/runtime/reflect/Factory."<init>":(Ljava/lang/String;Ljava/lang/Class;)V
  #144 = Utf8               method-execution
  #145 = String             #144          //  method-execution
  #146 = Utf8               1
  #147 = String             #146          //  1
  #148 = String             #34           //  setDocumentType
  #149 = Utf8               aquila.administrator.topic.domain.DocumentTypeId
  #150 = String             #149          //  aquila.administrator.topic.domain.DocumentTypeId
  #151 = Utf8               java.lang.String
  #152 = String             #151          //  java.lang.String
  #153 = Utf8               
  #154 = String             #153          //  
  #155 = Utf8               void
  #156 = String             #155          //  void
  #157 = Utf8               makeMethodSig
  #158 = Utf8               (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/MethodSignature;
  #159 = NameAndType        #157:#158     //  makeMethodSig:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/MethodSignature;
  #160 = Methodref          #108.#159     //  org/aspectj/runtime/reflect/Factory.makeMethodSig:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/MethodSignature;
  #161 = Utf8               makeSJP
  #162 = Utf8               (Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
  #163 = NameAndType        #161:#162     //  makeSJP:(Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
  #164 = Methodref          #108.#163     //  org/aspectj/runtime/reflect/Factory.makeSJP:(Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
  #165 = Utf8               ajc$preClinit
  #166 = NameAndType        #165:#15      //  ajc$preClinit:()V
  #167 = Methodref          #1.#166       //  aquila/administrator/topic/domain/DocumentTypeId.ajc$preClinit:()V
  #168 = Utf8               <clinit>
  #169 = Utf8               (Ljava/lang/Object;)I
{
  protected java.lang.String documentType;
    flags: ACC_PROTECTED


  public static final java.lang.String PROPERTYNAME_DOCUMENTTYPE;
    flags: ACC_PUBLIC, ACC_STATIC, ACC_FINAL

    ConstantValue: String documentType

  public aquila.administrator.topic.domain.DocumentTypeId();
    flags: ACC_PUBLIC

    Code:
      stack=1, locals=1, args_size=1
         0: aload_0       
         1: invokespecial #18                 // Method aquila/administrator/topic/domain/TopicId."<init>":()V
         4: return        
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
               0       5     0  this   Laquila/administrator/topic/domain/DocumentTypeId;
      LineNumberTable:
        line 34: 0
        line 35: 4
      org.aspectj.weaver.MethodDeclarationLineNumber: length = 0x8
       00 00 00 21 00 00 03 22 

  public aquila.administrator.topic.domain.DocumentTypeId(java.lang.String, java.lang.String, java.lang.String);
    flags: ACC_PUBLIC

    Code:
      stack=3, locals=4, args_size=4
         0: aload_0       
         1: aload_1       
         2: aload_2       
         3: invokespecial #25                 // Method aquila/administrator/topic/domain/TopicId."<init>":(Ljava/lang/String;Ljava/lang/String;)V
         6: aload_0       
         7: aload_3       
         8: putfield      #28                 // Field documentType:Ljava/lang/String;
        11: return        
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
               0      12     0  this   Laquila/administrator/topic/domain/DocumentTypeId;
               0      12     1 businessGroup   Ljava/lang/String;
               0      12     2 topicCode   Ljava/lang/String;
               0      12     3 documentType   Ljava/lang/String;
      LineNumberTable:
        line 42: 0
        line 43: 6
        line 44: 11
      org.aspectj.weaver.MethodDeclarationLineNumber: length = 0x8
       00 00 00 29 00 00 03 FA 

  public java.lang.String getDocumentType();
    flags: ACC_PUBLIC

    Code:
      stack=1, locals=1, args_size=1
         0: aload_0       
         1: getfield      #28                 // Field documentType:Ljava/lang/String;
         4: areturn       
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
               0       5     0  this   Laquila/administrator/topic/domain/DocumentTypeId;
      LineNumberTable:
        line 51: 0
      org.aspectj.weaver.MethodDeclarationLineNumber: length = 0x8
       00 00 00 32 00 00 05 21 

  public void setDocumentType(java.lang.String);
    flags: ACC_PUBLIC

    Code:
      stack=4, locals=5, args_size=2
         0: aload_1       
         1: astore_2      
         2: getstatic     #103                // Field ajc$tjp_0:Lorg/aspectj/lang/JoinPoint$StaticPart;
         5: aload_0       
         6: aload_0       
         7: aload_2       
         8: invokestatic  #109                // Method org/aspectj/runtime/reflect/Factory.makeJP:(Lorg/aspectj/lang/JoinPoint$StaticPart;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lorg/aspectj/lang/JoinPoint;
        11: astore_3      
        12: invokestatic  #132                // Method aquila/administrator/common/aspects/impl/JavaBeanAspect.aspectOf:()Laquila/administrator/common/aspects/impl/JavaBeanAspect;
        15: iconst_3      
        16: anewarray     #114                // class java/lang/Object
        19: astore        4
        21: aload         4
        23: iconst_0      
        24: aload_0       
        25: aastore       
        26: aload         4
        28: iconst_1      
        29: aload_2       
        30: aastore       
        31: aload         4
        33: iconst_2      
        34: aload_3       
        35: aastore       
        36: new           #116                // class aquila/administrator/topic/domain/DocumentTypeId$AjcClosure1
        39: dup           
        40: aload         4
        42: invokespecial #119                // Method aquila/administrator/topic/domain/DocumentTypeId$AjcClosure1."<init>":([Ljava/lang/Object;)V
        45: ldc           #120                // int 69649
        47: invokevirtual #126                // Method org/aspectj/runtime/internal/AroundClosure.linkClosureAndJoinPoint:(I)Lorg/aspectj/lang/ProceedingJoinPoint;
        50: aload_0       
        51: invokevirtual #136                // Method aquila/administrator/common/aspects/impl/JavaBeanAspect.setterCalled:(Lorg/aspectj/lang/ProceedingJoinPoint;Laquila/administrator/common/aspects/JavaBean;)V
        54: return        
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
               0      55     0  this   Laquila/administrator/topic/domain/DocumentTypeId;
               0      55     1 documentType   Ljava/lang/String;
      LineNumberTable:
        line 58: 12
      org.aspectj.weaver.MethodDeclarationLineNumber: length = 0x8
       00 00 00 3A 00 00 05 CE 

  public boolean equals(java.lang.Object);
    flags: ACC_PUBLIC

    Code:
      stack=2, locals=2, args_size=2
         0: aload_0       
         1: aload_1       
         2: if_acmpne     7
         5: iconst_1      
         6: ireturn       
         7: aload_1       
         8: instanceof    #1                  // class aquila/administrator/topic/domain/DocumentTypeId
        11: ifne          16
        14: iconst_0      
        15: ireturn       
        16: aload_0       
        17: getfield      #28                 // Field documentType:Ljava/lang/String;
        20: ifnonnull     25
        23: iconst_0      
        24: ireturn       
        25: aload_0       
        26: getfield      #28                 // Field documentType:Ljava/lang/String;
        29: aload_1       
        30: checkcast     #1                  // class aquila/administrator/topic/domain/DocumentTypeId
        33: getfield      #28                 // Field documentType:Ljava/lang/String;
        36: invokevirtual #38                 // Method java/lang/String.equals:(Ljava/lang/Object;)Z
        39: ifne          44
        42: iconst_0      
        43: ireturn       
        44: aload_0       
        45: aload_1       
        46: invokespecial #42                 // Method aquila/administrator/topic/domain/TopicId.equals:(Ljava/lang/Object;)Z
        49: ireturn       
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
               0      50     0  this   Laquila/administrator/topic/domain/DocumentTypeId;
               0      50     1   obj   Ljava/lang/Object;
      LineNumberTable:
        line 69: 0
        line 70: 5
        line 72: 7
        line 73: 14
        line 75: 16
        line 76: 23
        line 78: 25
        line 79: 42
        line 81: 44
      StackMapTable: number_of_entries = 4
           frame_type = 7 /* same */
           frame_type = 8 /* same */
           frame_type = 8 /* same */
           frame_type = 18 /* same */

      org.aspectj.weaver.MethodDeclarationLineNumber: length = 0x8
       00 00 00 44 00 00 06 D3 

  public int hashCode();
    flags: ACC_PUBLIC

    Code:
      stack=3, locals=2, args_size=1
         0: new           #48                 // class java/lang/StringBuilder
         3: dup           
         4: aload_0       
         5: invokevirtual #50                 // Method getBusinessGroup:()Ljava/lang/String;
         8: invokestatic  #53                 // Method java/lang/String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
        11: invokespecial #57                 // Method java/lang/StringBuilder."<init>":(Ljava/lang/String;)V
        14: ldc           #59                 // String *
        16: invokevirtual #61                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        19: aload_0       
        20: invokevirtual #65                 // Method getTopicCode:()Ljava/lang/String;
        23: invokevirtual #61                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        26: ldc           #59                 // String *
        28: invokevirtual #61                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        31: aload_0       
        32: invokevirtual #68                 // Method getDocumentType:()Ljava/lang/String;
        35: invokevirtual #61                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        38: invokevirtual #70                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
        41: astore_1      
        42: aload_1       
        43: invokevirtual #73                 // Method java/lang/String.hashCode:()I
        46: ireturn       
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
               0      47     0  this   Laquila/administrator/topic/domain/DocumentTypeId;
              42       5     1 hashString   Ljava/lang/String;
      LineNumberTable:
        line 91: 0
        line 92: 14
        line 93: 26
        line 91: 38
        line 95: 42
      org.aspectj.weaver.MethodDeclarationLineNumber: length = 0x8
       00 00 00 59 00 00 08 ED 

  public int compareTo(aquila.administrator.topic.domain.TopicId);
    flags: ACC_PUBLIC

    Code:
      stack=2, locals=4, args_size=2
         0: aload_1       
         1: checkcast     #1                  // class aquila/administrator/topic/domain/DocumentTypeId
         4: astore_3      
         5: aload_0       
         6: aload_1       
         7: invokespecial #87                 // Method aquila/administrator/topic/domain/TopicId.compareTo:(Laquila/administrator/topic/domain/TopicId;)I
        10: istore_2      
        11: iload_2       
        12: ifne          21
        15: aload_0       
        16: aload_3       
        17: invokespecial #89                 // Method doCompareTo:(Laquila/administrator/topic/domain/DocumentTypeId;)I
        20: istore_2      
        21: iload_2       
        22: ireturn       
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
               0      23     0  this   Laquila/administrator/topic/domain/DocumentTypeId;
               0      23     1 topicId   Laquila/administrator/topic/domain/TopicId;
              11      12     2 result   I
               5      18     3 documentTypeId   Laquila/administrator/topic/domain/DocumentTypeId;
      LineNumberTable:
        line 122: 0
        line 124: 5
        line 125: 11
        line 126: 15
        line 129: 21
      StackMapTable: number_of_entries = 1
           frame_type = 253 /* append */
             offset_delta = 21
        locals = [ int, class aquila/administrator/topic/domain/DocumentTypeId ]

      org.aspectj.weaver.MethodDeclarationLineNumber: length = 0x8
       00 00 00 78 00 00 0E 69 

  static {};
    flags: ACC_STATIC

    Code:
      stack=0, locals=0, args_size=0
         0: invokestatic  #167                // Method ajc$preClinit:()V
         3: return        
      LineNumberTable:
        line 1: 0

  static final void setDocumentType_aroundBody0(aquila.administrator.topic.domain.DocumentTypeId, java.lang.String, org.aspectj.lang.JoinPoint);
    flags: ACC_STATIC, ACC_FINAL

    Code:
      stack=2, locals=3, args_size=3
         0: aload_0       
         1: aload_1       
         2: putfield      #28                 // Field documentType:Ljava/lang/String;
         5: return        
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
               0       6     0 ajc$this   Laquila/administrator/topic/domain/DocumentTypeId;
               0       6     1 documentType   Ljava/lang/String;
      LineNumberTable:
        line 59: 0
        line 60: 5
    Synthetic: true

  public int compareTo(java.lang.Object);
    flags: ACC_PUBLIC, ACC_BRIDGE, 0x200

    Code:
      stack=2, locals=2, args_size=2
         0: aload_0       
         1: aload_1       
         2: checkcast     #3                  // class aquila/administrator/topic/domain/TopicId
         5: invokevirtual #137                // Method compareTo:(Laquila/administrator/topic/domain/TopicId;)I
         8: ireturn       
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
               0       9     0  this   Laquila/administrator/topic/domain/DocumentTypeId;
      LineNumberTable:
        line 1: 0
}


On Fri, May 8, 2015 at 4:07 PM, Andy Clement <andrew.clement@xxxxxxxxx> 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 <tim.webster@xxxxxxxxx> 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
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


_______________________________________________
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