Skip to content

Commit

Permalink
Skip children when InvalidObject is found in list
Browse files Browse the repository at this point in the history
  • Loading branch information
tedliang committed May 23, 2021
1 parent d84eabd commit cbdbc94
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package org.unbrokendome.jackson.beanvalidation;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.Version;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.Module;
import com.fasterxml.jackson.databind.deser.DeserializationProblemHandler;

Expand Down Expand Up @@ -83,6 +85,19 @@ public Object handleInstantiationProblem(DeserializationContext ctxt, Class<?> i
return super.handleInstantiationProblem(ctxt, instClass, argument, t);
}
}

@Override
public boolean handleUnknownProperty(
DeserializationContext ctxt, JsonParser p, JsonDeserializer<?> deserializer,
Object beanOrClass, String propertyName
) throws IOException {

if (beanOrClass instanceof InvalidObject) {
p.skipChildren();
return true;
}
return super.handleUnknownProperty(ctxt, p, deserializer, beanOrClass, propertyName);
}
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ class KotlinValidationTest : AbstractValidationTest() {

private class NestedListArgumentsProvider : ArgumentsProvider {
override fun provideArguments(context: ExtensionContext): Stream<Arguments> = Stream.of(
Arguments.of("nested[0].value", """{ "nested": [{}] }"""),
Arguments.of("nested[0].value", """{ "nested": [{}, {"value":"v1"}] }"""),
Arguments.of("nested[1].value", """{ "nested": [{"value":"test"},{}] }"""),
Arguments.of("nested[2].value", """{ "nested": [{"value":"1"},{"value":"2"},{}] }""")
)
Expand Down

0 comments on commit cbdbc94

Please sign in to comment.