From ae9447aeddeab4fa2a752ab8062c2fba930fb990 Mon Sep 17 00:00:00 2001 From: daniel Date: Fri, 10 Jan 2025 18:46:51 +0100 Subject: [PATCH] Add test for inner annotations and fix --- .../AddOrUpdateAnnotationAttributeTest.java | 46 +++++++++++++++++++ .../java/AddOrUpdateAnnotationAttribute.java | 2 +- 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/rewrite-java-test/src/test/java/org/openrewrite/java/AddOrUpdateAnnotationAttributeTest.java b/rewrite-java-test/src/test/java/org/openrewrite/java/AddOrUpdateAnnotationAttributeTest.java index ac1b1bc8117..63f16fb0ef1 100755 --- a/rewrite-java-test/src/test/java/org/openrewrite/java/AddOrUpdateAnnotationAttributeTest.java +++ b/rewrite-java-test/src/test/java/org/openrewrite/java/AddOrUpdateAnnotationAttributeTest.java @@ -892,4 +892,50 @@ public class A { ) ); } + + @Test + void addAttributeToNestedAnnotationArray() { + rewriteRun( + spec -> spec.recipe(new AddOrUpdateAnnotationAttribute( + "org.example.Bar", + "attribute", + "", + null, + false)), + java( + """ + package org.example; + public @interface Foo { + Bar[] array() default {}; + } + """ + ), + java( + """ + package org.example; + public @interface Bar { + String attribute() default ""; + } + """ + ), + java( + """ + import org.example.Foo; + import org.example.Bar; + + @Foo(array = { @Bar() }) + public class A { + } + """, + """ + import org.example.Foo; + import org.example.Bar; + + @Foo(array = { @Bar(attribute = "") }) + public class A { + } + """ + ) + ); + } } diff --git a/rewrite-java/src/main/java/org/openrewrite/java/AddOrUpdateAnnotationAttribute.java b/rewrite-java/src/main/java/org/openrewrite/java/AddOrUpdateAnnotationAttribute.java index a62f0be4967..05257701bfd 100644 --- a/rewrite-java/src/main/java/org/openrewrite/java/AddOrUpdateAnnotationAttribute.java +++ b/rewrite-java/src/main/java/org/openrewrite/java/AddOrUpdateAnnotationAttribute.java @@ -87,7 +87,7 @@ public TreeVisitor getVisitor() { public J.Annotation visitAnnotation(J.Annotation a, ExecutionContext ctx) { J.Annotation original = super.visitAnnotation(a, ctx); if (!TypeUtils.isOfClassType(a.getType(), annotationType)) { - return a; + return original; } String newAttributeValue = maybeQuoteStringArgument(attributeName, attributeValue, a);