diff --git a/spring-core/src/main/java/org/springframework/aot/nativex/ResourceHintsWriter.java b/spring-core/src/main/java/org/springframework/aot/nativex/ResourceHintsWriter.java index 0b5f76a2787..266ffc26bed 100644 --- a/spring-core/src/main/java/org/springframework/aot/nativex/ResourceHintsWriter.java +++ b/spring-core/src/main/java/org/springframework/aot/nativex/ResourceHintsWriter.java @@ -46,7 +46,7 @@ class ResourceHintsWriter { public void write(BasicJsonWriter writer, ResourceHints hints) { Map attributes = new LinkedHashMap<>(); - attributes.put("resources", toAttributes(hints)); + addIfNotEmpty(attributes, "resources", toAttributes(hints)); handleResourceBundles(attributes, hints.resourceBundles()); writer.writeObject(attributes); } @@ -81,7 +81,17 @@ class ResourceHintsWriter { } private void addIfNotEmpty(Map attributes, String name, @Nullable Object value) { - if (value != null && (value instanceof Collection collection && !collection.isEmpty())) { + if (value instanceof Collection collection) { + if (!collection.isEmpty()) { + attributes.put(name, value); + } + } + else if (value instanceof Map map) { + if (!map.isEmpty()) { + attributes.put(name, value); + } + } + else if (value != null) { attributes.put(name, value); } } diff --git a/spring-core/src/test/java/org/springframework/aot/nativex/FileNativeConfigurationWriterTests.java b/spring-core/src/test/java/org/springframework/aot/nativex/FileNativeConfigurationWriterTests.java index 58d03b9b96b..c4308ca9f5a 100644 --- a/spring-core/src/test/java/org/springframework/aot/nativex/FileNativeConfigurationWriterTests.java +++ b/spring-core/src/test/java/org/springframework/aot/nativex/FileNativeConfigurationWriterTests.java @@ -144,7 +144,7 @@ public class FileNativeConfigurationWriterTests { ], "queriedMethods": [ { "name": "", "parameterTypes": [ "java.util.List", "boolean", "org.springframework.util.MimeType" ] }, - { "name": "getDefaultCharset" } + { "name": "getDefaultCharset", "parameterTypes": [ ] } ] } ]""", "reflect-config.json"); @@ -186,7 +186,7 @@ public class FileNativeConfigurationWriterTests { private void assertEquals(String expectedString, String filename) throws IOException, JSONException { Path jsonFile = tempDir.resolve("META-INF").resolve("native-image").resolve(filename); String content = new String(Files.readAllBytes(jsonFile)); - JSONAssert.assertEquals(expectedString, content, JSONCompareMode.LENIENT); + JSONAssert.assertEquals(expectedString, content, JSONCompareMode.NON_EXTENSIBLE); } } diff --git a/spring-core/src/test/java/org/springframework/aot/nativex/JavaSerializationHintsWriterTests.java b/spring-core/src/test/java/org/springframework/aot/nativex/JavaSerializationHintsWriterTests.java index 9783e5a3aa6..4b44a93bab9 100644 --- a/spring-core/src/test/java/org/springframework/aot/nativex/JavaSerializationHintsWriterTests.java +++ b/spring-core/src/test/java/org/springframework/aot/nativex/JavaSerializationHintsWriterTests.java @@ -65,7 +65,7 @@ public class JavaSerializationHintsWriterTests { StringWriter out = new StringWriter(); BasicJsonWriter writer = new BasicJsonWriter(out, "\t"); JavaSerializationHintsWriter.INSTANCE.write(writer, hints); - JSONAssert.assertEquals(expectedString, out.toString(), JSONCompareMode.LENIENT); + JSONAssert.assertEquals(expectedString, out.toString(), JSONCompareMode.NON_EXTENSIBLE); } } diff --git a/spring-core/src/test/java/org/springframework/aot/nativex/ProxyHintsWriterTests.java b/spring-core/src/test/java/org/springframework/aot/nativex/ProxyHintsWriterTests.java index 4bb7e73f009..53040a0069a 100644 --- a/spring-core/src/test/java/org/springframework/aot/nativex/ProxyHintsWriterTests.java +++ b/spring-core/src/test/java/org/springframework/aot/nativex/ProxyHintsWriterTests.java @@ -66,7 +66,7 @@ public class ProxyHintsWriterTests { StringWriter out = new StringWriter(); BasicJsonWriter writer = new BasicJsonWriter(out, "\t"); ProxyHintsWriter.INSTANCE.write(writer, hints); - JSONAssert.assertEquals(expectedString, out.toString(), JSONCompareMode.LENIENT); + JSONAssert.assertEquals(expectedString, out.toString(), JSONCompareMode.NON_EXTENSIBLE); } } diff --git a/spring-core/src/test/java/org/springframework/aot/nativex/ReflectionHintsWriterTests.java b/spring-core/src/test/java/org/springframework/aot/nativex/ReflectionHintsWriterTests.java index 0514ea9c587..6c51ca6506d 100644 --- a/spring-core/src/test/java/org/springframework/aot/nativex/ReflectionHintsWriterTests.java +++ b/spring-core/src/test/java/org/springframework/aot/nativex/ReflectionHintsWriterTests.java @@ -95,7 +95,7 @@ public class ReflectionHintsWriterTests { ], "queriedMethods": [ { "name": "", "parameterTypes": [ "java.util.List", "boolean", "org.springframework.util.MimeType" ] }, - { "name": "getDefaultCharset" } + { "name": "getDefaultCharset", "parameterTypes": [ ] } ] } ]""", hints); @@ -191,7 +191,7 @@ public class ReflectionHintsWriterTests { StringWriter out = new StringWriter(); BasicJsonWriter writer = new BasicJsonWriter(out, "\t"); ReflectionHintsWriter.INSTANCE.write(writer, hints); - JSONAssert.assertEquals(expectedString, out.toString(), JSONCompareMode.LENIENT); + JSONAssert.assertEquals(expectedString, out.toString(), JSONCompareMode.NON_EXTENSIBLE); } } diff --git a/spring-core/src/test/java/org/springframework/aot/nativex/ResourceHintsWriterTests.java b/spring-core/src/test/java/org/springframework/aot/nativex/ResourceHintsWriterTests.java index c789d392017..ecd68b17776 100644 --- a/spring-core/src/test/java/org/springframework/aot/nativex/ResourceHintsWriterTests.java +++ b/spring-core/src/test/java/org/springframework/aot/nativex/ResourceHintsWriterTests.java @@ -120,7 +120,7 @@ public class ResourceHintsWriterTests { StringWriter out = new StringWriter(); BasicJsonWriter writer = new BasicJsonWriter(out, "\t"); ResourceHintsWriter.INSTANCE.write(writer, hints); - JSONAssert.assertEquals(expectedString, out.toString(), JSONCompareMode.LENIENT); + JSONAssert.assertEquals(expectedString, out.toString(), JSONCompareMode.NON_EXTENSIBLE); } }