From a372a610a450fbf75d7bc9e32641c742f8df539a Mon Sep 17 00:00:00 2001 From: Tim te Beek Date: Tue, 30 Sep 2025 14:09:23 +0000 Subject: [PATCH 1/4] StyleFrom Use this link to re-run the recipe: https://app.moderne.io/builder/6OMjIdVBh?organizationId=ODQ2MGExMTUtNDg0My00N2EwLTgzMGMtNGE1NGExMTBmZDkw Co-authored-by: Moderne --- .../java/org/openrewrite/java/migrate/UseTabsOrSpaces.java | 2 +- .../java/org/openrewrite/java/migrate/lang/UseTextBlocks.java | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/openrewrite/java/migrate/UseTabsOrSpaces.java b/src/main/java/org/openrewrite/java/migrate/UseTabsOrSpaces.java index d991c18439..26aa76ba5c 100644 --- a/src/main/java/org/openrewrite/java/migrate/UseTabsOrSpaces.java +++ b/src/main/java/org/openrewrite/java/migrate/UseTabsOrSpaces.java @@ -53,7 +53,7 @@ public TreeVisitor getVisitor() { public J visit(@Nullable Tree tree, ExecutionContext ctx) { if (tree instanceof JavaSourceFile) { JavaSourceFile cu = (JavaSourceFile) requireNonNull(tree); - TabsAndIndentsStyle style = ((SourceFile) cu).getStyle(TabsAndIndentsStyle.class); + TabsAndIndentsStyle style = Style.from( TabsAndIndentsStyle.class, ((SourceFile) cu) ); if (style == null) { style = IntelliJ.tabsAndIndents(); } diff --git a/src/main/java/org/openrewrite/java/migrate/lang/UseTextBlocks.java b/src/main/java/org/openrewrite/java/migrate/lang/UseTextBlocks.java index ff2c73a301..c30b7688b3 100644 --- a/src/main/java/org/openrewrite/java/migrate/lang/UseTextBlocks.java +++ b/src/main/java/org/openrewrite/java/migrate/lang/UseTextBlocks.java @@ -145,8 +145,7 @@ private J.Literal toTextBlock(J.Binary binary, String content, List s } } - TabsAndIndentsStyle tabsAndIndentsStyle = Optional.ofNullable(getCursor().firstEnclosingOrThrow(SourceFile.class) - .getStyle(TabsAndIndentsStyle.class)).orElse(IntelliJ.tabsAndIndents()); + TabsAndIndentsStyle tabsAndIndentsStyle = Optional.ofNullable(Style.from( TabsAndIndentsStyle.class, getCursor().firstEnclosingOrThrow( SourceFile.class ) )).orElse(IntelliJ.tabsAndIndents()); boolean useTab = tabsAndIndentsStyle.getUseTabCharacter(); int tabSize = tabsAndIndentsStyle.getTabSize(); From f4d9d063a5acbd670af463e71932ef1fe7aeee9c Mon Sep 17 00:00:00 2001 From: Tim te Beek Date: Tue, 30 Sep 2025 16:14:33 +0200 Subject: [PATCH 2/4] Replace Optional with method that takes a default value --- .../java/org/openrewrite/java/migrate/UseTabsOrSpaces.java | 1 + .../java/org/openrewrite/java/migrate/lang/UseTextBlocks.java | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/openrewrite/java/migrate/UseTabsOrSpaces.java b/src/main/java/org/openrewrite/java/migrate/UseTabsOrSpaces.java index 26aa76ba5c..737626eb2a 100644 --- a/src/main/java/org/openrewrite/java/migrate/UseTabsOrSpaces.java +++ b/src/main/java/org/openrewrite/java/migrate/UseTabsOrSpaces.java @@ -25,6 +25,7 @@ import org.openrewrite.java.style.TabsAndIndentsStyle; import org.openrewrite.java.tree.J; import org.openrewrite.java.tree.JavaSourceFile; +import org.openrewrite.style.Style; import static java.util.Objects.requireNonNull; diff --git a/src/main/java/org/openrewrite/java/migrate/lang/UseTextBlocks.java b/src/main/java/org/openrewrite/java/migrate/lang/UseTextBlocks.java index c30b7688b3..04e372debf 100644 --- a/src/main/java/org/openrewrite/java/migrate/lang/UseTextBlocks.java +++ b/src/main/java/org/openrewrite/java/migrate/lang/UseTextBlocks.java @@ -30,6 +30,7 @@ import org.openrewrite.java.tree.TypeUtils; import org.openrewrite.marker.Markers; import org.openrewrite.staticanalysis.kotlin.KotlinFileChecker; +import org.openrewrite.style.Style; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; @@ -37,7 +38,6 @@ import java.util.ArrayList; import java.util.Base64; import java.util.List; -import java.util.Optional; import static java.util.Objects.requireNonNull; import static java.util.stream.Collectors.toList; @@ -145,7 +145,7 @@ private J.Literal toTextBlock(J.Binary binary, String content, List s } } - TabsAndIndentsStyle tabsAndIndentsStyle = Optional.ofNullable(Style.from( TabsAndIndentsStyle.class, getCursor().firstEnclosingOrThrow( SourceFile.class ) )).orElse(IntelliJ.tabsAndIndents()); + TabsAndIndentsStyle tabsAndIndentsStyle = Style.from(TabsAndIndentsStyle.class, getCursor().firstEnclosingOrThrow(SourceFile.class), IntelliJ::tabsAndIndents); boolean useTab = tabsAndIndentsStyle.getUseTabCharacter(); int tabSize = tabsAndIndentsStyle.getTabSize(); From 1aa40fce1e90eb011fee510a15fd5de9cfdfc836 Mon Sep 17 00:00:00 2001 From: Tim te Beek Date: Tue, 30 Sep 2025 16:18:03 +0200 Subject: [PATCH 3/4] Polish --- .../java/org/openrewrite/java/migrate/UseTabsOrSpaces.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/openrewrite/java/migrate/UseTabsOrSpaces.java b/src/main/java/org/openrewrite/java/migrate/UseTabsOrSpaces.java index 737626eb2a..64d8a18fb9 100644 --- a/src/main/java/org/openrewrite/java/migrate/UseTabsOrSpaces.java +++ b/src/main/java/org/openrewrite/java/migrate/UseTabsOrSpaces.java @@ -44,7 +44,7 @@ public String getDisplayName() { @Override public String getDescription() { return "This is useful for one-off migrations of a codebase that has mixed indentation styles, while " + - "preserving all other auto-detected formatting rules."; + "preserving all other auto-detected formatting rules."; } @Override @@ -54,7 +54,7 @@ public TreeVisitor getVisitor() { public J visit(@Nullable Tree tree, ExecutionContext ctx) { if (tree instanceof JavaSourceFile) { JavaSourceFile cu = (JavaSourceFile) requireNonNull(tree); - TabsAndIndentsStyle style = Style.from( TabsAndIndentsStyle.class, ((SourceFile) cu) ); + TabsAndIndentsStyle style = Style.from(TabsAndIndentsStyle.class, cu); if (style == null) { style = IntelliJ.tabsAndIndents(); } From 741d9797fd236ced6bcbf74f56baaa7e3ddd696a Mon Sep 17 00:00:00 2001 From: Tim te Beek Date: Tue, 30 Sep 2025 17:11:34 +0200 Subject: [PATCH 4/4] Replace null check with default --- .../java/org/openrewrite/java/migrate/UseTabsOrSpaces.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/openrewrite/java/migrate/UseTabsOrSpaces.java b/src/main/java/org/openrewrite/java/migrate/UseTabsOrSpaces.java index 64d8a18fb9..78909735a0 100644 --- a/src/main/java/org/openrewrite/java/migrate/UseTabsOrSpaces.java +++ b/src/main/java/org/openrewrite/java/migrate/UseTabsOrSpaces.java @@ -54,11 +54,8 @@ public TreeVisitor getVisitor() { public J visit(@Nullable Tree tree, ExecutionContext ctx) { if (tree instanceof JavaSourceFile) { JavaSourceFile cu = (JavaSourceFile) requireNonNull(tree); - TabsAndIndentsStyle style = Style.from(TabsAndIndentsStyle.class, cu); - if (style == null) { - style = IntelliJ.tabsAndIndents(); - } - style = style.withUseTabCharacter(useTabs); + TabsAndIndentsStyle style = Style.from(TabsAndIndentsStyle.class, cu, IntelliJ::tabsAndIndents) + .withUseTabCharacter(useTabs); return new NormalizeTabsOrSpacesVisitor<>(style).visit(tree, ctx); } return (J) tree;