Browse Source

Fix queriedMethods handling in ReflectionHintsSerializer

Closes gh-28212
pull/28217/head
Sébastien Deleuze 4 years ago
parent
commit
1ffc96be8c
  1. 4
      spring-core/src/main/java/org/springframework/aot/nativex/ReflectionHintsSerializer.java
  2. 70
      spring-core/src/test/java/org/springframework/aot/nativex/ReflectionHintsSerializerTests.java

4
spring-core/src/main/java/org/springframework/aot/nativex/ReflectionHintsSerializer.java

@ -98,11 +98,9 @@ class ReflectionHintsSerializer { @@ -98,11 +98,9 @@ class ReflectionHintsSerializer {
if (methodIterator.hasNext()) {
builder.append(",\n");
serializeMethods("methods", methodIterator, builder);
if (queriedMethodIterator.hasNext()) {
builder.append(",\n");
}
}
if (queriedMethodIterator.hasNext()) {
builder.append(",\n");
serializeMethods("queriedMethods", queriedMethodIterator, builder);
}
}

70
spring-core/src/test/java/org/springframework/aot/nativex/ReflectionHintsSerializerTests.java

@ -117,6 +117,76 @@ public class ReflectionHintsSerializerTests { @@ -117,6 +117,76 @@ public class ReflectionHintsSerializerTests {
]""", hints);
}
@Test
void queriedMethods() throws JSONException {
ReflectionHints hints = new ReflectionHints();
hints.registerType(Integer.class, builder -> builder.withMethod("parseInt", List.of(TypeReference.of(String.class)),
(b) -> b.withMode(ExecutableMode.INTROSPECT)));
assertEquals("""
[
{
"name": "java.lang.Integer",
"queriedMethods": [
{
"name": "parseInt",
"parameterTypes": ["java.lang.String"]
}
]
}
]
""", hints);
}
@Test
void methods() throws JSONException {
ReflectionHints hints = new ReflectionHints();
hints.registerType(Integer.class, builder -> builder.withMethod("parseInt", List.of(TypeReference.of(String.class)),
(b) -> b.withMode(ExecutableMode.INVOKE)));
assertEquals("""
[
{
"name": "java.lang.Integer",
"methods": [
{
"name": "parseInt",
"parameterTypes": ["java.lang.String"]
}
]
}
]
""", hints);
}
@Test
void methodAndQueriedMethods() throws JSONException {
ReflectionHints hints = new ReflectionHints();
hints.registerType(Integer.class, builder -> builder.withMethod("parseInt", List.of(TypeReference.of(String.class)),
(b) -> b.withMode(ExecutableMode.INVOKE)));
hints.registerType(Integer.class, builder -> builder.withMethod("parseInt", List.of(TypeReference.of(String.class)),
(b) -> b.withMode(ExecutableMode.INTROSPECT)));
assertEquals("""
[
{
"name": "java.lang.Integer",
"queriedMethods": [
{
"name": "parseInt",
"parameterTypes": ["java.lang.String"]
}
],
"methods": [
{
"name": "parseInt",
"parameterTypes": ["java.lang.String"]
}
]
}
]
""", hints);
}
private void assertEquals(String expectedString, ReflectionHints hints) throws JSONException {
JSONAssert.assertEquals(expectedString, serializer.serialize(hints), JSONCompareMode.LENIENT);
}

Loading…
Cancel
Save