From fadfb9443c33ec93741061c5c8c917e21fbc56b9 Mon Sep 17 00:00:00 2001 From: Amnon Heiman Date: Sun, 8 Nov 2015 12:10:57 +0200 Subject: [PATCH] StorageService: Add describering functionality This patch adds the describering method to StorageService, the implementation is based on the storage_service API that is define in storage_service.json The implementation reflect the changes in the API, that returns an object vs. the jmx_describe ring. Signed-off-by: Amnon Heiman Signed-off-by: Pekka Enberg --- .../cassandra/service/StorageService.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/apache/cassandra/service/StorageService.java b/src/main/java/org/apache/cassandra/service/StorageService.java index 26297db..3586021 100644 --- a/src/main/java/org/apache/cassandra/service/StorageService.java +++ b/src/main/java/org/apache/cassandra/service/StorageService.java @@ -31,6 +31,10 @@ import java.util.*; import java.util.concurrent.*; import java.util.concurrent.atomic.AtomicLong; +import javax.json.Json; +import javax.json.JsonArray; +import javax.json.JsonObject; +import javax.json.JsonWriter; import javax.management.*; import javax.management.openmbean.TabularData; import javax.ws.rs.core.MultivaluedHashMap; @@ -254,7 +258,18 @@ public class StorageService extends NotificationBroadcasterSupport */ public List describeRingJMX(String keyspace) throws IOException { log(" describeRingJMX(String keyspace) throws IOException"); - return c.getListStrValue("/storage_service/describe_ring/" + keyspace); + JsonArray arr = c.getJsonArray("/storage_service/describe_ring/" + keyspace); + List res = new ArrayList(); + + for (int i = 0; i < arr.size(); i++) { + StringWriter stringWriter = new StringWriter(); + JsonWriter writer = Json.createWriter(stringWriter); + JsonObject obj = arr.getJsonObject(i); + writer.writeObject(obj); + writer.close(); + res.add(stringWriter.getBuffer().toString()); + } + return res; } /**