You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by ae...@apache.org on 2017/05/03 21:31:13 UTC
hadoop git commit: HDFS-11712. Ozone: Reuse ObjectMapper instance to
improve the performance. Contributed by Yiqun Lin.
Repository: hadoop
Updated Branches:
refs/heads/HDFS-7240 9352ecfb0 -> 167ab4df0
HDFS-11712. Ozone: Reuse ObjectMapper instance to improve the performance. Contributed by Yiqun Lin.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/167ab4df
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/167ab4df
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/167ab4df
Branch: refs/heads/HDFS-7240
Commit: 167ab4df0def3fa1d8a45a674e295fd77ba7ab6a
Parents: 9352ecf
Author: Anu Engineer <ae...@apache.org>
Authored: Wed May 3 14:25:41 2017 -0700
Committer: Anu Engineer <ae...@apache.org>
Committed: Wed May 3 14:25:41 2017 -0700
----------------------------------------------------------------------
.../ozone/web/exceptions/OzoneException.java | 37 ++++++-----
.../web/ozShell/bucket/CreateBucketHandler.java | 9 +--
.../web/ozShell/bucket/InfoBucketHandler.java | 9 +--
.../web/ozShell/bucket/ListBucketHandler.java | 11 +---
.../web/ozShell/bucket/UpdateBucketHandler.java | 10 +--
.../ozone/web/ozShell/keys/ListKeyHandler.java | 12 +---
.../web/ozShell/volume/CreateVolumeHandler.java | 9 +--
.../web/ozShell/volume/InfoVolumeHandler.java | 10 +--
.../web/ozShell/volume/ListVolumeHandler.java | 9 +--
.../hadoop/ozone/web/response/BucketInfo.java | 64 +++++++++++---------
.../hadoop/ozone/web/response/KeyInfo.java | 59 ++++++++++--------
.../hadoop/ozone/web/response/ListBuckets.java | 59 ++++++++++--------
.../hadoop/ozone/web/response/ListKeys.java | 64 +++++++++++---------
.../hadoop/ozone/web/response/ListVolumes.java | 60 +++++++++---------
.../hadoop/ozone/web/response/VolumeInfo.java | 60 +++++++++---------
.../hadoop/ozone/web/utils/JsonUtils.java | 53 ++++++++++++++++
.../hadoop/ozone/web/utils/package-info.java | 18 ++++++
17 files changed, 322 insertions(+), 231 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/167ab4df/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/exceptions/OzoneException.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/exceptions/OzoneException.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/exceptions/OzoneException.java
index c2e64da..ea3abb0 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/exceptions/OzoneException.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/exceptions/OzoneException.java
@@ -19,12 +19,14 @@
package org.apache.hadoop.ozone.web.exceptions;
+import java.io.IOException;
+
import org.apache.hadoop.classification.InterfaceAudience;
-import org.codehaus.jackson.annotate.JsonAutoDetect;
-import org.codehaus.jackson.annotate.JsonProperty;
-import org.codehaus.jackson.map.ObjectMapper;
-import java.io.IOException;
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.ObjectReader;
/**
* Class the represents various errors returned by the
@@ -32,6 +34,20 @@ import java.io.IOException;
*/
@InterfaceAudience.Private
public class OzoneException extends Exception {
+ private static final ObjectReader READER =
+ new ObjectMapper().readerFor(OzoneException.class);
+ private static final ObjectMapper MAPPER;
+
+ static {
+ MAPPER = new ObjectMapper();
+ MAPPER.setVisibility(
+ MAPPER.getSerializationConfig().getDefaultVisibilityChecker()
+ .withCreatorVisibility(JsonAutoDetect.Visibility.NONE)
+ .withFieldVisibility(JsonAutoDetect.Visibility.NONE)
+ .withGetterVisibility(JsonAutoDetect.Visibility.NONE)
+ .withIsGetterVisibility(JsonAutoDetect.Visibility.NONE)
+ .withSetterVisibility(JsonAutoDetect.Visibility.NONE));
+ }
@JsonProperty("httpCode")
private long httpCode;
@@ -211,15 +227,7 @@ public class OzoneException extends Exception {
*/
public String toJsonString() {
try {
- ObjectMapper mapper = new ObjectMapper();
- mapper.setVisibilityChecker(
- mapper.getSerializationConfig().getDefaultVisibilityChecker()
- .withCreatorVisibility(JsonAutoDetect.Visibility.NONE)
- .withFieldVisibility(JsonAutoDetect.Visibility.NONE)
- .withGetterVisibility(JsonAutoDetect.Visibility.NONE)
- .withIsGetterVisibility(JsonAutoDetect.Visibility.NONE)
- .withSetterVisibility(JsonAutoDetect.Visibility.NONE));
- return mapper.writeValueAsString(this);
+ return MAPPER.writeValueAsString(this);
} catch (IOException ex) {
// TODO : Log this error on server side.
}
@@ -237,7 +245,6 @@ public class OzoneException extends Exception {
* @throws IOException
*/
public static OzoneException parse(String jsonString) throws IOException {
- ObjectMapper mapper = new ObjectMapper();
- return mapper.readValue(jsonString, OzoneException.class);
+ return READER.readValue(jsonString);
}
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/167ab4df/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/bucket/CreateBucketHandler.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/bucket/CreateBucketHandler.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/bucket/CreateBucketHandler.java
index 4800499..830f4e7 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/bucket/CreateBucketHandler.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/bucket/CreateBucketHandler.java
@@ -24,7 +24,7 @@ import org.apache.hadoop.ozone.web.client.OzoneVolume;
import org.apache.hadoop.ozone.web.exceptions.OzoneException;
import org.apache.hadoop.ozone.web.ozShell.Handler;
import org.apache.hadoop.ozone.web.ozShell.Shell;
-import org.codehaus.jackson.map.ObjectMapper;
+import org.apache.hadoop.ozone.web.utils.JsonUtils;
import java.io.IOException;
import java.net.URI;
@@ -89,11 +89,8 @@ public class CreateBucketHandler extends Handler {
OzoneBucket bucket = vol.createBucket(bucketName);
if (cmd.hasOption(Shell.VERBOSE)) {
- ObjectMapper mapper = new ObjectMapper();
- Object json = mapper.readValue(bucket.getBucketInfo().toJsonString(),
- Object.class);
- System.out.printf("%s%n", mapper.writerWithDefaultPrettyPrinter()
- .writeValueAsString(json));
+ System.out.printf("%s%n", JsonUtils.toJsonStringWithDefaultPrettyPrinter(
+ bucket.getBucketInfo().toJsonString()));
}
}
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/167ab4df/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/bucket/InfoBucketHandler.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/bucket/InfoBucketHandler.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/bucket/InfoBucketHandler.java
index e930cba..7df149d 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/bucket/InfoBucketHandler.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/bucket/InfoBucketHandler.java
@@ -25,7 +25,7 @@ import org.apache.hadoop.ozone.web.client.OzoneVolume;
import org.apache.hadoop.ozone.web.exceptions.OzoneException;
import org.apache.hadoop.ozone.web.ozShell.Handler;
import org.apache.hadoop.ozone.web.ozShell.Shell;
-import org.codehaus.jackson.map.ObjectMapper;
+import org.apache.hadoop.ozone.web.utils.JsonUtils;
import java.io.IOException;
import java.net.URI;
@@ -87,11 +87,8 @@ public class InfoBucketHandler extends Handler {
OzoneVolume vol = client.getVolume(volumeName);
OzoneBucket bucket = vol.getBucket(bucketName);
- ObjectMapper mapper = new ObjectMapper();
- Object json =
- mapper.readValue(bucket.getBucketInfo().toJsonString(), Object.class);
- System.out.printf("%s%n", mapper.writerWithDefaultPrettyPrinter()
- .writeValueAsString(json));
+ System.out.printf("%s%n", JsonUtils.toJsonStringWithDefaultPrettyPrinter(
+ bucket.getBucketInfo().toJsonString()));
}
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/167ab4df/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/bucket/ListBucketHandler.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/bucket/ListBucketHandler.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/bucket/ListBucketHandler.java
index af844a0..6d99cf0 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/bucket/ListBucketHandler.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/bucket/ListBucketHandler.java
@@ -25,7 +25,7 @@ import org.apache.hadoop.ozone.web.client.OzoneVolume;
import org.apache.hadoop.ozone.web.exceptions.OzoneException;
import org.apache.hadoop.ozone.web.ozShell.Handler;
import org.apache.hadoop.ozone.web.ozShell.Shell;
-import org.codehaus.jackson.map.ObjectMapper;
+import org.apache.hadoop.ozone.web.utils.JsonUtils;
import java.io.IOException;
import java.net.URI;
@@ -85,14 +85,9 @@ public class ListBucketHandler extends Handler {
OzoneVolume vol = client.getVolume(volumeName);
List<OzoneBucket> bucketList = vol.listBuckets();
- ObjectMapper mapper = new ObjectMapper();
-
-
for (OzoneBucket bucket : bucketList) {
- Object json =
- mapper.readValue(bucket.getBucketInfo().toJsonString(), Object.class);
- System.out.printf("%s%n", mapper.writerWithDefaultPrettyPrinter()
- .writeValueAsString(json));
+ System.out.printf("%s%n", JsonUtils.toJsonStringWithDefaultPrettyPrinter(
+ bucket.getBucketInfo().toJsonString()));
}
}
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/167ab4df/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/bucket/UpdateBucketHandler.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/bucket/UpdateBucketHandler.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/bucket/UpdateBucketHandler.java
index c79cfff..b88fa4f 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/bucket/UpdateBucketHandler.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/bucket/UpdateBucketHandler.java
@@ -24,7 +24,7 @@ import org.apache.hadoop.ozone.web.client.OzoneVolume;
import org.apache.hadoop.ozone.web.exceptions.OzoneException;
import org.apache.hadoop.ozone.web.ozShell.Handler;
import org.apache.hadoop.ozone.web.ozShell.Shell;
-import org.codehaus.jackson.map.ObjectMapper;
+import org.apache.hadoop.ozone.web.utils.JsonUtils;
import java.io.IOException;
import java.net.URI;
@@ -88,11 +88,7 @@ public class UpdateBucketHandler extends Handler {
}
OzoneBucket bucket = vol.getBucket(bucketName);
-
- ObjectMapper mapper = new ObjectMapper();
- Object json =
- mapper.readValue(bucket.getBucketInfo().toJsonString(), Object.class);
- System.out.printf("%s%n", mapper.writerWithDefaultPrettyPrinter()
- .writeValueAsString(json));
+ System.out.printf("%s%n", JsonUtils.toJsonStringWithDefaultPrettyPrinter(
+ bucket.getBucketInfo().toJsonString()));
}
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/167ab4df/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/keys/ListKeyHandler.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/keys/ListKeyHandler.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/keys/ListKeyHandler.java
index 5f04cd0..300a817 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/keys/ListKeyHandler.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/keys/ListKeyHandler.java
@@ -26,7 +26,7 @@ import org.apache.hadoop.ozone.web.client.OzoneVolume;
import org.apache.hadoop.ozone.web.exceptions.OzoneException;
import org.apache.hadoop.ozone.web.ozShell.Handler;
import org.apache.hadoop.ozone.web.ozShell.Shell;
-import org.codehaus.jackson.map.ObjectMapper;
+import org.apache.hadoop.ozone.web.utils.JsonUtils;
import java.io.IOException;
import java.net.URI;
@@ -90,16 +90,10 @@ public class ListKeyHandler extends Handler {
OzoneBucket bucket = vol.getBucket(bucketName);
List<OzoneKey> keys = bucket.listKeys();
- ObjectMapper mapper = new ObjectMapper();
-
-
for (OzoneKey key : keys) {
- Object json =
- mapper.readValue(key.getObjectInfo().toJsonString(), Object.class);
- System.out.printf("%s%n", mapper.writerWithDefaultPrettyPrinter()
- .writeValueAsString(json));
+ System.out.printf("%s%n", JsonUtils.toJsonStringWithDefaultPrettyPrinter(
+ key.getObjectInfo().toJsonString()));
}
-
}
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/167ab4df/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/volume/CreateVolumeHandler.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/volume/CreateVolumeHandler.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/volume/CreateVolumeHandler.java
index cd5a0f9..66e3a77 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/volume/CreateVolumeHandler.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/volume/CreateVolumeHandler.java
@@ -24,7 +24,7 @@ import org.apache.hadoop.ozone.web.client.OzoneVolume;
import org.apache.hadoop.ozone.web.exceptions.OzoneException;
import org.apache.hadoop.ozone.web.ozShell.Handler;
import org.apache.hadoop.ozone.web.ozShell.Shell;
-import org.codehaus.jackson.map.ObjectMapper;
+import org.apache.hadoop.ozone.web.utils.JsonUtils;
import java.io.IOException;
import java.net.URI;
@@ -89,13 +89,10 @@ public class CreateVolumeHandler extends Handler {
client.setEndPointURI(ozoneURI);
client.setUserAuth(rootName);
-
OzoneVolume vol = client.createVolume(volumeName, userName, quota);
if (cmd.hasOption(Shell.VERBOSE)) {
- ObjectMapper mapper = new ObjectMapper();
- Object json = mapper.readValue(vol.getJsonString(), Object.class);
- System.out.printf("%s%n", mapper.writerWithDefaultPrettyPrinter()
- .writeValueAsString(json));
+ System.out.printf("%s%n",
+ JsonUtils.toJsonStringWithDefaultPrettyPrinter(vol.getJsonString()));
}
}
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/167ab4df/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/volume/InfoVolumeHandler.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/volume/InfoVolumeHandler.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/volume/InfoVolumeHandler.java
index 9ce5620..807ab72 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/volume/InfoVolumeHandler.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/volume/InfoVolumeHandler.java
@@ -24,7 +24,7 @@ import org.apache.hadoop.ozone.web.client.OzoneVolume;
import org.apache.hadoop.ozone.web.exceptions.OzoneException;
import org.apache.hadoop.ozone.web.ozShell.Handler;
import org.apache.hadoop.ozone.web.ozShell.Shell;
-import org.codehaus.jackson.map.ObjectMapper;
+import org.apache.hadoop.ozone.web.utils.JsonUtils;
import java.io.IOException;
import java.net.URI;
@@ -89,11 +89,7 @@ public class InfoVolumeHandler extends Handler{
client.setUserAuth(rootName);
OzoneVolume vol = client.getVolume(volumeName);
- ObjectMapper mapper = new ObjectMapper();
- Object json = mapper.readValue(vol.getJsonString(), Object.class);
- System.out.printf("%s%n", mapper.writerWithDefaultPrettyPrinter()
- .writeValueAsString(json));
-
-
+ System.out.printf("%s%n",
+ JsonUtils.toJsonStringWithDefaultPrettyPrinter(vol.getJsonString()));
}
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/167ab4df/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/volume/ListVolumeHandler.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/volume/ListVolumeHandler.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/volume/ListVolumeHandler.java
index 25735b9..634e903 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/volume/ListVolumeHandler.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/ozShell/volume/ListVolumeHandler.java
@@ -24,7 +24,7 @@ import org.apache.hadoop.ozone.web.client.OzoneVolume;
import org.apache.hadoop.ozone.web.exceptions.OzoneException;
import org.apache.hadoop.ozone.web.ozShell.Handler;
import org.apache.hadoop.ozone.web.ozShell.Shell;
-import org.codehaus.jackson.map.ObjectMapper;
+import org.apache.hadoop.ozone.web.utils.JsonUtils;
import java.io.IOException;
import java.net.URI;
@@ -86,14 +86,11 @@ public class ListVolumeHandler extends Handler {
System.out.printf("Found : %d volumes for user : %s %n", volumes.size(),
userName);
}
- ObjectMapper mapper = new ObjectMapper();
for (OzoneVolume vol : volumes) {
- Object json = mapper.readValue(vol.getJsonString(), Object.class);
- System.out.printf("%s%n", mapper.writerWithDefaultPrettyPrinter()
- .writeValueAsString(json));
+ System.out.printf("%s%n", JsonUtils
+ .toJsonStringWithDefaultPrettyPrinter(vol.getJsonString()));
}
-
}
}
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/167ab4df/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/response/BucketInfo.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/response/BucketInfo.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/response/BucketInfo.java
index 8535047..c6285e1 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/response/BucketInfo.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/response/BucketInfo.java
@@ -17,29 +17,48 @@
*/
package org.apache.hadoop.ozone.web.response;
-import com.google.common.base.Preconditions;
-import org.apache.hadoop.fs.StorageType;
-import org.apache.hadoop.ozone.web.request.OzoneAcl;
-import org.apache.hadoop.ozone.OzoneConsts;
-import org.codehaus.jackson.annotate.JsonAutoDetect;
-import org.codehaus.jackson.annotate.JsonMethod;
-import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.map.ObjectWriter;
-import org.codehaus.jackson.map.annotate.JsonFilter;
-import org.codehaus.jackson.map.ser.FilterProvider;
-import org.codehaus.jackson.map.ser.impl.SimpleBeanPropertyFilter;
-import org.codehaus.jackson.map.ser.impl.SimpleFilterProvider;
-
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
+import org.apache.hadoop.fs.StorageType;
+import org.apache.hadoop.ozone.OzoneConsts;
+import org.apache.hadoop.ozone.web.request.OzoneAcl;
+import org.apache.hadoop.ozone.web.utils.JsonUtils;
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.JsonFilter;
+import com.fasterxml.jackson.annotation.PropertyAccessor;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.ObjectReader;
+import com.fasterxml.jackson.databind.ObjectWriter;
+import com.fasterxml.jackson.databind.ser.FilterProvider;
+import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter;
+import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;
+import com.google.common.base.Preconditions;
+
/**
* BucketInfo class, this is used as response class to send
* Json info about a bucket back to a client.
*/
public class BucketInfo implements Comparable<BucketInfo> {
static final String BUCKET_INFO = "BUCKET_INFO_FILTER";
+ private static final ObjectReader READER =
+ new ObjectMapper().readerFor(BucketInfo.class);
+ private static final ObjectWriter WRITER;
+
+ static {
+ ObjectMapper mapper = new ObjectMapper();
+ String[] ignorableFieldNames = {"bytesUsed", "keyCount"};
+
+ FilterProvider filters = new SimpleFilterProvider().addFilter(BUCKET_INFO,
+ SimpleBeanPropertyFilter.serializeAllExcept(ignorableFieldNames));
+ mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
+ mapper.addMixIn(Object.class, MixIn.class);
+
+ WRITER = mapper.writer(filters);
+ }
+
private String volumeName;
private String bucketName;
private List<OzoneAcl> acls;
@@ -77,8 +96,7 @@ public class BucketInfo implements Comparable<BucketInfo> {
* @throws IOException
*/
public static BucketInfo parse(String jsonString) throws IOException {
- ObjectMapper mapper = new ObjectMapper();
- return mapper.readValue(jsonString, BucketInfo.class);
+ return READER.readValue(jsonString);
}
/**
@@ -161,18 +179,7 @@ public class BucketInfo implements Comparable<BucketInfo> {
* @return String
*/
public String toJsonString() throws IOException {
- ObjectMapper mapper = new ObjectMapper();
- String[] ignorableFieldNames = {"bytesUsed", "keyCount"};
-
- FilterProvider filters = new SimpleFilterProvider().addFilter(
- BUCKET_INFO,
- SimpleBeanPropertyFilter.serializeAllExcept(ignorableFieldNames));
-
- mapper.setVisibility(JsonMethod.FIELD, JsonAutoDetect.Visibility.ANY);
- mapper.getSerializationConfig()
- .addMixInAnnotations(Object.class, MixIn.class);
- ObjectWriter writer = mapper.writer(filters);
- return writer.writeValueAsString(this);
+ return WRITER.writeValueAsString(this);
}
/**
@@ -185,8 +192,7 @@ public class BucketInfo implements Comparable<BucketInfo> {
* fields vs. only fields that are part of REST protocol.
*/
public String toDBString() throws IOException {
- ObjectMapper mapper = new ObjectMapper();
- return mapper.writeValueAsString(this);
+ return JsonUtils.toJsonString(this);
}
/**
http://git-wip-us.apache.org/repos/asf/hadoop/blob/167ab4df/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/response/KeyInfo.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/response/KeyInfo.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/response/KeyInfo.java
index 7e9e00f..69be5b9 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/response/KeyInfo.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/response/KeyInfo.java
@@ -17,24 +17,46 @@
*/
package org.apache.hadoop.ozone.web.response;
+import java.io.IOException;
+
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
-import org.codehaus.jackson.annotate.JsonAutoDetect;
-import org.codehaus.jackson.annotate.JsonMethod;
-import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.map.ObjectWriter;
-import org.codehaus.jackson.map.annotate.JsonFilter;
-import org.codehaus.jackson.map.ser.FilterProvider;
-import org.codehaus.jackson.map.ser.impl.SimpleBeanPropertyFilter;
-import org.codehaus.jackson.map.ser.impl.SimpleFilterProvider;
+import org.apache.hadoop.ozone.web.utils.JsonUtils;
-import java.io.IOException;
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.JsonFilter;
+import com.fasterxml.jackson.annotation.PropertyAccessor;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.ObjectReader;
+import com.fasterxml.jackson.databind.ObjectWriter;
+import com.fasterxml.jackson.databind.ser.FilterProvider;
+import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter;
+import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;
/**
* Represents an Ozone key Object.
*/
public class KeyInfo implements Comparable<KeyInfo> {
static final String OBJECT_INFO = "OBJECT_INFO_FILTER";
+
+ private static final ObjectReader READER =
+ new ObjectMapper().readerFor(KeyInfo.class);
+ private static final ObjectWriter WRITER;
+
+ static {
+ ObjectMapper mapper = new ObjectMapper();
+ String[] ignorableFieldNames = {"dataFileName"};
+
+ FilterProvider filters = new SimpleFilterProvider()
+ .addFilter(OBJECT_INFO, SimpleBeanPropertyFilter
+ .serializeAllExcept(ignorableFieldNames));
+ mapper.setVisibility(PropertyAccessor.FIELD,
+ JsonAutoDetect.Visibility.ANY);
+ mapper.addMixIn(Object.class, MixIn.class);
+
+ WRITER = mapper.writer(filters);
+ }
+
/**
* This class allows us to create custom filters
* for the Json serialization.
@@ -225,8 +247,7 @@ public class KeyInfo implements Comparable<KeyInfo> {
* @throws IOException
*/
public static KeyInfo parse(String jsonString) throws IOException {
- ObjectMapper mapper = new ObjectMapper();
- return mapper.readValue(jsonString, KeyInfo.class);
+ return READER.readValue(jsonString);
}
@@ -237,25 +258,13 @@ public class KeyInfo implements Comparable<KeyInfo> {
* @return String
*/
public String toJsonString() throws IOException {
- String[] ignorableFieldNames = {"dataFileName"};
-
- FilterProvider filters = new SimpleFilterProvider()
- .addFilter(OBJECT_INFO, SimpleBeanPropertyFilter
- .serializeAllExcept(ignorableFieldNames));
-
- ObjectMapper mapper = new ObjectMapper()
- .setVisibility(JsonMethod.FIELD, JsonAutoDetect.Visibility.ANY);
- mapper.getSerializationConfig()
- .addMixInAnnotations(Object.class, MixIn.class);
- ObjectWriter writer = mapper.writer(filters);
- return writer.writeValueAsString(this);
+ return WRITER.writeValueAsString(this);
}
/**
* Returns the Object as a Json String.
*/
public String toDBString() throws IOException {
- ObjectMapper mapper = new ObjectMapper();
- return mapper.writeValueAsString(this);
+ return JsonUtils.toJsonString(this);
}
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/167ab4df/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/response/ListBuckets.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/response/ListBuckets.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/response/ListBuckets.java
index 62bd491..3b0d32e 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/response/ListBuckets.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/response/ListBuckets.java
@@ -18,25 +18,46 @@
package org.apache.hadoop.ozone.web.response;
-import org.codehaus.jackson.annotate.JsonAutoDetect;
-import org.codehaus.jackson.annotate.JsonMethod;
-import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.map.ObjectWriter;
-import org.codehaus.jackson.map.annotate.JsonFilter;
-import org.codehaus.jackson.map.ser.FilterProvider;
-import org.codehaus.jackson.map.ser.impl.SimpleBeanPropertyFilter;
-import org.codehaus.jackson.map.ser.impl.SimpleFilterProvider;
-
import java.io.IOException;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
+import org.apache.hadoop.ozone.web.utils.JsonUtils;
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.JsonFilter;
+import com.fasterxml.jackson.annotation.PropertyAccessor;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.ObjectReader;
+import com.fasterxml.jackson.databind.ObjectWriter;
+import com.fasterxml.jackson.databind.ser.FilterProvider;
+import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter;
+import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;
+
/**
* List Bucket is the response for the ListBucket Query.
*/
public class ListBuckets {
static final String BUCKET_LIST = "BUCKET_LIST_FILTER";
+ private static final ObjectReader READER =
+ new ObjectMapper().readerFor(ListBuckets.class);
+ private static final ObjectWriter WRITER;
+
+ static {
+ ObjectMapper mapper = new ObjectMapper();
+ String[] ignorableFieldNames = {"dataFileName"};
+
+ FilterProvider filters = new SimpleFilterProvider()
+ .addFilter(BUCKET_LIST, SimpleBeanPropertyFilter
+ .serializeAllExcept(ignorableFieldNames));
+ mapper.setVisibility(PropertyAccessor.FIELD,
+ JsonAutoDetect.Visibility.ANY);
+ mapper.addMixIn(Object.class, MixIn.class);
+
+ WRITER = mapper.writer(filters);
+ }
+
private List<BucketInfo> buckets;
/**
@@ -65,8 +86,7 @@ public class ListBuckets {
* @throws IOException
*/
public static ListBuckets parse(String data) throws IOException {
- ObjectMapper mapper = new ObjectMapper();
- return mapper.readValue(data, ListBuckets.class);
+ return READER.readValue(data);
}
/**
@@ -95,27 +115,14 @@ public class ListBuckets {
* @return String
*/
public String toJsonString() throws IOException {
- ObjectMapper mapper = new ObjectMapper();
- String[] ignorableFieldNames = {"bytesUsed", "keyCount"};
-
- FilterProvider filters = new SimpleFilterProvider()
- .addFilter(BUCKET_LIST, SimpleBeanPropertyFilter
- .serializeAllExcept(ignorableFieldNames));
-
- mapper.setVisibility(JsonMethod.FIELD, JsonAutoDetect.Visibility.ANY);
- mapper.getSerializationConfig()
- .addMixInAnnotations(Object.class, MixIn.class);
- ObjectWriter writer = mapper.writer(filters);
-
- return writer.writeValueAsString(this);
+ return WRITER.writeValueAsString(this);
}
/**
* Returns the Object as a Json String.
*/
public String toDBString() throws IOException {
- ObjectMapper mapper = new ObjectMapper();
- return mapper.writeValueAsString(this);
+ return JsonUtils.toJsonString(this);
}
/**
http://git-wip-us.apache.org/repos/asf/hadoop/blob/167ab4df/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/response/ListKeys.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/response/ListKeys.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/response/ListKeys.java
index db09e95..8064f90 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/response/ListKeys.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/response/ListKeys.java
@@ -17,28 +17,50 @@
*/
package org.apache.hadoop.ozone.web.response;
-import com.google.common.base.Preconditions;
-import org.apache.hadoop.ozone.web.handlers.BucketArgs;
-import org.apache.hadoop.ozone.web.handlers.ListArgs;
-import org.codehaus.jackson.annotate.JsonAutoDetect;
-import org.codehaus.jackson.annotate.JsonMethod;
-import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.map.ObjectWriter;
-import org.codehaus.jackson.map.annotate.JsonFilter;
-import org.codehaus.jackson.map.ser.FilterProvider;
-import org.codehaus.jackson.map.ser.impl.SimpleBeanPropertyFilter;
-import org.codehaus.jackson.map.ser.impl.SimpleFilterProvider;
-
import java.io.IOException;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
+import org.apache.hadoop.ozone.web.handlers.BucketArgs;
+import org.apache.hadoop.ozone.web.handlers.ListArgs;
+import org.apache.hadoop.ozone.web.utils.JsonUtils;
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.JsonFilter;
+import com.fasterxml.jackson.annotation.PropertyAccessor;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.ObjectReader;
+import com.fasterxml.jackson.databind.ObjectWriter;
+import com.fasterxml.jackson.databind.ser.FilterProvider;
+import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter;
+import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;
+import com.google.common.base.Preconditions;
+
/**
* This class the represents the list of keys (Objects) in a bucket.
*/
public class ListKeys {
static final String OBJECT_LIST = "OBJECT_LIST_FILTER";
+
+ private static final ObjectReader READER =
+ new ObjectMapper().readerFor(ListKeys.class);
+ private static final ObjectWriter WRITER;
+
+ static {
+ ObjectMapper mapper = new ObjectMapper();
+ String[] ignorableFieldNames = {"dataFileName"};
+
+ FilterProvider filters = new SimpleFilterProvider()
+ .addFilter(OBJECT_LIST, SimpleBeanPropertyFilter
+ .serializeAllExcept(ignorableFieldNames));
+ mapper.setVisibility(PropertyAccessor.FIELD,
+ JsonAutoDetect.Visibility.ANY);
+ mapper.addMixIn(Object.class, MixIn.class);
+
+ WRITER = mapper.writer(filters);
+ }
+
private String name;
private String prefix;
private long maxKeys;
@@ -73,8 +95,7 @@ public class ListKeys {
* @throws IOException - Json conversion error.
*/
public static ListKeys parse(String jsonString) throws IOException {
- ObjectMapper mapper = new ObjectMapper();
- return mapper.readValue(jsonString, ListKeys.class);
+ return READER.readValue(jsonString);
}
/**
@@ -148,17 +169,7 @@ public class ListKeys {
* @throws IOException - On json Errors.
*/
public String toJsonString() throws IOException {
- String[] ignorableFieldNames = {"dataFileName"};
-
- FilterProvider filters = new SimpleFilterProvider().addFilter(OBJECT_LIST,
- SimpleBeanPropertyFilter.serializeAllExcept(ignorableFieldNames));
-
- ObjectMapper mapper = new ObjectMapper()
- .setVisibility(JsonMethod.FIELD, JsonAutoDetect.Visibility.ANY);
- mapper.getSerializationConfig()
- .addMixInAnnotations(Object.class, MixIn.class);
- ObjectWriter writer = mapper.writer(filters);
- return writer.writeValueAsString(this);
+ return WRITER.writeValueAsString(this);
}
/**
@@ -168,8 +179,7 @@ public class ListKeys {
* @throws IOException - on json errors.
*/
public String toDBString() throws IOException {
- ObjectMapper mapper = new ObjectMapper();
- return mapper.writeValueAsString(this);
+ return JsonUtils.toJsonString(this);
}
/**
http://git-wip-us.apache.org/repos/asf/hadoop/blob/167ab4df/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/response/ListVolumes.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/response/ListVolumes.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/response/ListVolumes.java
index 89cfebd..797c0ef 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/response/ListVolumes.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/response/ListVolumes.java
@@ -17,21 +17,24 @@
*/
package org.apache.hadoop.ozone.web.response;
-import org.apache.hadoop.classification.InterfaceAudience;
-import org.codehaus.jackson.annotate.JsonAutoDetect;
-import org.codehaus.jackson.annotate.JsonMethod;
-import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.map.ObjectWriter;
-import org.codehaus.jackson.map.annotate.JsonFilter;
-import org.codehaus.jackson.map.ser.FilterProvider;
-import org.codehaus.jackson.map.ser.impl.SimpleBeanPropertyFilter;
-import org.codehaus.jackson.map.ser.impl.SimpleFilterProvider;
-
import java.io.IOException;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
+import org.apache.hadoop.classification.InterfaceAudience;
+import org.apache.hadoop.ozone.web.utils.JsonUtils;
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.JsonFilter;
+import com.fasterxml.jackson.annotation.PropertyAccessor;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.ObjectReader;
+import com.fasterxml.jackson.databind.ObjectWriter;
+import com.fasterxml.jackson.databind.ser.FilterProvider;
+import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter;
+import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;
+
/**
* List Volume Class is the class that is returned in JSON format to
* users when they call ListVolumes.
@@ -41,6 +44,23 @@ public class ListVolumes {
private List<VolumeInfo> volumes;
static final String VOLUME_LIST = "VOLUME_LIST_FILTER";
+ private static final ObjectReader READER =
+ new ObjectMapper().readerFor(ListVolumes.class);
+ private static final ObjectWriter WRITER;
+
+ static {
+ ObjectMapper mapper = new ObjectMapper();
+ String[] ignorableFieldNames = {"bytesUsed", "bucketCount"};
+
+ FilterProvider filters = new SimpleFilterProvider()
+ .addFilter(VOLUME_LIST, SimpleBeanPropertyFilter
+ .serializeAllExcept(ignorableFieldNames));
+ mapper.setVisibility(PropertyAccessor.FIELD,
+ JsonAutoDetect.Visibility.ANY);
+ mapper.addMixIn(Object.class, MixIn.class);
+
+ WRITER = mapper.writer(filters);
+ }
/**
* Used for json filtering.
@@ -82,19 +102,7 @@ public class ListVolumes {
* @return String
*/
public String toJsonString() throws IOException {
- ObjectMapper mapper = new ObjectMapper();
- String[] ignorableFieldNames = {"bytesUsed", "bucketCount"};
-
- FilterProvider filters = new SimpleFilterProvider()
- .addFilter(VOLUME_LIST,
- SimpleBeanPropertyFilter.serializeAllExcept(ignorableFieldNames));
-
- mapper.setVisibility(JsonMethod.FIELD, JsonAutoDetect.Visibility.ANY);
- mapper.getSerializationConfig()
- .addMixInAnnotations(Object.class, MixIn.class);
- ObjectWriter writer = mapper.writer(filters);
-
- return writer.writeValueAsString(this);
+ return WRITER.writeValueAsString(this);
}
/**
@@ -108,8 +116,7 @@ public class ListVolumes {
* @throws IOException
*/
public String toDBString() throws IOException {
- ObjectMapper mapper = new ObjectMapper();
- return mapper.writeValueAsString(this);
+ return JsonUtils.toJsonString(this);
}
/**
@@ -122,8 +129,7 @@ public class ListVolumes {
* @throws IOException
*/
public static ListVolumes parse(String data) throws IOException {
- ObjectMapper mapper = new ObjectMapper();
- return mapper.readValue(data, ListVolumes.class);
+ return READER.readValue(data);
}
/**
http://git-wip-us.apache.org/repos/asf/hadoop/blob/167ab4df/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/response/VolumeInfo.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/response/VolumeInfo.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/response/VolumeInfo.java
index 5717368..8e6ec902 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/response/VolumeInfo.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/response/VolumeInfo.java
@@ -19,18 +19,21 @@
package org.apache.hadoop.ozone.web.response;
+import java.io.IOException;
+
import org.apache.hadoop.classification.InterfaceAudience;
import org.apache.hadoop.ozone.web.request.OzoneQuota;
-import org.codehaus.jackson.annotate.JsonAutoDetect;
-import org.codehaus.jackson.annotate.JsonMethod;
-import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.map.ObjectWriter;
-import org.codehaus.jackson.map.annotate.JsonFilter;
-import org.codehaus.jackson.map.ser.FilterProvider;
-import org.codehaus.jackson.map.ser.impl.SimpleBeanPropertyFilter;
-import org.codehaus.jackson.map.ser.impl.SimpleFilterProvider;
-
-import java.io.IOException;
+import org.apache.hadoop.ozone.web.utils.JsonUtils;
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.JsonFilter;
+import com.fasterxml.jackson.annotation.PropertyAccessor;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.ObjectReader;
+import com.fasterxml.jackson.databind.ObjectWriter;
+import com.fasterxml.jackson.databind.ser.FilterProvider;
+import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter;
+import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;
/**
* VolumeInfo Class is the Java class that represents
@@ -40,6 +43,23 @@ import java.io.IOException;
public class VolumeInfo implements Comparable<VolumeInfo> {
static final String VOLUME_INFO = "VOLUME_INFO_FILTER";
+ private static final ObjectReader READER =
+ new ObjectMapper().readerFor(VolumeInfo.class);
+ private static final ObjectWriter WRITER;
+
+ static {
+ ObjectMapper mapper = new ObjectMapper();
+ String[] ignorableFieldNames = {"bytesUsed", "bucketCount"};
+
+ FilterProvider filters = new SimpleFilterProvider()
+ .addFilter(VOLUME_INFO, SimpleBeanPropertyFilter
+ .serializeAllExcept(ignorableFieldNames));
+ mapper.setVisibility(PropertyAccessor.FIELD,
+ JsonAutoDetect.Visibility.ANY);
+ mapper.addMixIn(Object.class, MixIn.class);
+
+ WRITER = mapper.writer(filters);
+ }
/**
* Custom Json Filter Class.
@@ -174,19 +194,7 @@ public class VolumeInfo implements Comparable<VolumeInfo> {
* @throws IOException
*/
public String toJsonString() throws IOException {
- ObjectMapper mapper = new ObjectMapper();
- String[] ignorableFieldNames = {"bytesUsed", "bucketCount"};
-
- FilterProvider filters = new SimpleFilterProvider()
- .addFilter(VOLUME_INFO, SimpleBeanPropertyFilter
- .serializeAllExcept(ignorableFieldNames));
-
- mapper.setVisibility(JsonMethod.FIELD, JsonAutoDetect.Visibility.ANY);
- mapper.getSerializationConfig()
- .addMixInAnnotations(Object.class, MixIn.class);
- ObjectWriter writer = mapper.writer(filters);
-
- return writer.writeValueAsString(this);
+ return WRITER.writeValueAsString(this);
}
/**
@@ -200,8 +208,7 @@ public class VolumeInfo implements Comparable<VolumeInfo> {
* @throws IOException
*/
public String toDBString() throws IOException {
- ObjectMapper mapper = new ObjectMapper();
- return mapper.writeValueAsString(this);
+ return JsonUtils.toJsonString(this);
}
@@ -243,8 +250,7 @@ public class VolumeInfo implements Comparable<VolumeInfo> {
* @throws IOException
*/
public static VolumeInfo parse(String data) throws IOException {
- ObjectMapper mapper = new ObjectMapper();
- return mapper.readValue(data, VolumeInfo.class);
+ return READER.readValue(data);
}
/**
http://git-wip-us.apache.org/repos/asf/hadoop/blob/167ab4df/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/utils/JsonUtils.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/utils/JsonUtils.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/utils/JsonUtils.java
new file mode 100644
index 0000000..5b2a52d
--- /dev/null
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/utils/JsonUtils.java
@@ -0,0 +1,53 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.ozone.web.utils;
+
+import java.io.IOException;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.ObjectReader;
+import com.fasterxml.jackson.databind.ObjectWriter;
+
+/**
+ * JSON Utility functions used in ozone.
+ */
+public final class JsonUtils {
+
+ // Reuse ObjectMapper instance for improving performance.
+ // ObjectMapper is thread safe as long as we always configure instance
+ // before use.
+ private static final ObjectMapper MAPPER = new ObjectMapper();
+ private static final ObjectReader READER = MAPPER.readerFor(Object.class);
+ private static final ObjectWriter WRITTER =
+ MAPPER.writerWithDefaultPrettyPrinter();
+
+ private JsonUtils() {
+ // Never constructed
+ }
+
+ public static String toJsonStringWithDefaultPrettyPrinter(String jsonString)
+ throws IOException {
+ Object json = READER.readValue(jsonString);
+ return WRITTER.writeValueAsString(json);
+ }
+
+ public static String toJsonString(Object obj) throws IOException {
+ return MAPPER.writeValueAsString(obj);
+ }
+}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/167ab4df/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/utils/package-info.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/utils/package-info.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/utils/package-info.java
new file mode 100644
index 0000000..178157f
--- /dev/null
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/utils/package-info.java
@@ -0,0 +1,18 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.ozone.web.utils;
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org