From afd49d7bd4d12d1f7a0e04417684618a75990278 Mon Sep 17 00:00:00 2001 From: Amnon Heiman Date: Sat, 27 Feb 2016 03:28:19 +0200 Subject: [PATCH] ProgressInfo: Add creation from json object and json array This will allow to creat ProgressInfo object from json object and json Array it needed to report stream file information. Signed-off-by: Amnon Heiman --- .../cassandra/streaming/ProgressInfo.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/main/java/org/apache/cassandra/streaming/ProgressInfo.java b/src/main/java/org/apache/cassandra/streaming/ProgressInfo.java index 12c83c8..8b6f99d 100644 --- a/src/main/java/org/apache/cassandra/streaming/ProgressInfo.java +++ b/src/main/java/org/apache/cassandra/streaming/ProgressInfo.java @@ -26,6 +26,11 @@ package org.apache.cassandra.streaming; import java.io.Serializable; import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.HashMap; +import java.util.Map; +import javax.json.JsonArray; +import javax.json.JsonObject; import com.google.common.base.Objects; @@ -74,6 +79,31 @@ public class ProgressInfo implements Serializable this.totalBytes = totalBytes; } + static public ProgressInfo fromJsonObject(JsonObject obj) { + try { + return new ProgressInfo(InetAddress.getByName(obj.getString("peer")), + obj.getInt("session_index"), + obj.getString("file_name"), + Direction.valueOf(obj.getString("direction")), + obj.getJsonNumber("current_bytes").longValue(), + obj.getJsonNumber("total_bytes").longValue()); + } catch (UnknownHostException e) { + // Not suppose to get here + } + + return null; + } + + static public Map fromJArrray(JsonArray arr) { + Map res = new HashMap(); + if (arr != null) { + for (int i = 0; i < arr.size(); i++) { + ProgressInfo obj = fromJsonObject(arr.getJsonObject(i).getJsonObject("value")); + res.put(obj.fileName, obj); + } + } + return res; + } /** * @return true if file transfer is completed */