diff --git a/build.gradle.kts b/build.gradle.kts index 65d6a5a739..c05b606231 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -83,6 +83,7 @@ dependencies { runtimeOnly("tech.picnic.error-prone-support:error-prone-contrib:latest.release:recipes") testImplementation("org.junit-pioneer:junit-pioneer:2.0.0") + testImplementation("org.openrewrite:rewrite-groovy") testImplementation("org.openrewrite:rewrite-test") testImplementation("org.openrewrite.gradle.tooling:model:$rewriteVersion") diff --git a/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaListsNewArrayList.java b/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaListsNewArrayList.java index 91c6483ec6..3b03c06d47 100644 --- a/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaListsNewArrayList.java +++ b/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaListsNewArrayList.java @@ -57,7 +57,6 @@ public J visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) maybeRemoveImport("com.google.common.collect.Lists"); maybeAddImport("java.util.ArrayList"); return JavaTemplate.builder("new ArrayList<>()") - .contextSensitive() .imports("java.util.ArrayList") .build() .apply(getCursor(), method.getCoordinates().replace()); @@ -67,7 +66,6 @@ public J visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) maybeRemoveImport("com.google.common.collect.Lists"); maybeAddImport("java.util.ArrayList"); return JavaTemplate.builder("new ArrayList<>(#{any(java.util.Collection)})") - .contextSensitive() .imports("java.util.ArrayList") .build() .apply(getCursor(), method.getCoordinates().replace(), @@ -77,7 +75,6 @@ public J visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) maybeRemoveImport("com.google.common.collect.Lists"); maybeAddImport("java.util.ArrayList"); return JavaTemplate.builder("new ArrayList<>(#{any(int)})") - .contextSensitive() .imports("java.util.ArrayList") .build() .apply(getCursor(), method.getCoordinates().replace(), diff --git a/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaListsNewCopyOnWriteArrayList.java b/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaListsNewCopyOnWriteArrayList.java index 36455cba0b..5ee505c56f 100644 --- a/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaListsNewCopyOnWriteArrayList.java +++ b/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaListsNewCopyOnWriteArrayList.java @@ -55,7 +55,6 @@ public J visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) maybeRemoveImport("com.google.common.collect.Lists"); maybeAddImport("java.util.concurrent.CopyOnWriteArrayList"); return JavaTemplate.builder("new CopyOnWriteArrayList<>()") - .contextSensitive() .imports("java.util.concurrent.CopyOnWriteArrayList") .build() .apply(getCursor(), method.getCoordinates().replace()); @@ -65,7 +64,6 @@ public J visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) maybeRemoveImport("com.google.common.collect.Lists"); maybeAddImport("java.util.concurrent.CopyOnWriteArrayList"); return JavaTemplate.builder("new CopyOnWriteArrayList<>(#{any(java.util.Collection)})") - .contextSensitive() .imports("java.util.concurrent.CopyOnWriteArrayList") .build() .apply(getCursor(), method.getCoordinates().replace(), method.getArguments().get(0)); diff --git a/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaListsNewLinkedList.java b/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaListsNewLinkedList.java index 5505d135d7..51cad926d3 100644 --- a/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaListsNewLinkedList.java +++ b/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaListsNewLinkedList.java @@ -55,7 +55,6 @@ public J visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) maybeRemoveImport("com.google.common.collect.Lists"); maybeAddImport("java.util.LinkedList"); return JavaTemplate.builder("new LinkedList<>()") - .contextSensitive() .imports("java.util.LinkedList") .build() .apply(getCursor(), method.getCoordinates().replace()); @@ -65,7 +64,6 @@ public J visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) maybeRemoveImport("com.google.common.collect.Lists"); maybeAddImport("java.util.LinkedList"); return JavaTemplate.builder("new LinkedList<>(#{any(java.util.Collection)})") - .contextSensitive() .imports("java.util.LinkedList") .build() .apply(getCursor(), method.getCoordinates().replace(), method.getArguments().get(0)); diff --git a/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaMapsNewHashMap.java b/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaMapsNewHashMap.java index da16e8d0e0..f99a22cf49 100644 --- a/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaMapsNewHashMap.java +++ b/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaMapsNewHashMap.java @@ -54,7 +54,6 @@ public J visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) maybeRemoveImport("com.google.common.collect.Maps"); maybeAddImport("java.util.HashMap"); return JavaTemplate.builder("new HashMap<>()") - .contextSensitive() .imports("java.util.HashMap") .build() .apply(getCursor(), method.getCoordinates().replace()); @@ -63,7 +62,6 @@ public J visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) maybeRemoveImport("com.google.common.collect.Maps"); maybeAddImport("java.util.HashMap"); return JavaTemplate.builder("new HashMap<>(#{any(java.util.Map)})") - .contextSensitive() .imports("java.util.HashMap") .build() .apply(getCursor(), method.getCoordinates().replace(), method.getArguments().get(0)); diff --git a/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaMapsNewLinkedHashMap.java b/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaMapsNewLinkedHashMap.java index 0a6c42894a..b6e525107c 100644 --- a/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaMapsNewLinkedHashMap.java +++ b/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaMapsNewLinkedHashMap.java @@ -54,7 +54,6 @@ public J visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) maybeRemoveImport("com.google.common.collect.Maps"); maybeAddImport("java.util.LinkedHashMap"); return JavaTemplate.builder("new LinkedHashMap<>()") - .contextSensitive() .imports("java.util.LinkedHashMap") .build() .apply(getCursor(), method.getCoordinates().replace()); @@ -63,7 +62,6 @@ public J visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) maybeRemoveImport("com.google.common.collect.Maps"); maybeAddImport("java.util.LinkedHashMap"); return JavaTemplate.builder("new LinkedHashMap<>(#{any(java.util.Map)})") - .contextSensitive() .imports("java.util.LinkedHashMap") .build() .apply(getCursor(), method.getCoordinates().replace(), method.getArguments().get(0)); diff --git a/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaMapsNewTreeMap.java b/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaMapsNewTreeMap.java index 3b217aef4b..ece1e1774b 100644 --- a/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaMapsNewTreeMap.java +++ b/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaMapsNewTreeMap.java @@ -56,7 +56,6 @@ public J visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) maybeRemoveImport("com.google.common.collect.Maps"); maybeAddImport("java.util.TreeMap"); return JavaTemplate.builder("new TreeMap<>()") - .contextSensitive() .imports("java.util.TreeMap") .build() .apply(getCursor(), method.getCoordinates().replace()); @@ -65,7 +64,6 @@ public J visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) maybeRemoveImport("com.google.common.collect.Maps"); maybeAddImport("java.util.TreeMap"); return JavaTemplate.builder("new TreeMap<>(#{any(java.util.Comparator)})") - .contextSensitive() .imports("java.util.TreeMap") .build() .apply(getCursor(), method.getCoordinates().replace(), method.getArguments().get(0)); @@ -74,7 +72,6 @@ public J visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) maybeRemoveImport("com.google.common.collect.Maps"); maybeAddImport("java.util.TreeMap"); return JavaTemplate.builder("new TreeMap<>(#{any(java.util.Map)})") - .contextSensitive() .imports("java.util.TreeMap") .build() .apply(getCursor(), method.getCoordinates().replace(), method.getArguments().get(0)); diff --git a/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaSetsNewConcurrentHashSet.java b/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaSetsNewConcurrentHashSet.java index 81d535796e..d9654173fc 100644 --- a/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaSetsNewConcurrentHashSet.java +++ b/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaSetsNewConcurrentHashSet.java @@ -52,7 +52,6 @@ public J visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) maybeAddImport("java.util.Collections"); maybeAddImport("java.util.concurrent.ConcurrentHashMap"); return JavaTemplate.builder("Collections.newSetFromMap(new ConcurrentHashMap<>())") - .contextSensitive() .imports("java.util.Collections") .imports("java.util.concurrent.ConcurrentHashMap") .build() diff --git a/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaSetsNewHashSet.java b/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaSetsNewHashSet.java index 79e502932c..a4cfcb77c8 100644 --- a/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaSetsNewHashSet.java +++ b/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaSetsNewHashSet.java @@ -54,7 +54,6 @@ public J visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) maybeRemoveImport("com.google.common.collect.Sets"); maybeAddImport("java.util.HashSet"); return JavaTemplate.builder("new HashSet<>()") - .contextSensitive() .imports("java.util.HashSet") .build() .apply(getCursor(), method.getCoordinates().replace()); @@ -65,7 +64,6 @@ public J visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) maybeRemoveImport("com.google.common.collect.Sets"); maybeAddImport("java.util.HashSet"); return JavaTemplate.builder("new HashSet<>(#{any(java.util.Collection)})") - .contextSensitive() .imports("java.util.HashSet") .build() .apply(getCursor(), method.getCoordinates().replace(), method.getArguments().get(0)); @@ -79,7 +77,6 @@ public J visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) maybeAddImport("java.util.HashSet"); maybeAddImport("java.util.Arrays"); JavaTemplate newHashSetVarargs = JavaTemplate.builder("new HashSet<>(Arrays.asList(" + method.getArguments().stream().map(a -> "#{any()}").collect(joining(",")) + "))") - .contextSensitive() .imports("java.util.Arrays") .imports("java.util.HashSet") .build(); diff --git a/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaSetsNewLinkedHashSet.java b/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaSetsNewLinkedHashSet.java index fa2f754bfb..ab9a1db725 100644 --- a/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaSetsNewLinkedHashSet.java +++ b/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaSetsNewLinkedHashSet.java @@ -58,7 +58,6 @@ public J visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) maybeRemoveImport("com.google.common.collect.Sets"); maybeAddImport("java.util.LinkedHashSet"); return JavaTemplate.builder("new LinkedHashSet<>()") - .contextSensitive() .imports("java.util.LinkedHashSet") .build() .apply(getCursor(), method.getCoordinates().replace()); @@ -68,7 +67,6 @@ public J visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) maybeRemoveImport("com.google.common.collect.Sets"); maybeAddImport("java.util.LinkedHashSet"); return JavaTemplate.builder("new LinkedHashSet<>(#{any(java.util.Collection)})") - .contextSensitive() .imports("java.util.LinkedHashSet") .build() .apply(getCursor(), method.getCoordinates().replace(), method.getArguments().get(0)); @@ -77,7 +75,6 @@ public J visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) maybeRemoveImport("com.google.common.collect.Sets"); maybeAddImport("java.util.LinkedHashSet"); return JavaTemplate.builder("new LinkedHashSet<>(#{any(int)})") - .contextSensitive() .imports("java.util.LinkedHashSet") .build() .apply(getCursor(), method.getCoordinates().replace(), method.getArguments().get(0)); diff --git a/src/test/java/org/openrewrite/java/migrate/guava/NoGuavaMapsNewHashMapTest.java b/src/test/java/org/openrewrite/java/migrate/guava/NoGuavaMapsNewHashMapTest.java index 7960a87341..be91563278 100644 --- a/src/test/java/org/openrewrite/java/migrate/guava/NoGuavaMapsNewHashMapTest.java +++ b/src/test/java/org/openrewrite/java/migrate/guava/NoGuavaMapsNewHashMapTest.java @@ -18,10 +18,12 @@ import org.junit.jupiter.api.Test; import org.openrewrite.DocumentExample; import org.openrewrite.InMemoryExecutionContext; +import org.openrewrite.groovy.GroovyParser; import org.openrewrite.java.JavaParser; import org.openrewrite.test.RecipeSpec; import org.openrewrite.test.RewriteTest; +import static org.openrewrite.groovy.Assertions.groovy; import static org.openrewrite.java.Assertions.java; @@ -31,7 +33,8 @@ class NoGuavaMapsNewHashMapTest implements RewriteTest { public void defaults(RecipeSpec spec) { spec .recipe(new NoGuavaMapsNewHashMap()) - .parser(JavaParser.fromJavaVersion().classpathFromResources(new InMemoryExecutionContext(), "guava")); + .parser(JavaParser.fromJavaVersion().classpathFromResources(new InMemoryExecutionContext(), "guava")) + .parser(GroovyParser.builder().classpathFromResource(new InMemoryExecutionContext(), "guava")); } @DocumentExample @@ -88,4 +91,58 @@ class Test { ) ); } + + @Test + void replaceWithNewHashMapWithMapInGroovy() { + //language=groovy + rewriteRun( + groovy( + """ + import com.google.common.collect.Lists + import com.google.common.collect.Maps + + class Test extends Specification { + def 'test get_privilege_set'() { + def registry = Mock(Registry) + + when: + def result = ms.get_privilege_set(null, null, null) + + then: + result == new PrincipalPrivilegeSet(null + , null + , Maps.newHashMap(Map.of("users", + Lists.newArrayList(new PrivilegeGrantInfo("ALL", 0, "hadoop", PrincipalType.ROLE, true))))) + registry.timer(_) >> timer + timer.record(_, _) >> {} + registry.createId(_ as String) >> id + } + } + """, + """ + import com.google.common.collect.Lists + + import java.util.HashMap + + class Test extends Specification { + def 'test get_privilege_set'() { + def registry = Mock(Registry) + + when: + def result = ms.get_privilege_set(null, null, null) + + then: + result == new PrincipalPrivilegeSet(null + , null + , new HashMap<>(Map.of("users", + Lists.newArrayList(new PrivilegeGrantInfo("ALL", 0, "hadoop", PrincipalType.ROLE, true))))) + registry.timer(_) >> timer + timer.record(_, _) >> {} + registry.createId(_ as String) >> id + } + } + """ + ) + ); + } }