diff --git a/src/main/java/com/cloudius/urchin/api/APIClient.java b/src/main/java/com/cloudius/urchin/api/APIClient.java index 9537f5e..684c0a4 100644 --- a/src/main/java/com/cloudius/urchin/api/APIClient.java +++ b/src/main/java/com/cloudius/urchin/api/APIClient.java @@ -5,6 +5,7 @@ package com.cloudius.urchin.api; import java.io.StringReader; import java.net.InetAddress; +import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -71,8 +72,15 @@ public class APIClient { } public List getListStrValue(String string) { - // TODO Auto-generated method stub - return null; + JsonReader reader = getReader(string); + JsonArray arr = reader.readArray(); + List res = new ArrayList(arr.size()); + for (int i = 0; i < arr.size(); i++) { + res.add(arr.getString(i)); + } + reader.close(); + return res; + } public Map, List> getMapListStrValue(String string) { diff --git a/src/main/java/org/apache/cassandra/db/commitlog/CommitLog.java b/src/main/java/org/apache/cassandra/db/commitlog/CommitLog.java index 4ddac4b..e81b05c 100644 --- a/src/main/java/org/apache/cassandra/db/commitlog/CommitLog.java +++ b/src/main/java/org/apache/cassandra/db/commitlog/CommitLog.java @@ -43,7 +43,6 @@ public class CommitLog implements CommitLogMBean { private APIClient c = new APIClient(); public void log(String str) { - System.out.println(str); logger.info(str); } @@ -52,6 +51,7 @@ public class CommitLog implements CommitLogMBean { public static CommitLog getInstance() { return instance; } + private CommitLog() { MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); try { @@ -108,7 +108,13 @@ public class CommitLog implements CommitLogMBean { */ public List getActiveSegmentNames() { log(" getActiveSegmentNames()"); - return c.getListStrValue(""); + List lst = c.getListStrValue("/commitlog/segments/active"); + Set set = new HashSet(); + for (String l : lst) { + String name = l.substring(l.lastIndexOf("/") + 1, l.length()); + set.add(name); + } + return new ArrayList(set); } /** @@ -117,7 +123,13 @@ public class CommitLog implements CommitLogMBean { */ public List getArchivingSegmentNames() { log(" getArchivingSegmentNames()"); - return c.getListStrValue(""); + List lst = c.getListStrValue("/commitlog/segments/archiving"); + Set set = new HashSet(); + for (String l : lst) { + String name = l.substring(l.lastIndexOf("/") + 1, l.length()); + set.add(name); + } + return new ArrayList(set); } } diff --git a/src/main/java/org/apache/cassandra/locator/EndpointSnitchInfo.java b/src/main/java/org/apache/cassandra/locator/EndpointSnitchInfo.java index 5050feb..f6ef758 100644 --- a/src/main/java/org/apache/cassandra/locator/EndpointSnitchInfo.java +++ b/src/main/java/org/apache/cassandra/locator/EndpointSnitchInfo.java @@ -45,7 +45,7 @@ public class EndpointSnitchInfo implements EndpointSnitchInfoMBean { private EndpointSnitchInfo() { MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); try { - mbs.registerMBean(new EndpointSnitchInfo(), new ObjectName( + mbs.registerMBean(this, new ObjectName( "org.apache.cassandra.db:type=EndpointSnitchInfo")); } catch (Exception e) { throw new RuntimeException(e);