diff --git a/hoodie-common/pom.xml b/hoodie-common/pom.xml index 91a945203..0d29828ab 100644 --- a/hoodie-common/pom.xml +++ b/hoodie-common/pom.xml @@ -89,10 +89,6 @@ com.fasterxml.jackson.core jackson-annotations - - org.codehaus.jackson - jackson-mapper-asl - org.apache.parquet parquet-avro @@ -114,11 +110,6 @@ hadoop-common tests - - org.codehaus.jackson - jackson-core-asl - 1.9.13 - org.apache.commons commons-lang3 diff --git a/hoodie-common/src/main/java/com/uber/hoodie/avro/MercifulJsonConverter.java b/hoodie-common/src/main/java/com/uber/hoodie/avro/MercifulJsonConverter.java index b39d64174..827da3093 100644 --- a/hoodie-common/src/main/java/com/uber/hoodie/avro/MercifulJsonConverter.java +++ b/hoodie-common/src/main/java/com/uber/hoodie/avro/MercifulJsonConverter.java @@ -24,7 +24,7 @@ import java.util.Map; import org.apache.avro.Schema; import org.apache.avro.generic.GenericData; import org.apache.avro.generic.GenericRecord; -import org.codehaus.jackson.map.ObjectMapper; +import com.fasterxml.jackson.databind.ObjectMapper; /** * Marjority of this is copied from https://github.com/jwills/avro-json/blob/master/src/main/java/com/cloudera/science/avro/common/JsonConverter.java diff --git a/hoodie-common/src/main/java/com/uber/hoodie/common/HoodieJsonPayload.java b/hoodie-common/src/main/java/com/uber/hoodie/common/HoodieJsonPayload.java index c8d89d96b..95b2b3992 100644 --- a/hoodie-common/src/main/java/com/uber/hoodie/common/HoodieJsonPayload.java +++ b/hoodie-common/src/main/java/com/uber/hoodie/common/HoodieJsonPayload.java @@ -16,6 +16,8 @@ package com.uber.hoodie.common; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import com.uber.hoodie.avro.MercifulJsonConverter; import com.uber.hoodie.common.model.HoodieRecordPayload; import com.uber.hoodie.exception.HoodieException; @@ -30,8 +32,6 @@ import java.util.zip.InflaterInputStream; import org.apache.avro.Schema; import org.apache.avro.generic.IndexedRecord; import org.apache.commons.io.IOUtils; -import org.codehaus.jackson.JsonNode; -import org.codehaus.jackson.map.ObjectMapper; public class HoodieJsonPayload implements HoodieRecordPayload { @@ -98,7 +98,7 @@ public class HoodieJsonPayload implements HoodieRecordPayload if (!node.has(field)) { throw new HoodieException("Field :" + field + " not found in payload => " + node.toString()); } - return node.get(field).getTextValue(); + return node.get(field).textValue(); } public String getRowKey(String keyColumnField) throws IOException { diff --git a/hoodie-common/src/main/java/com/uber/hoodie/common/model/HoodieCommitMetadata.java b/hoodie-common/src/main/java/com/uber/hoodie/common/model/HoodieCommitMetadata.java index 8a49c5c39..21c1816f5 100644 --- a/hoodie-common/src/main/java/com/uber/hoodie/common/model/HoodieCommitMetadata.java +++ b/hoodie-common/src/main/java/com/uber/hoodie/common/model/HoodieCommitMetadata.java @@ -16,7 +16,11 @@ package com.uber.hoodie.common.model; +import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.PropertyAccessor; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; import java.io.Serializable; import java.nio.charset.Charset; @@ -27,10 +31,6 @@ import java.util.Map; import org.apache.hadoop.fs.Path; import org.apache.log4j.LogManager; import org.apache.log4j.Logger; -import org.codehaus.jackson.annotate.JsonAutoDetect; -import org.codehaus.jackson.annotate.JsonMethod; -import org.codehaus.jackson.map.DeserializationConfig.Feature; -import org.codehaus.jackson.map.ObjectMapper; /** * All the metadata that gets stored along with a commit. @@ -116,9 +116,7 @@ public class HoodieCommitMetadata implements Serializable { log.info("partition path is null for " + partitionToWriteStats.get(null)); partitionToWriteStats.remove(null); } - ObjectMapper mapper = new ObjectMapper(); - mapper.setVisibility(JsonMethod.FIELD, JsonAutoDetect.Visibility.ANY); - return mapper.defaultPrettyPrintingWriter().writeValueAsString(this); + return getObjectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(this); } public static HoodieCommitMetadata fromJsonString(String jsonStr) throws IOException { @@ -126,10 +124,7 @@ public class HoodieCommitMetadata implements Serializable { // For empty commit file (no data or somethings bad happen). return new HoodieCommitMetadata(); } - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(Feature.FAIL_ON_UNKNOWN_PROPERTIES, false); - mapper.setVisibility(JsonMethod.FIELD, JsonAutoDetect.Visibility.ANY); - return mapper.readValue(jsonStr, HoodieCommitMetadata.class); + return getObjectMapper().readValue(jsonStr, HoodieCommitMetadata.class); } // Here the functions are named "fetch" instead of "get", to get avoid of the json conversion. @@ -235,4 +230,11 @@ public class HoodieCommitMetadata implements Serializable { public static HoodieCommitMetadata fromBytes(byte[] bytes) throws IOException { return fromJsonString(new String(bytes, Charset.forName("utf-8"))); } + + private static ObjectMapper getObjectMapper() { + ObjectMapper mapper = new ObjectMapper(); + mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); + mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY); + return mapper; + } } diff --git a/hoodie-common/src/test/java/com/uber/hoodie/common/util/TestRecord.java b/hoodie-common/src/test/java/com/uber/hoodie/common/util/TestRecord.java index 5df7f3252..ecbc94c85 100644 --- a/hoodie-common/src/test/java/com/uber/hoodie/common/util/TestRecord.java +++ b/hoodie-common/src/test/java/com/uber/hoodie/common/util/TestRecord.java @@ -16,14 +16,14 @@ package com.uber.hoodie.common.util; +import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.PropertyAccessor; +import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; import java.io.Serializable; import java.util.HashMap; import java.util.Map; -import org.codehaus.jackson.annotate.JsonAutoDetect; -import org.codehaus.jackson.annotate.JsonMethod; -import org.codehaus.jackson.map.ObjectMapper; @JsonIgnoreProperties(ignoreUnknown = true) @SuppressWarnings({"unused", "FieldCanBeLocal", "MismatchedQueryAndUpdateOfCollection"}) @@ -97,7 +97,7 @@ public class TestRecord implements Serializable { public String toJsonString() throws IOException { ObjectMapper mapper = new ObjectMapper(); - mapper.setVisibility(JsonMethod.FIELD, JsonAutoDetect.Visibility.ANY); + mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY); return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(this); } } diff --git a/hoodie-spark/pom.xml b/hoodie-spark/pom.xml index 545ff9a59..3e8878ea9 100644 --- a/hoodie-spark/pom.xml +++ b/hoodie-spark/pom.xml @@ -148,10 +148,6 @@ com.fasterxml.jackson.core jackson-annotations - - org.codehaus.jackson - jackson-mapper-asl - org.apache.hadoop