diff --git a/src/main/java/org/openrewrite/java/migrate/util/UseMapOf.java b/src/main/java/org/openrewrite/java/migrate/util/UseMapOf.java index 5c61a4fc80..9da115c789 100644 --- a/src/main/java/org/openrewrite/java/migrate/util/UseMapOf.java +++ b/src/main/java/org/openrewrite/java/migrate/util/UseMapOf.java @@ -28,6 +28,7 @@ import org.openrewrite.java.tree.Expression; import org.openrewrite.java.tree.J; import org.openrewrite.java.tree.Statement; +import org.openrewrite.java.tree.TypeUtils; import java.util.ArrayList; import java.util.List; @@ -54,7 +55,8 @@ public TreeVisitor getVisitor() { public J visitNewClass(J.NewClass newClass, ExecutionContext ctx) { J.NewClass n = (J.NewClass) super.visitNewClass(newClass, ctx); J.Block body = n.getBody(); - if (NEW_HASH_MAP.matches(n) && body != null && body.getStatements().size() == 1) { + if (NEW_HASH_MAP.matches(n) && body != null && body.getStatements().size() == 1 && + TypeUtils.isOfClassType(n.getClazz() != null ? n.getClazz().getType() : null, "java.util.HashMap")) { Statement statement = body.getStatements().get(0); if (statement instanceof J.Block) { List putStatements = ((J.Block) statement).getStatements(); diff --git a/src/test/java/org/openrewrite/java/migrate/util/UseMapOfTest.java b/src/test/java/org/openrewrite/java/migrate/util/UseMapOfTest.java index e406c324a1..ce4f047680 100644 --- a/src/test/java/org/openrewrite/java/migrate/util/UseMapOfTest.java +++ b/src/test/java/org/openrewrite/java/migrate/util/UseMapOfTest.java @@ -205,6 +205,49 @@ class Test { ); } + @Issue("https://github.com/openrewrite/rewrite-migrate-java/issues/1112") + @Test + void doNotChangeLinkedHashMap() { + //language=java + rewriteRun( + java( + """ + import java.util.LinkedHashMap; + import java.util.Map; + + class Test { + static final Map ORDERED = new LinkedHashMap<>() {{ + put("a", "1"); + put("b", "2"); + put("c", "3"); + }}; + } + """ + ) + ); + } + + @Issue("https://github.com/openrewrite/rewrite-migrate-java/issues/1112") + @Test + void doNotChangeTreeMap() { + //language=java + rewriteRun( + java( + """ + import java.util.Map; + import java.util.TreeMap; + + class Test { + static final Map SORTED = new TreeMap<>() {{ + put("a", "1"); + put("b", "2"); + }}; + } + """ + ) + ); + } + @Issue("https://github.com/openrewrite/rewrite-migrate-java/issues/566") @Test void changeDoubleBraceInitForNonStringTypes() {