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 <[email protected]> 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 <[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
