From 447d968cb9b72c8cde8f6861fb74d40f6b33a87f Mon Sep 17 00:00:00 2001 From: clkelly-r7 Date: Wed, 14 Feb 2024 13:36:32 +0000 Subject: [PATCH 1/2] Allow overriding serde feature defaults for jackson object mapper in json serializer and deserializer --- .../GlueSchemaRegistryConfiguration.java | 30 ++++++++------- .../deserializers/json/JsonDeserializer.java | 18 +++++---- .../serializers/json/JsonSerializer.java | 19 ++++++---- ...hemaRegistryDeserializationFacadeTest.java | 3 +- .../json/JsonDeserializerTest.java | 37 ++++++++++++++++-- ...SchemaRegistrySerializationFacadeTest.java | 9 +++-- .../serializers/json/JsonSerializerTest.java | 38 +++++++++++++++++-- 7 files changed, 114 insertions(+), 40 deletions(-) diff --git a/common/src/main/java/com/amazonaws/services/schemaregistry/common/configs/GlueSchemaRegistryConfiguration.java b/common/src/main/java/com/amazonaws/services/schemaregistry/common/configs/GlueSchemaRegistryConfiguration.java index ce7d870d..9d71fd97 100644 --- a/common/src/main/java/com/amazonaws/services/schemaregistry/common/configs/GlueSchemaRegistryConfiguration.java +++ b/common/src/main/java/com/amazonaws/services/schemaregistry/common/configs/GlueSchemaRegistryConfiguration.java @@ -36,6 +36,8 @@ import java.util.Properties; import java.util.stream.Collectors; +import static java.util.stream.Collectors.toMap; + /** * Glue Schema Registry Configuration entries. */ @@ -65,8 +67,8 @@ public class GlueSchemaRegistryConfiguration { */ private String userAgentApp = "default"; - private List jacksonSerializationFeatures; - private List jacksonDeserializationFeatures; + private Map jacksonSerializationFeatures; + private Map jacksonDeserializationFeatures; public GlueSchemaRegistryConfiguration(String region) { Map config = new HashMap<>(); @@ -297,12 +299,12 @@ private void validateAndSetMetadata(Map configs) { private void validateAndSetJacksonSerializationFeatures(Map configs) { if (isPresent(configs, AWSSchemaRegistryConstants.JACKSON_SERIALIZATION_FEATURES)) { - if (configs.get(AWSSchemaRegistryConstants.JACKSON_SERIALIZATION_FEATURES) instanceof List) { - List serialzationFeatures = - (List) configs.get(AWSSchemaRegistryConstants.JACKSON_SERIALIZATION_FEATURES); - this.jacksonSerializationFeatures = serialzationFeatures.stream() - .map(sf -> SerializationFeature.valueOf(sf)) - .collect(Collectors.toList()); + if (configs.get(AWSSchemaRegistryConstants.JACKSON_SERIALIZATION_FEATURES) instanceof Map) { + Map serializationFeatures = + (Map) configs.get(AWSSchemaRegistryConstants.JACKSON_SERIALIZATION_FEATURES); + this.jacksonSerializationFeatures = serializationFeatures.entrySet() + .stream() + .collect(toMap(x -> SerializationFeature.valueOf(x.getKey()), Map.Entry::getValue)); } else { throw new AWSSchemaRegistryException("Jackson Serialization features should be a list"); } @@ -311,12 +313,12 @@ private void validateAndSetJacksonSerializationFeatures(Map configs) private void validateAndSetJacksonDeserializationFeatures(Map configs) { if (isPresent(configs, AWSSchemaRegistryConstants.JACKSON_DESERIALIZATION_FEATURES)) { - if (configs.get(AWSSchemaRegistryConstants.JACKSON_DESERIALIZATION_FEATURES) instanceof List) { - List deserialzationFeatures = - (List) configs.get(AWSSchemaRegistryConstants.JACKSON_DESERIALIZATION_FEATURES); - this.jacksonDeserializationFeatures = deserialzationFeatures.stream() - .map(dsf -> DeserializationFeature.valueOf(dsf)) - .collect(Collectors.toList()); + if (configs.get(AWSSchemaRegistryConstants.JACKSON_DESERIALIZATION_FEATURES) instanceof Map) { + Map deserializationFeatures = + (Map) configs.get(AWSSchemaRegistryConstants.JACKSON_DESERIALIZATION_FEATURES); + this.jacksonDeserializationFeatures = deserializationFeatures.entrySet() + .stream() + .collect(toMap(x -> DeserializationFeature.valueOf(x.getKey()), Map.Entry::getValue)); } else { throw new AWSSchemaRegistryException("Jackson Deserialization features should be a list"); } diff --git a/serializer-deserializer/src/main/java/com/amazonaws/services/schemaregistry/deserializers/json/JsonDeserializer.java b/serializer-deserializer/src/main/java/com/amazonaws/services/schemaregistry/deserializers/json/JsonDeserializer.java index 5c0c60a5..8ea92d2f 100644 --- a/serializer-deserializer/src/main/java/com/amazonaws/services/schemaregistry/deserializers/json/JsonDeserializer.java +++ b/serializer-deserializer/src/main/java/com/amazonaws/services/schemaregistry/deserializers/json/JsonDeserializer.java @@ -20,6 +20,7 @@ import com.amazonaws.services.schemaregistry.exception.AWSSchemaRegistryException; import com.amazonaws.services.schemaregistry.serializers.json.JsonDataWithSchema; import com.amazonaws.services.schemaregistry.common.Schema; +import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.JsonNodeFactory; @@ -29,7 +30,6 @@ import lombok.NonNull; import lombok.Setter; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; import java.io.IOException; import java.nio.ByteBuffer; @@ -60,13 +60,9 @@ public JsonDeserializer(GlueSchemaRegistryConfiguration configs) { this.objectMapper = new ObjectMapper(); this.objectMapper.setNodeFactory(jsonNodeFactory); if (configs != null) { - if (!CollectionUtils.isEmpty(configs.getJacksonSerializationFeatures())) { - configs.getJacksonSerializationFeatures() - .forEach(this.objectMapper::enable); - } - if (!CollectionUtils.isEmpty(configs.getJacksonDeserializationFeatures())) { + if (configs.getJacksonDeserializationFeatures() != null && !configs.getJacksonDeserializationFeatures().isEmpty()) { configs.getJacksonDeserializationFeatures() - .forEach(this.objectMapper::enable); + .forEach(this::overrideObjectMapperFeature); } } } @@ -109,4 +105,12 @@ public Object deserialize(@NonNull ByteBuffer buffer, throw new AWSSchemaRegistryException(message, e); } } + + private void overrideObjectMapperFeature(DeserializationFeature deserializationFeature, Boolean flag) { + if (flag) { + this.objectMapper.enable(deserializationFeature); + } else { + this.objectMapper.disable(deserializationFeature); + } + } } diff --git a/serializer-deserializer/src/main/java/com/amazonaws/services/schemaregistry/serializers/json/JsonSerializer.java b/serializer-deserializer/src/main/java/com/amazonaws/services/schemaregistry/serializers/json/JsonSerializer.java index 063bbf11..db8a0db1 100644 --- a/serializer-deserializer/src/main/java/com/amazonaws/services/schemaregistry/serializers/json/JsonSerializer.java +++ b/serializer-deserializer/src/main/java/com/amazonaws/services/schemaregistry/serializers/json/JsonSerializer.java @@ -20,6 +20,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.databind.node.JsonNodeFactory; import com.kjetland.jackson.jsonSchema.JsonSchemaGenerator; import lombok.Builder; @@ -27,7 +28,6 @@ import lombok.NonNull; import lombok.Setter; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; import java.nio.charset.StandardCharsets; @@ -38,6 +38,7 @@ public class JsonSerializer implements GlueSchemaRegistryDataFormatSerializer { private static final JsonValidator JSON_VALIDATOR = new JsonValidator(); private final JsonSchemaGenerator jsonSchemaGenerator; + @Getter private final ObjectMapper objectMapper; @Getter @Setter @@ -55,13 +56,9 @@ public JsonSerializer(GlueSchemaRegistryConfiguration configs) { this.objectMapper = new ObjectMapper(); this.objectMapper.setNodeFactory(jsonNodeFactory); if (configs != null) { - if (!CollectionUtils.isEmpty(configs.getJacksonSerializationFeatures())) { + if (configs.getJacksonSerializationFeatures() != null && !configs.getJacksonSerializationFeatures().isEmpty()) { // todo why do we check for deserialization features for a serializer configs.getJacksonSerializationFeatures() - .forEach(this.objectMapper::enable); - } - if (!CollectionUtils.isEmpty(configs.getJacksonDeserializationFeatures())) { - configs.getJacksonDeserializationFeatures() - .forEach(this.objectMapper::enable); + .forEach(this::overrideObjectMapperFeature); } } this.jsonSchemaGenerator = new JsonSchemaGenerator(this.objectMapper); @@ -184,4 +181,12 @@ public void validate(Object jsonDataWithSchema) { JsonNode dataNode = getDataNode(jsonDataWithSchema); JSON_VALIDATOR.validateDataWithSchema(schemaNode, dataNode); } + + private void overrideObjectMapperFeature(SerializationFeature serializationFeature, Boolean flag) { + if (flag) { + this.objectMapper.enable(serializationFeature); + } else { + this.objectMapper.disable(serializationFeature); + } + } } diff --git a/serializer-deserializer/src/test/java/com/amazonaws/services/schemaregistry/deserializers/GlueSchemaRegistryDeserializationFacadeTest.java b/serializer-deserializer/src/test/java/com/amazonaws/services/schemaregistry/deserializers/GlueSchemaRegistryDeserializationFacadeTest.java index 63dfe132..8d924582 100644 --- a/serializer-deserializer/src/test/java/com/amazonaws/services/schemaregistry/deserializers/GlueSchemaRegistryDeserializationFacadeTest.java +++ b/serializer-deserializer/src/test/java/com/amazonaws/services/schemaregistry/deserializers/GlueSchemaRegistryDeserializationFacadeTest.java @@ -41,6 +41,7 @@ import org.apache.avro.generic.GenericRecord; import org.apache.avro.io.BinaryEncoder; import org.apache.avro.io.EncoderFactory; +import org.apache.commons.collections4.map.SingletonMap; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -591,7 +592,7 @@ public void testDeserialize_withSerdeConfigs_recordMatches(DataFormat dataFormat configs.put(AWSSchemaRegistryConstants.COMPRESSION_TYPE, compressionType.name()); configs.put(AWSSchemaRegistryConstants.AVRO_RECORD_TYPE, avroRecordType); configs.put(AWSSchemaRegistryConstants.JACKSON_DESERIALIZATION_FEATURES, - Arrays.asList(DeserializationFeature.EAGER_DESERIALIZER_FETCH.name())); + new SingletonMap<>(DeserializationFeature.EAGER_DESERIALIZER_FETCH.name(), true)); byte[] serializedData = createSerializedData(record, dataFormat, inputSchemaDefinition, schemaVersionId); GetSchemaVersionResponse schemaVersionResponse = GetSchemaVersionResponse.builder() diff --git a/serializer-deserializer/src/test/java/com/amazonaws/services/schemaregistry/deserializers/json/JsonDeserializerTest.java b/serializer-deserializer/src/test/java/com/amazonaws/services/schemaregistry/deserializers/json/JsonDeserializerTest.java index 6a7d63b4..7724759e 100644 --- a/serializer-deserializer/src/test/java/com/amazonaws/services/schemaregistry/deserializers/json/JsonDeserializerTest.java +++ b/serializer-deserializer/src/test/java/com/amazonaws/services/schemaregistry/deserializers/json/JsonDeserializerTest.java @@ -14,6 +14,7 @@ */ package com.amazonaws.services.schemaregistry.deserializers.json; +import com.amazonaws.services.schemaregistry.common.configs.GlueSchemaRegistryConfiguration; import org.junit.jupiter.api.Test; import java.nio.ByteBuffer; @@ -21,15 +22,21 @@ import com.amazonaws.services.schemaregistry.common.Schema; import software.amazon.awssdk.services.glue.model.DataFormat; -import java.util.UUID; +import java.util.HashMap; +import java.util.Map; -import static org.junit.jupiter.api.Assertions.assertThrows; +import static com.amazonaws.services.schemaregistry.utils.AWSSchemaRegistryConstants.AWS_REGION; +import static com.amazonaws.services.schemaregistry.utils.AWSSchemaRegistryConstants.JACKSON_DESERIALIZATION_FEATURES; +import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES; +import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES; +import static java.util.Collections.singletonMap; +import static org.junit.jupiter.api.Assertions.*; public class JsonDeserializerTest { - private JsonDeserializer jsonDeserializer = new JsonDeserializer(null); @Test public void testDeserialize_nullArgs_throwsException() { + JsonDeserializer jsonDeserializer = new JsonDeserializer(null); String testSchemaDefinition = "{\"$id\":\"https://example.com/geographical-location.schema.json\"," + "\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"title\":\"Longitude " + "and Latitude Values\",\"description\":\"A geographical coordinate.\"," @@ -46,4 +53,28 @@ public void testDeserialize_nullArgs_throwsException() { assertThrows(IllegalArgumentException.class, () -> jsonDeserializer.deserialize(ByteBuffer.wrap(testBytes), null)); } + + @Test + public void testDeserialize_overridesDeserializationFeatureToFalse() { + Map config = new HashMap<>(); + config.put(JACKSON_DESERIALIZATION_FEATURES, singletonMap(FAIL_ON_UNKNOWN_PROPERTIES.name(), false)); + config.put(AWS_REGION, "us-east-1"); + + GlueSchemaRegistryConfiguration glueSchemaRegistryConfiguration = new GlueSchemaRegistryConfiguration(config); + JsonDeserializer jsonDeserializer = new JsonDeserializer(glueSchemaRegistryConfiguration); + + assertFalse(jsonDeserializer.getObjectMapper().isEnabled(FAIL_ON_UNKNOWN_PROPERTIES)); + } + + @Test + public void testDeserialize_overridesDeserializationFeatureToTrue() { + Map config = new HashMap<>(); + config.put(JACKSON_DESERIALIZATION_FEATURES, singletonMap(FAIL_ON_NULL_FOR_PRIMITIVES.name(), true)); + config.put(AWS_REGION, "us-east-1"); + + GlueSchemaRegistryConfiguration glueSchemaRegistryConfiguration = new GlueSchemaRegistryConfiguration(config); + JsonDeserializer jsonDeserializer = new JsonDeserializer(glueSchemaRegistryConfiguration); + + assertTrue(jsonDeserializer.getObjectMapper().isEnabled(FAIL_ON_NULL_FOR_PRIMITIVES)); + } } diff --git a/serializer-deserializer/src/test/java/com/amazonaws/services/schemaregistry/serializers/avro/GlueSchemaRegistrySerializationFacadeTest.java b/serializer-deserializer/src/test/java/com/amazonaws/services/schemaregistry/serializers/avro/GlueSchemaRegistrySerializationFacadeTest.java index 86935524..d76fd6fb 100644 --- a/serializer-deserializer/src/test/java/com/amazonaws/services/schemaregistry/serializers/avro/GlueSchemaRegistrySerializationFacadeTest.java +++ b/serializer-deserializer/src/test/java/com/amazonaws/services/schemaregistry/serializers/avro/GlueSchemaRegistrySerializationFacadeTest.java @@ -34,6 +34,7 @@ import org.apache.avro.Schema; import org.apache.avro.generic.GenericData; import org.apache.avro.generic.GenericRecord; +import org.apache.commons.collections4.map.SingletonMap; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -641,12 +642,12 @@ public void testSerializer_registerSchemaVersion_whenPutSchemaVersionMetadataThr public void testRegisterSchemaVersion_withCustomJacksonConfiguration_succeeds(DataFormat dataFormat, Object record, AWSSchemaRegistryConstants.COMPRESSION compressionType) { - List jacksonSerializationFeatures = - Arrays.asList(SerializationFeature.FLUSH_AFTER_WRITE_VALUE.name()); + Map jacksonSerializationFeatures = + new SingletonMap<>(SerializationFeature.FLUSH_AFTER_WRITE_VALUE.name(), true); configs.put(AWSSchemaRegistryConstants.JACKSON_SERIALIZATION_FEATURES, jacksonSerializationFeatures); - List jacksonDeserializationFeatures = - Arrays.asList(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS.name()); + Map jacksonDeserializationFeatures = + new SingletonMap<>(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS.name(), true); configs.put(AWSSchemaRegistryConstants.JACKSON_DESERIALIZATION_FEATURES, jacksonDeserializationFeatures); configs.put(AWSSchemaRegistryConstants.COMPRESSION_TYPE, compressionType.name()); diff --git a/serializer-deserializer/src/test/java/com/amazonaws/services/schemaregistry/serializers/json/JsonSerializerTest.java b/serializer-deserializer/src/test/java/com/amazonaws/services/schemaregistry/serializers/json/JsonSerializerTest.java index af59ee20..0e8fb056 100644 --- a/serializer-deserializer/src/test/java/com/amazonaws/services/schemaregistry/serializers/json/JsonSerializerTest.java +++ b/serializer-deserializer/src/test/java/com/amazonaws/services/schemaregistry/serializers/json/JsonSerializerTest.java @@ -24,11 +24,15 @@ import java.nio.charset.StandardCharsets; import java.util.HashMap; +import java.util.Map; -import static org.junit.jupiter.api.Assertions.assertArrayEquals; -import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; +import static com.amazonaws.services.schemaregistry.utils.AWSSchemaRegistryConstants.AWS_REGION; +import static com.amazonaws.services.schemaregistry.utils.AWSSchemaRegistryConstants.JACKSON_SERIALIZATION_FEATURES; +import static com.fasterxml.jackson.databind.SerializationFeature.FAIL_ON_SELF_REFERENCES; +import static com.fasterxml.jackson.databind.SerializationFeature.WRITE_SELF_REFERENCES_AS_NULL; +import static java.util.Collections.singletonMap; +import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertTrue; public class JsonSerializerTest { private static final JsonDataWithSchema GENERIC_TEST_RECORD = @@ -146,4 +150,30 @@ public void testGetSchemaDefinition_nullObject_throwsException() { public void testSerialize_nullObject_throwsException() { assertThrows(IllegalArgumentException.class, () -> jsonSerializer.serialize(null)); } + + @Test + public void testSerialize_overridesSerializationFeatureToFalse() { + Map config = new HashMap<>(); + config.put(JACKSON_SERIALIZATION_FEATURES, singletonMap(FAIL_ON_SELF_REFERENCES.name(), false)); + config.put(AWS_REGION, "us-east-1"); + + + GlueSchemaRegistryConfiguration glueSchemaRegistryConfiguration = new GlueSchemaRegistryConfiguration(config); + JsonSerializer jsonSerializer = new JsonSerializer(glueSchemaRegistryConfiguration); + + assertFalse(jsonSerializer.getObjectMapper().isEnabled(FAIL_ON_SELF_REFERENCES)); + } + + @Test + public void testSerialize_overridesSerializationFeatureToTrue() { + Map config = new HashMap<>(); + config.put(JACKSON_SERIALIZATION_FEATURES, singletonMap(WRITE_SELF_REFERENCES_AS_NULL.name(), true)); + config.put(AWS_REGION, "us-east-1"); + + + GlueSchemaRegistryConfiguration glueSchemaRegistryConfiguration = new GlueSchemaRegistryConfiguration(config); + JsonSerializer jsonSerializer = new JsonSerializer(glueSchemaRegistryConfiguration); + + assertTrue(jsonSerializer.getObjectMapper().isEnabled(WRITE_SELF_REFERENCES_AS_NULL)); + } } From fdb1bb5bb54df6224718a1a8303b917dc8740e31 Mon Sep 17 00:00:00 2001 From: clkelly-r7 Date: Wed, 14 Feb 2024 14:04:49 +0000 Subject: [PATCH 2/2] fixed imports, indentation and removed todo --- .../configs/GlueSchemaRegistryConfiguration.java | 13 ++++++------- .../serializers/json/JsonSerializer.java | 2 +- .../deserializers/json/JsonDeserializerTest.java | 4 +++- .../serializers/json/JsonSerializerTest.java | 6 +++++- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/common/src/main/java/com/amazonaws/services/schemaregistry/common/configs/GlueSchemaRegistryConfiguration.java b/common/src/main/java/com/amazonaws/services/schemaregistry/common/configs/GlueSchemaRegistryConfiguration.java index 9d71fd97..f976dc46 100644 --- a/common/src/main/java/com/amazonaws/services/schemaregistry/common/configs/GlueSchemaRegistryConfiguration.java +++ b/common/src/main/java/com/amazonaws/services/schemaregistry/common/configs/GlueSchemaRegistryConfiguration.java @@ -31,7 +31,6 @@ import java.net.URI; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.Properties; import java.util.stream.Collectors; @@ -299,12 +298,12 @@ private void validateAndSetMetadata(Map configs) { private void validateAndSetJacksonSerializationFeatures(Map configs) { if (isPresent(configs, AWSSchemaRegistryConstants.JACKSON_SERIALIZATION_FEATURES)) { - if (configs.get(AWSSchemaRegistryConstants.JACKSON_SERIALIZATION_FEATURES) instanceof Map) { - Map serializationFeatures = - (Map) configs.get(AWSSchemaRegistryConstants.JACKSON_SERIALIZATION_FEATURES); - this.jacksonSerializationFeatures = serializationFeatures.entrySet() - .stream() - .collect(toMap(x -> SerializationFeature.valueOf(x.getKey()), Map.Entry::getValue)); + if (configs.get(AWSSchemaRegistryConstants.JACKSON_SERIALIZATION_FEATURES) instanceof Map) { + Map serializationFeatures = + (Map) configs.get(AWSSchemaRegistryConstants.JACKSON_SERIALIZATION_FEATURES); + this.jacksonSerializationFeatures = serializationFeatures.entrySet() + .stream() + .collect(toMap(x -> SerializationFeature.valueOf(x.getKey()), Map.Entry::getValue)); } else { throw new AWSSchemaRegistryException("Jackson Serialization features should be a list"); } diff --git a/serializer-deserializer/src/main/java/com/amazonaws/services/schemaregistry/serializers/json/JsonSerializer.java b/serializer-deserializer/src/main/java/com/amazonaws/services/schemaregistry/serializers/json/JsonSerializer.java index db8a0db1..47412136 100644 --- a/serializer-deserializer/src/main/java/com/amazonaws/services/schemaregistry/serializers/json/JsonSerializer.java +++ b/serializer-deserializer/src/main/java/com/amazonaws/services/schemaregistry/serializers/json/JsonSerializer.java @@ -56,7 +56,7 @@ public JsonSerializer(GlueSchemaRegistryConfiguration configs) { this.objectMapper = new ObjectMapper(); this.objectMapper.setNodeFactory(jsonNodeFactory); if (configs != null) { - if (configs.getJacksonSerializationFeatures() != null && !configs.getJacksonSerializationFeatures().isEmpty()) { // todo why do we check for deserialization features for a serializer + if (configs.getJacksonSerializationFeatures() != null && !configs.getJacksonSerializationFeatures().isEmpty()) { configs.getJacksonSerializationFeatures() .forEach(this::overrideObjectMapperFeature); } diff --git a/serializer-deserializer/src/test/java/com/amazonaws/services/schemaregistry/deserializers/json/JsonDeserializerTest.java b/serializer-deserializer/src/test/java/com/amazonaws/services/schemaregistry/deserializers/json/JsonDeserializerTest.java index 7724759e..ef891aa4 100644 --- a/serializer-deserializer/src/test/java/com/amazonaws/services/schemaregistry/deserializers/json/JsonDeserializerTest.java +++ b/serializer-deserializer/src/test/java/com/amazonaws/services/schemaregistry/deserializers/json/JsonDeserializerTest.java @@ -30,7 +30,9 @@ import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES; import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES; import static java.util.Collections.singletonMap; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; public class JsonDeserializerTest { diff --git a/serializer-deserializer/src/test/java/com/amazonaws/services/schemaregistry/serializers/json/JsonSerializerTest.java b/serializer-deserializer/src/test/java/com/amazonaws/services/schemaregistry/serializers/json/JsonSerializerTest.java index 0e8fb056..0b9f6ec4 100644 --- a/serializer-deserializer/src/test/java/com/amazonaws/services/schemaregistry/serializers/json/JsonSerializerTest.java +++ b/serializer-deserializer/src/test/java/com/amazonaws/services/schemaregistry/serializers/json/JsonSerializerTest.java @@ -31,7 +31,11 @@ import static com.fasterxml.jackson.databind.SerializationFeature.FAIL_ON_SELF_REFERENCES; import static com.fasterxml.jackson.databind.SerializationFeature.WRITE_SELF_REFERENCES_AS_NULL; import static java.util.Collections.singletonMap; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; public class JsonSerializerTest {