diff --git a/src/main/java/com/fasterxml/jackson/annotation/JsonFormat.java b/src/main/java/com/fasterxml/jackson/annotation/JsonFormat.java index 7be35ec0..3e411ef6 100644 --- a/src/main/java/com/fasterxml/jackson/annotation/JsonFormat.java +++ b/src/main/java/com/fasterxml/jackson/annotation/JsonFormat.java @@ -253,6 +253,14 @@ public enum Feature { */ ACCEPT_CASE_INSENSITIVE_PROPERTIES, + /** + * Override for MapperFeature.ACCEPT_CASE_INSENSITIVE_VALUES. + * Only affects deserialization, has no effect on serialization. + * + * @since 2.10 + */ + ACCEPT_CASE_INSENSITIVE_VALUES, + /** * Override for SerializationFeature.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS, * similar constraints apply. diff --git a/src/test/java/com/fasterxml/jackson/annotation/FormatTest.java b/src/test/java/com/fasterxml/jackson/annotation/FormatTest.java index c1d2ac8a..bfe53893 100644 --- a/src/test/java/com/fasterxml/jackson/annotation/FormatTest.java +++ b/src/test/java/com/fasterxml/jackson/annotation/FormatTest.java @@ -186,6 +186,17 @@ public void testLeniency() { assertFalse(dunno.equals(lenient)); } + public void testCaseInsensitiveValues() { + JsonFormat.Value empty = JsonFormat.Value.empty(); + assertNull(empty.getFeature(Feature.ACCEPT_CASE_INSENSITIVE_VALUES)); + + JsonFormat.Value insensitive = empty.withFeature(Feature.ACCEPT_CASE_INSENSITIVE_VALUES); + assertTrue(insensitive.getFeature(Feature.ACCEPT_CASE_INSENSITIVE_VALUES)); + + JsonFormat.Value sensitive = empty.withoutFeature(Feature.ACCEPT_CASE_INSENSITIVE_VALUES); + assertFalse(sensitive.getFeature(Feature.ACCEPT_CASE_INSENSITIVE_VALUES)); + } + public void testShape() { assertFalse(JsonFormat.Shape.STRING.isNumeric()); assertFalse(JsonFormat.Shape.STRING.isStructured());