diff --git a/src/main/java/org/openrewrite/java/template/processor/RefasterTemplateProcessor.java b/src/main/java/org/openrewrite/java/template/processor/RefasterTemplateProcessor.java index 602a087a..4848e9a5 100644 --- a/src/main/java/org/openrewrite/java/template/processor/RefasterTemplateProcessor.java +++ b/src/main/java/org/openrewrite/java/template/processor/RefasterTemplateProcessor.java @@ -675,7 +675,7 @@ private String toLambda(JCTree.JCMethodDecl method) { StringJoiner joiner = new StringJoiner(", ", "(", ")"); for (JCTree.JCVariableDecl parameter : method.getParameters()) { - String paramType = parameter.getType().type.tsym.getQualifiedName().toString(); + String paramType = parameter.getType().type.toString(); if (!getBoxedPrimitive(paramType).equals(paramType)) { paramType = "@Primitive " + getBoxedPrimitive(paramType); } else if (paramType.startsWith("java.lang.")) { diff --git a/src/main/java/org/openrewrite/java/template/processor/TemplateProcessor.java b/src/main/java/org/openrewrite/java/template/processor/TemplateProcessor.java index 73fd6504..ce51a9c9 100644 --- a/src/main/java/org/openrewrite/java/template/processor/TemplateProcessor.java +++ b/src/main/java/org/openrewrite/java/template/processor/TemplateProcessor.java @@ -208,7 +208,7 @@ public void visitIdent(JCTree.JCIdent ident) { for (JCTree.JCVariableDecl parameter : parameters) { if (parameter.type.tsym instanceof Symbol.ClassSymbol) { String paramType = parameter.type.tsym.getQualifiedName().toString(); - if (!paramType.startsWith("java.lang")) { + if (!paramType.startsWith("java.lang") && !"Array".equals(paramType)) { out.write("import " + paramType + ";\n"); } } diff --git a/src/test/java/org/openrewrite/java/template/RefasterTemplateProcessorTest.java b/src/test/java/org/openrewrite/java/template/RefasterTemplateProcessorTest.java index 710dfc2f..559e2a5c 100644 --- a/src/test/java/org/openrewrite/java/template/RefasterTemplateProcessorTest.java +++ b/src/test/java/org/openrewrite/java/template/RefasterTemplateProcessorTest.java @@ -35,6 +35,7 @@ class RefasterTemplateProcessorTest { @ParameterizedTest @ValueSource(strings = { + "Arrays", "MethodThrows", "NestedPreconditions", "ParameterReuse", diff --git a/src/test/resources/refaster/Arrays.java b/src/test/resources/refaster/Arrays.java new file mode 100644 index 00000000..fb1e3939 --- /dev/null +++ b/src/test/resources/refaster/Arrays.java @@ -0,0 +1,31 @@ +/* + * Copyright 2023 the original author or authors. + *
+ * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *
+ * https://www.apache.org/licenses/LICENSE-2.0 + *
+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package foo; + +import com.google.errorprone.refaster.annotation.AfterTemplate; +import com.google.errorprone.refaster.annotation.BeforeTemplate; + +public class Arrays { + @BeforeTemplate + String before(String[] strings) { + return String.join(", ", strings); + } + + @AfterTemplate + String after(String[] strings) { + return String.join(":", strings); + } +} diff --git a/src/test/resources/refaster/ArraysRecipe.java b/src/test/resources/refaster/ArraysRecipe.java new file mode 100644 index 00000000..0f690e16 --- /dev/null +++ b/src/test/resources/refaster/ArraysRecipe.java @@ -0,0 +1,79 @@ +/* + * Copyright 2023 the original author or authors. + *
+ * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *
+ * https://www.apache.org/licenses/LICENSE-2.0 + *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package foo;
+
+import org.openrewrite.ExecutionContext;
+import org.openrewrite.Preconditions;
+import org.openrewrite.Recipe;
+import org.openrewrite.TreeVisitor;
+import org.openrewrite.internal.lang.NonNullApi;
+import org.openrewrite.java.JavaTemplate;
+import org.openrewrite.java.JavaVisitor;
+import org.openrewrite.java.search.*;
+import org.openrewrite.java.template.Primitive;
+import org.openrewrite.java.template.Semantics;
+import org.openrewrite.java.template.function.*;
+import org.openrewrite.java.template.internal.AbstractRefasterJavaVisitor;
+import org.openrewrite.java.tree.*;
+
+import java.util.*;
+
+import static org.openrewrite.java.template.internal.AbstractRefasterJavaVisitor.EmbeddingOption.*;
+
+@SuppressWarnings("all")
+@NonNullApi
+public class ArraysRecipe extends Recipe {
+
+ public ArraysRecipe() {
+ }
+
+ @Override
+ public String getDisplayName() {
+ return "Refaster template `Arrays`";
+ }
+
+ @Override
+ public String getDescription() {
+ return "Recipe created for the following Refaster template:\n```java\npublic class Arrays {\n \n @BeforeTemplate()\n String before(String[] strings) {\n return String.join(\", \", strings);\n }\n \n @AfterTemplate()\n String after(String[] strings) {\n return String.join(\":\", strings);\n }\n}\n```\n.";
+ }
+
+ @Override
+ public TreeVisitor, ExecutionContext> getVisitor() {
+ JavaVisitor