Skip to content

Commit 9feaf07

Browse files
committed
Slight polish to OptionalStreamRecipe
1 parent b6e35e2 commit 9feaf07

File tree

1 file changed

+13
-18
lines changed

1 file changed

+13
-18
lines changed

src/main/java/org/openrewrite/java/migrate/util/OptionalStreamRecipe.java

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,14 @@
1919
import org.openrewrite.Preconditions;
2020
import org.openrewrite.Recipe;
2121
import org.openrewrite.TreeVisitor;
22+
import org.openrewrite.internal.ListUtils;
2223
import org.openrewrite.java.JavaIsoVisitor;
2324
import org.openrewrite.java.JavaTemplate;
2425
import org.openrewrite.java.MethodMatcher;
2526
import org.openrewrite.java.search.UsesMethod;
2627
import org.openrewrite.java.tree.*;
2728

28-
import java.util.ArrayList;
29-
import java.util.List;
29+
import static java.util.Objects.requireNonNull;
3030

3131
public class OptionalStreamRecipe extends Recipe {
3232
@Override
@@ -69,27 +69,22 @@ public J.MethodInvocation visitMethodInvocation(J.MethodInvocation invocation, E
6969
return mapInvocation;
7070
}
7171

72-
JRightPadded<Expression> filterSelect = filterInvocation.getPadding().getSelect();
73-
JRightPadded<Expression> mapSelect = mapInvocation.getPadding().getSelect();
74-
JavaType.Method mapInvocationType = mapInvocation.getMethodType();
75-
Space flatMapComments = getFlatMapComments(mapSelect, filterSelect);
76-
JavaTemplate template =
77-
JavaTemplate.builder("#{any(java.util.stream.Stream)}.flatMap(Optional::stream)")
78-
.imports("java.util.Optional")
79-
.build();
80-
J.MethodInvocation flatMapInvocation = template
81-
.apply(updateCursor(mapInvocation), mapInvocation.getCoordinates().replace(), filterInvocation.getSelect());
72+
JRightPadded<Expression> filterSelect = requireNonNull(filterInvocation.getPadding().getSelect());
73+
JRightPadded<Expression> mapSelect = requireNonNull(mapInvocation.getPadding().getSelect());
74+
JavaType.Method mapInvocationType = requireNonNull(mapInvocation.getMethodType());
75+
J.MethodInvocation flatMapInvocation = JavaTemplate.builder("#{any(java.util.stream.Stream)}.flatMap(Optional::stream)")
76+
.imports("java.util.Optional")
77+
.build()
78+
.apply(updateCursor(mapInvocation), mapInvocation.getCoordinates().replace(), filterSelect.getElement());
79+
Space flatMapComments = filterSelect.getAfter().withComments(ListUtils.concatAll(
80+
filterSelect.getAfter().getComments(),
81+
mapSelect.getAfter().getComments()
82+
));
8283
return flatMapInvocation.getPadding()
8384
.withSelect(filterSelect.withAfter(flatMapComments))
8485
.withMethodType(mapInvocationType.withName("flatMap"))
8586
.withPrefix(mapInvocation.getPrefix());
8687
}
8788

88-
private static Space getFlatMapComments(JRightPadded<Expression> mapSelect, JRightPadded<Expression> filterSelect) {
89-
List<Comment> comments = new ArrayList<>();
90-
comments.addAll(filterSelect.getAfter().getComments());
91-
comments.addAll(mapSelect.getAfter().getComments());
92-
return filterSelect.getAfter().withComments(comments);
93-
}
9489
}
9590
}

0 commit comments

Comments
 (0)