openrewrite / rewrite

Automated mass refactoring of source code.
https://docs.openrewrite.org
Apache License 2.0
2.09k stars 312 forks source link

Issue discovered with `src/main/java/org/jenkinsci/plugins/vistaranotifier/OpsRampNotifierClient.java` #2204

Closed jkschneider closed 1 year ago

jkschneider commented 1 year ago

Problem

Template issue.

Example diff

        try {
            HttpPost httpMethod = new HttpPost(url);
            setMethodHeaders(httpMethod);
-           HttpEntity entity = new StringEntity(jsonPayload.toString(), UTF_8);
+           HttpEntity entity = new StringEntity(/*~~(java.lang.IllegalArgumentException: Expected a template that would generate exactly one statement to replace one statement, but generated 2. Template:
+__P__.<java.lang.String>/*__p0__*/p()
+  org.openrewrite.java.JavaTemplate$2.maybeReplaceStatement(JavaTemplate.java:486)
+  org.openrewrite.java.JavaTemplate$2.visitMethodInvocation(JavaTemplate.java:462)
+  org.openrewrite.java.JavaTemplate$2.visitMethodInvocation(JavaTemplate.java:102)
+  org.openrewrite.java.tree.J$MethodInvocation.acceptJava(J.java:3474)
+  org.openrewrite.java.tree.J.accept(J.java:60)
+  org.openrewrite.TreeVisitor.visit(TreeVisitor.java:206)
+  org.openrewrite.TreeVisitor.visit(TreeVisitor.java:145)
+  org.openrewrite.java.JavaTemplate.withTemplate(JavaTemplate.java:520)
+  ...)~~>*/jsonPayload.toString(), UTF_8);
            httpMethod.setEntity(entity);
            response = handleHttpMethod(httpMethod);

Recipes in example diff:

pway99 commented 1 year ago

caused by: #2185