PARQUET-2038: Upgrade Jackson version used in parquet encryption. (#898)

diff --git a/parquet-hadoop/src/main/java/org/apache/parquet/crypto/keytools/HadoopFSKeyMaterialStore.java b/parquet-hadoop/src/main/java/org/apache/parquet/crypto/keytools/HadoopFSKeyMaterialStore.java
index c569911..3026ab9 100644
--- a/parquet-hadoop/src/main/java/org/apache/parquet/crypto/keytools/HadoopFSKeyMaterialStore.java
+++ b/parquet-hadoop/src/main/java/org/apache/parquet/crypto/keytools/HadoopFSKeyMaterialStore.java
@@ -24,12 +24,13 @@
 import org.apache.hadoop.fs.FileSystem;

 import org.apache.hadoop.fs.Path;

 import org.apache.parquet.crypto.ParquetCryptoRuntimeException;

-import org.codehaus.jackson.JsonNode;

-import org.codehaus.jackson.map.ObjectMapper;

-import org.codehaus.jackson.type.TypeReference;

+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
 

 import java.io.FileNotFoundException;
 import java.io.IOException;

+import java.io.OutputStream;
 import java.util.HashMap;

 import java.util.Map;

 import java.util.Set;

@@ -75,7 +76,7 @@
   private void loadKeyMaterialMap() {

     try (FSDataInputStream keyMaterialStream = hadoopFileSystem.open(keyMaterialFile)) {

       JsonNode keyMaterialJson = objectMapper.readTree(keyMaterialStream);

-      keyMaterialMap = objectMapper.readValue(keyMaterialJson,

+      keyMaterialMap = objectMapper.readValue(keyMaterialJson.traverse(),
         new TypeReference<Map<String, String>>() { });

     } catch (FileNotFoundException e) {
       throw new ParquetCryptoRuntimeException("External key material not found at " + keyMaterialFile, e);
@@ -87,7 +88,7 @@
   @Override

   public void saveMaterial() throws ParquetCryptoRuntimeException {

     try (FSDataOutputStream keyMaterialStream = hadoopFileSystem.create(keyMaterialFile)) {

-      objectMapper.writeValue(keyMaterialStream, keyMaterialMap);

+      objectMapper.writeValue((OutputStream) keyMaterialStream, keyMaterialMap);
     } catch (IOException e) {

       throw new ParquetCryptoRuntimeException("Failed to save key material in " + keyMaterialFile, e);

     }

diff --git a/parquet-hadoop/src/main/java/org/apache/parquet/crypto/keytools/KeyMaterial.java b/parquet-hadoop/src/main/java/org/apache/parquet/crypto/keytools/KeyMaterial.java
index 3d49ff4..8be7365 100644
--- a/parquet-hadoop/src/main/java/org/apache/parquet/crypto/keytools/KeyMaterial.java
+++ b/parquet-hadoop/src/main/java/org/apache/parquet/crypto/keytools/KeyMaterial.java
@@ -25,8 +25,8 @@
 import java.util.Map;

 

 import org.apache.parquet.crypto.ParquetCryptoRuntimeException;

-import org.codehaus.jackson.map.ObjectMapper;

-import org.codehaus.jackson.type.TypeReference;

+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.core.type.TypeReference;
 

 /**

  * KeyMaterial class represents the "key material", keeping the information that allows readers to recover an encryption key (see 

diff --git a/parquet-hadoop/src/main/java/org/apache/parquet/crypto/keytools/KeyMetadata.java b/parquet-hadoop/src/main/java/org/apache/parquet/crypto/keytools/KeyMetadata.java
index f75fe7e..6ecc0d7 100644
--- a/parquet-hadoop/src/main/java/org/apache/parquet/crypto/keytools/KeyMetadata.java
+++ b/parquet-hadoop/src/main/java/org/apache/parquet/crypto/keytools/KeyMetadata.java
@@ -26,8 +26,8 @@
 import java.util.Map;

 

 import org.apache.parquet.crypto.ParquetCryptoRuntimeException;

-import org.codehaus.jackson.map.ObjectMapper;

-import org.codehaus.jackson.type.TypeReference;

+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.core.type.TypeReference;
 

 /**

  * Parquet encryption specification defines "key metadata" as an arbitrary byte array, generated by file writers for each encryption key, 

diff --git a/parquet-hadoop/src/main/java/org/apache/parquet/crypto/keytools/LocalWrapKmsClient.java b/parquet-hadoop/src/main/java/org/apache/parquet/crypto/keytools/LocalWrapKmsClient.java
index 921a2db..b696f81 100644
--- a/parquet-hadoop/src/main/java/org/apache/parquet/crypto/keytools/LocalWrapKmsClient.java
+++ b/parquet-hadoop/src/main/java/org/apache/parquet/crypto/keytools/LocalWrapKmsClient.java
@@ -22,8 +22,8 @@
 import org.apache.hadoop.conf.Configuration;

 import org.apache.parquet.crypto.KeyAccessDeniedException;

 import org.apache.parquet.crypto.ParquetCryptoRuntimeException;

-import org.codehaus.jackson.map.ObjectMapper;

-import org.codehaus.jackson.type.TypeReference;

+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.core.type.TypeReference;
 

 import java.io.IOException;

 import java.io.StringReader;

diff --git a/parquet-hadoop/src/test/java/org/apache/parquet/crypto/keytools/samples/VaultClient.java b/parquet-hadoop/src/test/java/org/apache/parquet/crypto/keytools/samples/VaultClient.java
index 9eb9c51..75876a6 100755
--- a/parquet-hadoop/src/test/java/org/apache/parquet/crypto/keytools/samples/VaultClient.java
+++ b/parquet-hadoop/src/test/java/org/apache/parquet/crypto/keytools/samples/VaultClient.java
@@ -30,7 +30,7 @@
 import org.apache.parquet.crypto.ParquetCryptoRuntimeException;
 import org.apache.parquet.crypto.keytools.KeyToolkit;
 import org.apache.parquet.crypto.keytools.KmsClient;
-import org.codehaus.jackson.map.ObjectMapper;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -171,7 +171,7 @@
   private static String parseReturn(String response, String searchKey) {
     String matchingValue;
     try {
-      matchingValue = objectMapper.readTree(response).findValue(searchKey).getTextValue();
+      matchingValue = objectMapper.readTree(response).findValue(searchKey).textValue();
     } catch (IOException e) {
       throw new ParquetCryptoRuntimeException("Failed to parse vault response. " + searchKey + " not found."  + response, e);
     }