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 <[email protected]> Authored: Wed May 3 14:25:41 2017 -0700 Committer: Anu Engineer <[email protected]> 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: [email protected] For additional commands, e-mail: [email protected]
