diff --git a/src/main/java/org/openrewrite/staticanalysis/UnnecessaryCatch.java b/src/main/java/org/openrewrite/staticanalysis/UnnecessaryCatch.java index f1c7546..849cbc2 100644 --- a/src/main/java/org/openrewrite/staticanalysis/UnnecessaryCatch.java +++ b/src/main/java/org/openrewrite/staticanalysis/UnnecessaryCatch.java @@ -20,6 +20,7 @@ org.openrewrite.config.CompositeRecipe import org.openrewrite.ExecutionContext; import org.openrewrite.Option; import org.openrewrite.Recipe; +import org.openrewrite.TreeVisitor; import org.openrewrite.internal.ListUtils; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.tree.J; @@ -53,7 +54,7 @@ } @Override - public JavaIsoVisitor getVisitor() { + public TreeVisitor getVisitor() { return new JavaIsoVisitor() { @Override diff --git a/src/main/java/org/openrewrite/staticanalysis/NoToStringOnStringType.java b/src/main/java/org/openrewrite/staticanalysis/NoToStringOnStringType.java index c56d5f0..85b32a5 100644 --- a/src/main/java/org/openrewrite/staticanalysis/NoToStringOnStringType.java +++ b/src/main/java/org/openrewrite/staticanalysis/NoToStringOnStringType.java @@ -16,6 +16,7 @@ org.openrewrite.config.CompositeRecipe package org.openrewrite.staticanalysis; import org.openrewrite.ExecutionContext; +import org.openrewrite.Preconditions; import org.openrewrite.Recipe; import org.openrewrite.TreeVisitor; import org.openrewrite.java.JavaVisitor; @@ -41,11 +42,6 @@ } @Override - protected TreeVisitor getSingleSourceApplicableTest() { - return new UsesMethod<>(TO_STRING); - } - - @Override public Set getTags() { return Collections.singleton("RSPEC-1858"); } @@ -56,8 +52,8 @@ } @Override - public JavaVisitor getVisitor() { - return new JavaVisitor() { + public TreeVisitor getVisitor() { + return Preconditions.check(new UsesMethod<>(TO_STRING), new JavaVisitor() { @Override public J visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) { J.MethodInvocation mi = (J.MethodInvocation) super.visitMethodInvocation(method, ctx); @@ -66,6 +62,6 @@ } return mi; } - }; + }); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/RenamePrivateFieldsToCamelCase.java b/src/main/java/org/openrewrite/staticanalysis/RenamePrivateFieldsToCamelCase.java index 112b5a6..57b933c 100644 --- a/src/main/java/org/openrewrite/staticanalysis/RenamePrivateFieldsToCamelCase.java +++ b/src/main/java/org/openrewrite/staticanalysis/RenamePrivateFieldsToCamelCase.java @@ -15,10 +15,8 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.Cursor; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; -import org.openrewrite.TreeVisitor; +import org.openrewrite.*; +import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.RenameVariable; import org.openrewrite.java.tree.Flag; @@ -74,22 +72,26 @@ } private static class RenameNonCompliantNames extends JavaIsoVisitor { + @Override - public JavaSourceFile visitJavaSourceFile(JavaSourceFile cu, ExecutionContext ctx) { - Map renameVariablesMap = new LinkedHashMap<>(); - Set hasNameSet = new HashSet<>(); + public @Nullable J visit(@Nullable Tree tree, ExecutionContext ctx) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile cu = (JavaSourceFile) tree; + Map renameVariablesMap = new LinkedHashMap<>(); + Set hasNameSet = new HashSet<>(); - getCursor().putMessage("RENAME_VARIABLES_KEY", renameVariablesMap); - getCursor().putMessage("HAS_NAME_KEY", hasNameSet); - super.visitJavaSourceFile(cu, ctx); + getCursor().putMessage("RENAME_VARIABLES_KEY", renameVariablesMap); + getCursor().putMessage("HAS_NAME_KEY", hasNameSet); + super.visit(cu, ctx); - renameVariablesMap.forEach((key, value) -> { - if (!hasNameSet.contains(value) && !hasNameSet.contains(key.getSimpleName())) { - doAfterVisit(new RenameVariable<>(key, value)); - hasNameSet.add(value); - } - }); - return cu; + renameVariablesMap.forEach((key, value) -> { + if (!hasNameSet.contains(value) && !hasNameSet.contains(key.getSimpleName())) { + doAfterVisit(new RenameVariable<>(key, value)); + hasNameSet.add(value); + } + }); + } + return super.visit(tree, ctx); } @SuppressWarnings("all") diff --git a/src/main/java/org/openrewrite/staticanalysis/ForLoopIncrementInUpdate.java b/src/main/java/org/openrewrite/staticanalysis/ForLoopIncrementInUpdate.java index a27801d..ac19945 100644 --- a/src/main/java/org/openrewrite/staticanalysis/ForLoopIncrementInUpdate.java +++ b/src/main/java/org/openrewrite/staticanalysis/ForLoopIncrementInUpdate.java @@ -18,6 +18,7 @@ org.openrewrite.config.CompositeRecipe import org.openrewrite.ExecutionContext; import org.openrewrite.Recipe; import org.openrewrite.Tree; +import org.openrewrite.TreeVisitor; import org.openrewrite.internal.ListUtils; import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaVisitor; @@ -54,7 +55,7 @@ } @Override - public JavaVisitor getVisitor() { + public TreeVisitor getVisitor() { return new JavaVisitor() { @Override public J visitForLoop(J.ForLoop forLoop, ExecutionContext ctx) { diff --git a/src/main/java/org/openrewrite/staticanalysis/IsEmptyCallOnCollections.java b/src/main/java/org/openrewrite/staticanalysis/IsEmptyCallOnCollections.java index d987871..56f3cd2 100755 --- a/src/main/java/org/openrewrite/staticanalysis/IsEmptyCallOnCollections.java +++ b/src/main/java/org/openrewrite/staticanalysis/IsEmptyCallOnCollections.java @@ -51,16 +51,11 @@ org.openrewrite.config.CompositeRecipe } @Override - protected TreeVisitor getSingleSourceApplicableTest() { - return new UsesMethod<>(COLLECTION_SIZE); - } - - @Override - public JavaVisitor getVisitor() { - return new JavaVisitor() { - final JavaTemplate isEmpty = JavaTemplate.builder(this::getCursor, "#{}#{any(java.util.Collection)}.isEmpty()") + public TreeVisitor getVisitor() { + return Preconditions.check(new UsesMethod<>(COLLECTION_SIZE), new JavaVisitor() { + final JavaTemplate isEmpty = JavaTemplate.builder( "#{}#{any(java.util.Collection)}.isEmpty()")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive() .build(); - final JavaTemplate isEmptyNoReceiver = JavaTemplate.builder(this::getCursor, "#{}isEmpty()") + final JavaTemplate isEmptyNoReceiver = JavaTemplate.builder( "#{}isEmpty()")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive() .build(); @Override @@ -69,15 +64,13 @@ boolean zeroRight = isZero(binary.getRight()); J maybeSizeCall = zeroRight ? binary.getLeft() : binary.getRight(); if (binary.getOperator() == J.Binary.Type.Equal || binary.getOperator() == J.Binary.Type.NotEqual - || zeroRight && binary.getOperator() == J.Binary.Type.GreaterThan - || !zeroRight && binary.getOperator() == J.Binary.Type.LessThan) { - if(maybeSizeCall instanceof J.MethodInvocation) { + || zeroRight && binary.getOperator() == J.Binary.Type.GreaterThan + || !zeroRight && binary.getOperator() == J.Binary.Type.LessThan) { + if (maybeSizeCall instanceof J.MethodInvocation) { J.MethodInvocation maybeSizeCallMethod = (J.MethodInvocation) maybeSizeCall; if (COLLECTION_SIZE.matches(maybeSizeCallMethod)) { String op = binary.getOperator() == J.Binary.Type.Equal ? "" : "!"; - return (maybeSizeCallMethod.getSelect() == null ? - binary.withTemplate(isEmptyNoReceiver, binary.getCoordinates().replace(), op) : - binary.withTemplate(isEmpty, binary.getCoordinates().replace(), op, maybeSizeCallMethod.getSelect()) + return (maybeSizeCallMethod.getSelect() == null ? isEmptyNoReceiver.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), binary.getCoordinates().replace(), op) : isEmpty.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), binary.getCoordinates().replace(), op, maybeSizeCallMethod.getSelect()) ).withPrefix(binary.getPrefix()); } } @@ -85,7 +78,7 @@ } return super.visitBinary(binary, ctx); } - }; + }); } private static boolean isZero(Expression expression) { diff --git a/src/main/java/org/openrewrite/staticanalysis/RemoveEmptyJavaDocParameters.java b/src/main/java/org/openrewrite/staticanalysis/RemoveEmptyJavaDocParameters.java index 1937eb6..a1eb979 100644 --- a/src/main/java/org/openrewrite/staticanalysis/RemoveEmptyJavaDocParameters.java +++ b/src/main/java/org/openrewrite/staticanalysis/RemoveEmptyJavaDocParameters.java @@ -18,6 +18,7 @@ org.openrewrite.config.CompositeRecipe import org.openrewrite.ExecutionContext; import org.openrewrite.Incubating; import org.openrewrite.Recipe; +import org.openrewrite.TreeVisitor; import org.openrewrite.internal.ListUtils; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.JavaVisitor; @@ -49,7 +50,7 @@ } @Override - public JavaVisitor getVisitor() { + public TreeVisitor getVisitor() { return new JavaIsoVisitor() { final RemoveEmptyParamVisitor removeEmptyParamVisitor = new RemoveEmptyParamVisitor(); diff --git a/src/main/java/org/openrewrite/staticanalysis/SimplifyBooleanExpressionVisitor.java b/src/main/java/org/openrewrite/staticanalysis/SimplifyBooleanExpressionVisitor.java index 5e9ab6b..3ae63e9 100644 --- a/src/main/java/org/openrewrite/staticanalysis/SimplifyBooleanExpressionVisitor.java +++ b/src/main/java/org/openrewrite/staticanalysis/SimplifyBooleanExpressionVisitor.java @@ -17,6 +17,7 @@ org.openrewrite.config.CompositeRecipe import org.openrewrite.Cursor; import org.openrewrite.Incubating; +import org.openrewrite.Tree; import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.JavaVisitor; @@ -32,12 +33,15 @@ private static final String MAYBE_AUTO_FORMAT_ME = "MAYBE_AUTO_FORMAT_ME"; @Override - public J visitJavaSourceFile(JavaSourceFile cu, P p) { - JavaSourceFile c = visitAndCast(cu, p, super::visitJavaSourceFile); - if (c != cu) { - doAfterVisit(new SimplifyBooleanExpressionVisitor<>()); + public @Nullable J visit(@Nullable Tree tree, P p) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile cu = (JavaSourceFile) tree; + JavaSourceFile c = visitAndCast(cu, p, super::visit); + if (c != cu) { + doAfterVisit(new SimplifyBooleanExpressionVisitor<>()); + } } - return c; + return super.visit(tree, p); } @Override diff --git a/src/main/java/org/openrewrite/staticanalysis/UnnecessaryParentheses.java b/src/main/java/org/openrewrite/staticanalysis/UnnecessaryParentheses.java index 332d9ae..0fefeaf 100644 --- a/src/main/java/org/openrewrite/staticanalysis/UnnecessaryParentheses.java +++ b/src/main/java/org/openrewrite/staticanalysis/UnnecessaryParentheses.java @@ -15,13 +15,13 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; -import org.openrewrite.SourceFile; +import org.openrewrite.*; +import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.JavaVisitor; import org.openrewrite.java.style.Checkstyle; import org.openrewrite.java.style.UnnecessaryParenthesesStyle; +import org.openrewrite.java.tree.J; import org.openrewrite.java.tree.JavaSourceFile; import java.time.Duration; @@ -52,16 +52,19 @@ } @Override - public JavaVisitor getVisitor() { + public TreeVisitor getVisitor() { return new JavaIsoVisitor() { @Override - public JavaSourceFile visitJavaSourceFile(JavaSourceFile cu, ExecutionContext executionContext) { - UnnecessaryParenthesesStyle style = ((SourceFile)cu).getStyle(UnnecessaryParenthesesStyle.class); - if (style == null) { - style = Checkstyle.unnecessaryParentheses(); + public @Nullable J visit(@Nullable Tree tree, ExecutionContext executionContext) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile cu = (JavaSourceFile) tree; + UnnecessaryParenthesesStyle style = ((SourceFile) cu).getStyle(UnnecessaryParenthesesStyle.class); + if (style == null) { + style = Checkstyle.unnecessaryParentheses(); + } + doAfterVisit(new UnnecessaryParenthesesVisitor<>(style)); } - doAfterVisit(new UnnecessaryParenthesesVisitor<>(style)); - return cu; + return super.visit(tree, executionContext); } }; } diff --git a/src/main/java/org/openrewrite/staticanalysis/UseObjectNotifyAll.java b/src/main/java/org/openrewrite/staticanalysis/UseObjectNotifyAll.java index e19bb05..70439e5 100644 --- a/src/main/java/org/openrewrite/staticanalysis/UseObjectNotifyAll.java +++ b/src/main/java/org/openrewrite/staticanalysis/UseObjectNotifyAll.java @@ -16,6 +16,7 @@ org.openrewrite.config.CompositeRecipe package org.openrewrite.staticanalysis; import org.openrewrite.ExecutionContext; +import org.openrewrite.Preconditions; import org.openrewrite.Recipe; import org.openrewrite.TreeVisitor; import org.openrewrite.internal.lang.Nullable; @@ -54,15 +55,9 @@ return Duration.ofMinutes(1); } - - @Override - protected @Nullable TreeVisitor getSingleSourceApplicableTest() { - return new UsesMethod<>(OBJECT_NOTIFY); - } - @Override public TreeVisitor getVisitor() { - return new JavaIsoVisitor() { + return Preconditions.check(new UsesMethod<>(OBJECT_NOTIFY), new JavaIsoVisitor() { @Override public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, ExecutionContext context) { J.MethodInvocation invocation = super.visitMethodInvocation(method, context); @@ -74,7 +69,7 @@ return invocation; } - }; + }); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/RemoveCallsToObjectFinalize.java b/src/main/java/org/openrewrite/staticanalysis/RemoveCallsToObjectFinalize.java index 8acafb1..1722a66 100644 --- a/src/main/java/org/openrewrite/staticanalysis/RemoveCallsToObjectFinalize.java +++ b/src/main/java/org/openrewrite/staticanalysis/RemoveCallsToObjectFinalize.java @@ -16,6 +16,7 @@ org.openrewrite.config.CompositeRecipe package org.openrewrite.staticanalysis; import org.openrewrite.ExecutionContext; +import org.openrewrite.Preconditions; import org.openrewrite.Recipe; import org.openrewrite.TreeVisitor; import org.openrewrite.internal.lang.Nullable; @@ -53,23 +54,18 @@ } @Override - protected @Nullable TreeVisitor getSingleSourceApplicableTest() { - return new UsesMethod<>(OBJECT_FINALIZE); - } - - @Override public TreeVisitor getVisitor() { - return new JavaIsoVisitor() { + return Preconditions.check(new UsesMethod<>(OBJECT_FINALIZE), new JavaIsoVisitor() { @Override public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, ExecutionContext context) { J.MethodInvocation invocation = super.visitMethodInvocation(method, context); if (invocation.getMethodType() != null && "finalize".equals(invocation.getMethodType().getName()) - &&(invocation.getMethodType().getDeclaringType().getSupertype() != null && Object.class.getName().equals(invocation.getMethodType().getDeclaringType().getSupertype().getFullyQualifiedName()))) { + && (invocation.getMethodType().getDeclaringType().getSupertype() != null && Object.class.getName().equals(invocation.getMethodType().getDeclaringType().getSupertype().getFullyQualifiedName()))) { return null; } return invocation; } - }; + }); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/UnwrapRepeatableAnnotations.java b/src/main/java/org/openrewrite/staticanalysis/UnwrapRepeatableAnnotations.java index a9b6cf6..0c0229d 100644 --- a/src/main/java/org/openrewrite/staticanalysis/UnwrapRepeatableAnnotations.java +++ b/src/main/java/org/openrewrite/staticanalysis/UnwrapRepeatableAnnotations.java @@ -16,6 +16,7 @@ org.openrewrite.config.CompositeRecipe package org.openrewrite.staticanalysis; import org.openrewrite.ExecutionContext; +import org.openrewrite.Preconditions; import org.openrewrite.Recipe; import org.openrewrite.TreeVisitor; import org.openrewrite.internal.ListUtils; @@ -40,13 +41,8 @@ } @Override - protected TreeVisitor getSingleSourceApplicableTest() { - return new FindRepeatableAnnotations().getVisitor(); - } - - @Override - public JavaVisitor getVisitor() { - return new JavaIsoVisitor() { + public TreeVisitor getVisitor() { + return Preconditions.check(new FindRepeatableAnnotations().getVisitor(), new JavaIsoVisitor() { @Override public J.MethodDeclaration visitMethodDeclaration(J.MethodDeclaration method, ExecutionContext ctx) { J.MethodDeclaration m = super.visitMethodDeclaration(method, ctx); @@ -97,6 +93,6 @@ return unwrapped.isEmpty() ? a : unwrapped; }); } - }; + }); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/HideUtilityClassConstructor.java b/src/main/java/org/openrewrite/staticanalysis/HideUtilityClassConstructor.java index 35fd4e0..3f38a45 100644 --- a/src/main/java/org/openrewrite/staticanalysis/HideUtilityClassConstructor.java +++ b/src/main/java/org/openrewrite/staticanalysis/HideUtilityClassConstructor.java @@ -16,9 +16,11 @@ org.openrewrite.config.CompositeRecipe package org.openrewrite.staticanalysis; import org.openrewrite.*; +import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.style.Checkstyle; import org.openrewrite.java.style.HideUtilityClassConstructorStyle; +import org.openrewrite.java.tree.J; import org.openrewrite.java.tree.JavaSourceFile; import java.time.Duration; @@ -54,14 +56,18 @@ } private static class HideUtilityClassConstructorFromCompilationUnitStyle extends JavaIsoVisitor { + @Override - public JavaSourceFile visitJavaSourceFile(JavaSourceFile cu, ExecutionContext executionContext) { - HideUtilityClassConstructorStyle style = ((SourceFile)cu).getStyle(HideUtilityClassConstructorStyle.class); - if (style == null) { - style = Checkstyle.hideUtilityClassConstructorStyle(); + public @Nullable J visit(@Nullable Tree tree, ExecutionContext executionContext) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile cu = (JavaSourceFile) tree; + HideUtilityClassConstructorStyle style = ((SourceFile) cu).getStyle(HideUtilityClassConstructorStyle.class); + if (style == null) { + style = Checkstyle.hideUtilityClassConstructorStyle(); + } + doAfterVisit(new HideUtilityClassConstructorVisitor<>(style)); } - doAfterVisit(new HideUtilityClassConstructorVisitor<>(style)); - return cu; + return super.visit(tree, executionContext); } } } diff --git a/src/main/java/org/openrewrite/staticanalysis/NoFinalizedLocalVariables.java b/src/main/java/org/openrewrite/staticanalysis/NoFinalizedLocalVariables.java index 12361ba..d80766c 100644 --- a/src/main/java/org/openrewrite/staticanalysis/NoFinalizedLocalVariables.java +++ b/src/main/java/org/openrewrite/staticanalysis/NoFinalizedLocalVariables.java @@ -15,10 +15,7 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Incubating; -import org.openrewrite.Recipe; -import org.openrewrite.Tree; +import org.openrewrite.*; import org.openrewrite.internal.ListUtils; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.tree.J; @@ -39,7 +36,7 @@ } @Override - public JavaIsoVisitor getVisitor() { + public TreeVisitor getVisitor() { return new JavaIsoVisitor() { @Override public J.VariableDeclarations visitVariableDeclarations(J.VariableDeclarations multiVariable, ExecutionContext p) { diff --git a/src/main/java/org/openrewrite/staticanalysis/ObjectFinalizeCallsSuper.java b/src/main/java/org/openrewrite/staticanalysis/ObjectFinalizeCallsSuper.java index ac0193c..5300fb2 100644 --- a/src/main/java/org/openrewrite/staticanalysis/ObjectFinalizeCallsSuper.java +++ b/src/main/java/org/openrewrite/staticanalysis/ObjectFinalizeCallsSuper.java @@ -15,9 +15,7 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.Cursor; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; +import org.openrewrite.*; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.JavaTemplate; import org.openrewrite.java.MethodMatcher; @@ -53,19 +51,14 @@ } @Override - protected JavaIsoVisitor getSingleSourceApplicableTest() { - return new DeclaresMethod<>(FINALIZE_METHOD_MATCHER); - } - - @Override - public JavaIsoVisitor getVisitor() { - return new JavaIsoVisitor() { + public TreeVisitor getVisitor() { + return Preconditions.check(new DeclaresMethod<>(FINALIZE_METHOD_MATCHER), new JavaIsoVisitor() { @Override public J.MethodDeclaration visitMethodDeclaration(J.MethodDeclaration method, ExecutionContext executionContext) { J.MethodDeclaration md = super.visitMethodDeclaration(method, executionContext); if (FINALIZE_METHOD_MATCHER.matches(md.getMethodType()) && !hasSuperFinalizeMethodInvocation(md)) { //noinspection ConstantConditions - md = md.withTemplate(JavaTemplate.builder(this::getCursor, "super.finalize()").build(), md.getBody().getCoordinates().lastStatement()); + md = JavaTemplate.builder("super.finalize()")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().build().apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), md.getBody().getCoordinates().lastStatement()); } return md; } @@ -75,7 +68,7 @@ new FindSuperFinalizeVisitor().visit(md, hasSuperFinalize); return hasSuperFinalize.get(); } - }; + }); } private static class FindSuperFinalizeVisitor extends JavaIsoVisitor { diff --git a/src/main/java/org/openrewrite/staticanalysis/UseStandardCharset.java b/src/main/java/org/openrewrite/staticanalysis/UseStandardCharset.java index 740ceff..018dca5 100644 --- a/src/main/java/org/openrewrite/staticanalysis/UseStandardCharset.java +++ b/src/main/java/org/openrewrite/staticanalysis/UseStandardCharset.java @@ -16,7 +16,9 @@ org.openrewrite.config.CompositeRecipe package org.openrewrite.staticanalysis; import org.openrewrite.ExecutionContext; +import org.openrewrite.Preconditions; import org.openrewrite.Recipe; +import org.openrewrite.TreeVisitor; import org.openrewrite.internal.StringUtils; import org.openrewrite.java.JavaTemplate; import org.openrewrite.java.JavaVisitor; @@ -48,13 +50,8 @@ } @Override - protected JavaVisitor getSingleSourceApplicableTest() { - return new UsesType<>("java.nio.charset.Charset", false); - } - - @Override - public JavaVisitor getVisitor() { - return new UseStandardCharsetVisitor(); + public TreeVisitor getVisitor() { + return Preconditions.check(new UsesType<>("java.nio.charset.Charset", false), new UseStandardCharsetVisitor()); } private static class UseStandardCharsetVisitor extends JavaVisitor { @@ -96,8 +93,8 @@ } if (!StringUtils.isBlank(standardName)) { - return m.withTemplate(JavaTemplate.builder(this::getCursor, "StandardCharsets." + standardName) - .imports("java.nio.charset.StandardCharsets").build(), m.getCoordinates().replace()); + return JavaTemplate.builder("StandardCharsets." + standardName)/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive() + .imports("java.nio.charset.StandardCharsets").build().apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), m.getCoordinates().replace()); } } } diff --git a/src/main/java/org/openrewrite/staticanalysis/FallThrough.java b/src/main/java/org/openrewrite/staticanalysis/FallThrough.java index eb0600d..75b0b26 100644 --- a/src/main/java/org/openrewrite/staticanalysis/FallThrough.java +++ b/src/main/java/org/openrewrite/staticanalysis/FallThrough.java @@ -15,13 +15,12 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; -import org.openrewrite.SourceFile; -import org.openrewrite.TreeVisitor; +import org.openrewrite.*; +import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.style.Checkstyle; import org.openrewrite.java.style.FallThroughStyle; +import org.openrewrite.java.tree.J; import org.openrewrite.java.tree.JavaSourceFile; import java.time.Duration; @@ -55,14 +54,18 @@ } private static class FallThroughFromCompilationUnitStyle extends JavaIsoVisitor { + @Override - public JavaSourceFile visitJavaSourceFile(JavaSourceFile cu, ExecutionContext executionContext) { - FallThroughStyle style = ((SourceFile)cu).getStyle(FallThroughStyle.class); - if (style == null) { - style = Checkstyle.fallThrough(); + public @Nullable J visit(@Nullable Tree tree, ExecutionContext executionContext) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile cu = (JavaSourceFile) tree; + FallThroughStyle style = ((SourceFile) cu).getStyle(FallThroughStyle.class); + if (style == null) { + style = Checkstyle.fallThrough(); + } + doAfterVisit(new FallThroughVisitor<>(style)); } - doAfterVisit(new FallThroughVisitor<>(style)); - return cu; + return super.visit(tree, executionContext); } } } diff --git a/src/main/java/org/openrewrite/staticanalysis/NewStringBuilderBufferWithCharArgument.java b/src/main/java/org/openrewrite/staticanalysis/NewStringBuilderBufferWithCharArgument.java index b6f8064..2fd72d5 100644 --- a/src/main/java/org/openrewrite/staticanalysis/NewStringBuilderBufferWithCharArgument.java +++ b/src/main/java/org/openrewrite/staticanalysis/NewStringBuilderBufferWithCharArgument.java @@ -15,10 +15,7 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.Applicability; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; -import org.openrewrite.TreeVisitor; +import org.openrewrite.*; import org.openrewrite.internal.ListUtils; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.JavaTemplate; @@ -54,41 +51,36 @@ } @Override - public TreeVisitor getSingleSourceApplicableTest() { - return Applicability.or( - new UsesType<>("java.lang.StringBuilder", true), - new UsesType<>("java.lang.StringBuffer", true) - ); - } + public TreeVisitor getVisitor() { + return Preconditions.check( + Preconditions.or( + new UsesType<>("java.lang.StringBuilder", true), + new UsesType<>("java.lang.StringBuffer", true)), new JavaIsoVisitor() { + private final JavaTemplate toString = JavaTemplate.builder( "String.valueOf(#{any()})")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().build(); - @Override - public JavaIsoVisitor getVisitor() { - return new JavaIsoVisitor() { - private final JavaTemplate toString = JavaTemplate.builder(this::getCursor, "String.valueOf(#{any()})").build(); - - @Override - public J.NewClass visitNewClass(J.NewClass newClass, ExecutionContext executionContext) { - J.NewClass nc = super.visitNewClass(newClass, executionContext); - if ((TypeUtils.isOfClassType(nc.getType(), "java.lang.StringBuilder") || - TypeUtils.isOfClassType(nc.getType(), "java.lang.StringBuffer"))) { - nc.getArguments(); - if (nc.getArguments().get(0).getType() == JavaType.Primitive.Char) { - nc = nc.withArguments(ListUtils.mapFirst(nc.getArguments(), arg -> { - if (arg instanceof J.Literal){ - J.Literal l = (J.Literal) arg; - l = l.withType(JavaType.buildType("String")); - if (l.getValueSource() != null) { - l = l.withValueSource(l.getValueSource().replace("'", "\"")); - } - return l; - } else { - return arg.withTemplate(toString, arg.getCoordinates().replace(), arg); + @Override + public J.NewClass visitNewClass(J.NewClass newClass, ExecutionContext executionContext) { + J.NewClass nc = super.visitNewClass(newClass, executionContext); + if ((TypeUtils.isOfClassType(nc.getType(), "java.lang.StringBuilder") || + TypeUtils.isOfClassType(nc.getType(), "java.lang.StringBuffer"))) { + nc.getArguments(); + if (nc.getArguments().get(0).getType() == JavaType.Primitive.Char) { + nc = nc.withArguments(ListUtils.mapFirst(nc.getArguments(), arg -> { + if (arg instanceof J.Literal) { + J.Literal l = (J.Literal) arg; + l = l.withType(JavaType.buildType("String")); + if (l.getValueSource() != null) { + l = l.withValueSource(l.getValueSource().replace("'", "\"")); + } + return l; + } else { + return toString.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), arg.getCoordinates().replace(), arg); + } + })); } - })); + } + return nc; } - } - return nc; - } - }; + }); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/CatchClauseOnlyRethrows.java b/src/main/java/org/openrewrite/staticanalysis/CatchClauseOnlyRethrows.java index 8773a13..e990e4f 100755 --- a/src/main/java/org/openrewrite/staticanalysis/CatchClauseOnlyRethrows.java +++ b/src/main/java/org/openrewrite/staticanalysis/CatchClauseOnlyRethrows.java @@ -17,6 +17,7 @@ org.openrewrite.config.CompositeRecipe import org.openrewrite.ExecutionContext; import org.openrewrite.Recipe; +import org.openrewrite.TreeVisitor; import org.openrewrite.internal.ListUtils; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.tree.Expression; @@ -54,7 +55,7 @@ } @Override - public JavaIsoVisitor getVisitor() { + public TreeVisitor getVisitor() { return new JavaIsoVisitor() { @Override diff --git a/src/main/java/org/openrewrite/staticanalysis/FixSerializableFields.java b/src/main/java/org/openrewrite/staticanalysis/FixSerializableFields.java index 2690fc0..2eeb5a7 100644 --- a/src/main/java/org/openrewrite/staticanalysis/FixSerializableFields.java +++ b/src/main/java/org/openrewrite/staticanalysis/FixSerializableFields.java @@ -82,6 +82,7 @@ org.openrewrite.config.CompositeRecipe return Duration.ofMinutes(30); } + // [Rewrite8 migration] This recipe uses the visit multiple sources method `visit(List before, P p)`, needs to be migrated to use new introduced scanning recipe, please follow the migration guide here: https://to-be-written @Override protected List visit(List before, ExecutionContext ctx) { Set serializableTargets = new HashSet<>(); @@ -169,10 +170,8 @@ if (!isClassSerializable && fullyQualified != null && targets.contains(fullyQualified.getFullyQualifiedName())) { //If the class is one of the serializable targets, and it does not already implement Serializable, add it. maybeAddImport("java.io.Serializable"); - return c.withTemplate( - JavaTemplate.builder(this::getCursor, "Serializable").imports("java.io.Serializable").build(), - c.getCoordinates().addImplementsClause() - ); + return JavaTemplate.builder("Serializable")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().imports("java.io.Serializable").build().apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), + c.getCoordinates().addImplementsClause()); } else if (isClassSerializable) { //If the class implements serializable, mark any fields that are not serializable as transient. J.ClassDeclaration after = c.withBody(c.getBody().withStatements( diff --git a/src/main/java/org/openrewrite/staticanalysis/ReplaceValidateNotNullHavingVarargsWithObjectsRequireNonNull.java b/src/main/java/org/openrewrite/staticanalysis/ReplaceValidateNotNullHavingVarargsWithObjectsRequireNonNull.java index 0fe0fa9..4decb3f 100644 --- a/src/main/java/org/openrewrite/staticanalysis/ReplaceValidateNotNullHavingVarargsWithObjectsRequireNonNull.java +++ b/src/main/java/org/openrewrite/staticanalysis/ReplaceValidateNotNullHavingVarargsWithObjectsRequireNonNull.java @@ -16,6 +16,7 @@ org.openrewrite.config.CompositeRecipe package org.openrewrite.staticanalysis; import org.openrewrite.ExecutionContext; +import org.openrewrite.Preconditions; import org.openrewrite.Recipe; import org.openrewrite.TreeVisitor; import org.openrewrite.internal.ListUtils; @@ -46,13 +47,8 @@ } @Override - protected TreeVisitor getSingleSourceApplicableTest() { - return new UsesMethod<>(VALIDATE_NOTNULL); - } - - @Override - protected JavaVisitor getVisitor() { - return new JavaVisitor() { + public TreeVisitor getVisitor() { + return Preconditions.check(new UsesMethod<>(VALIDATE_NOTNULL), new JavaVisitor() { @Override public J visitMethodInvocation(J.MethodInvocation method, ExecutionContext p) { J.MethodInvocation mi = (J.MethodInvocation) super.visitMethodInvocation(method, p); @@ -70,10 +66,9 @@ maybeRemoveImport("org.apache.commons.lang3.Validate"); maybeAddImport("java.util.Objects"); - mi = mi.withTemplate( - JavaTemplate.builder(this::getCursor, template) - .imports("java.util.Objects") - .build(), + mi = JavaTemplate.builder(template)/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive() + .imports("java.util.Objects") + .build().apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), mi.getCoordinates().replace(), arguments.toArray()); @@ -94,7 +89,7 @@ lambda = maybeAutoFormat(lambda, lambda.withBody(stringFormatMi), p); return maybeAutoFormat(mi, mi.withArguments(Stream.of(arg0, lambda).collect(Collectors.toList())), p); } - }; + }); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/TypecastParenPad.java b/src/main/java/org/openrewrite/staticanalysis/TypecastParenPad.java index 9719bd0..4beea4a 100755 --- a/src/main/java/org/openrewrite/staticanalysis/TypecastParenPad.java +++ b/src/main/java/org/openrewrite/staticanalysis/TypecastParenPad.java @@ -15,9 +15,8 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; -import org.openrewrite.SourceFile; +import org.openrewrite.*; +import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.format.SpacesVisitor; import org.openrewrite.java.style.*; @@ -39,7 +38,7 @@ } @Override - public JavaIsoVisitor getVisitor() { + public TreeVisitor getVisitor() { return new TypecastParenPadVisitor(); } @@ -48,13 +47,16 @@ TypecastParenPadStyle typecastParenPadStyle; @Override - public JavaSourceFile visitJavaSourceFile(JavaSourceFile javaSourceFile, ExecutionContext ctx) { - SourceFile cu = (SourceFile)javaSourceFile; - spacesStyle = Optional.ofNullable(cu.getStyle(SpacesStyle.class)).orElse(IntelliJ.spaces()); - typecastParenPadStyle = Optional.ofNullable(cu.getStyle(TypecastParenPadStyle.class)).orElse(Checkstyle.typecastParenPadStyle()); + public @Nullable J visit(@Nullable Tree tree, ExecutionContext ctx) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile javaSourceFile = (JavaSourceFile) tree; + SourceFile cu = (SourceFile) javaSourceFile; + spacesStyle = Optional.ofNullable(cu.getStyle(SpacesStyle.class)).orElse(IntelliJ.spaces()); + typecastParenPadStyle = Optional.ofNullable(cu.getStyle(TypecastParenPadStyle.class)).orElse(Checkstyle.typecastParenPadStyle()); - spacesStyle = spacesStyle.withWithin(spacesStyle.getWithin().withTypeCastParentheses(typecastParenPadStyle.getSpace())); - return super.visitJavaSourceFile((JavaSourceFile)cu, ctx); + spacesStyle = spacesStyle.withWithin(spacesStyle.getWithin().withTypeCastParentheses(typecastParenPadStyle.getSpace())); + } + return super.visit(tree, ctx); } @Override diff --git a/src/main/java/org/openrewrite/staticanalysis/MinimumSwitchCases.java b/src/main/java/org/openrewrite/staticanalysis/MinimumSwitchCases.java index da5ba37..f4eacc7 100644 --- a/src/main/java/org/openrewrite/staticanalysis/MinimumSwitchCases.java +++ b/src/main/java/org/openrewrite/staticanalysis/MinimumSwitchCases.java @@ -21,6 +21,7 @@ org.openrewrite.config.CompositeRecipe import org.openrewrite.ExecutionContext; import org.openrewrite.Recipe; import org.openrewrite.Tree; +import org.openrewrite.TreeVisitor; import org.openrewrite.internal.ListUtils; import org.openrewrite.java.JavaTemplate; import org.openrewrite.java.JavaVisitor; @@ -60,49 +61,49 @@ } @Override - public JavaVisitor getVisitor() { + public TreeVisitor getVisitor() { return new JavaVisitor() { - final JavaTemplate ifElseIfPrimitive = JavaTemplate.builder(this::getCursor, "" + + final JavaTemplate ifElseIfPrimitive = JavaTemplate.builder( "" + "if(#{any()} == #{any()}) {\n" + "} else if(#{any()} == #{any()}) {\n" + - "}").build(); + "}")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().build(); - final JavaTemplate ifElseIfString = JavaTemplate.builder(this::getCursor, "" + + final JavaTemplate ifElseIfString = JavaTemplate.builder( "" + "if(#{any(java.lang.String)}.equals(#{any(java.lang.String)})) {\n" + "} else if(#{any(java.lang.String)}.equals(#{any(java.lang.String)})) {\n" + - "}").build(); + "}")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().build(); - final JavaTemplate ifElseIfEnum = JavaTemplate.builder(this::getCursor, "" + + final JavaTemplate ifElseIfEnum = JavaTemplate.builder( "" + "if(#{any()} == #{}) {\n" + "} else if(#{any()} == #{}) {\n" + - "}").build(); + "}")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().build(); - final JavaTemplate ifElsePrimitive = JavaTemplate.builder(this::getCursor, "" + + final JavaTemplate ifElsePrimitive = JavaTemplate.builder( "" + "if(#{any()} == #{any()}) {\n" + "} else {\n" + - "}").build(); + "}")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().build(); - final JavaTemplate ifElseString = JavaTemplate.builder(this::getCursor, "" + + final JavaTemplate ifElseString = JavaTemplate.builder( "" + "if(#{any(java.lang.String)}.equals(#{any(java.lang.String)})) {\n" + "} else {\n" + - "}").build(); + "}")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().build(); - final JavaTemplate ifElseEnum = JavaTemplate.builder(this::getCursor, "" + + final JavaTemplate ifElseEnum = JavaTemplate.builder( "" + "if(#{any()} == #{}) {\n" + "} else {\n" + - "}").build(); + "}")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().build(); - final JavaTemplate ifPrimitive = JavaTemplate.builder(this::getCursor, "" + + final JavaTemplate ifPrimitive = JavaTemplate.builder( "" + "if(#{any()} == #{any()}) {\n" + - "}").build(); + "}")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().build(); - final JavaTemplate ifString = JavaTemplate.builder(this::getCursor, "" + + final JavaTemplate ifString = JavaTemplate.builder( "" + "if(#{any(java.lang.String)}.equals(#{any(java.lang.String)})) {\n" + - "}").build(); + "}")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().build(); - final JavaTemplate ifEnum = JavaTemplate.builder(this::getCursor, "" + + final JavaTemplate ifEnum = JavaTemplate.builder( "" + "if(#{any()} == #{}) {\n" + - "}").build(); + "}")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().build(); @Override public J visitBlock(J.Block block, ExecutionContext executionContext) { @@ -162,14 +163,14 @@ if (isDefault(cases[0])) { return switzh.withMarkers(switzh.getMarkers().add(new DefaultOnly())); } else { - generatedIf = switzh.withTemplate(ifString, switzh.getCoordinates().replace(), + generatedIf = ifString.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), switzh.getCoordinates().replace(), cases[0].getPattern(), tree); } } else if (isDefault(cases[1])) { - generatedIf = switzh.withTemplate(ifElseString, switzh.getCoordinates().replace(), + generatedIf = ifElseString.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), switzh.getCoordinates().replace(), cases[0].getPattern(), tree); } else { - generatedIf = switzh.withTemplate(ifElseIfString, switzh.getCoordinates().replace(), + generatedIf = ifElseIfString.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), switzh.getCoordinates().replace(), cases[0].getPattern(), tree, cases[1].getPattern(), tree); } } else if (switchesOnEnum(switzh)) { @@ -177,14 +178,14 @@ if (isDefault(cases[0])) { return switzh.withMarkers(switzh.getMarkers().add(new DefaultOnly())); } else { - generatedIf = switzh.withTemplate(ifEnum, switzh.getCoordinates().replace(), + generatedIf = ifEnum.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), switzh.getCoordinates().replace(), tree, enumIdentToFieldAccessString(cases[0].getPattern())); } } else if (isDefault(cases[1])) { - generatedIf = switzh.withTemplate(ifElseEnum, switzh.getCoordinates().replace(), + generatedIf = ifElseEnum.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), switzh.getCoordinates().replace(), tree, enumIdentToFieldAccessString(cases[0].getPattern())); } else { - generatedIf = switzh.withTemplate(ifElseIfEnum, switzh.getCoordinates().replace(), + generatedIf = ifElseIfEnum.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), switzh.getCoordinates().replace(), tree, enumIdentToFieldAccessString(cases[0].getPattern()), tree, enumIdentToFieldAccessString(cases[1].getPattern())); } } else { @@ -192,14 +193,14 @@ if (isDefault(cases[0])) { return switzh.withMarkers(switzh.getMarkers().add(new DefaultOnly())); } else { - generatedIf = switzh.withTemplate(ifPrimitive, switzh.getCoordinates().replace(), + generatedIf = ifPrimitive.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), switzh.getCoordinates().replace(), tree, cases[0].getPattern()); } } else if (isDefault(cases[1])) { - generatedIf = switzh.withTemplate(ifElsePrimitive, switzh.getCoordinates().replace(), + generatedIf = ifElsePrimitive.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), switzh.getCoordinates().replace(), tree, cases[0].getPattern()); } else { - generatedIf = switzh.withTemplate(ifElseIfPrimitive, switzh.getCoordinates().replace(), + generatedIf = ifElseIfPrimitive.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), switzh.getCoordinates().replace(), tree, cases[0].getPattern(), tree, cases[1].getPattern()); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/UseForEachRemoveInsteadOfSetRemoveAll.java b/src/main/java/org/openrewrite/staticanalysis/UseForEachRemoveInsteadOfSetRemoveAll.java index 9266323..7729640 100644 --- a/src/main/java/org/openrewrite/staticanalysis/UseForEachRemoveInsteadOfSetRemoveAll.java +++ b/src/main/java/org/openrewrite/staticanalysis/UseForEachRemoveInsteadOfSetRemoveAll.java @@ -15,9 +15,7 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.Cursor; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; +import org.openrewrite.*; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.JavaTemplate; import org.openrewrite.java.MethodMatcher; @@ -38,19 +36,14 @@ } @Override - protected UsesMethod getSingleSourceApplicableTest() { - return new UsesMethod<>(new MethodMatcher("java.util.Set removeAll(java.util.Collection)")); - } - - @Override - protected JavaIsoVisitor getVisitor() { - return new JavaIsoVisitor(){ + public TreeVisitor getVisitor() { + return Preconditions.check(new UsesMethod<>(new MethodMatcher("java.util.Set removeAll(java.util.Collection)")), new JavaIsoVisitor(){ final MethodMatcher rmaMatcher = new MethodMatcher("java.util.Set removeAll(java.util.Collection)"); @Override public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, ExecutionContext executionContext) { J.MethodInvocation mi = super.visitMethodInvocation(method, executionContext); if (rmaMatcher.matches(mi) && !returnValueIsUsed()) { - mi = mi.withTemplate(JavaTemplate.builder(() -> getCursor().getParentOrThrow(), "#{any(java.util.Collection)}.forEach(#{any(java.util.Set)}::remove)").build(), + mi = JavaTemplate.builder("#{any(java.util.Collection)}.forEach(#{any(java.util.Set)}::remove)")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().build().apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), mi.getCoordinates().replace(), mi.getArguments().get(0), mi.getSelect()); } return mi; @@ -73,6 +66,6 @@ } return true; } - }; + }); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/BigDecimalRoundingConstantsToEnums.java b/src/main/java/org/openrewrite/staticanalysis/BigDecimalRoundingConstantsToEnums.java index 02671d9..ec04a1b 100644 --- a/src/main/java/org/openrewrite/staticanalysis/BigDecimalRoundingConstantsToEnums.java +++ b/src/main/java/org/openrewrite/staticanalysis/BigDecimalRoundingConstantsToEnums.java @@ -16,6 +16,7 @@ org.openrewrite.config.CompositeRecipe package org.openrewrite.staticanalysis; import org.openrewrite.ExecutionContext; +import org.openrewrite.Preconditions; import org.openrewrite.Recipe; import org.openrewrite.TreeVisitor; import org.openrewrite.internal.lang.Nullable; @@ -58,22 +59,17 @@ } @Override - protected JavaVisitor getSingleSourceApplicableTest() { - return new UsesType<>("java.math.BigDecimal", false); - } - - @Override public TreeVisitor getVisitor() { - return new JavaIsoVisitor() { - private final JavaTemplate twoArgDivide = JavaTemplate.builder(this::getCursor, "#{any(java.math.BigDecimal)}, #{}") + return Preconditions.check(new UsesType<>("java.math.BigDecimal", false), new JavaIsoVisitor() { + private final JavaTemplate twoArgDivide = JavaTemplate.builder( "#{any(java.math.BigDecimal)}, #{}")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive() .imports("java.math.RoundingMode") .build(); - private final JavaTemplate twoArgScale = JavaTemplate.builder(this::getCursor, "#{any(int)}, #{}") + private final JavaTemplate twoArgScale = JavaTemplate.builder( "#{any(int)}, #{}")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive() .imports("java.math.RoundingMode") .build(); - private final JavaTemplate threeArg = JavaTemplate.builder(this::getCursor, "#{any(java.math.BigDecimal)}, #{any(int)}, #{}") + private final JavaTemplate threeArg = JavaTemplate.builder( "#{any(java.math.BigDecimal)}, #{any(int)}, #{}")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive() .imports("java.math.RoundingMode").build(); @Override @@ -85,7 +81,7 @@ if (roundingModeEnum == null) { return m; } - m = m.withTemplate(twoArgDivide, m.getCoordinates().replaceArguments(), + m = twoArgDivide.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), m.getCoordinates().replaceArguments(), m.getArguments().get(0), roundingModeEnum); maybeAddImport("java.math.RoundingMode"); } else if (BIG_DECIMAL_SET_SCALE.matches(m) && isConvertibleBigDecimalConstant(m.getArguments().get(1))) { @@ -93,7 +89,7 @@ if (roundingModeEnum == null) { return m; } - m = m.withTemplate(twoArgScale, m.getCoordinates().replaceArguments(), + m = twoArgScale.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), m.getCoordinates().replaceArguments(), m.getArguments().get(0), roundingModeEnum); maybeAddImport("java.math.RoundingMode"); } else if (BIG_DECIMAL_DIVIDE_WITH_SCALE.matches(m) && @@ -102,7 +98,7 @@ if (roundingModeEnum == null) { return m; } - m = m.withTemplate(threeArg, m.getCoordinates().replaceArguments(), + m = threeArg.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), m.getCoordinates().replaceArguments(), m.getArguments().get(0), m.getArguments().get(1), roundingModeEnum); maybeAddImport("java.math.RoundingMode"); } @@ -160,6 +156,6 @@ } return null; } - }; + }); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/RemoveUnusedPrivateMethods.java b/src/main/java/org/openrewrite/staticanalysis/RemoveUnusedPrivateMethods.java index 400b4d7..b03529d 100644 --- a/src/main/java/org/openrewrite/staticanalysis/RemoveUnusedPrivateMethods.java +++ b/src/main/java/org/openrewrite/staticanalysis/RemoveUnusedPrivateMethods.java @@ -16,6 +16,7 @@ org.openrewrite.config.CompositeRecipe package org.openrewrite.staticanalysis; import org.openrewrite.ExecutionContext; +import org.openrewrite.Preconditions; import org.openrewrite.Recipe; import org.openrewrite.TreeVisitor; import org.openrewrite.internal.lang.Nullable; @@ -50,13 +51,8 @@ } @Override - protected @Nullable TreeVisitor getSingleSourceApplicableTest() { - return new NoMissingTypes(); - } - - @Override - public JavaIsoVisitor getVisitor() { - return new JavaIsoVisitor() { + public TreeVisitor getVisitor() { + return Preconditions.check(new NoMissingTypes(), new JavaIsoVisitor() { @Override public J.MethodDeclaration visitMethodDeclaration(J.MethodDeclaration method, ExecutionContext ctx) { J.MethodDeclaration m = super.visitMethodDeclaration(method, ctx); @@ -66,7 +62,7 @@ method.getAllAnnotations().isEmpty()) { J.ClassDeclaration classDeclaration = getCursor().firstEnclosing(J.ClassDeclaration.class); - if(classDeclaration == null) { + if (classDeclaration == null) { return m; } if (TypeUtils.isAssignableTo("java.io.Serializable", classDeclaration.getType())) { @@ -106,6 +102,6 @@ return m; } - }; + }); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/RenameLocalVariablesToCamelCase.java b/src/main/java/org/openrewrite/staticanalysis/RenameLocalVariablesToCamelCase.java index d48a6f1..76e516a 100644 --- a/src/main/java/org/openrewrite/staticanalysis/RenameLocalVariablesToCamelCase.java +++ b/src/main/java/org/openrewrite/staticanalysis/RenameLocalVariablesToCamelCase.java @@ -15,10 +15,8 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.Cursor; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; -import org.openrewrite.TreeVisitor; +import org.openrewrite.*; +import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.RenameVariable; import org.openrewrite.java.tree.J; @@ -75,22 +73,26 @@ } private static class RenameNonCompliantNames extends JavaIsoVisitor { + @Override - public JavaSourceFile visitJavaSourceFile(JavaSourceFile cu, ExecutionContext ctx) { - Map renameVariablesMap = new LinkedHashMap<>(); - Set hasNameSet = new HashSet<>(); + public @Nullable J visit(@Nullable Tree tree, ExecutionContext ctx) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile cu = (JavaSourceFile) tree; + Map renameVariablesMap = new LinkedHashMap<>(); + Set hasNameSet = new HashSet<>(); - getCursor().putMessage("RENAME_VARIABLES_KEY", renameVariablesMap); - getCursor().putMessage("HAS_NAME_KEY", hasNameSet); - super.visitJavaSourceFile(cu, ctx); + getCursor().putMessage("RENAME_VARIABLES_KEY", renameVariablesMap); + getCursor().putMessage("HAS_NAME_KEY", hasNameSet); + super.visit(cu, ctx); - renameVariablesMap.forEach((key, value) -> { - if (!hasNameSet.contains(value)) { - doAfterVisit(new RenameVariable<>(key, value)); - hasNameSet.add(value); - } - }); - return cu; + renameVariablesMap.forEach((key, value) -> { + if (!hasNameSet.contains(value)) { + doAfterVisit(new RenameVariable<>(key, value)); + hasNameSet.add(value); + } + }); + } + return super.visit(tree, ctx); } @SuppressWarnings("all") diff --git a/src/main/java/org/openrewrite/staticanalysis/ReplaceLambdaWithMethodReference.java b/src/main/java/org/openrewrite/staticanalysis/ReplaceLambdaWithMethodReference.java index 607eacf..e7b27c3 100644 --- a/src/main/java/org/openrewrite/staticanalysis/ReplaceLambdaWithMethodReference.java +++ b/src/main/java/org/openrewrite/staticanalysis/ReplaceLambdaWithMethodReference.java @@ -19,6 +19,7 @@ org.openrewrite.config.CompositeRecipe import org.openrewrite.Cursor; import org.openrewrite.ExecutionContext; import org.openrewrite.Recipe; +import org.openrewrite.TreeVisitor; import org.openrewrite.java.JavaParser; import org.openrewrite.java.JavaTemplate; import org.openrewrite.java.JavaVisitor; @@ -61,7 +62,7 @@ } @Override - public JavaVisitor getVisitor() { + public TreeVisitor getVisitor() { return new JavaVisitor() { @Override public J visitLambda(J.Lambda lambda, ExecutionContext executionContext) { @@ -108,10 +109,10 @@ @Language("java") String stub = fullyQualified == null ? "" : "package " + fullyQualified.getPackageName() + "; public class " + fullyQualified.getClassName(); - JavaTemplate template = JavaTemplate.builder(this::getCursor, code) + JavaTemplate template = JavaTemplate.builder( code)/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive() .javaParser(JavaParser.fromJavaVersion().dependsOn(stub)) .imports(fullyQualified == null ? "" : fullyQualified.getFullyQualifiedName()).build(); - return l.withTemplate(template, l.getCoordinates().replace(), identifier.getSimpleName()); + return template.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), l.getCoordinates().replace(), identifier.getSimpleName()); } else if (body instanceof J.Binary) { J.Binary binary = (J.Binary) body; if (isNullCheck(binary.getLeft(), binary.getRight()) || @@ -119,8 +120,7 @@ maybeAddImport("java.util.Objects"); code = J.Binary.Type.Equal.equals(binary.getOperator()) ? "Objects::isNull" : "Objects::nonNull"; - return l.withTemplate( - JavaTemplate.builder(this::getCursor, code).imports("java.util.Objects").build(), + return JavaTemplate.builder(code)/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().imports("java.util.Objects").build().apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), l.getCoordinates().replace()); } } else if (body instanceof MethodCall) { @@ -153,18 +153,18 @@ if (methodType.hasFlags(Flag.Static) || methodSelectMatchesFirstLambdaParameter(method, lambda)) { maybeAddImport(declaringType); - return l.withTemplate(JavaTemplate.builder(this::getCursor, "#{}::#{}") - .imports(declaringType.getFullyQualifiedName()) - .build(), + return JavaTemplate.builder("#{}::#{}")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive() + .imports(declaringType.getFullyQualifiedName()) + .build().apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), l.getCoordinates().replace(), declaringType.getClassName(), method.getMethodType().getName()); } else if (method instanceof J.NewClass) { - return l.withTemplate(JavaTemplate.builder(this::getCursor, "#{}::new").build(), + return JavaTemplate.builder("#{}::new")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().build().apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), l.getCoordinates().replace(), className((J.NewClass) method)); } else { String templ = select == null ? "#{}::#{}" : "#{any(" + declaringType.getFullyQualifiedName() + ")}::#{}"; - return l.withTemplate(JavaTemplate.builder(this::getCursor, templ).build(), + return JavaTemplate.builder(templ)/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().build().apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), l.getCoordinates().replace(), select == null ? "this" : select, method.getMethodType().getName()); } diff --git a/src/main/java/org/openrewrite/staticanalysis/ReplaceRedundantFormatWithPrintf.java b/src/main/java/org/openrewrite/staticanalysis/ReplaceRedundantFormatWithPrintf.java index 6f9bf84..45d09f3 100644 --- a/src/main/java/org/openrewrite/staticanalysis/ReplaceRedundantFormatWithPrintf.java +++ b/src/main/java/org/openrewrite/staticanalysis/ReplaceRedundantFormatWithPrintf.java @@ -15,10 +15,7 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.Applicability; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; -import org.openrewrite.TreeVisitor; +import org.openrewrite.*; import org.openrewrite.internal.ListUtils; import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; @@ -55,105 +52,95 @@ } @Override - protected @Nullable TreeVisitor getSingleSourceApplicableTest() { - return Applicability.and( - Applicability.or( - new UsesMethod<>(STRING_FORMAT_MATCHER_LOCALE), - new UsesMethod<>(STRING_FORMAT_MATCHER_NO_LOCALE) - ), - Applicability.or( - new UsesMethod<>(PRINTSTREAM_PRINT_MATCHER), - new UsesMethod<>(PRINTSTREAM_PRINTLN_MATCHER) - ) - ); - } + public TreeVisitor getVisitor() { + return Preconditions.check( + Preconditions.and( + Preconditions.or( + new UsesMethod<>(STRING_FORMAT_MATCHER_LOCALE), + new UsesMethod<>(STRING_FORMAT_MATCHER_NO_LOCALE)), + Preconditions.or( + new UsesMethod<>(PRINTSTREAM_PRINT_MATCHER), + new UsesMethod<>(PRINTSTREAM_PRINTLN_MATCHER))), new JavaIsoVisitor() { + @Override + public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) { + method = super.visitMethodInvocation(method, ctx); - @Override - protected TreeVisitor getVisitor() { - return new JavaIsoVisitor() { - @Override - public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) { - method = super.visitMethodInvocation(method, ctx); + final boolean needsNewline; + if (PRINTSTREAM_PRINTLN_MATCHER.matches(method)) { + needsNewline = true; + } else if (PRINTSTREAM_PRINT_MATCHER.matches(method)) { + needsNewline = false; + } else { + return method; + } - final boolean needsNewline; - if (PRINTSTREAM_PRINTLN_MATCHER.matches(method)) { - needsNewline = true; - } else if (PRINTSTREAM_PRINT_MATCHER.matches(method)) { - needsNewline = false; - } else { - return method; - } + final Expression arg = method.getArguments().get(0); + if (!(arg instanceof J.MethodInvocation)) { + return method; + } - final Expression arg = method.getArguments().get(0); - if (!(arg instanceof J.MethodInvocation)) { - return method; - } + final J.MethodInvocation innerMethodInvocation = (J.MethodInvocation) arg; - final J.MethodInvocation innerMethodInvocation = (J.MethodInvocation) arg; + final boolean hasLocaleArg; + if (STRING_FORMAT_MATCHER_NO_LOCALE.matches(innerMethodInvocation)) { + hasLocaleArg = false; + } else if (STRING_FORMAT_MATCHER_LOCALE.matches(innerMethodInvocation)) { + hasLocaleArg = true; + } else { + return method; + } - final boolean hasLocaleArg; - if (STRING_FORMAT_MATCHER_NO_LOCALE.matches(innerMethodInvocation)) { - hasLocaleArg = false; - } else if (STRING_FORMAT_MATCHER_LOCALE.matches(innerMethodInvocation)) { - hasLocaleArg = true; - } else { - return method; - } + final List originalFormatArgs = innerMethodInvocation.getArguments(); - final List originalFormatArgs = innerMethodInvocation.getArguments(); + List printfArgs; + if (needsNewline) { + Expression formatStringExpression = originalFormatArgs.get(hasLocaleArg ? 1 : 0); + if (!(formatStringExpression instanceof J.Literal)) { + return method; + } - List printfArgs; - if (needsNewline) { - Expression formatStringExpression = originalFormatArgs.get(hasLocaleArg ? 1 : 0); - if (!(formatStringExpression instanceof J.Literal)) { - return method; - } + J.Literal formatStringLiteral = (J.Literal) formatStringExpression; + Object formatStringValue = formatStringLiteral.getValue(); + if (!(formatStringValue instanceof String)) { + return method; + } - J.Literal formatStringLiteral = (J.Literal) formatStringExpression; - Object formatStringValue = formatStringLiteral.getValue(); - if (!(formatStringValue instanceof String)) { - return method; - } + formatStringLiteral = appendToStringLiteral(formatStringLiteral, "%n"); + if (formatStringLiteral == null) { + return method; + } - formatStringLiteral = appendToStringLiteral(formatStringLiteral, "%n"); - if (formatStringLiteral == null) { - return method; - } + List formatStringArgs = originalFormatArgs.subList(hasLocaleArg ? 2 : 1, originalFormatArgs.size()); + printfArgs = ListUtils.concat(formatStringLiteral, formatStringArgs); - List formatStringArgs = originalFormatArgs.subList(hasLocaleArg ? 2 : 1, originalFormatArgs.size()); - printfArgs = ListUtils.concat(formatStringLiteral, formatStringArgs); + if (hasLocaleArg) { + printfArgs = ListUtils.concat(originalFormatArgs.get(0), printfArgs); + } + } else { + printfArgs = originalFormatArgs; + } - if (hasLocaleArg) { - printfArgs = ListUtils.concat(originalFormatArgs.get(0), printfArgs); - } - } else { - printfArgs = originalFormatArgs; - } + // need to build the JavaTemplate code dynamically due to varargs + final StringBuilder code = new StringBuilder(); + code.append("printf("); + for (int i = 0; i < originalFormatArgs.size(); i++) { + JavaType argType = originalFormatArgs.get(i).getType(); + if (i != 0) { + code.append(", "); + } + code.append("#{any(" + argType + ")}"); + } + code.append(")"); - // need to build the JavaTemplate code dynamically due to varargs - final StringBuilder code = new StringBuilder(); - code.append("printf("); - for (int i = 0; i < originalFormatArgs.size(); i++) { - JavaType argType = originalFormatArgs.get(i).getType(); - if (i != 0) { - code.append(", "); - } - code.append("#{any(" + argType + ")}"); - } - code.append(")"); - - final JavaTemplate template = JavaTemplate.builder(this::getCursor, code.toString()).build(); - return maybeAutoFormat( - method, - method.withTemplate( - template, + final JavaTemplate template = JavaTemplate.builder( code.toString())/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().build(); + return maybeAutoFormat( + method, template.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), method.getCoordinates().replaceMethod(), - printfArgs.toArray() - ), - ctx - ); - } - }; + printfArgs.toArray()), + ctx + ); + } + }); } @Nullable diff --git a/src/main/java/org/openrewrite/staticanalysis/EmptyBlockVisitor.java b/src/main/java/org/openrewrite/staticanalysis/EmptyBlockVisitor.java index 8f30c25..8903ac7 100644 --- a/src/main/java/org/openrewrite/staticanalysis/EmptyBlockVisitor.java +++ b/src/main/java/org/openrewrite/staticanalysis/EmptyBlockVisitor.java @@ -41,10 +41,10 @@ org.openrewrite.config.CompositeRecipe @EqualsAndHashCode(callSuper = true) public class EmptyBlockVisitor

extends JavaIsoVisitor

{ EmptyBlockStyle emptyBlockStyle; - JavaTemplate throwException = JavaTemplate.builder(this::getCursor, "throw new #{}(#{any(String)});") + JavaTemplate throwException = JavaTemplate.builder( "throw new #{}(#{any(String)});")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive() .imports("java.io.UncheckedIOException") .build(); - JavaTemplate continueStatement = JavaTemplate.builder(this::getCursor, "continue;").build(); + JavaTemplate continueStatement = JavaTemplate.builder( "continue;")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().build(); @Override public J.WhileLoop visitWhileLoop(J.WhileLoop whileLoop, P p) { @@ -52,7 +52,7 @@ if (Boolean.TRUE.equals(emptyBlockStyle.getLiteralWhile()) && isEmptyBlock(w.getBody())) { J.Block body = (J.Block) w.getBody(); - w = w.withTemplate(continueStatement, body.getCoordinates().lastStatement()); + w = continueStatement.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), body.getCoordinates().lastStatement()); } return w; @@ -64,7 +64,7 @@ if (Boolean.TRUE.equals(emptyBlockStyle.getLiteralWhile()) && isEmptyBlock(w.getBody())) { J.Block body = (J.Block) w.getBody(); - w = w.withTemplate(continueStatement, body.getCoordinates().lastStatement()); + w = continueStatement.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), body.getCoordinates().lastStatement()); } return w; diff --git a/src/main/java/org/openrewrite/staticanalysis/UseJavaStyleArrayDeclarations.java b/src/main/java/org/openrewrite/staticanalysis/UseJavaStyleArrayDeclarations.java index 0cef6a8..6d8fccf 100644 --- a/src/main/java/org/openrewrite/staticanalysis/UseJavaStyleArrayDeclarations.java +++ b/src/main/java/org/openrewrite/staticanalysis/UseJavaStyleArrayDeclarations.java @@ -16,7 +16,9 @@ org.openrewrite.config.CompositeRecipe package org.openrewrite.staticanalysis; import org.openrewrite.ExecutionContext; +import org.openrewrite.Preconditions; import org.openrewrite.Recipe; +import org.openrewrite.TreeVisitor; import org.openrewrite.internal.ListUtils; import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; @@ -54,8 +56,9 @@ } @Override - protected JavaIsoVisitor getSingleSourceApplicableTest() { - return new JavaIsoVisitor() { + public TreeVisitor getVisitor() { + + return Preconditions.check(new JavaIsoVisitor() { @Override public J.ArrayType visitArrayType(J.ArrayType arrayType, ExecutionContext executionContext) { return SearchResult.found(arrayType); @@ -68,13 +71,7 @@ } return variable; } - }; - } - - @Override - public JavaIsoVisitor getVisitor() { - - return new JavaIsoVisitor() { + }, new JavaIsoVisitor() { @Override public VariableDeclarations visitVariableDeclarations(VariableDeclarations multiVariable, ExecutionContext executionContext) { VariableDeclarations varDecls = super.visitVariableDeclarations(multiVariable, executionContext); @@ -94,6 +91,6 @@ } return nv; } - }; + }); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/PrimitiveWrapperClassConstructorToValueOf.java b/src/main/java/org/openrewrite/staticanalysis/PrimitiveWrapperClassConstructorToValueOf.java index a37c21d..0e11ade 100644 --- a/src/main/java/org/openrewrite/staticanalysis/PrimitiveWrapperClassConstructorToValueOf.java +++ b/src/main/java/org/openrewrite/staticanalysis/PrimitiveWrapperClassConstructorToValueOf.java @@ -15,10 +15,7 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.Applicability; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; -import org.openrewrite.TreeVisitor; +import org.openrewrite.*; import org.openrewrite.java.JavaTemplate; import org.openrewrite.java.JavaVisitor; import org.openrewrite.java.search.UsesType; @@ -51,71 +48,66 @@ } @Override - protected TreeVisitor getSingleSourceApplicableTest() { - return Applicability.or( - new UsesType<>("java.lang.Boolean", false), - new UsesType<>("java.lang.Byte", false), - new UsesType<>("java.lang.Character", false), - new UsesType<>("java.lang.Double", false), - new UsesType<>("java.lang.Float", false), - new UsesType<>("java.lang.Integer", false), - new UsesType<>("java.lang.Long", false), - new UsesType<>("java.lang.Short", false) - ); - } - - @Override public TreeVisitor getVisitor() { - return new JavaVisitor() { - @Override - public J visitNewClass(J.NewClass newClass, ExecutionContext executionContext) { - J.NewClass nc = (J.NewClass) super.visitNewClass(newClass, executionContext); - JavaType.FullyQualified type = TypeUtils.asFullyQualified(nc.getType()); - if (type != null && nc.getArguments().size() == 1) { - Expression arg = nc.getArguments().get(0); - JavaTemplate.Builder valueOf; - switch (type.getFullyQualifiedName()) { - case "java.lang.Boolean": - valueOf = JavaTemplate.builder(this::getCursor, "Boolean.valueOf(#{any(boolean)})"); - break; - case "java.lang.Byte": - valueOf = JavaTemplate.builder(this::getCursor, "Byte.valueOf(#{any(byte)})"); - break; - case "java.lang.Character": - valueOf = JavaTemplate.builder(this::getCursor, "Character.valueOf(#{any(char)})"); - break; - case "java.lang.Double": - valueOf = JavaTemplate.builder(this::getCursor, "Double.valueOf(#{any(double)})"); - break; - case "java.lang.Integer": - valueOf = JavaTemplate.builder(this::getCursor, "Integer.valueOf(#{any(int)})"); - break; - case "java.lang.Long": - valueOf = JavaTemplate.builder(this::getCursor, "Long.valueOf(#{any(long)})"); - break; - case "java.lang.Short": - valueOf = JavaTemplate.builder(this::getCursor, "Short.valueOf(#{any(short)})"); - break; - case "java.lang.Float": - if (arg instanceof J.Literal && JavaType.Primitive.Double == ((J.Literal) arg).getType()) { - arg = ((J.Literal) arg).withType(JavaType.Primitive.String); - arg = ((J.Literal) arg).withValueSource("\"" + ((J.Literal) arg).getValue() + "\""); - } + return Preconditions.check( + Preconditions.or( + new UsesType<>("java.lang.Boolean", false), + new UsesType<>("java.lang.Byte", false), + new UsesType<>("java.lang.Character", false), + new UsesType<>("java.lang.Double", false), + new UsesType<>("java.lang.Float", false), + new UsesType<>("java.lang.Integer", false), + new UsesType<>("java.lang.Long", false), + new UsesType<>("java.lang.Short", false)), new JavaVisitor() { + @Override + public J visitNewClass(J.NewClass newClass, ExecutionContext executionContext) { + J.NewClass nc = (J.NewClass) super.visitNewClass(newClass, executionContext); + JavaType.FullyQualified type = TypeUtils.asFullyQualified(nc.getType()); + if (type != null && nc.getArguments().size() == 1) { + Expression arg = nc.getArguments().get(0); + JavaTemplate.Builder valueOf; + switch (type.getFullyQualifiedName()) { + case "java.lang.Boolean": + valueOf =JavaTemplate.builder( "Boolean.valueOf(#{any(boolean)})")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive(); + break; + case "java.lang.Byte": + valueOf =JavaTemplate.builder( "Byte.valueOf(#{any(byte)})")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive(); + break; + case "java.lang.Character": + valueOf =JavaTemplate.builder( "Character.valueOf(#{any(char)})")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive(); + break; + case "java.lang.Double": + valueOf =JavaTemplate.builder( "Double.valueOf(#{any(double)})")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive(); + break; + case "java.lang.Integer": + valueOf =JavaTemplate.builder( "Integer.valueOf(#{any(int)})")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive(); + break; + case "java.lang.Long": + valueOf =JavaTemplate.builder( "Long.valueOf(#{any(long)})")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive(); + break; + case "java.lang.Short": + valueOf =JavaTemplate.builder( "Short.valueOf(#{any(short)})")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive(); + break; + case "java.lang.Float": + if (arg instanceof J.Literal && JavaType.Primitive.Double == ((J.Literal) arg).getType()) { + arg = ((J.Literal) arg).withType(JavaType.Primitive.String); + arg = ((J.Literal) arg).withValueSource("\"" + ((J.Literal) arg).getValue() + "\""); + } - JavaType argType = arg.getType(); - if (TypeUtils.isOfClassType(argType, "java.lang.Double")) { - valueOf = JavaTemplate.builder(this::getCursor, "Float.valueOf(#{any(java.lang.Double)}.floatValue())"); - } else { - valueOf = JavaTemplate.builder(this::getCursor, "Float.valueOf(#{any(float)})"); + JavaType argType = arg.getType(); + if (TypeUtils.isOfClassType(argType, "java.lang.Double")) { + valueOf =JavaTemplate.builder( "Float.valueOf(#{any(java.lang.Double)}.floatValue())")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive(); + } else { + valueOf =JavaTemplate.builder( "Float.valueOf(#{any(float)})")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive(); + } + break; + default: + return nc; } - break; - default: - return nc; + return valueOf.build().apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), nc.getCoordinates().replace(), arg); + } + return nc; } - return nc.withTemplate(valueOf.build(), nc.getCoordinates().replace(), arg); - } - return nc; - } - }; + }); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/OperatorWrap.java b/src/main/java/org/openrewrite/staticanalysis/OperatorWrap.java index b0e4ce1..abe60fa 100755 --- a/src/main/java/org/openrewrite/staticanalysis/OperatorWrap.java +++ b/src/main/java/org/openrewrite/staticanalysis/OperatorWrap.java @@ -15,10 +15,9 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; -import org.openrewrite.SourceFile; +import org.openrewrite.*; import org.openrewrite.internal.ListUtils; +import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.style.Checkstyle; import org.openrewrite.java.style.OperatorWrapStyle; @@ -39,7 +38,7 @@ } @Override - public JavaIsoVisitor getVisitor() { + public TreeVisitor getVisitor() { return new OperatorWrapVisitor(); } @@ -47,10 +46,13 @@ OperatorWrapStyle operatorWrapStyle; @Override - public JavaSourceFile visitJavaSourceFile(JavaSourceFile javaSourceFile, ExecutionContext ctx) { - SourceFile cu = (SourceFile)javaSourceFile; - operatorWrapStyle = cu.getStyle(OperatorWrapStyle.class) == null ? Checkstyle.operatorWrapStyle() : cu.getStyle(OperatorWrapStyle.class); - return super.visitJavaSourceFile((JavaSourceFile) cu, ctx); + public @Nullable J visit(@Nullable Tree tree, ExecutionContext ctx) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile javaSourceFile = (JavaSourceFile) tree; + SourceFile cu = (SourceFile) javaSourceFile; + operatorWrapStyle = cu.getStyle(OperatorWrapStyle.class) == null ? Checkstyle.operatorWrapStyle() : cu.getStyle(OperatorWrapStyle.class); + } + return super.visit(tree, ctx); } @Override diff --git a/src/main/java/org/openrewrite/staticanalysis/PadEmptyForLoopComponents.java b/src/main/java/org/openrewrite/staticanalysis/PadEmptyForLoopComponents.java index 0c507f0..41d396c 100755 --- a/src/main/java/org/openrewrite/staticanalysis/PadEmptyForLoopComponents.java +++ b/src/main/java/org/openrewrite/staticanalysis/PadEmptyForLoopComponents.java @@ -15,9 +15,7 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; -import org.openrewrite.SourceFile; +import org.openrewrite.*; import org.openrewrite.internal.ListUtils; import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; @@ -46,62 +44,62 @@ } @Override - protected @Nullable JavaIsoVisitor getSingleSourceApplicableTest() { - return new JavaIsoVisitor() { + public TreeVisitor getVisitor() { + return Preconditions.check(new JavaIsoVisitor() { @Override - public JavaSourceFile visitJavaSourceFile(JavaSourceFile javaSourceFile, ExecutionContext executionContext) { - SourceFile cu = (SourceFile) javaSourceFile; - if(cu.getStyle(EmptyForIteratorPadStyle.class) != null || cu.getStyle(EmptyForInitializerPadStyle.class) != null) { - return cu.withMarkers(cu.getMarkers().add(new SearchResult(randomId(), null))); + public @Nullable J visit(@Nullable Tree tree, ExecutionContext executionContext) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile javaSourceFile = (JavaSourceFile) tree; + SourceFile cu = (SourceFile) javaSourceFile; + if (cu.getStyle(EmptyForIteratorPadStyle.class) != null || cu.getStyle(EmptyForInitializerPadStyle.class) != null) { + return cu.withMarkers(cu.getMarkers().add(new SearchResult(randomId(), null))); + } } - return (JavaSourceFile) cu; + return super.visit(tree, executionContext); } - }; - } - - @Override - public JavaIsoVisitor getVisitor() { - return new JavaIsoVisitor() { + }, new JavaIsoVisitor() { @Nullable EmptyForIteratorPadStyle emptyForIteratorPadStyle; @Nullable EmptyForInitializerPadStyle emptyForInitializerPadStyle; - @Override - public JavaSourceFile visitJavaSourceFile(JavaSourceFile javaSourceFile, ExecutionContext executionContext) { - SourceFile cu = (SourceFile)javaSourceFile; - emptyForInitializerPadStyle = cu.getStyle(EmptyForInitializerPadStyle.class); - emptyForIteratorPadStyle = cu.getStyle(EmptyForIteratorPadStyle.class); - return super.visitJavaSourceFile((JavaSourceFile)cu, executionContext); + public @Nullable J visit(@Nullable Tree tree, ExecutionContext executionContext) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile javaSourceFile = (JavaSourceFile) tree; + SourceFile cu = (SourceFile) javaSourceFile; + emptyForInitializerPadStyle = cu.getStyle(EmptyForInitializerPadStyle.class); + emptyForIteratorPadStyle = cu.getStyle(EmptyForIteratorPadStyle.class); + } + return super.visit(tree, executionContext); } @Override public J.ForLoop visitForLoop(J.ForLoop forLoop, ExecutionContext executionContext) { J.ForLoop fl = super.visitForLoop(forLoop, executionContext); List updates = forLoop.getControl().getUpdate(); - if(emptyForIteratorPadStyle != null && updates.size() == 1 && updates.get(0) instanceof J.Empty) { + if (emptyForIteratorPadStyle != null && updates.size() == 1 && updates.get(0) instanceof J.Empty) { Statement update = updates.get(0); - if(emptyForIteratorPadStyle.getSpace() && update.getPrefix().getWhitespace().isEmpty()) { + if (emptyForIteratorPadStyle.getSpace() && update.getPrefix().getWhitespace().isEmpty()) { update = update.withPrefix(update.getPrefix().withWhitespace(" ")); - } else if(!emptyForIteratorPadStyle.getSpace() && !update.getPrefix().getWhitespace().isEmpty()) { + } else if (!emptyForIteratorPadStyle.getSpace() && !update.getPrefix().getWhitespace().isEmpty()) { update = update.withPrefix(update.getPrefix().withWhitespace("")); } fl = fl.withControl(fl.getControl().withUpdate(singletonList(update))); } List init = forLoop.getControl().getInit(); - if(emptyForInitializerPadStyle != null && init.get(0) instanceof J.Empty) { - if(emptyForInitializerPadStyle.getSpace() && init.get(0).getPrefix().getWhitespace().isEmpty()) { + if (emptyForInitializerPadStyle != null && init.get(0) instanceof J.Empty) { + if (emptyForInitializerPadStyle.getSpace() && init.get(0).getPrefix().getWhitespace().isEmpty()) { init = ListUtils.mapFirst(init, i -> i.withPrefix(i.getPrefix().withWhitespace(" "))); - } else if(!emptyForInitializerPadStyle.getSpace() && !init.get(0).getPrefix().getWhitespace().isEmpty()) { + } else if (!emptyForInitializerPadStyle.getSpace() && !init.get(0).getPrefix().getWhitespace().isEmpty()) { init = ListUtils.mapFirst(init, i -> i.withPrefix(i.getPrefix().withWhitespace(""))); } fl = fl.withControl(fl.getControl().withInit(init)); } return fl; } - }; + }); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/RemoveRedundantTypeCast.java b/src/main/java/org/openrewrite/staticanalysis/RemoveRedundantTypeCast.java index ffb63d4..2a37657 100644 --- a/src/main/java/org/openrewrite/staticanalysis/RemoveRedundantTypeCast.java +++ b/src/main/java/org/openrewrite/staticanalysis/RemoveRedundantTypeCast.java @@ -49,7 +49,7 @@ org.openrewrite.config.CompositeRecipe } @Override - public JavaVisitor getVisitor() { + public TreeVisitor getVisitor() { return new JavaVisitor() { @Override public J visitTypeCast(J.TypeCast typeCast, ExecutionContext executionContext) { diff --git a/src/main/java/org/openrewrite/staticanalysis/SimplifyConstantIfBranchExecution.java b/src/main/java/org/openrewrite/staticanalysis/SimplifyConstantIfBranchExecution.java index 284a718..9843eca 100644 --- a/src/main/java/org/openrewrite/staticanalysis/SimplifyConstantIfBranchExecution.java +++ b/src/main/java/org/openrewrite/staticanalysis/SimplifyConstantIfBranchExecution.java @@ -15,10 +15,7 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; -import org.openrewrite.SourceFile; -import org.openrewrite.Tree; +import org.openrewrite.*; import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.JavaVisitor; @@ -44,7 +41,7 @@ } @Override - public JavaVisitor getVisitor() { + public TreeVisitor getVisitor() { return new SimplifyConstantIfBranchExecutionVisitor(); } diff --git a/src/main/java/org/openrewrite/staticanalysis/InlineVariable.java b/src/main/java/org/openrewrite/staticanalysis/InlineVariable.java index 77a1990..e80ed35 100644 --- a/src/main/java/org/openrewrite/staticanalysis/InlineVariable.java +++ b/src/main/java/org/openrewrite/staticanalysis/InlineVariable.java @@ -17,6 +17,7 @@ org.openrewrite.config.CompositeRecipe import org.openrewrite.ExecutionContext; import org.openrewrite.Recipe; +import org.openrewrite.TreeVisitor; import org.openrewrite.internal.ListUtils; import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; @@ -55,7 +56,7 @@ } @Override - public JavaVisitor getVisitor() { + public TreeVisitor getVisitor() { return new JavaIsoVisitor() { @Override public J.Block visitBlock(J.Block block, ExecutionContext executionContext) { diff --git a/src/main/java/org/openrewrite/staticanalysis/UseListSort.java b/src/main/java/org/openrewrite/staticanalysis/UseListSort.java index 0a94bd4..3a4ea9f 100644 --- a/src/main/java/org/openrewrite/staticanalysis/UseListSort.java +++ b/src/main/java/org/openrewrite/staticanalysis/UseListSort.java @@ -16,6 +16,7 @@ org.openrewrite.config.CompositeRecipe package org.openrewrite.staticanalysis; import org.openrewrite.ExecutionContext; +import org.openrewrite.Preconditions; import org.openrewrite.Recipe; import org.openrewrite.TreeVisitor; import org.openrewrite.internal.lang.Nullable; @@ -38,13 +39,8 @@ } @Override - protected @Nullable TreeVisitor getSingleSourceApplicableTest() { - return new UsesMethod<>(new MethodMatcher("java.util.Collections sort(..)")); - } - - @Override - protected JavaIsoVisitor getVisitor() { - return new JavaIsoVisitor() { + public TreeVisitor getVisitor() { + return Preconditions.check(new UsesMethod<>(new MethodMatcher("java.util.Collections sort(..)")), new JavaIsoVisitor() { final MethodMatcher csM = new MethodMatcher("java.util.Collections sort(..)"); @Override public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, ExecutionContext executionContext) { @@ -52,17 +48,17 @@ if (csM.matches(mi)) { maybeRemoveImport("java.util.Collections"); if (mi.getArguments().size() == 1) { - return mi.withTemplate(JavaTemplate.builder(() -> getCursor().getParent(), "#{any(java.util.List)}.sort(null)") - .imports("java.util.List").build(), + return JavaTemplate.builder("#{any(java.util.List)}.sort(null)")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive() + .imports("java.util.List").build().apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), mi.getCoordinates().replace(), mi.getArguments().get(0)); } else { - return mi.withTemplate(JavaTemplate.builder(() -> getCursor().getParent(), "#{any(java.util.List)}.sort(#{any(java.util.Comparator)})") - .imports("java.util.List", "java.util.Comparator").build(), + return JavaTemplate.builder("#{any(java.util.List)}.sort(#{any(java.util.Comparator)})")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive() + .imports("java.util.List", "java.util.Comparator").build().apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), mi.getCoordinates().replace(), mi.getArguments().get(0), mi.getArguments().get(1)); } } return mi; } - }; + }); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/AtomicPrimitiveEqualsUsesGet.java b/src/main/java/org/openrewrite/staticanalysis/AtomicPrimitiveEqualsUsesGet.java index d624a42..02bf069 100644 --- a/src/main/java/org/openrewrite/staticanalysis/AtomicPrimitiveEqualsUsesGet.java +++ b/src/main/java/org/openrewrite/staticanalysis/AtomicPrimitiveEqualsUsesGet.java @@ -15,8 +15,7 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; +import org.openrewrite.*; import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.JavaTemplate; @@ -49,21 +48,19 @@ } @Override - protected JavaIsoVisitor getSingleSourceApplicableTest() { - return new JavaIsoVisitor() { + public TreeVisitor getVisitor() { + return Preconditions.check(new JavaIsoVisitor() { @Override - public JavaSourceFile visitJavaSourceFile(JavaSourceFile cu, ExecutionContext ctx) { - doAfterVisit(new UsesType<>("java.util.concurrent.atomic.AtomicBoolean", true)); - doAfterVisit(new UsesType<>("java.util.concurrent.atomic.AtomicInteger", true)); - doAfterVisit(new UsesType<>("java.util.concurrent.atomic.AtomicLong", true)); - return cu; + public @Nullable J visit(@Nullable Tree tree, ExecutionContext ctx) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile cu = (JavaSourceFile) tree; + doAfterVisit(new UsesType<>("java.util.concurrent.atomic.AtomicBoolean", true)); + doAfterVisit(new UsesType<>("java.util.concurrent.atomic.AtomicInteger", true)); + doAfterVisit(new UsesType<>("java.util.concurrent.atomic.AtomicLong", true)); + } + return super.visit(tree, ctx); } - }; - } - - @Override - public JavaVisitor getVisitor() { - return new JavaVisitor() { + }, new JavaVisitor() { private final MethodMatcher aiMethodMatcher = new MethodMatcher("java.lang.Object equals(java.lang.Object)"); @Override @@ -74,8 +71,8 @@ JavaType.FullyQualified fqt = TypeUtils.asFullyQualified(mi.getSelect().getType()); if (fqt != null) { String templateString = "#{any(" + fqt.getFullyQualifiedName() + ")}.get() == #{any(" + fqt.getFullyQualifiedName() + ")}.get()"; - return mi.withTemplate(JavaTemplate.builder(this::getCursor, templateString) - .imports(fqt.getFullyQualifiedName()).build(), + return JavaTemplate.builder(templateString)/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive() + .imports(fqt.getFullyQualifiedName()).build().apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), mi.getCoordinates().replace(), mi.getSelect(), mi.getArguments().get(0)); } } @@ -92,6 +89,6 @@ } return false; } - }; + }); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/ReplaceStackWithDeque.java b/src/main/java/org/openrewrite/staticanalysis/ReplaceStackWithDeque.java index cccdcd9..8e25766 100644 --- a/src/main/java/org/openrewrite/staticanalysis/ReplaceStackWithDeque.java +++ b/src/main/java/org/openrewrite/staticanalysis/ReplaceStackWithDeque.java @@ -15,10 +15,7 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.Cursor; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; -import org.openrewrite.TreeVisitor; +import org.openrewrite.*; import org.openrewrite.java.ChangeType; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.search.UsesType; @@ -38,13 +35,8 @@ } @Override - protected TreeVisitor getSingleSourceApplicableTest() { - return new UsesType<>("java.util.Stack", false); - } - - @Override - protected TreeVisitor getVisitor() { - return new JavaIsoVisitor() { + public TreeVisitor getVisitor() { + return Preconditions.check(new UsesType<>("java.util.Stack", false), new JavaIsoVisitor() { @Override public J.VariableDeclarations.NamedVariable visitVariable(J.VariableDeclarations.NamedVariable variable, ExecutionContext ctx) { J.VariableDeclarations.NamedVariable v = super.visitVariable(variable, ctx); @@ -56,7 +48,7 @@ @Override public J.VariableDeclarations visitVariableDeclarations(J.VariableDeclarations multiVariable, ExecutionContext ctx) { J.VariableDeclarations v = super.visitVariableDeclarations(multiVariable, ctx); - if(getCursor().getMessage("replace", false)) { + if (getCursor().getMessage("replace", false)) { v = (J.VariableDeclarations) new ChangeType("java.util.Stack", "java.util.Deque", false) .getVisitor().visitNonNull(v, ctx, getCursor().getParentOrThrow()); maybeAddImport("java.util.ArrayDeque"); @@ -64,6 +56,6 @@ } return v; } - }; + }); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/ReplaceDeprecatedRuntimeExecMethods.java b/src/main/java/org/openrewrite/staticanalysis/ReplaceDeprecatedRuntimeExecMethods.java index b711282..9b47b00 100644 --- a/src/main/java/org/openrewrite/staticanalysis/ReplaceDeprecatedRuntimeExecMethods.java +++ b/src/main/java/org/openrewrite/staticanalysis/ReplaceDeprecatedRuntimeExecMethods.java @@ -16,6 +16,7 @@ org.openrewrite.config.CompositeRecipe package org.openrewrite.staticanalysis; import org.openrewrite.ExecutionContext; +import org.openrewrite.Preconditions; import org.openrewrite.Recipe; import org.openrewrite.TreeVisitor; import org.openrewrite.internal.lang.Nullable; @@ -53,13 +54,8 @@ } @Override - protected @Nullable TreeVisitor getSingleSourceApplicableTest() { - return new UsesJavaVersion<>(18); - } - - @Override - protected TreeVisitor getVisitor() { - return new JavaIsoVisitor() { + public TreeVisitor getVisitor() { + return Preconditions.check(new UsesJavaVersion<>(18), new JavaIsoVisitor() { @Override public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, ExecutionContext executionContext) { J.MethodInvocation m = super.visitMethodInvocation(method, executionContext); @@ -67,7 +63,7 @@ if (RUNTIME_EXEC_CMD.matches(m) || RUNTIME_EXEC_CMD_ENVP.matches(m) || RUNTIME_EXEC_CMD_ENVP_FILE.matches(m)) { Expression command = m.getArguments().get(0); List commands = new ArrayList<>(); - boolean flattenAble= ChainStringBuilderAppendCalls.flatAdditiveExpressions(command, commands); + boolean flattenAble = ChainStringBuilderAppendCalls.flatAdditiveExpressions(command, commands); StringBuilder sb = new StringBuilder(); if (flattenAble) { @@ -84,32 +80,30 @@ if (flattenAble) { String[] cmds = sb.toString().split(" "); String templateCode = String.format("new String[] {%s}", toStringArguments(cmds)); - JavaTemplate template = JavaTemplate.builder( - this::getCursor, templateCode).build(); + JavaTemplate template = JavaTemplate.builder( templateCode)/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().build(); List args = m.getArguments(); - args.set(0, args.get(0).withTemplate(template, args.get(0).getCoordinates().replace())); + args.set(0, template.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), args.get(0).getCoordinates().replace())); List parameterTypes = m.getMethodType().getParameterTypes(); parameterTypes.set(0, JavaType.ShallowClass.build("java.lang.String[]")); return m.withArguments(args) - .withMethodType(m.getMethodType().withParameterTypes(parameterTypes)); + .withMethodType(m.getMethodType().withParameterTypes(parameterTypes)); } else { // replace argument to 'command.split(" ")' List args = m.getArguments(); boolean needWrap = false; Expression arg0 = args.get(0); if (!(arg0 instanceof J.Identifier) && - !(arg0 instanceof J.Literal) && - !(arg0 instanceof J.MethodInvocation)) { + !(arg0 instanceof J.Literal) && + !(arg0 instanceof J.MethodInvocation)) { needWrap = true; } String code = needWrap ? "(#{any()}).split(\" \")" : "#{any()}.split(\" \")"; - JavaTemplate template = JavaTemplate.builder( - this::getCursor, code).build(); - arg0 = args.get(0).withTemplate(template, args.get(0).getCoordinates().replace(), args.get(0)); + JavaTemplate template = JavaTemplate.builder( code)/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().build(); + arg0 = template.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), args.get(0).getCoordinates().replace(), args.get(0)); args.set(0, arg0); List parameterTypes = m.getMethodType().getParameterTypes(); @@ -121,7 +115,7 @@ return m; } - }; + }); } private static String toStringArguments(String[] cmds) { diff --git a/src/main/java/org/openrewrite/staticanalysis/RemoveUnneededAssertion.java b/src/main/java/org/openrewrite/staticanalysis/RemoveUnneededAssertion.java index 228b40a..00627dd 100644 --- a/src/main/java/org/openrewrite/staticanalysis/RemoveUnneededAssertion.java +++ b/src/main/java/org/openrewrite/staticanalysis/RemoveUnneededAssertion.java @@ -15,9 +15,7 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; -import org.openrewrite.TreeVisitor; +import org.openrewrite.*; import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.MethodMatcher; @@ -56,18 +54,20 @@ } @Override - protected @Nullable TreeVisitor getSingleSourceApplicableTest() { - return new JavaIsoVisitor() { - + public TreeVisitor getVisitor() { + return Preconditions.check(new JavaIsoVisitor() { @Override - public JavaSourceFile visitJavaSourceFile(JavaSourceFile cu, ExecutionContext executionContext) { - doAfterVisit(new UsesMethod<>(JUNIT_JUPITER_ASSERT_TRUE_MATCHER)); - doAfterVisit(new UsesMethod<>(JUNIT_JUPITER_ASSERT_FALSE_MATCHER)); - doAfterVisit(new UsesMethod<>(JUNIT_ASSERT_TRUE_MATCHER)); - doAfterVisit(new UsesMethod<>(JUNIT_ASSERT_FALSE_MATCHER)); - doAfterVisit(new UsesMethod<>(JUNIT_ASSERT_MESSAGE_TRUE_MATCHER)); - doAfterVisit(new UsesMethod<>(JUNIT_ASSERT_MESSAGE_FALSE_MATCHER)); - return super.visitJavaSourceFile(cu, executionContext); + public @Nullable J visit(@Nullable Tree tree, ExecutionContext executionContext) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile cu = (JavaSourceFile) tree; + doAfterVisit(new UsesMethod<>(JUNIT_JUPITER_ASSERT_TRUE_MATCHER)); + doAfterVisit(new UsesMethod<>(JUNIT_JUPITER_ASSERT_FALSE_MATCHER)); + doAfterVisit(new UsesMethod<>(JUNIT_ASSERT_TRUE_MATCHER)); + doAfterVisit(new UsesMethod<>(JUNIT_ASSERT_FALSE_MATCHER)); + doAfterVisit(new UsesMethod<>(JUNIT_ASSERT_MESSAGE_TRUE_MATCHER)); + doAfterVisit(new UsesMethod<>(JUNIT_ASSERT_MESSAGE_FALSE_MATCHER)); + } + return super.visit(tree, executionContext); } @Override @@ -77,12 +77,7 @@ } return _assert; } - }; - } - - @Override - protected TreeVisitor getVisitor() { - return new RemoveUnneededAssertionVisitor<>(); + }, new RemoveUnneededAssertionVisitor<>()); } private static class RemoveUnneededAssertionVisitor

extends JavaIsoVisitor

{ diff --git a/src/main/java/org/openrewrite/staticanalysis/ReplaceTextBlockWithString.java b/src/main/java/org/openrewrite/staticanalysis/ReplaceTextBlockWithString.java index 161fb4c..99963e4 100644 --- a/src/main/java/org/openrewrite/staticanalysis/ReplaceTextBlockWithString.java +++ b/src/main/java/org/openrewrite/staticanalysis/ReplaceTextBlockWithString.java @@ -15,10 +15,7 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; -import org.openrewrite.Tree; -import org.openrewrite.TreeVisitor; +import org.openrewrite.*; import org.openrewrite.java.JavaVisitor; import org.openrewrite.java.search.UsesJavaVersion; import org.openrewrite.java.tree.Expression; @@ -48,13 +45,8 @@ } @Override - protected TreeVisitor getSingleSourceApplicableTest() { - return new UsesJavaVersion<>(13); - } - - @Override - protected TreeVisitor getVisitor() { - return new ReplaceTextBlockWithStringVisitor(); + public TreeVisitor getVisitor() { + return Preconditions.check(new UsesJavaVersion<>(13), new ReplaceTextBlockWithStringVisitor()); } private static class ReplaceTextBlockWithStringVisitor extends JavaVisitor { diff --git a/src/main/java/org/openrewrite/staticanalysis/LambdaBlockToExpression.java b/src/main/java/org/openrewrite/staticanalysis/LambdaBlockToExpression.java index 5240849..088d0cd 100644 --- a/src/main/java/org/openrewrite/staticanalysis/LambdaBlockToExpression.java +++ b/src/main/java/org/openrewrite/staticanalysis/LambdaBlockToExpression.java @@ -15,9 +15,7 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; -import org.openrewrite.TreeVisitor; +import org.openrewrite.*; import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.JavaVisitor; @@ -42,22 +40,19 @@ } @Override - protected @Nullable TreeVisitor getSingleSourceApplicableTest() { - // Make this applicable only to Java source files. This transformation doesn't apply to Groovy - return new JavaIsoVisitor() { + public TreeVisitor getVisitor() { + return Preconditions.check(new JavaIsoVisitor() { @Override - public JavaSourceFile visitJavaSourceFile(JavaSourceFile cu, ExecutionContext executionContext) { - if(cu instanceof J.CompilationUnit) { - return cu.withMarkers(cu.getMarkers().add(new SearchResult(randomId(), null))); + public @Nullable J visit(@Nullable Tree tree, ExecutionContext executionContext) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile cu = (JavaSourceFile) tree; + if (cu instanceof J.CompilationUnit) { + return cu.withMarkers(cu.getMarkers().add(new SearchResult(randomId(), null))); + } } - return cu; + return super.visit(tree, executionContext); } - }; - } - - @Override - public JavaVisitor getVisitor() { - return new JavaIsoVisitor() { + }, new JavaIsoVisitor() { @Override public J.Lambda visitLambda(J.Lambda lambda, ExecutionContext executionContext) { J.Lambda l = super.visitLambda(lambda, executionContext); @@ -69,6 +64,6 @@ } return l; } - }; + }); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/RemoveCallsToSystemGc.java b/src/main/java/org/openrewrite/staticanalysis/RemoveCallsToSystemGc.java index 4dc4bef..3ebea00 100644 --- a/src/main/java/org/openrewrite/staticanalysis/RemoveCallsToSystemGc.java +++ b/src/main/java/org/openrewrite/staticanalysis/RemoveCallsToSystemGc.java @@ -15,10 +15,7 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.Applicability; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; -import org.openrewrite.TreeVisitor; +import org.openrewrite.*; import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.MethodMatcher; @@ -55,22 +52,19 @@ } @Override - protected @Nullable TreeVisitor getSingleSourceApplicableTest() { - return Applicability.or(new UsesMethod<>(SYSTEM_GC), new UsesMethod<>(RUNTIME_GC)); - } - - @Override public TreeVisitor getVisitor() { - return new JavaIsoVisitor() { - @Override - public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, ExecutionContext context) { - J.MethodInvocation invocation = super.visitMethodInvocation(method, context); - if (SYSTEM_GC.matches(invocation) || RUNTIME_GC.matches(invocation)) { - doAfterVisit(new EmptyBlock()); - return null; - } - return invocation; - } - }; + return Preconditions.check( + Preconditions.or(new UsesMethod<>(SYSTEM_GC), new UsesMethod<>(RUNTIME_GC)), new JavaIsoVisitor() { + @Override + public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, ExecutionContext context) { + J.MethodInvocation invocation = super.visitMethodInvocation(method, context); + if (SYSTEM_GC.matches(invocation) || RUNTIME_GC.matches(invocation)) { + // [Rewrite8 migration] TreeVisitor#doAfterVisit(Recipe) has been removed, it could be mistaken usage of `TreeVisitor#doAfterVisit(TreeVisitor visitor)` here, please review code and see if it can be replaced. + doAfterVisit(new EmptyBlock()); + return null; + } + return invocation; + } + }); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/MethodNameCasing.java b/src/main/java/org/openrewrite/staticanalysis/MethodNameCasing.java index 8479dd8..a5bb7f5 100644 --- a/src/main/java/org/openrewrite/staticanalysis/MethodNameCasing.java +++ b/src/main/java/org/openrewrite/staticanalysis/MethodNameCasing.java @@ -17,10 +17,7 @@ org.openrewrite.config.CompositeRecipe import lombok.EqualsAndHashCode; import lombok.Value; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Option; -import org.openrewrite.Recipe; -import org.openrewrite.TreeVisitor; +import org.openrewrite.*; import org.openrewrite.internal.NameCaseConvention; import org.openrewrite.internal.StringUtils; import org.openrewrite.internal.lang.Nullable; @@ -81,14 +78,16 @@ Pattern standardMethodName = Pattern.compile("^[a-z][a-zA-Z0-9]*$"); Pattern snakeCase = Pattern.compile("^[a-zA-Z0-9]+_\\w+$"); return new JavaIsoVisitor() { - @Override - public JavaSourceFile visitJavaSourceFile(JavaSourceFile cu, ExecutionContext executionContext) { - Optional sourceSet = cu.getMarkers().findFirst(JavaSourceSet.class); - if (sourceSet.isPresent() && (Boolean.TRUE.equals(includeTestSources) || "main".equals(sourceSet.get().getName()))) { - return super.visitJavaSourceFile(cu, executionContext); + public @Nullable J visit(@Nullable Tree tree, ExecutionContext executionContext) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile cu = (JavaSourceFile) tree; + Optional sourceSet = cu.getMarkers().findFirst(JavaSourceSet.class); + if (sourceSet.isPresent() && (Boolean.TRUE.equals(includeTestSources) || "main".equals(sourceSet.get().getName()))) { + return super.visit(cu, executionContext); + } } - return cu; + return super.visit(tree, executionContext); } @Override @@ -137,6 +136,7 @@ && !methodExists(method.getMethodType(), standardized.toString())) { String toName = standardized.toString(); if (!StringUtils.isNumeric(toName)) { + // [Rewrite8 migration] Method `Recipe#doNext(..)` has been removed, you might want to change the recipe to be a scanning recipe, or just simply replace to use `TreeVisitor#doAfterVisit`, please follow the migration guide here: https://to-be-written doNext(new ChangeMethodName(MethodMatcher.methodPattern(method), standardized.toString(), true, false)); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/IndexOfReplaceableByContains.java b/src/main/java/org/openrewrite/staticanalysis/IndexOfReplaceableByContains.java index 171ff4e..aca1015 100644 --- a/src/main/java/org/openrewrite/staticanalysis/IndexOfReplaceableByContains.java +++ b/src/main/java/org/openrewrite/staticanalysis/IndexOfReplaceableByContains.java @@ -15,10 +15,8 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Incubating; -import org.openrewrite.Recipe; -import org.openrewrite.TreeVisitor; +import org.openrewrite.*; +import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.JavaTemplate; import org.openrewrite.java.JavaVisitor; @@ -58,24 +56,22 @@ @Override public TreeVisitor getVisitor() { - return new IndexOfReplaceableByContainsVisitor(); - } - - @Override - protected TreeVisitor getSingleSourceApplicableTest() { - return new JavaIsoVisitor() { + return Preconditions.check(new JavaIsoVisitor() { @Override - public JavaSourceFile visitJavaSourceFile(JavaSourceFile cu, ExecutionContext executionContext) { - doAfterVisit(new UsesMethod<>(STRING_INDEX_MATCHER)); - doAfterVisit(new UsesMethod<>(LIST_INDEX_MATCHER)); - return cu; + public @Nullable J visit(@Nullable Tree tree, ExecutionContext executionContext) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile cu = (JavaSourceFile) tree; + doAfterVisit(new UsesMethod<>(STRING_INDEX_MATCHER)); + doAfterVisit(new UsesMethod<>(LIST_INDEX_MATCHER)); + } + return super.visit(tree, executionContext); } - }; + }, new IndexOfReplaceableByContainsVisitor()); } private static class IndexOfReplaceableByContainsVisitor extends JavaVisitor { - private final JavaTemplate stringContains = JavaTemplate.builder(this::getCursor, "#{any(java.lang.String)}.contains(#{any(java.lang.String)})").build(); - private final JavaTemplate listContains = JavaTemplate.builder(this::getCursor, "#{any(java.util.List)}.contains(#{any(java.lang.Object)})").build(); + private final JavaTemplate stringContains = JavaTemplate.builder( "#{any(java.lang.String)}.contains(#{any(java.lang.String)})")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().build(); + private final JavaTemplate listContains = JavaTemplate.builder( "#{any(java.util.List)}.contains(#{any(java.lang.Object)})")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().build(); @Override public J visitBinary(J.Binary binary, ExecutionContext ctx) { @@ -89,7 +85,7 @@ boolean isGreaterThanNegativeOne = asBinary.getOperator() == J.Binary.Type.GreaterThan && "-1".equals(valueSource); boolean isGreaterThanOrEqualToZero = asBinary.getOperator() == J.Binary.Type.GreaterThanOrEqual && "0".equals(valueSource); if (isGreaterThanNegativeOne || isGreaterThanOrEqualToZero) { - j = mi.withTemplate(STRING_INDEX_MATCHER.matches(mi) ? stringContains : listContains, + j = STRING_INDEX_MATCHER.matches(mi) ? stringContains : listContains.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), mi.getCoordinates().replace(), mi.getSelect(), mi.getArguments().get(0)).withPrefix(asBinary.getPrefix()); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/ExternalizableHasNoArgsConstructor.java b/src/main/java/org/openrewrite/staticanalysis/ExternalizableHasNoArgsConstructor.java index 90078fa..4120110 100644 --- a/src/main/java/org/openrewrite/staticanalysis/ExternalizableHasNoArgsConstructor.java +++ b/src/main/java/org/openrewrite/staticanalysis/ExternalizableHasNoArgsConstructor.java @@ -16,7 +16,9 @@ org.openrewrite.config.CompositeRecipe package org.openrewrite.staticanalysis; import org.openrewrite.ExecutionContext; +import org.openrewrite.Preconditions; import org.openrewrite.Recipe; +import org.openrewrite.TreeVisitor; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.JavaTemplate; import org.openrewrite.java.search.UsesType; @@ -53,13 +55,8 @@ } @Override - protected UsesType getSingleSourceApplicableTest() { - return new UsesType<>("java.io.Externalizable", false); - } - - @Override - public ExternalizableHasNoArgsConstructorVisitor getVisitor() { - return new ExternalizableHasNoArgsConstructorVisitor(); + public TreeVisitor getVisitor() { + return Preconditions.check(new UsesType<>("java.io.Externalizable", false), new ExternalizableHasNoArgsConstructorVisitor()); } private static class ExternalizableHasNoArgsConstructorVisitor extends JavaIsoVisitor { @@ -89,7 +86,7 @@ } } if (!hasFinalUninitializedFieldVar && !hasNoArgsConstructor(cd) && parentClassHasNoArgsConstructor(cd)) { - cd = cd.withTemplate(JavaTemplate.builder(this::getCursor, "public " + cd.getSimpleName() + "() {}").build(), cd.getBody().getCoordinates().lastStatement()); + cd = JavaTemplate.builder("public " + cd.getSimpleName() + "() {}")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().build().apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), cd.getBody().getCoordinates().lastStatement()); if (firstMethodDeclarationIndex != null) { statements.add(firstMethodDeclarationIndex, cd.getBody().getStatements().remove(cd.getBody().getStatements().size() - 1)); cd = cd.withBody(cd.getBody().withStatements(statements)); diff --git a/src/main/java/org/openrewrite/staticanalysis/NoDoubleBraceInitialization.java b/src/main/java/org/openrewrite/staticanalysis/NoDoubleBraceInitialization.java index 24792a4..91a0afb 100644 --- a/src/main/java/org/openrewrite/staticanalysis/NoDoubleBraceInitialization.java +++ b/src/main/java/org/openrewrite/staticanalysis/NoDoubleBraceInitialization.java @@ -17,6 +17,7 @@ org.openrewrite.config.CompositeRecipe import org.openrewrite.*; import org.openrewrite.internal.ListUtils; +import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.JavaTemplate; import org.openrewrite.java.search.UsesType; @@ -55,21 +56,19 @@ } @Override - protected JavaIsoVisitor getSingleSourceApplicableTest() { - return new JavaIsoVisitor() { + public TreeVisitor getVisitor() { + return Preconditions.check(new JavaIsoVisitor() { @Override - public JavaSourceFile visitJavaSourceFile(JavaSourceFile cu, ExecutionContext executionContext) { - doAfterVisit(new UsesType<>("java.util.Map", false)); - doAfterVisit(new UsesType<>("java.util.List", false)); - doAfterVisit(new UsesType<>("java.util.Set", false)); - return cu; + public @Nullable J visit(@Nullable Tree tree, ExecutionContext executionContext) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile cu = (JavaSourceFile) tree; + doAfterVisit(new UsesType<>("java.util.Map", false)); + doAfterVisit(new UsesType<>("java.util.List", false)); + doAfterVisit(new UsesType<>("java.util.Set", false)); + } + return super.visit(tree, executionContext); } - }; - } - - @Override - public NoDoubleBraceInitializationVisitor getVisitor() { - return new NoDoubleBraceInitializationVisitor(); + }, new NoDoubleBraceInitializationVisitor()); } private static class NoDoubleBraceInitializationVisitor extends JavaIsoVisitor { @@ -126,8 +125,8 @@ fq = fq.getSupertype(); String newInitializer = " new " + fq.getClassName() + "<>();"; - JavaTemplate template = JavaTemplate.builder(this::getCursor, newInitializer).imports(fq.getFullyQualifiedName()).build(); - nc = nc.withTemplate(template, nc.getCoordinates().replace()); + JavaTemplate template = JavaTemplate.builder( newInitializer)/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().imports(fq.getFullyQualifiedName()).build(); + nc = template.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), nc.getCoordinates().replace()); initStatements = addSelectToInitStatements(initStatements, var.getName(), executionContext); initStatements.add(0, new J.Assignment(UUID.randomUUID(), Space.EMPTY, Markers.EMPTY, var.getName().withId(UUID.randomUUID()), JLeftPadded.build(nc), fq)); parentBlockCursor.computeMessageIfAbsent("INIT_STATEMENTS", v -> new HashMap>()).put(varDeclsCursor.getValue(), initStatements); diff --git a/src/main/java/org/openrewrite/staticanalysis/MissingOverrideAnnotation.java b/src/main/java/org/openrewrite/staticanalysis/MissingOverrideAnnotation.java index 5f4f904..50a0c7b 100644 --- a/src/main/java/org/openrewrite/staticanalysis/MissingOverrideAnnotation.java +++ b/src/main/java/org/openrewrite/staticanalysis/MissingOverrideAnnotation.java @@ -82,8 +82,7 @@ org.openrewrite.config.CompositeRecipe && !(Boolean.TRUE.equals(ignoreAnonymousClassMethods) && getCursorToParentScope(getCursor()).getValue() instanceof J.NewClass)) { - method = method.withTemplate( - JavaTemplate.builder(() -> getCursor().getParentOrThrow(), "@Override").build(), + method = JavaTemplate.builder("@Override")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().build().apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), method.getCoordinates().addAnnotation(Comparator.comparing(J.Annotation::getSimpleName))); } return super.visitMethodDeclaration(method, ctx); diff --git a/src/main/java/org/openrewrite/staticanalysis/LowercasePackage.java b/src/main/java/org/openrewrite/staticanalysis/LowercasePackage.java index f14b39d..ba196ef 100644 --- a/src/main/java/org/openrewrite/staticanalysis/LowercasePackage.java +++ b/src/main/java/org/openrewrite/staticanalysis/LowercasePackage.java @@ -17,6 +17,7 @@ org.openrewrite.config.CompositeRecipe import org.openrewrite.ExecutionContext; import org.openrewrite.Recipe; +import org.openrewrite.TreeVisitor; import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.ChangePackage; import org.openrewrite.java.JavaIsoVisitor; @@ -49,13 +50,14 @@ } @Override - public JavaIsoVisitor getVisitor() { + public TreeVisitor getVisitor() { return new JavaIsoVisitor() { @Override public J.Package visitPackage(J.Package pkg, ExecutionContext executionContext) { String packageText = pkg.getExpression().print(getCursor()).replaceAll("\\s", ""); String lowerCase = packageText.toLowerCase(); if(!packageText.equals(lowerCase)) { + // [Rewrite8 migration] Method `Recipe#doNext(..)` has been removed, you might want to change the recipe to be a scanning recipe, or just simply replace to use `TreeVisitor#doAfterVisit`, please follow the migration guide here: https://to-be-written doNext(new ChangePackage(packageText, lowerCase, true)); } return pkg; diff --git a/src/main/java/org/openrewrite/staticanalysis/ExplicitCharsetOnStringGetBytes.java b/src/main/java/org/openrewrite/staticanalysis/ExplicitCharsetOnStringGetBytes.java index 4650977..4df15b3 100644 --- a/src/main/java/org/openrewrite/staticanalysis/ExplicitCharsetOnStringGetBytes.java +++ b/src/main/java/org/openrewrite/staticanalysis/ExplicitCharsetOnStringGetBytes.java @@ -17,10 +17,7 @@ org.openrewrite.config.CompositeRecipe import lombok.EqualsAndHashCode; import lombok.Value; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Option; -import org.openrewrite.Recipe; -import org.openrewrite.TreeVisitor; +import org.openrewrite.*; import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.JavaTemplate; @@ -53,15 +50,9 @@ } @Override - protected TreeVisitor getSingleSourceApplicableTest() { - return new UsesMethod<>(GET_BYTES); - } - - @Override - public JavaVisitor getVisitor() { - return new JavaIsoVisitor() { - final JavaTemplate WITH_ENCODING = JavaTemplate - .builder(this::getCursor, "getBytes(StandardCharsets.#{})") + public TreeVisitor getVisitor() { + return Preconditions.check(new UsesMethod<>(GET_BYTES), new JavaIsoVisitor() { + final JavaTemplate WITH_ENCODING = JavaTemplate.builder( "getBytes(StandardCharsets.#{})")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive() .imports("java.nio.charset.StandardCharsets") .build(); @@ -70,11 +61,11 @@ J.MethodInvocation m = super.visitMethodInvocation(method, ctx); if (GET_BYTES.matches(method)) { maybeAddImport("java.nio.charset.StandardCharsets"); - m = m.withTemplate(WITH_ENCODING, method.getCoordinates().replaceMethod(), + m = WITH_ENCODING.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), method.getCoordinates().replaceMethod(), encoding == null ? "UTF_8" : encoding); } return m; } - }; + }); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/DeclarationSiteTypeVariance.java b/src/main/java/org/openrewrite/staticanalysis/DeclarationSiteTypeVariance.java index 205db6a..57a0220 100644 --- a/src/main/java/org/openrewrite/staticanalysis/DeclarationSiteTypeVariance.java +++ b/src/main/java/org/openrewrite/staticanalysis/DeclarationSiteTypeVariance.java @@ -83,7 +83,7 @@ org.openrewrite.config.CompositeRecipe } @Override - protected TreeVisitor getVisitor() { + public TreeVisitor getVisitor() { List variantTypeSpecs = variantTypes.stream().map(VariantTypeSpec::build).collect(Collectors.toList()); return new JavaIsoVisitor() { @Override diff --git a/src/main/java/org/openrewrite/staticanalysis/IndexOfShouldNotCompareGreaterThanZero.java b/src/main/java/org/openrewrite/staticanalysis/IndexOfShouldNotCompareGreaterThanZero.java index f1ea795..39366dd 100644 --- a/src/main/java/org/openrewrite/staticanalysis/IndexOfShouldNotCompareGreaterThanZero.java +++ b/src/main/java/org/openrewrite/staticanalysis/IndexOfShouldNotCompareGreaterThanZero.java @@ -15,10 +15,8 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Incubating; -import org.openrewrite.Recipe; -import org.openrewrite.TreeVisitor; +import org.openrewrite.*; +import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.MethodMatcher; import org.openrewrite.java.search.UsesMethod; @@ -60,19 +58,17 @@ @Override public TreeVisitor getVisitor() { - return new IndexOfShouldNotCompareGreaterThanZeroVisitor(); - } - - @Override - protected TreeVisitor getSingleSourceApplicableTest() { - return new JavaIsoVisitor() { + return Preconditions.check(new JavaIsoVisitor() { @Override - public JavaSourceFile visitJavaSourceFile(JavaSourceFile cu, ExecutionContext executionContext) { - doAfterVisit(new UsesMethod<>(STRING_INDEX_MATCHER)); - doAfterVisit(new UsesMethod<>(LIST_INDEX_MATCHER)); - return cu; + public @Nullable J visit(@Nullable Tree tree, ExecutionContext executionContext) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile cu = (JavaSourceFile) tree; + doAfterVisit(new UsesMethod<>(STRING_INDEX_MATCHER)); + doAfterVisit(new UsesMethod<>(LIST_INDEX_MATCHER)); + } + return super.visit(tree, executionContext); } - }; + }, new IndexOfShouldNotCompareGreaterThanZeroVisitor()); } private static class IndexOfShouldNotCompareGreaterThanZeroVisitor extends JavaIsoVisitor { diff --git a/src/main/java/org/openrewrite/staticanalysis/WhileInsteadOfFor.java b/src/main/java/org/openrewrite/staticanalysis/WhileInsteadOfFor.java index dba0e9c..0f10a61 100644 --- a/src/main/java/org/openrewrite/staticanalysis/WhileInsteadOfFor.java +++ b/src/main/java/org/openrewrite/staticanalysis/WhileInsteadOfFor.java @@ -17,6 +17,7 @@ org.openrewrite.config.CompositeRecipe import org.openrewrite.ExecutionContext; import org.openrewrite.Recipe; +import org.openrewrite.TreeVisitor; import org.openrewrite.java.JavaTemplate; import org.openrewrite.java.JavaVisitor; import org.openrewrite.java.tree.J; @@ -48,10 +49,10 @@ } @Override - public JavaVisitor getVisitor() { + public TreeVisitor getVisitor() { return new JavaVisitor() { - final JavaTemplate whileLoop = JavaTemplate.builder(this::getCursor, - "while(#{any(boolean)}) {}") + final JavaTemplate whileLoop = JavaTemplate.builder( + "while(#{any(boolean)}) {}")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive() .build(); @Override @@ -60,8 +61,8 @@ forLoop.getControl().getUpdate().get(0) instanceof J.Empty && !(forLoop.getControl().getCondition() instanceof J.Empty) ) { - J.WhileLoop w = forLoop.withTemplate(whileLoop, forLoop.getCoordinates().replace(), - forLoop.getControl().getCondition()); + J.WhileLoop w = whileLoop.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), forLoop.getCoordinates().replace(), + forLoop.getControl().getCondition()); w = w.withBody(forLoop.getBody()); return w; } diff --git a/src/main/java/org/openrewrite/staticanalysis/UnnecessaryPrimitiveAnnotations.java b/src/main/java/org/openrewrite/staticanalysis/UnnecessaryPrimitiveAnnotations.java index 791326d..58b5f1d 100644 --- a/src/main/java/org/openrewrite/staticanalysis/UnnecessaryPrimitiveAnnotations.java +++ b/src/main/java/org/openrewrite/staticanalysis/UnnecessaryPrimitiveAnnotations.java @@ -15,9 +15,9 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; +import org.openrewrite.*; import org.openrewrite.internal.ListUtils; +import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.AnnotationMatcher; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.search.UsesType; @@ -55,29 +55,30 @@ } @Override - protected JavaIsoVisitor getSingleSourceApplicableTest() { - return new JavaIsoVisitor() { - @Override - public JavaSourceFile visitJavaSourceFile(JavaSourceFile cu, ExecutionContext executionContext) { - doAfterVisit(new UsesType<>("javax.annotation.CheckForNull", false)); - doAfterVisit(new UsesType<>("javax.annotation.Nullable", false)); - return cu; - } - }; - } + public TreeVisitor getVisitor() { - @Override - public JavaIsoVisitor getVisitor() { - - return new JavaIsoVisitor() { + return Preconditions.check(new JavaIsoVisitor() { @Override - public JavaSourceFile visitJavaSourceFile(JavaSourceFile cu, ExecutionContext executionContext) { - JavaSourceFile c = super.visitJavaSourceFile(cu, executionContext); - if (cu != c) { - maybeRemoveImport("javax.annotation.CheckForNull"); - maybeRemoveImport("javax.annotation.Nullable"); + public @Nullable J visit(@Nullable Tree tree, ExecutionContext executionContext) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile cu = (JavaSourceFile) tree; + doAfterVisit(new UsesType<>("javax.annotation.CheckForNull", false)); + doAfterVisit(new UsesType<>("javax.annotation.Nullable", false)); } - return c; + return super.visit(tree, executionContext); + } + }, new JavaIsoVisitor() { + @Override + public @Nullable J visit(@Nullable Tree tree, ExecutionContext executionContext) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile cu = (JavaSourceFile) tree; + JavaSourceFile c = (JavaSourceFile) super.visit(cu, executionContext); + if (cu != c) { + maybeRemoveImport("javax.annotation.CheckForNull"); + maybeRemoveImport("javax.annotation.Nullable"); + } + } + return super.visit(tree, executionContext); } @Override @@ -108,6 +109,6 @@ return anno; }); } - }; + }); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/StringLiteralEquality.java b/src/main/java/org/openrewrite/staticanalysis/StringLiteralEquality.java index b3b9a87..5726e94 100644 --- a/src/main/java/org/openrewrite/staticanalysis/StringLiteralEquality.java +++ b/src/main/java/org/openrewrite/staticanalysis/StringLiteralEquality.java @@ -52,13 +52,8 @@ org.openrewrite.config.CompositeRecipe } @Override - protected TreeVisitor getSingleSourceApplicableTest() { - return new UsesType<>("java.lang.String", false); - } - - @Override - public StringLiteralEqualityVisitor getVisitor() { - return new StringLiteralEqualityVisitor(); + public TreeVisitor getVisitor() { + return Preconditions.check(new UsesType<>("java.lang.String", false), new StringLiteralEqualityVisitor()); } private static class StringLiteralEqualityVisitor extends JavaVisitor { @@ -123,6 +118,7 @@ after = asNegatedUnary(mi); } if (after != null) { + // [Rewrite8 migration] TreeVisitor#doAfterVisit(Recipe) has been removed, it could be mistaken usage of `TreeVisitor#doAfterVisit(TreeVisitor visitor)` here, please review code and see if it can be replaced. doAfterVisit(new EqualsAvoidsNull()); return after; } diff --git a/src/main/java/org/openrewrite/staticanalysis/NoValueOfOnStringType.java b/src/main/java/org/openrewrite/staticanalysis/NoValueOfOnStringType.java index 1fe9b48..c63d9a6 100644 --- a/src/main/java/org/openrewrite/staticanalysis/NoValueOfOnStringType.java +++ b/src/main/java/org/openrewrite/staticanalysis/NoValueOfOnStringType.java @@ -16,7 +16,9 @@ org.openrewrite.config.CompositeRecipe package org.openrewrite.staticanalysis; import org.openrewrite.ExecutionContext; +import org.openrewrite.Preconditions; import org.openrewrite.Recipe; +import org.openrewrite.TreeVisitor; import org.openrewrite.java.JavaTemplate; import org.openrewrite.java.JavaVisitor; import org.openrewrite.java.MethodMatcher; @@ -46,11 +48,6 @@ } @Override - protected UsesMethod getSingleSourceApplicableTest() { - return new UsesMethod<>(new MethodMatcher("java.lang.String valueOf(..)")); - } - - @Override public Set getTags() { return Collections.singleton("RSPEC-1153"); } @@ -61,9 +58,9 @@ } @Override - public JavaVisitor getVisitor() { - return new JavaVisitor() { - private final JavaTemplate t = JavaTemplate.builder(this::getCursor, "#{any(java.lang.String)}").build(); + public TreeVisitor getVisitor() { + return Preconditions.check(new UsesMethod<>(new MethodMatcher("java.lang.String valueOf(..)")), new JavaVisitor() { + private final JavaTemplate t = JavaTemplate.builder( "#{any(java.lang.String)}")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().build(); @Override public J visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) { @@ -76,7 +73,7 @@ Expression argument = mi.getArguments().get(0); if (TypeUtils.isString(argument.getType()) || removeValueOfFromBinaryExpression(argument)) { - return mi.withTemplate(t, mi.getCoordinates().replace(), argument); + return t.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), mi.getCoordinates().replace(), argument); } } return mi; @@ -102,7 +99,7 @@ return false; } - }; + }); } diff --git a/src/main/java/org/openrewrite/staticanalysis/UseCollectionInterfaces.java b/src/main/java/org/openrewrite/staticanalysis/UseCollectionInterfaces.java index 82e411f..af67518 100644 --- a/src/main/java/org/openrewrite/staticanalysis/UseCollectionInterfaces.java +++ b/src/main/java/org/openrewrite/staticanalysis/UseCollectionInterfaces.java @@ -17,7 +17,10 @@ org.openrewrite.config.CompositeRecipe import org.openrewrite.ExecutionContext; import org.openrewrite.Recipe; +import org.openrewrite.Tree; +import org.openrewrite.TreeVisitor; import org.openrewrite.internal.ListUtils; +import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.tree.*; import org.openrewrite.marker.Markers; @@ -86,18 +89,20 @@ } @Override - public JavaIsoVisitor getVisitor() { + public TreeVisitor getVisitor() { return new JavaIsoVisitor() { - @Override - public JavaSourceFile visitJavaSourceFile(JavaSourceFile cu, ExecutionContext executionContext) { - for (JavaType type : cu.getTypesInUse().getTypesInUse()) { - JavaType.FullyQualified fq = TypeUtils.asFullyQualified(type); - if (fq != null && rspecRulesReplaceTypeMap.containsKey(fq.getFullyQualifiedName())) { - return super.visitJavaSourceFile(cu, executionContext); + public @Nullable J visit(@Nullable Tree tree, ExecutionContext executionContext) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile cu = (JavaSourceFile) tree; + for (JavaType type : cu.getTypesInUse().getTypesInUse()) { + JavaType.FullyQualified fq = TypeUtils.asFullyQualified(type); + if (fq != null && rspecRulesReplaceTypeMap.containsKey(fq.getFullyQualifiedName())) { + return super.visit(cu, executionContext); + } } } - return cu; + return super.visit(tree, executionContext); } @Override diff --git a/src/main/java/org/openrewrite/staticanalysis/RedundantFileCreation.java b/src/main/java/org/openrewrite/staticanalysis/RedundantFileCreation.java index 554b4c9..f3a9c00 100644 --- a/src/main/java/org/openrewrite/staticanalysis/RedundantFileCreation.java +++ b/src/main/java/org/openrewrite/staticanalysis/RedundantFileCreation.java @@ -16,6 +16,7 @@ org.openrewrite.config.CompositeRecipe package org.openrewrite.staticanalysis; import org.openrewrite.ExecutionContext; +import org.openrewrite.Preconditions; import org.openrewrite.Recipe; import org.openrewrite.TreeVisitor; import org.openrewrite.internal.ListUtils; @@ -37,13 +38,8 @@ } @Override - protected JavaVisitor getSingleSourceApplicableTest() { - return new UsesType<>("java.io.FileInputStream", true); - } - - @Override public TreeVisitor getVisitor() { - return new JavaIsoVisitor() { + return Preconditions.check(new UsesType<>("java.io.FileInputStream", true), new JavaIsoVisitor() { @Override public J.NewClass visitNewClass(J.NewClass newClass, ExecutionContext executionContext) { J.NewClass n = super.visitNewClass(newClass, executionContext); @@ -65,6 +61,6 @@ } return n; } - }; + }); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/MethodParamPad.java b/src/main/java/org/openrewrite/staticanalysis/MethodParamPad.java index 160497c..a5e3901 100755 --- a/src/main/java/org/openrewrite/staticanalysis/MethodParamPad.java +++ b/src/main/java/org/openrewrite/staticanalysis/MethodParamPad.java @@ -15,9 +15,8 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; -import org.openrewrite.SourceFile; +import org.openrewrite.*; +import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.format.SpacesVisitor; import org.openrewrite.java.style.*; @@ -39,7 +38,7 @@ } @Override - public JavaIsoVisitor getVisitor() { + public TreeVisitor getVisitor() { return new MethodParamPadVisitor(); } @@ -48,17 +47,20 @@ MethodParamPadStyle methodParamPadStyle; @Override - public JavaSourceFile visitJavaSourceFile(JavaSourceFile javaSourceFile, ExecutionContext ctx) { - SourceFile cu = (SourceFile)javaSourceFile; - spacesStyle = Optional.ofNullable(cu.getStyle(SpacesStyle.class)).orElse(IntelliJ.spaces()); - methodParamPadStyle = Optional.ofNullable(cu.getStyle(MethodParamPadStyle.class)).orElse(Checkstyle.methodParamPadStyle()); + public @Nullable J visit(@Nullable Tree tree, ExecutionContext ctx) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile javaSourceFile = (JavaSourceFile) tree; + SourceFile cu = (SourceFile) javaSourceFile; + spacesStyle = Optional.ofNullable(cu.getStyle(SpacesStyle.class)).orElse(IntelliJ.spaces()); + methodParamPadStyle = Optional.ofNullable(cu.getStyle(MethodParamPadStyle.class)).orElse(Checkstyle.methodParamPadStyle()); - spacesStyle = spacesStyle.withBeforeParentheses( - spacesStyle.getBeforeParentheses() - .withMethodDeclaration(methodParamPadStyle.getSpace()) - .withMethodCall(methodParamPadStyle.getSpace()) - ); - return super.visitJavaSourceFile((JavaSourceFile) cu, ctx); + spacesStyle = spacesStyle.withBeforeParentheses( + spacesStyle.getBeforeParentheses() + .withMethodDeclaration(methodParamPadStyle.getSpace()) + .withMethodCall(methodParamPadStyle.getSpace()) + ); + } + return super.visit(tree, ctx); } @Override diff --git a/src/main/java/org/openrewrite/staticanalysis/UseSystemLineSeparator.java b/src/main/java/org/openrewrite/staticanalysis/UseSystemLineSeparator.java index ddd9e2d..7e753ab 100644 --- a/src/main/java/org/openrewrite/staticanalysis/UseSystemLineSeparator.java +++ b/src/main/java/org/openrewrite/staticanalysis/UseSystemLineSeparator.java @@ -16,6 +16,7 @@ org.openrewrite.config.CompositeRecipe package org.openrewrite.staticanalysis; import org.openrewrite.ExecutionContext; +import org.openrewrite.Preconditions; import org.openrewrite.Recipe; import org.openrewrite.TreeVisitor; import org.openrewrite.internal.lang.Nullable; @@ -47,13 +48,8 @@ } @Override - protected @Nullable TreeVisitor getSingleSourceApplicableTest() { - return new UsesMethod<>(GET_PROPERTY); - } - - @Override - protected JavaVisitor getVisitor() { - return new JavaVisitor() { + public TreeVisitor getVisitor() { + return Preconditions.check(new UsesMethod<>(GET_PROPERTY), new JavaVisitor() { public J visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) { J.MethodInvocation invocation = (J.MethodInvocation) super.visitMethodInvocation(method, ctx); @@ -67,31 +63,29 @@ } if (method.getSelect() != null) { - final JavaTemplate template = JavaTemplate - .builder(this::getCursor, "#{any(java.lang.System)}.lineSeparator()") - .build(); + final JavaTemplate template = JavaTemplate.builder( "#{any(java.lang.System)}.lineSeparator()")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive() + .build(); - return method.withTemplate(template, - method.getCoordinates().replace(), - method.getSelect()); + return template.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), + method.getCoordinates().replace(), + method.getSelect()); } else { // static import scenario maybeRemoveImport("java.lang.System.getProperty"); maybeAddImport("java.lang.System", "lineSeparator"); - final JavaTemplate template = JavaTemplate - .builder(this::getCursor, "lineSeparator()") - .staticImports("java.lang.System.lineSeparator") - .build(); + final JavaTemplate template = JavaTemplate.builder( "lineSeparator()")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive() + .staticImports("java.lang.System.lineSeparator") + .build(); - return method.withTemplate(template, - method.getCoordinates() - .replace()); + return template.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), + method.getCoordinates() + .replace()); } } return invocation; } - }; + }); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/BooleanChecksNotInverted.java b/src/main/java/org/openrewrite/staticanalysis/BooleanChecksNotInverted.java index 87b90ac..9b598f4 100644 --- a/src/main/java/org/openrewrite/staticanalysis/BooleanChecksNotInverted.java +++ b/src/main/java/org/openrewrite/staticanalysis/BooleanChecksNotInverted.java @@ -17,6 +17,7 @@ org.openrewrite.config.CompositeRecipe import org.openrewrite.ExecutionContext; import org.openrewrite.Recipe; +import org.openrewrite.TreeVisitor; import org.openrewrite.java.JavaVisitor; import org.openrewrite.java.tree.J; @@ -48,7 +49,7 @@ } @Override - public JavaVisitor getVisitor() { + public TreeVisitor getVisitor() { return new JavaVisitor() { @SuppressWarnings("ConstantConditions") diff --git a/src/main/java/org/openrewrite/staticanalysis/InstanceOfPatternMatch.java b/src/main/java/org/openrewrite/staticanalysis/InstanceOfPatternMatch.java index 4491c68..0a2e703 100644 --- a/src/main/java/org/openrewrite/staticanalysis/InstanceOfPatternMatch.java +++ b/src/main/java/org/openrewrite/staticanalysis/InstanceOfPatternMatch.java @@ -59,16 +59,11 @@ org.openrewrite.config.CompositeRecipe } @Override - protected TreeVisitor getSingleSourceApplicableTest() { - return new UsesJavaVersion<>(17); - } - - @Override - protected TreeVisitor getVisitor() { - return new JavaVisitor() { + public TreeVisitor getVisitor() { + return Preconditions.check(new UsesJavaVersion<>(17), new JavaVisitor() { @Override - public @Nullable J postVisit(J tree, ExecutionContext executionContext) { + public @Nullable J postVisit(J tree, ExecutionContext executionContext) { J result = super.postVisit(tree, executionContext); InstanceOfPatternReplacements original = getCursor().getMessage("flowTypeScope"); if (original != null && !original.isEmpty()) { @@ -141,7 +136,7 @@ } return result; } - }; + }); } @Data diff --git a/src/main/java/org/openrewrite/staticanalysis/IndexOfChecksShouldUseAStartPosition.java b/src/main/java/org/openrewrite/staticanalysis/IndexOfChecksShouldUseAStartPosition.java index f94734e..06373ec 100644 --- a/src/main/java/org/openrewrite/staticanalysis/IndexOfChecksShouldUseAStartPosition.java +++ b/src/main/java/org/openrewrite/staticanalysis/IndexOfChecksShouldUseAStartPosition.java @@ -15,10 +15,8 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; -import org.openrewrite.Tree; -import org.openrewrite.TreeVisitor; +import org.openrewrite.*; +import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.JavaTemplate; import org.openrewrite.java.MethodMatcher; @@ -56,22 +54,20 @@ } @Override - protected TreeVisitor getSingleSourceApplicableTest() { - return new JavaIsoVisitor() { - @Override - public JavaSourceFile visitJavaSourceFile(JavaSourceFile cu, ExecutionContext executionContext) { - doAfterVisit(new UsesMethod<>(STRING_INDEX_MATCHER)); - return cu; - } - }; - } - - @Override public TreeVisitor getVisitor() { - return new JavaIsoVisitor() { + return Preconditions.check(new JavaIsoVisitor() { + @Override + public @Nullable J visit(@Nullable Tree tree, ExecutionContext executionContext) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile cu = (JavaSourceFile) tree; + doAfterVisit(new UsesMethod<>(STRING_INDEX_MATCHER)); + } + return super.visit(tree, executionContext); + } + }, new JavaIsoVisitor() { private boolean isValueNotCompliant(J.Literal literal) { - return !(literal.getValue() instanceof Integer && ((Integer)(literal.getValue()) <= 0)); + return !(literal.getValue() instanceof Integer && ((Integer) (literal.getValue()) <= 0)); } @Override @@ -79,10 +75,10 @@ J.Binary b = super.visitBinary(binary, ctx); if (b.getLeft() instanceof J.MethodInvocation && STRING_INDEX_MATCHER.matches(b.getLeft()) && b.getOperator() == J.Binary.Type.GreaterThan && - b.getRight() instanceof J.Literal && isValueNotCompliant((J.Literal)b.getRight())) { + b.getRight() instanceof J.Literal && isValueNotCompliant((J.Literal) b.getRight())) { J.MethodInvocation m = (J.MethodInvocation) b.getLeft(); - b = b.withLeft(m.withTemplate(JavaTemplate.builder(this::getCursor, "#{any(java.lang.String)}, #{any(int)}").build(), + b = b.withLeft( JavaTemplate.builder("#{any(java.lang.String)}, #{any(int)}")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().build().apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), m.getCoordinates().replaceArguments(), m.getArguments().get(0), b.getRight())); @@ -98,6 +94,6 @@ } return b; } - }; + }); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/ReplaceDuplicateStringLiterals.java b/src/main/java/org/openrewrite/staticanalysis/ReplaceDuplicateStringLiterals.java index ed43110..c648d89 100644 --- a/src/main/java/org/openrewrite/staticanalysis/ReplaceDuplicateStringLiterals.java +++ b/src/main/java/org/openrewrite/staticanalysis/ReplaceDuplicateStringLiterals.java @@ -64,21 +64,18 @@ org.openrewrite.config.CompositeRecipe } @Override - protected TreeVisitor getSingleSourceApplicableTest() { - return new UsesType<>("java.lang.String", false); - } - - @Override - public JavaVisitor getVisitor() { - return new JavaVisitor() { - + public TreeVisitor getVisitor() { + return Preconditions.check(new UsesType<>("java.lang.String", false), new JavaVisitor() { @Override - public J visitJavaSourceFile(JavaSourceFile cu, ExecutionContext executionContext) { - Optional sourceSet = cu.getMarkers().findFirst(JavaSourceSet.class); - if (Boolean.TRUE.equals(includeTestSources) || (sourceSet.isPresent() && "main".equals(sourceSet.get().getName()))) { - return super.visitJavaSourceFile(cu, executionContext); + public @Nullable J visit(@Nullable Tree tree, ExecutionContext executionContext) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile cu = (JavaSourceFile) tree; + Optional sourceSet = cu.getMarkers().findFirst(JavaSourceSet.class); + if (Boolean.TRUE.equals(includeTestSources) || (sourceSet.isPresent() && "main".equals(sourceSet.get().getName()))) { + return super.visit(cu, executionContext); + } } - return cu; + return super.visit(tree, executionContext); } @Override @@ -172,10 +169,8 @@ classDecl = classDecl.withBody(classDecl.getBody().withStatements(statements)); } } else { - classDecl = classDecl.withBody( - classDecl.getBody().withTemplate( - JavaTemplate.builder(this::getCursor, insertStatement).build(), - classDecl.getBody().getCoordinates().firstStatement(), replaceLiteral)); + classDecl = classDecl.withBody( JavaTemplate.builder(insertStatement)/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().build().apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), + classDecl.getBody().getCoordinates().firstStatement(), replaceLiteral)); } } variableNames.add(variableName); @@ -227,7 +222,7 @@ } return VariableNameUtils.normalizeName(newName.toString()); } - }; + }); } private static class FindDuplicateStringLiterals extends JavaIsoVisitor>> { diff --git a/src/main/java/org/openrewrite/staticanalysis/NestedEnumsAreNotStatic.java b/src/main/java/org/openrewrite/staticanalysis/NestedEnumsAreNotStatic.java index cdab901..b641a03 100644 --- a/src/main/java/org/openrewrite/staticanalysis/NestedEnumsAreNotStatic.java +++ b/src/main/java/org/openrewrite/staticanalysis/NestedEnumsAreNotStatic.java @@ -16,7 +16,9 @@ org.openrewrite.config.CompositeRecipe package org.openrewrite.staticanalysis; import org.openrewrite.ExecutionContext; +import org.openrewrite.Preconditions; import org.openrewrite.Recipe; +import org.openrewrite.TreeVisitor; import org.openrewrite.internal.ListUtils; import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; @@ -49,8 +51,8 @@ } @Override - protected JavaIsoVisitor getSingleSourceApplicableTest() { - return new JavaIsoVisitor() { + public TreeVisitor getVisitor() { + return Preconditions.check(new JavaIsoVisitor() { @Override public J.ClassDeclaration visitClassDeclaration(J.ClassDeclaration classDecl, ExecutionContext executionContext) { J.ClassDeclaration cd = super.visitClassDeclaration(classDecl, executionContext); @@ -59,12 +61,7 @@ } return cd; } - }; - } - - @Override - public JavaIsoVisitor getVisitor() { - return new JavaIsoVisitor() { + }, new JavaIsoVisitor() { @Override public J.ClassDeclaration visitClassDeclaration(J.ClassDeclaration classDecl, ExecutionContext ctx) { J.ClassDeclaration cd = super.visitClassDeclaration(classDecl, ctx); @@ -81,6 +78,6 @@ } return cd; } - }; + }); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/ExplicitInitialization.java b/src/main/java/org/openrewrite/staticanalysis/ExplicitInitialization.java index 0bb884b..c5af8cb 100644 --- a/src/main/java/org/openrewrite/staticanalysis/ExplicitInitialization.java +++ b/src/main/java/org/openrewrite/staticanalysis/ExplicitInitialization.java @@ -15,13 +15,12 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; -import org.openrewrite.SourceFile; -import org.openrewrite.TreeVisitor; +import org.openrewrite.*; +import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.style.Checkstyle; import org.openrewrite.java.style.ExplicitInitializationStyle; +import org.openrewrite.java.tree.J; import org.openrewrite.java.tree.JavaSourceFile; import java.time.Duration; @@ -56,14 +55,18 @@ } private static class ExplicitInitializationFromCompilationUnitStyle extends JavaIsoVisitor { + @Override - public JavaSourceFile visitJavaSourceFile(JavaSourceFile cu, ExecutionContext executionContext) { - ExplicitInitializationStyle style = ((SourceFile)cu).getStyle(ExplicitInitializationStyle.class); - if (style == null) { - style = Checkstyle.explicitInitialization(); + public @Nullable J visit(@Nullable Tree tree, ExecutionContext executionContext) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile cu = (JavaSourceFile) tree; + ExplicitInitializationStyle style = ((SourceFile) cu).getStyle(ExplicitInitializationStyle.class); + if (style == null) { + style = Checkstyle.explicitInitialization(); + } + doAfterVisit(new ExplicitInitializationVisitor<>(style)); } - doAfterVisit(new ExplicitInitializationVisitor<>(style)); - return cu; + return super.visit(tree, executionContext); } } } diff --git a/src/main/java/org/openrewrite/staticanalysis/NoPrimitiveWrappersForToStringOrCompareTo.java b/src/main/java/org/openrewrite/staticanalysis/NoPrimitiveWrappersForToStringOrCompareTo.java index b3c397c..8b0152a 100644 --- a/src/main/java/org/openrewrite/staticanalysis/NoPrimitiveWrappersForToStringOrCompareTo.java +++ b/src/main/java/org/openrewrite/staticanalysis/NoPrimitiveWrappersForToStringOrCompareTo.java @@ -15,8 +15,7 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; +import org.openrewrite.*; import org.openrewrite.internal.ListUtils; import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; @@ -56,22 +55,20 @@ } @Override - public JavaIsoVisitor getVisitor() { - return new NoPrimitiveWrapperVisitor(); - } - - @Override - protected JavaIsoVisitor getSingleSourceApplicableTest() { - return new JavaIsoVisitor() { + public TreeVisitor getVisitor() { + return Preconditions.check(new JavaIsoVisitor() { @Override - public JavaSourceFile visitJavaSourceFile(JavaSourceFile cu, ExecutionContext executionContext) { - doAfterVisit(new UsesMethod<>(NUMBER_COMPARE_TO_MATCHER)); - doAfterVisit(new UsesMethod<>(NUMBER_TO_STRING_MATCHER)); - doAfterVisit(new UsesMethod<>(BOOLEAN_COMPARE_TO_MATCHER)); - doAfterVisit(new UsesMethod<>(BOOLEAN_TO_STRING_MATCHER)); - return cu; + public @Nullable J visit(@Nullable Tree tree, ExecutionContext executionContext) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile cu = (JavaSourceFile) tree; + doAfterVisit(new UsesMethod<>(NUMBER_COMPARE_TO_MATCHER)); + doAfterVisit(new UsesMethod<>(NUMBER_TO_STRING_MATCHER)); + doAfterVisit(new UsesMethod<>(BOOLEAN_COMPARE_TO_MATCHER)); + doAfterVisit(new UsesMethod<>(BOOLEAN_TO_STRING_MATCHER)); + } + return super.visit(tree, executionContext); } - }; + }, new NoPrimitiveWrapperVisitor()); } private static class NoPrimitiveWrapperVisitor extends JavaIsoVisitor { diff --git a/src/main/java/org/openrewrite/staticanalysis/CompareEnumsWithEqualityOperator.java b/src/main/java/org/openrewrite/staticanalysis/CompareEnumsWithEqualityOperator.java index 0193b5c..1f42193 100644 --- a/src/main/java/org/openrewrite/staticanalysis/CompareEnumsWithEqualityOperator.java +++ b/src/main/java/org/openrewrite/staticanalysis/CompareEnumsWithEqualityOperator.java @@ -15,10 +15,7 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.Cursor; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; -import org.openrewrite.TreeVisitor; +import org.openrewrite.*; import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaTemplate; import org.openrewrite.java.JavaVisitor; @@ -53,14 +50,9 @@ } @Override - protected @Nullable TreeVisitor getSingleSourceApplicableTest() { - return new UsesMethod<>("java.lang.Enum equals(java.lang.Object)"); - } - - @Override public TreeVisitor getVisitor() { final MethodMatcher ENUM_EQUALS = new MethodMatcher("java.lang.Enum equals(java.lang.Object)"); - return new JavaVisitor() { + return Preconditions.check(new UsesMethod<>("java.lang.Enum equals(java.lang.Object)"), new JavaVisitor() { @Override public J visitMethodInvocation(J.MethodInvocation method, ExecutionContext executionContext) { J.MethodInvocation m = (J.MethodInvocation) super.visitMethodInvocation(method, executionContext); @@ -71,13 +63,10 @@ executionContext.putMessage("REMOVE_UNARY_NOT", parent.getValue()); } String code = "#{any()} " + (isNot ? "!=" : "==") + " #{any()}"; - return autoFormat(m.withTemplate( - JavaTemplate - .builder(this::getCursor, code) - .build(), + return autoFormat( JavaTemplate.builder(code)/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive() + .build().apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), m.getCoordinates().replace(), - m.getSelect(), m.getArguments().get(0) - ), executionContext); + m.getSelect(), m.getArguments().get(0)), executionContext); } return m; } @@ -92,6 +81,6 @@ } return j; } - }; + }); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/NeedBraces.java b/src/main/java/org/openrewrite/staticanalysis/NeedBraces.java index db1bfb8..9526d88 100644 --- a/src/main/java/org/openrewrite/staticanalysis/NeedBraces.java +++ b/src/main/java/org/openrewrite/staticanalysis/NeedBraces.java @@ -15,10 +15,8 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; -import org.openrewrite.SourceFile; -import org.openrewrite.Tree; +import org.openrewrite.*; +import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.style.Checkstyle; import org.openrewrite.java.style.NeedBracesStyle; @@ -51,7 +49,7 @@ } @Override - public JavaIsoVisitor getVisitor() { + public TreeVisitor getVisitor() { return new NeedBracesVisitor(); } @@ -75,10 +73,13 @@ } @Override - public JavaSourceFile visitJavaSourceFile(JavaSourceFile javaSourceFile, ExecutionContext ctx) { - SourceFile cu = (SourceFile)javaSourceFile; - needBracesStyle = cu.getStyle(NeedBracesStyle.class) == null ? Checkstyle.needBracesStyle() : cu.getStyle(NeedBracesStyle.class); - return super.visitJavaSourceFile((JavaSourceFile)cu, ctx); + public @Nullable J visit(@Nullable Tree tree, ExecutionContext ctx) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile javaSourceFile = (JavaSourceFile) tree; + SourceFile cu = (SourceFile) javaSourceFile; + needBracesStyle = cu.getStyle(NeedBracesStyle.class) == null ? Checkstyle.needBracesStyle() : cu.getStyle(NeedBracesStyle.class); + } + return super.visit(tree, ctx); } @Override diff --git a/src/main/java/org/openrewrite/staticanalysis/CovariantEqualsVisitor.java b/src/main/java/org/openrewrite/staticanalysis/CovariantEqualsVisitor.java index b9002b4..81b374b 100644 --- a/src/main/java/org/openrewrite/staticanalysis/CovariantEqualsVisitor.java +++ b/src/main/java/org/openrewrite/staticanalysis/CovariantEqualsVisitor.java @@ -74,10 +74,8 @@ org.openrewrite.config.CompositeRecipe JavaType.Primitive.Boolean.equals(m.getReturnTypeExpression().getType())) { if (m.getAllAnnotations().stream().noneMatch(OVERRIDE_ANNOTATION::matches)) { - m = m.withTemplate( - JavaTemplate.builder(() -> getCursor().getParentOrThrow(), "@Override").build(), - m.getCoordinates().addAnnotation(Comparator.comparing(J.Annotation::getSimpleName)) - ); + m = JavaTemplate.builder("@Override")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().build().apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), + m.getCoordinates().addAnnotation(Comparator.comparing(J.Annotation::getSimpleName))); } /* @@ -87,8 +85,7 @@ */ J.VariableDeclarations.NamedVariable oldParamName = ((J.VariableDeclarations) m.getParameters().iterator().next()).getVariables().iterator().next(); String paramName = "obj".equals(oldParamName.getSimpleName()) ? "other" : "obj"; - m = m.withTemplate( - JavaTemplate.builder(() -> getCursor().getParentOrThrow(), "Object #{}").build(), + m = JavaTemplate.builder("Object #{}")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().build().apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), m.getCoordinates().replaceParameters(), paramName); @@ -97,7 +94,7 @@ * equals(..) method body statements, and let the existing equals(..) method definition continue * with the logic doing what it was doing. */ - JavaTemplate equalsBodySnippet = JavaTemplate.builder(this::getCursor, EQUALS_BODY_PREFIX_TEMPLATE).build(); + JavaTemplate equalsBodySnippet = JavaTemplate.builder( EQUALS_BODY_PREFIX_TEMPLATE)/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().build(); assert m.getBody() != null; Object[] params = new Object[]{ @@ -110,8 +107,7 @@ paramName }; - m = m.withTemplate( - equalsBodySnippet, + m = equalsBodySnippet.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), m.getBody().getStatements().get(0).getCoordinates().before(), params); } diff --git a/src/main/java/org/openrewrite/staticanalysis/UseAsBuilder.java b/src/main/java/org/openrewrite/staticanalysis/UseAsBuilder.java index a65add8..05222ab 100644 --- a/src/main/java/org/openrewrite/staticanalysis/UseAsBuilder.java +++ b/src/main/java/org/openrewrite/staticanalysis/UseAsBuilder.java @@ -65,13 +65,8 @@ org.openrewrite.config.CompositeRecipe } @Override - protected @Nullable JavaVisitor getSingleSourceApplicableTest() { - return builderCreator == null ? null : new UsesMethod<>(builderCreator); - } - - @Override - public JavaVisitor getVisitor() { - return new JavaIsoVisitor() { + public TreeVisitor getVisitor() { + return Preconditions.check(builderCreator == null ? null : new UsesMethod<>(builderCreator), new JavaIsoVisitor() { final MethodMatcher builderCall = new MethodMatcher(builderType + " *(..)"); @Override @@ -185,7 +180,7 @@ } private J.VariableDeclarations consolidateBuilder(J.VariableDeclarations consolidatedBuilder, - J.MethodInvocation builderCall) { + J.MethodInvocation builderCall) { J.VariableDeclarations cb = consolidatedBuilder.withVariables( ListUtils.map(consolidatedBuilder.getVariables(), nv -> { Expression init = nv.getInitializer(); @@ -202,6 +197,6 @@ cb = formatTabsAndIndents(cb, getCursor()); return cb; } - }; + }); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/HiddenField.java b/src/main/java/org/openrewrite/staticanalysis/HiddenField.java index 2ec27c1..c5788f3 100644 --- a/src/main/java/org/openrewrite/staticanalysis/HiddenField.java +++ b/src/main/java/org/openrewrite/staticanalysis/HiddenField.java @@ -16,9 +16,11 @@ org.openrewrite.config.CompositeRecipe package org.openrewrite.staticanalysis; import org.openrewrite.*; +import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.style.Checkstyle; import org.openrewrite.java.style.HiddenFieldStyle; +import org.openrewrite.java.tree.J; import org.openrewrite.java.tree.JavaSourceFile; import java.time.Duration; @@ -53,14 +55,18 @@ } private static class HiddenFieldFromCompilationUnitStyle extends JavaIsoVisitor { + @Override - public JavaSourceFile visitJavaSourceFile(JavaSourceFile cu, ExecutionContext executionContext) { - HiddenFieldStyle style = ((SourceFile)cu).getStyle(HiddenFieldStyle.class); - if (style == null) { - style = Checkstyle.hiddenFieldStyle(); + public @Nullable J visit(@Nullable Tree tree, ExecutionContext executionContext) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile cu = (JavaSourceFile) tree; + HiddenFieldStyle style = ((SourceFile) cu).getStyle(HiddenFieldStyle.class); + if (style == null) { + style = Checkstyle.hiddenFieldStyle(); + } + doAfterVisit(new HiddenFieldVisitor<>(style)); } - doAfterVisit(new HiddenFieldVisitor<>(style)); - return cu; + return super.visit(tree, executionContext); } } } diff --git a/src/main/java/org/openrewrite/staticanalysis/SimplifyBooleanReturnVisitor.java b/src/main/java/org/openrewrite/staticanalysis/SimplifyBooleanReturnVisitor.java index 3ae17df..32133a9 100644 --- a/src/main/java/org/openrewrite/staticanalysis/SimplifyBooleanReturnVisitor.java +++ b/src/main/java/org/openrewrite/staticanalysis/SimplifyBooleanReturnVisitor.java @@ -32,7 +32,7 @@ org.openrewrite.config.CompositeRecipe @Incubating(since = "7.0.0") public class SimplifyBooleanReturnVisitor

extends JavaVisitor

{ - private final JavaTemplate notIfConditionReturn = JavaTemplate.builder(this::getCursor, "return !(#{any(boolean)});") + private final JavaTemplate notIfConditionReturn = JavaTemplate.builder( "return !(#{any(boolean)});")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive() .build(); @Override @@ -83,7 +83,7 @@ if (returnThenPart) { // we need to NOT the expression inside the if condition - return i.withTemplate(notIfConditionReturn, i.getCoordinates().replace(), ifCondition); + return notIfConditionReturn.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), i.getCoordinates().replace(), ifCondition); } } } diff --git a/src/main/java/org/openrewrite/staticanalysis/SimplifyBooleanReturn.java b/src/main/java/org/openrewrite/staticanalysis/SimplifyBooleanReturn.java index 094fad8..ee216d6 100644 --- a/src/main/java/org/openrewrite/staticanalysis/SimplifyBooleanReturn.java +++ b/src/main/java/org/openrewrite/staticanalysis/SimplifyBooleanReturn.java @@ -18,6 +18,7 @@ org.openrewrite.config.CompositeRecipe import org.openrewrite.ExecutionContext; import org.openrewrite.Incubating; import org.openrewrite.Recipe; +import org.openrewrite.TreeVisitor; import java.time.Duration; import java.util.Collections; @@ -47,7 +48,7 @@ } @Override - public SimplifyBooleanReturnVisitor getVisitor() { + public TreeVisitor getVisitor() { return new SimplifyBooleanReturnVisitor<>(); } diff --git a/src/main/java/org/openrewrite/staticanalysis/RenameExceptionInEmptyCatch.java b/src/main/java/org/openrewrite/staticanalysis/RenameExceptionInEmptyCatch.java index 7d71da3..454dd2f 100644 --- a/src/main/java/org/openrewrite/staticanalysis/RenameExceptionInEmptyCatch.java +++ b/src/main/java/org/openrewrite/staticanalysis/RenameExceptionInEmptyCatch.java @@ -15,10 +15,8 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.Cursor; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; -import org.openrewrite.TreeVisitor; +import org.openrewrite.*; +import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.RenameVariable; import org.openrewrite.java.tree.J; @@ -48,12 +46,14 @@ @Override public TreeVisitor getVisitor() { return new JavaIsoVisitor() { - @Override - public JavaSourceFile visitJavaSourceFile(JavaSourceFile cu, ExecutionContext executionContext) { - Map> variableScopes = new LinkedHashMap<>(); - executionContext.putMessage("VARIABLES_KEY", variableScopes); - return super.visitJavaSourceFile(cu, executionContext); + public @Nullable J visit(@Nullable Tree tree, ExecutionContext executionContext) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile cu = (JavaSourceFile) tree; + Map> variableScopes = new LinkedHashMap<>(); + executionContext.putMessage("VARIABLES_KEY", variableScopes); + } + return super.visit(tree, executionContext); } @Override diff --git a/src/main/java/org/openrewrite/staticanalysis/FinalizeLocalVariables.java b/src/main/java/org/openrewrite/staticanalysis/FinalizeLocalVariables.java index 9b733f7..6ba7343 100644 --- a/src/main/java/org/openrewrite/staticanalysis/FinalizeLocalVariables.java +++ b/src/main/java/org/openrewrite/staticanalysis/FinalizeLocalVariables.java @@ -41,7 +41,7 @@ org.openrewrite.config.CompositeRecipe } @Override - public JavaIsoVisitor getVisitor() { + public TreeVisitor getVisitor() { return new JavaIsoVisitor() { @Override diff --git a/src/main/java/org/openrewrite/staticanalysis/UpperCaseLiteralSuffixes.java b/src/main/java/org/openrewrite/staticanalysis/UpperCaseLiteralSuffixes.java index 24a2409..e8b2415 100644 --- a/src/main/java/org/openrewrite/staticanalysis/UpperCaseLiteralSuffixes.java +++ b/src/main/java/org/openrewrite/staticanalysis/UpperCaseLiteralSuffixes.java @@ -15,10 +15,7 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.Applicability; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; -import org.openrewrite.TreeVisitor; +import org.openrewrite.*; import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.search.UsesType; @@ -52,45 +49,40 @@ } @Override - protected @Nullable TreeVisitor getSingleSourceApplicableTest() { - return Applicability.or( - new UsesType<>("long", false), - new UsesType<>("java.lang.Long", false), - new UsesType<>("double", false), - new UsesType<>("java.lang.Double", false), - new UsesType<>("float", false), - new UsesType<>("java.lang.Float", false) - ); - } - - @Override - protected TreeVisitor getVisitor() { - return new JavaIsoVisitor() { - @Override - public J.VariableDeclarations.NamedVariable visitVariable(J.VariableDeclarations.NamedVariable variable, ExecutionContext executionContext) { - J.VariableDeclarations.NamedVariable nv = super.visitVariable(variable, executionContext); - if (nv.getInitializer() instanceof J.Literal && nv.getInitializer().getType() != null) { - J.Literal initializer = (J.Literal)nv.getInitializer(); - if (initializer.getType() == JavaType.Primitive.Double - || initializer.getType() == JavaType.Primitive.Float - || initializer.getType() == JavaType.Primitive.Long) { - String upperValueSource = upperCaseSuffix(initializer.getValueSource()); - if (upperValueSource != null && !upperValueSource.equals(initializer.getValueSource())) { - nv = nv.withInitializer(initializer.withValueSource(upperValueSource)); + public TreeVisitor getVisitor() { + return Preconditions.check( + Preconditions.or( + new UsesType<>("long", false), + new UsesType<>("java.lang.Long", false), + new UsesType<>("double", false), + new UsesType<>("java.lang.Double", false), + new UsesType<>("float", false), + new UsesType<>("java.lang.Float", false)), new JavaIsoVisitor() { + @Override + public J.VariableDeclarations.NamedVariable visitVariable(J.VariableDeclarations.NamedVariable variable, ExecutionContext executionContext) { + J.VariableDeclarations.NamedVariable nv = super.visitVariable(variable, executionContext); + if (nv.getInitializer() instanceof J.Literal && nv.getInitializer().getType() != null) { + J.Literal initializer = (J.Literal) nv.getInitializer(); + if (initializer.getType() == JavaType.Primitive.Double + || initializer.getType() == JavaType.Primitive.Float + || initializer.getType() == JavaType.Primitive.Long) { + String upperValueSource = upperCaseSuffix(initializer.getValueSource()); + if (upperValueSource != null && !upperValueSource.equals(initializer.getValueSource())) { + nv = nv.withInitializer(initializer.withValueSource(upperValueSource)); + } + } } + return nv; } - } - return nv; - } - @Nullable - private String upperCaseSuffix(@Nullable String valueSource) { - if (valueSource == null || valueSource.length() < 2) { - return valueSource; - } - return valueSource.substring(0, valueSource.length() - 1) + valueSource.substring(valueSource.length()-1).toUpperCase(); - } + @Nullable + private String upperCaseSuffix(@Nullable String valueSource) { + if (valueSource == null || valueSource.length() < 2) { + return valueSource; + } + return valueSource.substring(0, valueSource.length() - 1) + valueSource.substring(valueSource.length() - 1).toUpperCase(); + } - }; + }); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/NoWhitespaceBefore.java b/src/main/java/org/openrewrite/staticanalysis/NoWhitespaceBefore.java index 7192798..76543a7 100755 --- a/src/main/java/org/openrewrite/staticanalysis/NoWhitespaceBefore.java +++ b/src/main/java/org/openrewrite/staticanalysis/NoWhitespaceBefore.java @@ -15,10 +15,7 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Incubating; -import org.openrewrite.Recipe; -import org.openrewrite.SourceFile; +import org.openrewrite.*; import org.openrewrite.internal.ListUtils; import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; @@ -41,7 +38,7 @@ } @Override - public JavaIsoVisitor getVisitor() { + public TreeVisitor getVisitor() { return new NoWhitespaceBeforeVisitor(); } @@ -56,13 +53,16 @@ EmptyForIteratorPadStyle emptyForIteratorPadStyle; @Override - public JavaSourceFile visitJavaSourceFile(JavaSourceFile javaSourceFile, ExecutionContext ctx) { - SourceFile cu = (SourceFile)javaSourceFile; - spacesStyle = cu.getStyle(SpacesStyle.class) == null ? IntelliJ.spaces() : cu.getStyle(SpacesStyle.class); - noWhitespaceBeforeStyle = cu.getStyle(NoWhitespaceBeforeStyle.class) == null ? Checkstyle.noWhitespaceBeforeStyle() : cu.getStyle(NoWhitespaceBeforeStyle.class); - emptyForInitializerPadStyle = cu.getStyle(EmptyForInitializerPadStyle.class); - emptyForIteratorPadStyle = cu.getStyle(EmptyForIteratorPadStyle.class); - return super.visitJavaSourceFile((JavaSourceFile) cu, ctx); + public @Nullable J visit(@Nullable Tree tree, ExecutionContext ctx) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile javaSourceFile = (JavaSourceFile) tree; + SourceFile cu = (SourceFile) javaSourceFile; + spacesStyle = cu.getStyle(SpacesStyle.class) == null ? IntelliJ.spaces() : cu.getStyle(SpacesStyle.class); + noWhitespaceBeforeStyle = cu.getStyle(NoWhitespaceBeforeStyle.class) == null ? Checkstyle.noWhitespaceBeforeStyle() : cu.getStyle(NoWhitespaceBeforeStyle.class); + emptyForInitializerPadStyle = cu.getStyle(EmptyForInitializerPadStyle.class); + emptyForIteratorPadStyle = cu.getStyle(EmptyForIteratorPadStyle.class); + } + return super.visit(tree, ctx); } @Override diff --git a/src/main/java/org/openrewrite/staticanalysis/NoEqualityInForCondition.java b/src/main/java/org/openrewrite/staticanalysis/NoEqualityInForCondition.java index 5c31ad0..05b1095 100644 --- a/src/main/java/org/openrewrite/staticanalysis/NoEqualityInForCondition.java +++ b/src/main/java/org/openrewrite/staticanalysis/NoEqualityInForCondition.java @@ -17,6 +17,7 @@ org.openrewrite.config.CompositeRecipe import org.openrewrite.ExecutionContext; import org.openrewrite.Recipe; +import org.openrewrite.TreeVisitor; import org.openrewrite.java.JavaVisitor; import org.openrewrite.java.tree.J; import org.openrewrite.java.tree.JavaType; @@ -47,7 +48,7 @@ } @Override - public JavaVisitor getVisitor() { + public TreeVisitor getVisitor() { return new JavaVisitor() { @Override public J visitForControl(J.ForLoop.Control control, ExecutionContext ctx) { diff --git a/src/main/java/org/openrewrite/staticanalysis/CaseInsensitiveComparisonsDoNotChangeCase.java b/src/main/java/org/openrewrite/staticanalysis/CaseInsensitiveComparisonsDoNotChangeCase.java index 7c5f2b5..f32a617 100644 --- a/src/main/java/org/openrewrite/staticanalysis/CaseInsensitiveComparisonsDoNotChangeCase.java +++ b/src/main/java/org/openrewrite/staticanalysis/CaseInsensitiveComparisonsDoNotChangeCase.java @@ -16,7 +16,9 @@ org.openrewrite.config.CompositeRecipe package org.openrewrite.staticanalysis; import org.openrewrite.ExecutionContext; +import org.openrewrite.Preconditions; import org.openrewrite.Recipe; +import org.openrewrite.TreeVisitor; import org.openrewrite.internal.ListUtils; import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; @@ -50,13 +52,8 @@ } @Override - protected JavaIsoVisitor getSingleSourceApplicableTest() { - return new UsesMethod<>("java.lang.String equalsIgnoreCase(java.lang.String)"); - } - - @Override - public CaseInsensitiveComparisonVisitor getVisitor() { - return new CaseInsensitiveComparisonVisitor<>(); + public TreeVisitor getVisitor() { + return Preconditions.check(new UsesMethod<>("java.lang.String equalsIgnoreCase(java.lang.String)"), new CaseInsensitiveComparisonVisitor<>()); } private static class CaseInsensitiveComparisonVisitor extends JavaIsoVisitor { diff --git a/src/main/java/org/openrewrite/staticanalysis/ChainStringBuilderAppendCalls.java b/src/main/java/org/openrewrite/staticanalysis/ChainStringBuilderAppendCalls.java index a2c9b50..5c2b88f 100644 --- a/src/main/java/org/openrewrite/staticanalysis/ChainStringBuilderAppendCalls.java +++ b/src/main/java/org/openrewrite/staticanalysis/ChainStringBuilderAppendCalls.java @@ -16,6 +16,7 @@ org.openrewrite.config.CompositeRecipe package org.openrewrite.staticanalysis; import org.openrewrite.ExecutionContext; +import org.openrewrite.Preconditions; import org.openrewrite.Recipe; import org.openrewrite.TreeVisitor; import org.openrewrite.internal.lang.Nullable; @@ -52,13 +53,8 @@ } @Override - protected @Nullable TreeVisitor getSingleSourceApplicableTest() { - return new UsesMethod<>(STRING_BUILDER_APPEND); - } - - @Override - protected TreeVisitor getVisitor() { - return new JavaIsoVisitor() { + public TreeVisitor getVisitor() { + return Preconditions.check(new UsesMethod<>(STRING_BUILDER_APPEND), new JavaIsoVisitor() { @Override public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) { J.MethodInvocation m = super.visitMethodInvocation(method, ctx); @@ -86,7 +82,7 @@ for (Expression exp : flattenExpressions) { if (appendToString) { if (exp instanceof J.Literal - && (((J.Literal) exp).getType() == JavaType.Primitive.String) + && (((J.Literal) exp).getType() == JavaType.Primitive.String) ) { group.add(exp); } else { @@ -95,10 +91,10 @@ } } else { if (exp instanceof J.Literal - && (((J.Literal) exp).getType() == JavaType.Primitive.String)) { + && (((J.Literal) exp).getType() == JavaType.Primitive.String)) { addToGroups(group, groups); appendToString = true; - } else if ((exp instanceof J.Identifier || exp instanceof J.MethodInvocation) && exp.getType() != null) { + } else if ((exp instanceof J.Identifier || exp instanceof J.MethodInvocation) && exp.getType() != null) { JavaType.FullyQualified fullyQualified = TypeUtils.asFullyQualified(exp.getType()); if (fullyQualified != null && fullyQualified.getFullyQualifiedName().equals("java.lang.String")) { addToGroups(group, groups); @@ -114,8 +110,8 @@ J.MethodInvocation chainedMethods = m.withArguments(singletonList(groups.get(0))); for (int i = 1; i < groups.size(); i++) { chainedMethods = chainedMethods.withSelect(chainedMethods) - .withArguments(singletonList(groups.get(i).unwrap())) - .withPrefix(Space.EMPTY); + .withArguments(singletonList(groups.get(i).unwrap())) + .withPrefix(Space.EMPTY); } return chainedMethods; @@ -123,7 +119,7 @@ return m; } - }; + }); } /** diff --git a/src/main/java/org/openrewrite/staticanalysis/DefaultComesLast.java b/src/main/java/org/openrewrite/staticanalysis/DefaultComesLast.java index 1a56426..2117ae7 100644 --- a/src/main/java/org/openrewrite/staticanalysis/DefaultComesLast.java +++ b/src/main/java/org/openrewrite/staticanalysis/DefaultComesLast.java @@ -15,13 +15,12 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; -import org.openrewrite.SourceFile; -import org.openrewrite.TreeVisitor; +import org.openrewrite.*; +import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.style.Checkstyle; import org.openrewrite.java.style.DefaultComesLastStyle; +import org.openrewrite.java.tree.J; import org.openrewrite.java.tree.JavaSourceFile; import java.time.Duration; @@ -56,14 +55,18 @@ } private static class DefaultComesLastFromCompilationUnitStyle extends JavaIsoVisitor { + @Override - public JavaSourceFile visitJavaSourceFile(JavaSourceFile cu, ExecutionContext executionContext) { - DefaultComesLastStyle style = ((SourceFile)cu).getStyle(DefaultComesLastStyle.class); - if (style == null) { - style = Checkstyle.defaultComesLast(); + public @Nullable J visit(@Nullable Tree tree, ExecutionContext executionContext) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile cu = (JavaSourceFile) tree; + DefaultComesLastStyle style = ((SourceFile) cu).getStyle(DefaultComesLastStyle.class); + if (style == null) { + style = Checkstyle.defaultComesLast(); + } + doAfterVisit(new DefaultComesLastVisitor<>(style)); } - doAfterVisit(new DefaultComesLastVisitor<>(style)); - return cu; + return super.visit(tree, executionContext); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/UnnecessaryCloseInTryWithResources.java b/src/main/java/org/openrewrite/staticanalysis/UnnecessaryCloseInTryWithResources.java index 9e97471..247b815 100644 --- a/src/main/java/org/openrewrite/staticanalysis/UnnecessaryCloseInTryWithResources.java +++ b/src/main/java/org/openrewrite/staticanalysis/UnnecessaryCloseInTryWithResources.java @@ -16,6 +16,7 @@ org.openrewrite.config.CompositeRecipe package org.openrewrite.staticanalysis; import org.openrewrite.ExecutionContext; +import org.openrewrite.Preconditions; import org.openrewrite.Recipe; import org.openrewrite.TreeVisitor; import org.openrewrite.internal.ListUtils; @@ -50,18 +51,13 @@ } @Override - protected JavaIsoVisitor getSingleSourceApplicableTest() { - return new JavaIsoVisitor() { + public TreeVisitor getVisitor() { + return Preconditions.check(new JavaIsoVisitor() { @Override public J.Try.Resource visitTryResource(J.Try.Resource tryResource, ExecutionContext executionContext) { return SearchResult.found(tryResource); } - }; - } - - @Override - public TreeVisitor getVisitor() { - return new UnnecessaryAutoCloseableVisitor(); + }, new UnnecessaryAutoCloseableVisitor()); } private static class UnnecessaryAutoCloseableVisitor extends JavaIsoVisitor { diff --git a/src/main/java/org/openrewrite/staticanalysis/ControlFlowIndentation.java b/src/main/java/org/openrewrite/staticanalysis/ControlFlowIndentation.java index e1bcdad..85cfc03 100755 --- a/src/main/java/org/openrewrite/staticanalysis/ControlFlowIndentation.java +++ b/src/main/java/org/openrewrite/staticanalysis/ControlFlowIndentation.java @@ -15,9 +15,7 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; -import org.openrewrite.SourceFile; +import org.openrewrite.*; import org.openrewrite.internal.ListUtils; import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; @@ -59,18 +57,20 @@ } @Override - public JavaIsoVisitor getVisitor() { + public TreeVisitor getVisitor() { return new JavaIsoVisitor() { TabsAndIndentsStyle tabsAndIndentsStyle; - @Override - public JavaSourceFile visitJavaSourceFile(JavaSourceFile cu, ExecutionContext executionContext) { - TabsAndIndentsStyle style = ((SourceFile)cu).getStyle(TabsAndIndentsStyle.class); - if (style == null) { - style = IntelliJ.tabsAndIndents(); + public @Nullable J visit(@Nullable Tree tree, ExecutionContext executionContext) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile cu = (JavaSourceFile) tree; + TabsAndIndentsStyle style = ((SourceFile) cu).getStyle(TabsAndIndentsStyle.class); + if (style == null) { + style = IntelliJ.tabsAndIndents(); + } + tabsAndIndentsStyle = style; } - tabsAndIndentsStyle = style; - return super.visitJavaSourceFile(cu, executionContext); + return super.visit(tree, executionContext); } @Override diff --git a/src/main/java/org/openrewrite/staticanalysis/RemoveUnneededBlock.java b/src/main/java/org/openrewrite/staticanalysis/RemoveUnneededBlock.java index 8251116..33f3503 100644 --- a/src/main/java/org/openrewrite/staticanalysis/RemoveUnneededBlock.java +++ b/src/main/java/org/openrewrite/staticanalysis/RemoveUnneededBlock.java @@ -18,6 +18,7 @@ org.openrewrite.config.CompositeRecipe import org.openrewrite.ExecutionContext; import org.openrewrite.Incubating; import org.openrewrite.Recipe; +import org.openrewrite.TreeVisitor; import org.openrewrite.internal.ListUtils; import org.openrewrite.java.JavaVisitor; import org.openrewrite.java.tree.J; @@ -38,7 +39,7 @@ } @Override - public JavaVisitor getVisitor() { + public TreeVisitor getVisitor() { return new RemoveUnneededBlockStatementVisitor(); } diff --git a/src/main/java/org/openrewrite/staticanalysis/AddSerialVersionUidToSerializable.java b/src/main/java/org/openrewrite/staticanalysis/AddSerialVersionUidToSerializable.java index 2405181..724d3c1 100644 --- a/src/main/java/org/openrewrite/staticanalysis/AddSerialVersionUidToSerializable.java +++ b/src/main/java/org/openrewrite/staticanalysis/AddSerialVersionUidToSerializable.java @@ -51,7 +51,7 @@ org.openrewrite.config.CompositeRecipe @Override public TreeVisitor getVisitor() { return new JavaIsoVisitor() { - final JavaTemplate template = JavaTemplate.builder(this::getCursor, "private static final long serialVersionUID = 1;").build(); + final JavaTemplate template = JavaTemplate.builder( "private static final long serialVersionUID = 1;")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().build(); @Override public J.MethodDeclaration visitMethodDeclaration(J.MethodDeclaration method, ExecutionContext executionContext) { @@ -87,7 +87,7 @@ return s; }))); if (needsSerialVersionId.get()) { - c = c.withTemplate(template, c.getBody().getCoordinates().firstStatement()); + c = template.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), c.getBody().getCoordinates().firstStatement()); } return c; } diff --git a/src/main/java/org/openrewrite/staticanalysis/EmptyBlock.java b/src/main/java/org/openrewrite/staticanalysis/EmptyBlock.java index 356d8c5..a9c672b 100644 --- a/src/main/java/org/openrewrite/staticanalysis/EmptyBlock.java +++ b/src/main/java/org/openrewrite/staticanalysis/EmptyBlock.java @@ -15,13 +15,12 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; -import org.openrewrite.SourceFile; -import org.openrewrite.TreeVisitor; +import org.openrewrite.*; +import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.style.Checkstyle; import org.openrewrite.java.style.EmptyBlockStyle; +import org.openrewrite.java.tree.J; import org.openrewrite.java.tree.JavaSourceFile; import java.time.Duration; @@ -56,14 +55,18 @@ } private static class EmptyBlockFromCompilationUnitStyle extends JavaIsoVisitor { + @Override - public JavaSourceFile visitJavaSourceFile(JavaSourceFile cu, ExecutionContext executionContext) { - EmptyBlockStyle style = ((SourceFile)cu).getStyle(EmptyBlockStyle.class); - if (style == null) { - style = Checkstyle.emptyBlock(); + public @Nullable J visit(@Nullable Tree tree, ExecutionContext executionContext) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile cu = (JavaSourceFile) tree; + EmptyBlockStyle style = ((SourceFile) cu).getStyle(EmptyBlockStyle.class); + if (style == null) { + style = Checkstyle.emptyBlock(); + } + doAfterVisit(new EmptyBlockVisitor<>(style)); } - doAfterVisit(new EmptyBlockVisitor<>(style)); - return cu; + return super.visit(tree, executionContext); } } } diff --git a/src/main/java/org/openrewrite/staticanalysis/NoEmptyCollectionWithRawType.java b/src/main/java/org/openrewrite/staticanalysis/NoEmptyCollectionWithRawType.java index 662b5e0..3d110fe 100644 --- a/src/main/java/org/openrewrite/staticanalysis/NoEmptyCollectionWithRawType.java +++ b/src/main/java/org/openrewrite/staticanalysis/NoEmptyCollectionWithRawType.java @@ -15,10 +15,7 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; -import org.openrewrite.Tree; -import org.openrewrite.TreeVisitor; +import org.openrewrite.*; import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaVisitor; import org.openrewrite.java.search.UsesType; @@ -45,12 +42,6 @@ return "Replaces `Collections#EMPTY_..` with methods that return generic types."; } - @Nullable - @Override - protected TreeVisitor getSingleSourceApplicableTest() { - return new UsesType<>("java.util.Collections", false); - } - @Override public Set getTags() { return Collections.singleton("RSPEC-1596"); @@ -62,13 +53,13 @@ } @Override - public JavaVisitor getVisitor() { + public TreeVisitor getVisitor() { Map updateFields = new HashMap<>(); updateFields.put("EMPTY_LIST", "emptyList"); updateFields.put("EMPTY_MAP", "emptyMap"); updateFields.put("EMPTY_SET", "emptySet"); - return new JavaVisitor() { + return Preconditions.check(new UsesType<>("java.util.Collections", false), new JavaVisitor() { @Override public J visitImport(J.Import anImport, ExecutionContext executionContext) { J.Identifier name = anImport.getQualid().getName(); @@ -118,6 +109,6 @@ } return id; } - }; + }); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/RemoveExtraSemicolons.java b/src/main/java/org/openrewrite/staticanalysis/RemoveExtraSemicolons.java index d3eee1c..f964b93 100644 --- a/src/main/java/org/openrewrite/staticanalysis/RemoveExtraSemicolons.java +++ b/src/main/java/org/openrewrite/staticanalysis/RemoveExtraSemicolons.java @@ -17,6 +17,7 @@ org.openrewrite.config.CompositeRecipe import org.openrewrite.ExecutionContext; import org.openrewrite.Recipe; +import org.openrewrite.TreeVisitor; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.JavaVisitor; import org.openrewrite.java.tree.J; @@ -50,7 +51,7 @@ @SuppressWarnings("ConstantConditions") @Override - public JavaVisitor getVisitor() { + public TreeVisitor getVisitor() { return new JavaIsoVisitor() { @Override public J.Empty visitEmpty(J.Empty empty, ExecutionContext ctx) { diff --git a/src/main/java/org/openrewrite/staticanalysis/FinalClass.java b/src/main/java/org/openrewrite/staticanalysis/FinalClass.java index 3e3ecca..fef7e52 100755 --- a/src/main/java/org/openrewrite/staticanalysis/FinalClass.java +++ b/src/main/java/org/openrewrite/staticanalysis/FinalClass.java @@ -17,6 +17,7 @@ org.openrewrite.config.CompositeRecipe import org.openrewrite.ExecutionContext; import org.openrewrite.Recipe; +import org.openrewrite.TreeVisitor; import org.openrewrite.java.JavaIsoVisitor; import java.time.Duration; @@ -45,7 +46,7 @@ } @Override - public JavaIsoVisitor getVisitor() { + public TreeVisitor getVisitor() { return new FinalClassVisitor(); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/ReplaceStreamToListWithCollect.java b/src/main/java/org/openrewrite/staticanalysis/ReplaceStreamToListWithCollect.java index 8706c4f..bcbfcb5 100644 --- a/src/main/java/org/openrewrite/staticanalysis/ReplaceStreamToListWithCollect.java +++ b/src/main/java/org/openrewrite/staticanalysis/ReplaceStreamToListWithCollect.java @@ -15,10 +15,7 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.Applicability; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; -import org.openrewrite.TreeVisitor; +import org.openrewrite.*; import org.openrewrite.java.JavaTemplate; import org.openrewrite.java.JavaVisitor; import org.openrewrite.java.MethodMatcher; @@ -50,33 +47,28 @@ } @Override - protected TreeVisitor getSingleSourceApplicableTest() { - return Applicability.and(new UsesJavaVersion<>(16), - new UsesMethod<>(STREAM_TO_LIST)); - } + public TreeVisitor getVisitor() { + return Preconditions.check( + Preconditions.and(new UsesJavaVersion<>(16), + new UsesMethod<>(STREAM_TO_LIST)), new JavaVisitor() { - @Override - protected TreeVisitor getVisitor() { - return new JavaVisitor() { + private final JavaTemplate template = JavaTemplate.builder( "#{any(java.util.stream.Stream)}.collect(Collectors.toList())")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive() + .imports("java.util.stream.Collectors") + .build(); - private final JavaTemplate template = JavaTemplate - .builder(this::getCursor, "#{any(java.util.stream.Stream)}.collect(Collectors.toList())") - .imports("java.util.stream.Collectors") - .build(); + @Override + public J visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) { + J.MethodInvocation result = (J.MethodInvocation) super.visitMethodInvocation(method, ctx); + if (STREAM_TO_LIST.matches(method)) { + JRightPadded select = result.getPadding().getSelect(); + result = template.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), result.getCoordinates().replace(), result.getSelect()); + result = result.getPadding().withSelect(select); + maybeAddImport("java.util.stream.Collectors"); + } + return result; + } - @Override - public J visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) { - J.MethodInvocation result = (J.MethodInvocation) super.visitMethodInvocation(method, ctx); - if (STREAM_TO_LIST.matches(method)) { - JRightPadded select = result.getPadding().getSelect(); - result = result.withTemplate(template, result.getCoordinates().replace(), result.getSelect()); - result = result.getPadding().withSelect(select); - maybeAddImport("java.util.stream.Collectors"); - } - return result; - } - - }; + }); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/ReplaceStringBuilderWithString.java b/src/main/java/org/openrewrite/staticanalysis/ReplaceStringBuilderWithString.java index 5df6ce7..a5150a5 100644 --- a/src/main/java/org/openrewrite/staticanalysis/ReplaceStringBuilderWithString.java +++ b/src/main/java/org/openrewrite/staticanalysis/ReplaceStringBuilderWithString.java @@ -53,49 +53,45 @@ org.openrewrite.config.CompositeRecipe } @Override - protected @Nullable TreeVisitor getSingleSourceApplicableTest() { - return Applicability.and(new UsesMethod<>(STRING_BUILDER_APPEND), new UsesMethod<>(STRING_BUILDER_TO_STRING)); - } + public TreeVisitor getVisitor() { + return Preconditions.check( + Preconditions.and(new UsesMethod<>(STRING_BUILDER_APPEND), new UsesMethod<>(STRING_BUILDER_TO_STRING)), new JavaVisitor() { + @Override + public J visitMethodInvocation(J.MethodInvocation method, ExecutionContext executionContext) { + J.MethodInvocation m = (J.MethodInvocation) super.visitMethodInvocation(method, executionContext); - @Override - protected TreeVisitor getVisitor() { - return new JavaVisitor() { - @Override - public J visitMethodInvocation(J.MethodInvocation method, ExecutionContext executionContext) { - J.MethodInvocation m = (J.MethodInvocation) super.visitMethodInvocation(method, executionContext); + if (STRING_BUILDER_TO_STRING.matches(method)) { + List methodCallsChain = new ArrayList<>(); + List arguments = new ArrayList<>(); + boolean isFlattenable = flatMethodInvocationChain(method, methodCallsChain, arguments); + if (!isFlattenable) { + return m; + } - if (STRING_BUILDER_TO_STRING.matches(method)) { - List methodCallsChain = new ArrayList<>(); - List arguments = new ArrayList<>(); - boolean isFlattenable = flatMethodInvocationChain(method, methodCallsChain, arguments); - if (!isFlattenable) { + Collections.reverse(arguments); + adjustExpressions(arguments); + + Expression additive = ChainStringBuilderAppendCalls.additiveExpression(arguments) + .withPrefix(method.getPrefix()); + + if (isAMethodSelect(method)) { + additive = wrapExpression(additive); + } + + return additive; + } return m; } - Collections.reverse(arguments); - adjustExpressions(arguments); - - Expression additive = ChainStringBuilderAppendCalls.additiveExpression(arguments) - .withPrefix(method.getPrefix()); - - if (isAMethodSelect(method)) { - additive = wrapExpression(additive); + // Check if a method call is a select of another method call + private boolean isAMethodSelect(J.MethodInvocation method) { + Cursor parent = getCursor().getParent(2); // 2 means skip right padded cursor + if (parent == null || !(parent.getValue() instanceof J.MethodInvocation)) { + return false; + } + return ((J.MethodInvocation) parent.getValue()).getSelect() == method; } - - return additive; - } - return m; - } - - // Check if a method call is a select of another method call - private boolean isAMethodSelect(J.MethodInvocation method) { - Cursor parent = getCursor().getParent(2); // 2 means skip right padded cursor - if (parent == null || !(parent.getValue() instanceof J.MethodInvocation)) { - return false; - } - return ((J.MethodInvocation) parent.getValue()).getSelect() == method; - } - }; + }); } private J.Literal toStringLiteral(J.Literal input) { diff --git a/src/main/java/org/openrewrite/staticanalysis/NoWhitespaceAfter.java b/src/main/java/org/openrewrite/staticanalysis/NoWhitespaceAfter.java index 754a636..3d837b7 100755 --- a/src/main/java/org/openrewrite/staticanalysis/NoWhitespaceAfter.java +++ b/src/main/java/org/openrewrite/staticanalysis/NoWhitespaceAfter.java @@ -15,10 +15,7 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Incubating; -import org.openrewrite.Recipe; -import org.openrewrite.SourceFile; +import org.openrewrite.*; import org.openrewrite.internal.ListUtils; import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; @@ -41,7 +38,7 @@ } @Override - public JavaIsoVisitor getVisitor() { + public TreeVisitor getVisitor() { return new NoWhitespaceAfterVisitor(); } @@ -56,13 +53,16 @@ EmptyForIteratorPadStyle emptyForIteratorPadStyle; @Override - public JavaSourceFile visitJavaSourceFile(JavaSourceFile javaSourceFile, ExecutionContext ctx) { - SourceFile cu = (SourceFile)javaSourceFile; - spacesStyle = cu.getStyle(SpacesStyle.class) == null ? IntelliJ.spaces() : cu.getStyle(SpacesStyle.class); - noWhitespaceAfterStyle = cu.getStyle(NoWhitespaceAfterStyle.class) == null ? Checkstyle.noWhitespaceAfterStyle() : cu.getStyle(NoWhitespaceAfterStyle.class); - emptyForInitializerPadStyle = cu.getStyle(EmptyForInitializerPadStyle.class); - emptyForIteratorPadStyle = cu.getStyle(EmptyForIteratorPadStyle.class); - return super.visitJavaSourceFile((JavaSourceFile) cu, ctx); + public @Nullable J visit(@Nullable Tree tree, ExecutionContext ctx) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile javaSourceFile = (JavaSourceFile) tree; + SourceFile cu = (SourceFile) javaSourceFile; + spacesStyle = cu.getStyle(SpacesStyle.class) == null ? IntelliJ.spaces() : cu.getStyle(SpacesStyle.class); + noWhitespaceAfterStyle = cu.getStyle(NoWhitespaceAfterStyle.class) == null ? Checkstyle.noWhitespaceAfterStyle() : cu.getStyle(NoWhitespaceAfterStyle.class); + emptyForInitializerPadStyle = cu.getStyle(EmptyForInitializerPadStyle.class); + emptyForIteratorPadStyle = cu.getStyle(EmptyForIteratorPadStyle.class); + } + return super.visit(tree, ctx); } @Override diff --git a/src/main/java/org/openrewrite/staticanalysis/UseDiamondOperator.java b/src/main/java/org/openrewrite/staticanalysis/UseDiamondOperator.java index b378a35..c0f3d15 100644 --- a/src/main/java/org/openrewrite/staticanalysis/UseDiamondOperator.java +++ b/src/main/java/org/openrewrite/staticanalysis/UseDiamondOperator.java @@ -15,10 +15,7 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.Cursor; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; -import org.openrewrite.TreeVisitor; +import org.openrewrite.*; import org.openrewrite.internal.ListUtils; import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; @@ -62,9 +59,13 @@ } private static class UseDiamondOperatorVisitor extends JavaIsoVisitor { + @Override - public JavaSourceFile visitJavaSourceFile(JavaSourceFile cu, ExecutionContext ctx) { - return cu instanceof J.CompilationUnit ? visitCompilationUnit((J.CompilationUnit) cu, ctx) : cu; + public @Nullable J visit(@Nullable Tree tree, ExecutionContext ctx) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile cu = (JavaSourceFile) tree; + } + return super.visit(tree, ctx); } @Override diff --git a/src/main/java/org/openrewrite/staticanalysis/RemoveInstanceOfPatternMatch.java b/src/main/java/org/openrewrite/staticanalysis/RemoveInstanceOfPatternMatch.java index 53d84da..ed2a125 100644 --- a/src/main/java/org/openrewrite/staticanalysis/RemoveInstanceOfPatternMatch.java +++ b/src/main/java/org/openrewrite/staticanalysis/RemoveInstanceOfPatternMatch.java @@ -48,13 +48,8 @@ org.openrewrite.config.CompositeRecipe } @Override - protected TreeVisitor getSingleSourceApplicableTest() { - return new UsesJavaVersion<>(14); - } - - @Override - protected TreeVisitor getVisitor() { - return new RemoveInstanceOfPatternMatchVisitor(); + public TreeVisitor getVisitor() { + return Preconditions.check(new UsesJavaVersion<>(14), new RemoveInstanceOfPatternMatchVisitor()); } /** @@ -175,10 +170,9 @@ * @return the updated block */ private J.Block addVariableDeclaration(J.Block block, J.InstanceOf instanceOf, ExecutionContext ctx) { - JavaTemplate template = JavaTemplate - .builder(() -> new Cursor(getCursor(), block), "#{} #{} = (#{}) #{any()};") + JavaTemplate template = JavaTemplate.builder( "#{} #{} = (#{}) #{any()};")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive() .build(); - return block.withTemplate(template, + return template.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), block.getCoordinates().firstStatement(), instanceOf.getClazz().toString(), ((J.Identifier) Objects.requireNonNull(instanceOf.getPattern())).getSimpleName(), diff --git a/src/main/java/org/openrewrite/staticanalysis/AvoidBoxedBooleanExpressions.java b/src/main/java/org/openrewrite/staticanalysis/AvoidBoxedBooleanExpressions.java index 53496ff..ad66981 100644 --- a/src/main/java/org/openrewrite/staticanalysis/AvoidBoxedBooleanExpressions.java +++ b/src/main/java/org/openrewrite/staticanalysis/AvoidBoxedBooleanExpressions.java @@ -15,10 +15,7 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.Cursor; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; -import org.openrewrite.TreeVisitor; +import org.openrewrite.*; import org.openrewrite.java.JavaTemplate; import org.openrewrite.java.JavaVisitor; import org.openrewrite.java.search.UsesType; @@ -50,29 +47,22 @@ } @Override - protected TreeVisitor getSingleSourceApplicableTest() { - return new UsesType<>("java.lang.Boolean", true); - } - - @Override public Duration getEstimatedEffortPerOccurrence() { return Duration.of(5, ChronoUnit.MINUTES); } @Override - protected TreeVisitor getVisitor() { - return new JavaVisitor() { + public TreeVisitor getVisitor() { + return Preconditions.check(new UsesType<>("java.lang.Boolean", true), new JavaVisitor() { @Override public Expression visitExpression(Expression expression, ExecutionContext ctx) { Expression e = (Expression) super.visitExpression(expression, ctx); if (TypeUtils.isOfClassType(e.getType(), "java.lang.Boolean")) { if (isControlExpression(expression)) { - return e.withTemplate( - JavaTemplate.builder(this::getCursor, - "Boolean.TRUE.equals(#{any(java.lang.Boolean)})").build(), + return JavaTemplate.builder( + "Boolean.TRUE.equals(#{any(java.lang.Boolean)})")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().build().apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), e.getCoordinates().replace(), - e - ); + e); } } return e; @@ -82,12 +72,10 @@ public J visitUnary(J.Unary unary, ExecutionContext executionContext) { J.Unary un = (J.Unary) super.visitUnary(unary, executionContext); if (J.Unary.Type.Not == un.getOperator() && TypeUtils.isOfClassType(un.getExpression().getType(), "java.lang.Boolean")) { - return un.withTemplate( - JavaTemplate.builder(this::getCursor, - "Boolean.FALSE.equals(#{any(java.lang.Boolean)})").build(), + return JavaTemplate.builder( + "Boolean.FALSE.equals(#{any(java.lang.Boolean)})")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().build().apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), un.getCoordinates().replace(), - un.getExpression() - ); + un.getExpression()); } return un; } @@ -97,12 +85,11 @@ if (parentCursor.getValue() instanceof J.ControlParentheses && parentCursor.getParentTreeCursor().getValue() instanceof J.If) { return true; - } - else if (parentCursor.getValue() instanceof J.Ternary) { - return ((J.Ternary)parentCursor.getValue()).getCondition() == expression; + } else if (parentCursor.getValue() instanceof J.Ternary) { + return ((J.Ternary) parentCursor.getValue()).getCondition() == expression; } return false; } - }; + }); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/SimplifyConsecutiveAssignments.java b/src/main/java/org/openrewrite/staticanalysis/SimplifyConsecutiveAssignments.java index a77dec7..82b53ad 100644 --- a/src/main/java/org/openrewrite/staticanalysis/SimplifyConsecutiveAssignments.java +++ b/src/main/java/org/openrewrite/staticanalysis/SimplifyConsecutiveAssignments.java @@ -18,6 +18,7 @@ org.openrewrite.config.CompositeRecipe import org.openrewrite.ExecutionContext; import org.openrewrite.Recipe; import org.openrewrite.Tree; +import org.openrewrite.TreeVisitor; import org.openrewrite.internal.ListUtils; import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; @@ -47,11 +48,10 @@ } @Override - public JavaVisitor getVisitor() { + public TreeVisitor getVisitor() { return new JavaIsoVisitor() { // TODO if we had a `replace()` coordinate on every `Expression`, we wouldn't need the left side of this - final JavaTemplate combinedAssignment = JavaTemplate - .builder(this::getCursor, "o = (#{any()} #{} #{any()});") + final JavaTemplate combinedAssignment = JavaTemplate.builder( "o = (#{any()} #{} #{any()});")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive() // ok to ignore invalid type info on left-hand side of assignment. .build(); @@ -187,12 +187,12 @@ private Statement combine(Statement s, String op, Expression right) { if (s instanceof J.Assignment) { J.Assignment assign = (J.Assignment) s; - J.Assignment after = s.withTemplate(combinedAssignment, s.getCoordinates().replace(), + J.Assignment after = combinedAssignment.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), s.getCoordinates().replace(), assign.getAssignment(), op, right); return assign.withAssignment(after.getAssignment()); } else if (s instanceof J.VariableDeclarations) { J.VariableDeclarations variables = (J.VariableDeclarations) s; - J.Assignment after = s.withTemplate(combinedAssignment, s.getCoordinates().replace(), + J.Assignment after = combinedAssignment.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), s.getCoordinates().replace(), variables.getVariables().get(0).getInitializer(), op, right); return variables.withVariables(ListUtils.map(variables.getVariables(), (i, namedVar) -> i == 0 ? namedVar.withInitializer(after.getAssignment()) : namedVar)); diff --git a/src/main/java/org/openrewrite/staticanalysis/WriteOctalValuesAsDecimal.java b/src/main/java/org/openrewrite/staticanalysis/WriteOctalValuesAsDecimal.java index 4622c71..b2f7b37 100644 --- a/src/main/java/org/openrewrite/staticanalysis/WriteOctalValuesAsDecimal.java +++ b/src/main/java/org/openrewrite/staticanalysis/WriteOctalValuesAsDecimal.java @@ -17,6 +17,7 @@ org.openrewrite.config.CompositeRecipe import org.openrewrite.ExecutionContext; import org.openrewrite.Recipe; +import org.openrewrite.TreeVisitor; import org.openrewrite.java.JavaVisitor; import org.openrewrite.java.tree.J; @@ -46,7 +47,7 @@ } @Override - public JavaVisitor getVisitor() { + public TreeVisitor getVisitor() { return new JavaVisitor() { @Override public J visitLiteral(J.Literal literal, ExecutionContext executionContext) { diff --git a/src/main/java/org/openrewrite/staticanalysis/EqualsAvoidsNull.java b/src/main/java/org/openrewrite/staticanalysis/EqualsAvoidsNull.java index a389115..feb8a80 100644 --- a/src/main/java/org/openrewrite/staticanalysis/EqualsAvoidsNull.java +++ b/src/main/java/org/openrewrite/staticanalysis/EqualsAvoidsNull.java @@ -15,13 +15,12 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; -import org.openrewrite.SourceFile; -import org.openrewrite.TreeVisitor; +import org.openrewrite.*; +import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.style.Checkstyle; import org.openrewrite.java.style.EqualsAvoidsNullStyle; +import org.openrewrite.java.tree.J; import org.openrewrite.java.tree.JavaSourceFile; import java.time.Duration; @@ -56,14 +55,18 @@ } private static class EqualsAvoidsNullFromCompilationUnitStyle extends JavaIsoVisitor { + @Override - public JavaSourceFile visitJavaSourceFile(JavaSourceFile cu, ExecutionContext executionContext) { - EqualsAvoidsNullStyle style = ((SourceFile) cu).getStyle(EqualsAvoidsNullStyle.class); - if (style == null) { - style = Checkstyle.equalsAvoidsNull(); + public @Nullable J visit(@Nullable Tree tree, ExecutionContext executionContext) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile cu = (JavaSourceFile) tree; + EqualsAvoidsNullStyle style = ((SourceFile) cu).getStyle(EqualsAvoidsNullStyle.class); + if (style == null) { + style = Checkstyle.equalsAvoidsNull(); + } + doAfterVisit(new EqualsAvoidsNullVisitor<>(style)); } - doAfterVisit(new EqualsAvoidsNullVisitor<>(style)); - return cu; + return super.visit(tree, executionContext); } } } diff --git a/src/main/java/org/openrewrite/staticanalysis/RemoveSystemOutPrintln.java b/src/main/java/org/openrewrite/staticanalysis/RemoveSystemOutPrintln.java index 241557b..5a07e54 100644 --- a/src/main/java/org/openrewrite/staticanalysis/RemoveSystemOutPrintln.java +++ b/src/main/java/org/openrewrite/staticanalysis/RemoveSystemOutPrintln.java @@ -16,6 +16,7 @@ org.openrewrite.config.CompositeRecipe package org.openrewrite.staticanalysis; import org.openrewrite.ExecutionContext; +import org.openrewrite.Preconditions; import org.openrewrite.Recipe; import org.openrewrite.TreeVisitor; import org.openrewrite.java.JavaIsoVisitor; @@ -37,13 +38,8 @@ } @Override - protected TreeVisitor getSingleSourceApplicableTest() { - return new UsesMethod<>(SYSTEM_OUT_PRINTLN); - } - - @Override - protected TreeVisitor getVisitor() { - return new JavaIsoVisitor() { + public TreeVisitor getVisitor() { + return Preconditions.check(new UsesMethod<>(SYSTEM_OUT_PRINTLN), new JavaIsoVisitor() { @Override public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) { if (SYSTEM_OUT_PRINTLN.matches(method)) { @@ -52,6 +48,6 @@ } return super.visitMethodInvocation(method, ctx); } - }; + }); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/FinalizeMethodArguments.java b/src/main/java/org/openrewrite/staticanalysis/FinalizeMethodArguments.java index 710826d..03cdbf9 100644 --- a/src/main/java/org/openrewrite/staticanalysis/FinalizeMethodArguments.java +++ b/src/main/java/org/openrewrite/staticanalysis/FinalizeMethodArguments.java @@ -17,10 +17,7 @@ org.openrewrite.config.CompositeRecipe import java.util.concurrent.atomic.AtomicBoolean; import lombok.EqualsAndHashCode; import lombok.Value; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; -import org.openrewrite.SourceFile; -import org.openrewrite.Tree; +import org.openrewrite.*; import org.openrewrite.internal.ListUtils; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.tree.J; @@ -55,7 +52,7 @@ } @Override - public JavaIsoVisitor getVisitor() { + public TreeVisitor getVisitor() { return new JavaIsoVisitor() { @Override public MethodDeclaration visitMethodDeclaration(MethodDeclaration methodDeclaration, ExecutionContext executionContext) { diff --git a/src/main/java/org/openrewrite/staticanalysis/NoRedundantJumpStatements.java b/src/main/java/org/openrewrite/staticanalysis/NoRedundantJumpStatements.java index 4d8a7ad..c7e6fd1 100644 --- a/src/main/java/org/openrewrite/staticanalysis/NoRedundantJumpStatements.java +++ b/src/main/java/org/openrewrite/staticanalysis/NoRedundantJumpStatements.java @@ -17,6 +17,7 @@ org.openrewrite.config.CompositeRecipe import org.openrewrite.ExecutionContext; import org.openrewrite.Recipe; +import org.openrewrite.TreeVisitor; import org.openrewrite.internal.ListUtils; import org.openrewrite.java.InvertCondition; import org.openrewrite.java.JavaIsoVisitor; @@ -52,7 +53,7 @@ } @Override - public JavaVisitor getVisitor() { + public TreeVisitor getVisitor() { return new JavaIsoVisitor() { @Override diff --git a/src/main/java/org/openrewrite/staticanalysis/UseLambdaForFunctionalInterface.java b/src/main/java/org/openrewrite/staticanalysis/UseLambdaForFunctionalInterface.java index 2990da1..861ccc9 100644 --- a/src/main/java/org/openrewrite/staticanalysis/UseLambdaForFunctionalInterface.java +++ b/src/main/java/org/openrewrite/staticanalysis/UseLambdaForFunctionalInterface.java @@ -58,7 +58,7 @@ org.openrewrite.config.CompositeRecipe } @Override - public JavaVisitor getVisitor() { + public TreeVisitor getVisitor() { return new JavaVisitor() { @Override public J visitNewClass(J.NewClass newClass, ExecutionContext ctx) { @@ -117,11 +117,9 @@ } templateBuilder.append('}'); - J.Lambda lambda = n.withTemplate( - JavaTemplate.builder(this::getCursor, templateBuilder.toString()) - .build(), - n.getCoordinates().replace() - ); + J.Lambda lambda = JavaTemplate.builder(templateBuilder.toString())/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive() + .build().apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), + n.getCoordinates().replace()); lambda = lambda.withType(typedInterface); lambda = (J.Lambda) new UnnecessaryParenthesesVisitor(Checkstyle.unnecessaryParentheses()) .visitNonNull(lambda, ctx); @@ -133,6 +131,7 @@ lambda = (J.Lambda) new LambdaBlockToExpression().getVisitor().visitNonNull(lambda, ctx); + // [Rewrite8 migration] TreeVisitor#doAfterVisit(Recipe) has been removed, it could be mistaken usage of `TreeVisitor#doAfterVisit(TreeVisitor visitor)` here, please review code and see if it can be replaced. doAfterVisit(new RemoveUnusedImports()); return autoFormat(lambda, ctx); diff --git a/src/main/java/org/openrewrite/staticanalysis/RenameMethodsNamedHashcodeEqualOrTostring.java b/src/main/java/org/openrewrite/staticanalysis/RenameMethodsNamedHashcodeEqualOrTostring.java index 5f613b9..4e39f43 100644 --- a/src/main/java/org/openrewrite/staticanalysis/RenameMethodsNamedHashcodeEqualOrTostring.java +++ b/src/main/java/org/openrewrite/staticanalysis/RenameMethodsNamedHashcodeEqualOrTostring.java @@ -15,9 +15,8 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; -import org.openrewrite.TreeVisitor; +import org.openrewrite.*; +import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.ChangeMethodName; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.MethodMatcher; @@ -57,20 +56,18 @@ } @Override - protected TreeVisitor getSingleSourceApplicableTest() { - return new JavaIsoVisitor() { - @Override - public JavaSourceFile visitJavaSourceFile(JavaSourceFile cu, ExecutionContext executionContext) { - doAfterVisit(new DeclaresMethod<>(NO_ARGS)); - doAfterVisit(new DeclaresMethod<>(OBJECT_ARG)); - return cu; - } - }; - } - - @Override public TreeVisitor getVisitor() { - return new JavaIsoVisitor() { + return Preconditions.check(new JavaIsoVisitor() { + @Override + public @Nullable J visit(@Nullable Tree tree, ExecutionContext executionContext) { + if (tree instanceof JavaSourceFile) { + JavaSourceFile cu = (JavaSourceFile) tree; + doAfterVisit(new DeclaresMethod<>(NO_ARGS)); + doAfterVisit(new DeclaresMethod<>(OBJECT_ARG)); + } + return super.visit(tree, executionContext); + } + }, new JavaIsoVisitor() { @Override public J.MethodDeclaration visitMethodDeclaration(J.MethodDeclaration method, ExecutionContext ctx) { if (method.getMethodType() != null && method.getReturnTypeExpression() != null) { @@ -78,10 +75,13 @@ JavaType rte = method.getReturnTypeExpression().getType(); JavaType.Method t = method.getMethodType(); if (equalsIgnoreCaseExclusive(sn, "hashCode") && JavaType.Primitive.Int.equals(rte) && NO_ARGS.matches(t)) { + // [Rewrite8 migration] TreeVisitor#doAfterVisit(Recipe) has been removed, it could be mistaken usage of `TreeVisitor#doAfterVisit(TreeVisitor visitor)` here, please review code and see if it can be replaced. doAfterVisit(new ChangeMethodName(MethodMatcher.methodPattern(method), "hashCode", true, false)); } else if ("equal".equalsIgnoreCase(sn) && JavaType.Primitive.Boolean.equals(rte) && OBJECT_ARG.matches(t)) { + // [Rewrite8 migration] TreeVisitor#doAfterVisit(Recipe) has been removed, it could be mistaken usage of `TreeVisitor#doAfterVisit(TreeVisitor visitor)` here, please review code and see if it can be replaced. doAfterVisit(new ChangeMethodName(MethodMatcher.methodPattern(method), "equals", true, false)); } else if (equalsIgnoreCaseExclusive(sn, "toString") && TypeUtils.isString(rte) && NO_ARGS.matches(t)) { + // [Rewrite8 migration] TreeVisitor#doAfterVisit(Recipe) has been removed, it could be mistaken usage of `TreeVisitor#doAfterVisit(TreeVisitor visitor)` here, please review code and see if it can be replaced. doAfterVisit(new ChangeMethodName(MethodMatcher.methodPattern(method), "toString", true, false)); } } @@ -91,6 +91,6 @@ private boolean equalsIgnoreCaseExclusive(String inputToCheck, String targetToCheck) { return inputToCheck.equalsIgnoreCase(targetToCheck) && !inputToCheck.equals(targetToCheck); } - }; + }); } } diff --git a/src/main/java/org/openrewrite/staticanalysis/FinalizePrivateFields.java b/src/main/java/org/openrewrite/staticanalysis/FinalizePrivateFields.java index 300fe49..e658b7d 100644 --- a/src/main/java/org/openrewrite/staticanalysis/FinalizePrivateFields.java +++ b/src/main/java/org/openrewrite/staticanalysis/FinalizePrivateFields.java @@ -57,7 +57,7 @@ org.openrewrite.config.CompositeRecipe } @Override - protected TreeVisitor getVisitor() { + public TreeVisitor getVisitor() { return new JavaIsoVisitor() { private Set privateFieldsToBeFinalized = new HashSet<>(); diff --git a/src/main/java/org/openrewrite/staticanalysis/FixStringFormatExpressions.java b/src/main/java/org/openrewrite/staticanalysis/FixStringFormatExpressions.java index 1406ab2..9f53f46 100644 --- a/src/main/java/org/openrewrite/staticanalysis/FixStringFormatExpressions.java +++ b/src/main/java/org/openrewrite/staticanalysis/FixStringFormatExpressions.java @@ -15,10 +15,7 @@ org.openrewrite.config.CompositeRecipe */ package org.openrewrite.staticanalysis; -import org.openrewrite.Applicability; -import org.openrewrite.ExecutionContext; -import org.openrewrite.Recipe; -import org.openrewrite.TreeVisitor; +import org.openrewrite.*; import org.openrewrite.internal.ListUtils; import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.JavaIsoVisitor; @@ -55,15 +52,11 @@ } @Override - protected @Nullable TreeVisitor getSingleSourceApplicableTest() { - return Applicability.or( - new UsesMethod<>(new MethodMatcher("java.lang.String format(..)")), - new UsesMethod<>(new MethodMatcher("java.lang.String formatted(..)"))); - } - - @Override - protected FixPrintfExpressionsVisitor getVisitor() { - return new FixPrintfExpressionsVisitor(); + public TreeVisitor getVisitor() { + return Preconditions.check( + Preconditions.or( + new UsesMethod<>(new MethodMatcher("java.lang.String format(..)")), + new UsesMethod<>(new MethodMatcher("java.lang.String formatted(..)"))), new FixPrintfExpressionsVisitor()); } private static class FixPrintfExpressionsVisitor extends JavaIsoVisitor { diff --git a/src/main/java/org/openrewrite/staticanalysis/HideUtilityClassConstructorVisitor.java b/src/main/java/org/openrewrite/staticanalysis/HideUtilityClassConstructorVisitor.java index 6c62415..29eefb4 100644 --- a/src/main/java/org/openrewrite/staticanalysis/HideUtilityClassConstructorVisitor.java +++ b/src/main/java/org/openrewrite/staticanalysis/HideUtilityClassConstructorVisitor.java @@ -94,10 +94,9 @@ org.openrewrite.config.CompositeRecipe public J.ClassDeclaration visitClassDeclaration(J.ClassDeclaration classDecl, P p) { if (UtilityClassMatcher.hasImplicitDefaultConstructor(classDecl) && !J.ClassDeclaration.Kind.Type.Enum.equals(classDecl.getKind())) { - classDecl = classDecl.withTemplate(JavaTemplate.builder(this::getCursor, "private #{}() {}").build(), + classDecl = JavaTemplate.builder("private #{}() {}")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().build().apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), classDecl.getBody().getCoordinates().lastStatement(), - classDecl.getSimpleName() - ); + classDecl.getSimpleName()); } return classDecl; } diff --git a/src/main/java/org/openrewrite/staticanalysis/SimplifyDurationCreationUnits.java b/src/main/java/org/openrewrite/staticanalysis/SimplifyDurationCreationUnits.java index 4f365a3..af02cd1 100644 --- a/src/main/java/org/openrewrite/staticanalysis/SimplifyDurationCreationUnits.java +++ b/src/main/java/org/openrewrite/staticanalysis/SimplifyDurationCreationUnits.java @@ -63,13 +63,16 @@ org.openrewrite.config.CompositeRecipe return "Simplifies `java.time.Duration` units to be more human-readable."; } + // [Rewrite8 migration] Method `Recipe#getApplicableTest(..)` is deprecated and needs to be converted to a `ScanningRecipe`. Or you can use `Precondition#check()` if it is meant to use a single-source applicability test. please follow the migration guide here: https://to-be-written + // [Rewrite8 migration] Method `Recipe#getApplicableTest(..)` is deprecated and needs to be converted to a `ScanningRecipe`. Or you can use `Precondition#check()` if it is meant to use a single-source applicability test. please follow the migration guide here: https://to-be-written + // [Rewrite8 migration] Method `Recipe#getApplicableTest(..)` is deprecated and needs to be converted to a `ScanningRecipe`. Or you can use `Precondition#check()` if it is meant to use a single-source applicability test. please follow the migration guide here: https://to-be-written @Override protected @Nullable TreeVisitor getApplicableTest() { return new UsesMethod<>(new MethodMatcher("java.time.Duration of*(long)")); } @Override - protected TreeVisitor getVisitor() { + public TreeVisitor getVisitor() { return new JavaIsoVisitor() { @Override public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) { @@ -105,15 +108,12 @@ return method; } - JavaTemplate template = JavaTemplate.builder(this::getCursor, "#{}(#{})").build(); + JavaTemplate template = JavaTemplate.builder( "#{}(#{})")/*[Rewrite8 migration] contextSensitive() could be unnecessary and can be removed, please follow the migration guide*/.contextSensitive().build(); return maybeAutoFormat( - method, - method.withTemplate( - template, - method.getCoordinates().replaceMethod(), - simplifiedUnits.methodName, - millis / simplifiedUnits.millisFactor - ), + method, template.apply(/*[Rewrite8 migration] getCursor() could be updateCursor() if J instance is udpated in this visit method, please follow the migration guide*/getCursor(), + method.getCoordinates().replaceMethod(), + simplifiedUnits.methodName, + millis / simplifiedUnits.millisFactor), ctx ); }