@@ -2615,18 +2615,22 @@ public void testAnnotationOnClassModified() throws Exception {
26152615 public List <CtClass > createOldClasses (ClassPool classPool ) throws Exception {
26162616 CtClass anAnnotation = CtAnnotationBuilder .create ().name ("japicmp.MyAnnotation" ).addToClassPool (classPool );
26172617 CtMethodBuilder .create ().name ("foo" ).returnType (CtClass .intType ).publicAccess ().addToClass (anAnnotation );
2618- return Collections .singletonList (anAnnotation );
2618+ CtClass aClass = CtClassBuilder .create ().name ("japicmp.Test" ).withAnnotation ("japicmp.MyAnnotation" , new CtElement ("foo" , 1000 )).addToClassPool (classPool );
2619+ return Arrays .asList (aClass , anAnnotation );
26192620 }
26202621
26212622 @ Override
26222623 public List <CtClass > createNewClasses (ClassPool classPool ) {
26232624 CtClass anAnnotation = CtAnnotationBuilder .create ().name ("japicmp.MyAnnotation" ).addToClassPool (classPool );
2624- return Arrays .asList (anAnnotation );
2625+ CtClass aClass = CtClassBuilder .create ().name ("japicmp.Test" ).withAnnotation ("japicmp.MyAnnotation" , new CtElement ("foo" , 999 )).addToClassPool (classPool );
2626+ return Arrays .asList (aClass , anAnnotation );
26252627 }
26262628 });
26272629 JApiClass jApiClass = getJApiClass (jApiClasses , "japicmp.MyAnnotation" );
26282630 JApiMethod jApiMethod = getJApiMethod (jApiClass .getMethods (), "foo" );
26292631 assertThat (jApiMethod .getCompatibilityChanges (), hasItem (new JApiCompatibilityChange (JApiCompatibilityChangeType .METHOD_REMOVED )));
2632+ JApiClass jApiClassWithAnnotation = getJApiClass (jApiClasses , "japicmp.Test" );
2633+ assertThat (jApiClassWithAnnotation .getCompatibilityChanges (), hasItem (new JApiCompatibilityChange (JApiCompatibilityChangeType .ANNOTATION_MODIFIED )));
26302634 }
26312635
26322636 @ Test
@@ -2676,4 +2680,104 @@ public List<CtClass> createNewClasses(ClassPool classPool) throws Exception {
26762680 JApiMethod jApiMethod = getJApiMethod (jApiClass .getMethods (), "method" );
26772681 assertThat (jApiMethod .getCompatibilityChanges (), hasItem (new JApiCompatibilityChange (JApiCompatibilityChangeType .ANNOTATION_REMOVED )));
26782682 }
2683+
2684+ @ Test
2685+ public void testAnnotationOnMethodModified () throws Exception {
2686+ JarArchiveComparatorOptions options = new JarArchiveComparatorOptions ();
2687+ List <JApiClass > jApiClasses = ClassesHelper .compareClasses (options , new ClassesHelper .ClassesGenerator () {
2688+ @ Override
2689+ public List <CtClass > createOldClasses (ClassPool classPool ) throws Exception {
2690+ CtClass anAnnotation = CtAnnotationBuilder .create ().name ("japicmp.MyAnnotation" ).addToClassPool (classPool );
2691+ CtMethodBuilder .create ().name ("foo" ).returnType (CtClass .intType ).publicAccess ().addToClass (anAnnotation );
2692+ CtClass aClass = CtClassBuilder .create ().name ("japicmp.Test" ).addToClassPool (classPool );
2693+ CtMethodBuilder .create ().publicAccess ().name ("method" ).withAnnotation ("japicmp.MyAnnotation" , new CtElement ("foo" , 1000 )).addToClass (aClass );
2694+ return Arrays .asList (aClass , anAnnotation );
2695+ }
2696+
2697+ @ Override
2698+ public List <CtClass > createNewClasses (ClassPool classPool ) throws Exception {
2699+ CtClass anAnnotation = CtAnnotationBuilder .create ().name ("japicmp.MyAnnotation" ).addToClassPool (classPool );
2700+ CtClass aClass = CtClassBuilder .create ().name ("japicmp.Test" ).addToClassPool (classPool );
2701+ CtMethodBuilder .create ().publicAccess ().name ("method" ).withAnnotation ("japicmp.MyAnnotation" , new CtElement ("foo" , 999 )).addToClass (aClass );
2702+ return Arrays .asList (aClass , anAnnotation );
2703+ }
2704+ });
2705+ JApiClass jApiClass = getJApiClass (jApiClasses , "japicmp.Test" );
2706+ JApiMethod jApiMethod = getJApiMethod (jApiClass .getMethods (), "method" );
2707+ assertThat (jApiMethod .getCompatibilityChanges (), hasItem (new JApiCompatibilityChange (JApiCompatibilityChangeType .ANNOTATION_MODIFIED )));
2708+ }
2709+
2710+ @ Test
2711+ public void testAnnotationAddedToField () throws Exception {
2712+ JarArchiveComparatorOptions options = new JarArchiveComparatorOptions ();
2713+ List <JApiClass > jApiClasses = ClassesHelper .compareClasses (options , new ClassesHelper .ClassesGenerator () {
2714+ @ Override
2715+ public List <CtClass > createOldClasses (ClassPool classPool ) throws Exception {
2716+ CtClass aClass = CtClassBuilder .create ().name ("japicmp.Test" ).addToClassPool (classPool );
2717+ CtFieldBuilder .create ().name ("field" ).addToClass (aClass );
2718+ return Collections .singletonList (aClass );
2719+ }
2720+
2721+ @ Override
2722+ public List <CtClass > createNewClasses (ClassPool classPool ) throws Exception {
2723+ CtClass anAnnotation = CtAnnotationBuilder .create ().name ("japicmp.MyAnnotation" ).addToClassPool (classPool );
2724+ CtClass aClass = CtClassBuilder .create ().name ("japicmp.Test" ).addToClassPool (classPool );
2725+ CtFieldBuilder .create ().withAnnotation ("japicmp.MyAnnotation" ).name ("field" ).addToClass (aClass );
2726+ return Arrays .asList (aClass , anAnnotation );
2727+ }
2728+ });
2729+ JApiClass jApiClass = getJApiClass (jApiClasses , "japicmp.Test" );
2730+ JApiField jApiField = getJApiField (jApiClass .getFields (), "field" );
2731+ assertThat (jApiField .getCompatibilityChanges (), hasItem (new JApiCompatibilityChange (JApiCompatibilityChangeType .ANNOTATION_ADDED )));
2732+ }
2733+
2734+ @ Test
2735+ public void testAnnotationRemovedFromField () throws Exception {
2736+ JarArchiveComparatorOptions options = new JarArchiveComparatorOptions ();
2737+ List <JApiClass > jApiClasses = ClassesHelper .compareClasses (options , new ClassesHelper .ClassesGenerator () {
2738+ @ Override
2739+ public List <CtClass > createOldClasses (ClassPool classPool ) throws Exception {
2740+ CtClass anAnnotation = CtAnnotationBuilder .create ().name ("japicmp.MyAnnotation" ).addToClassPool (classPool );
2741+ CtClass aClass = CtClassBuilder .create ().name ("japicmp.Test" ).addToClassPool (classPool );
2742+ CtFieldBuilder .create ().name ("field" ).withAnnotation ("japicmp.MyAnnotation" ).addToClass (aClass );
2743+ return Arrays .asList (aClass , anAnnotation );
2744+ }
2745+
2746+ @ Override
2747+ public List <CtClass > createNewClasses (ClassPool classPool ) throws Exception {
2748+ CtClass aClass = CtClassBuilder .create ().name ("japicmp.Test" ).addToClassPool (classPool );
2749+ CtFieldBuilder .create ().name ("field" ).addToClass (aClass );
2750+ return Collections .singletonList (aClass );
2751+ }
2752+ });
2753+ JApiClass jApiClass = getJApiClass (jApiClasses , "japicmp.Test" );
2754+ JApiField jApiField = getJApiField (jApiClass .getFields (), "field" );
2755+ assertThat (jApiField .getCompatibilityChanges (), hasItem (new JApiCompatibilityChange (JApiCompatibilityChangeType .ANNOTATION_REMOVED )));
2756+ }
2757+
2758+ @ Test
2759+ public void testAnnotationOnFieldModified () throws Exception {
2760+ JarArchiveComparatorOptions options = new JarArchiveComparatorOptions ();
2761+ List <JApiClass > jApiClasses = ClassesHelper .compareClasses (options , new ClassesHelper .ClassesGenerator () {
2762+ @ Override
2763+ public List <CtClass > createOldClasses (ClassPool classPool ) throws Exception {
2764+ CtClass anAnnotation = CtAnnotationBuilder .create ().name ("japicmp.MyAnnotation" ).addToClassPool (classPool );
2765+ CtMethodBuilder .create ().name ("foo" ).returnType (CtClass .intType ).publicAccess ().addToClass (anAnnotation );
2766+ CtClass aClass = CtClassBuilder .create ().name ("japicmp.Test" ).addToClassPool (classPool );
2767+ CtFieldBuilder .create ().name ("field" ).withAnnotation ("japicmp.MyAnnotation" , new CtElement ("foo" , 1000 )).addToClass (aClass );
2768+ return Arrays .asList (aClass , anAnnotation );
2769+ }
2770+
2771+ @ Override
2772+ public List <CtClass > createNewClasses (ClassPool classPool ) throws Exception {
2773+ CtClass anAnnotation = CtAnnotationBuilder .create ().name ("japicmp.MyAnnotation" ).addToClassPool (classPool );
2774+ CtClass aClass = CtClassBuilder .create ().name ("japicmp.Test" ).addToClassPool (classPool );
2775+ CtFieldBuilder .create ().name ("field" ).withAnnotation ("japicmp.MyAnnotation" , new CtElement ("foo" , 999 )).addToClass (aClass );
2776+ return Arrays .asList (aClass , anAnnotation );
2777+ }
2778+ });
2779+ JApiClass jApiClass = getJApiClass (jApiClasses , "japicmp.Test" );
2780+ JApiField jApiField = getJApiField (jApiClass .getFields (), "field" );
2781+ assertThat (jApiField .getCompatibilityChanges (), hasItem (new JApiCompatibilityChange (JApiCompatibilityChangeType .ANNOTATION_MODIFIED )));
2782+ }
26792783}
0 commit comments