Skip to content

Commit cbdbc94

Browse files
committed
Skip children when InvalidObject is found in list
1 parent d84eabd commit cbdbc94

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

src/main/java/org/unbrokendome/jackson/beanvalidation/BeanValidationModule.java

+15
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package org.unbrokendome.jackson.beanvalidation;
22

3+
import com.fasterxml.jackson.core.JsonParser;
34
import com.fasterxml.jackson.core.Version;
45
import com.fasterxml.jackson.databind.DeserializationContext;
6+
import com.fasterxml.jackson.databind.JsonDeserializer;
57
import com.fasterxml.jackson.databind.Module;
68
import com.fasterxml.jackson.databind.deser.DeserializationProblemHandler;
79

@@ -83,6 +85,19 @@ public Object handleInstantiationProblem(DeserializationContext ctxt, Class<?> i
8385
return super.handleInstantiationProblem(ctxt, instClass, argument, t);
8486
}
8587
}
88+
89+
@Override
90+
public boolean handleUnknownProperty(
91+
DeserializationContext ctxt, JsonParser p, JsonDeserializer<?> deserializer,
92+
Object beanOrClass, String propertyName
93+
) throws IOException {
94+
95+
if (beanOrClass instanceof InvalidObject) {
96+
p.skipChildren();
97+
return true;
98+
}
99+
return super.handleUnknownProperty(ctxt, p, deserializer, beanOrClass, propertyName);
100+
}
86101
});
87102
}
88103
}

src/test/kotlin/org/unbrokendome/jackson/beanvalidation/KotlinValidationTest.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ class KotlinValidationTest : AbstractValidationTest() {
144144

145145
private class NestedListArgumentsProvider : ArgumentsProvider {
146146
override fun provideArguments(context: ExtensionContext): Stream<Arguments> = Stream.of(
147-
Arguments.of("nested[0].value", """{ "nested": [{}] }"""),
147+
Arguments.of("nested[0].value", """{ "nested": [{}, {"value":"v1"}] }"""),
148148
Arguments.of("nested[1].value", """{ "nested": [{"value":"test"},{}] }"""),
149149
Arguments.of("nested[2].value", """{ "nested": [{"value":"1"},{"value":"2"},{}] }""")
150150
)

0 commit comments

Comments
 (0)