diff --git a/pom.xml b/pom.xml
index 4ecfc53..f621830 100644
--- a/pom.xml
+++ b/pom.xml
@@ -10,8 +10,8 @@
Scylla JMX
- 1.7
- 1.7
+ 1.8
+ 1.8
@@ -71,21 +71,11 @@
guava
18.0
-
- com.yammer.metrics
- metrics-core
- 2.2.0
-
com.google.collections
google-collections
1.0
-
- mx4j
- mx4j
- 3.0.2
-
diff --git a/scripts/git-archive-all b/scripts/git-archive-all
old mode 100755
new mode 100644
diff --git a/src/main/java/com/scylladb/jmx/api/APIClient.java b/src/main/java/com/scylladb/jmx/api/APIClient.java
index 52e7a56..24cfcac 100644
--- a/src/main/java/com/scylladb/jmx/api/APIClient.java
+++ b/src/main/java/com/scylladb/jmx/api/APIClient.java
@@ -14,6 +14,8 @@ import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
+import java.util.function.BiFunction;
+import java.util.logging.Logger;
import javax.json.Json;
import javax.json.JsonArray;
@@ -35,13 +37,12 @@ import javax.ws.rs.core.Response;
import org.glassfish.jersey.client.ClientConfig;
-import com.scylladb.jmx.utils.EstimatedHistogram;
import com.scylladb.jmx.utils.SnapshotDetailsTabularData;
-import com.yammer.metrics.core.HistogramValues;
public class APIClient {
- Map cache = new HashMap();
- String getCacheKey(String key, MultivaluedMap param, long duration) {
+ private Map cache = new HashMap();
+
+ private String getCacheKey(String key, MultivaluedMap param, long duration) {
if (duration <= 0) {
return null;
}
@@ -56,43 +57,40 @@ public class APIClient {
return key;
}
- String getStringFromCache(String key, long duration) {
+ private String getStringFromCache(String key, long duration) {
if (key == null) {
return null;
}
CacheEntry value = cache.get(key);
- return (value!= null && value.valid(duration))? value.stringValue() : null;
+ return (value != null && value.valid(duration)) ? value.stringValue() : null;
}
- JsonObject getJsonObjectFromCache(String key, long duration) {
+ private JsonObject getJsonObjectFromCache(String key, long duration) {
if (key == null) {
return null;
}
CacheEntry value = cache.get(key);
- return (value!= null && value.valid(duration))? value.jsonObject() : null;
+ return (value != null && value.valid(duration)) ? value.jsonObject() : null;
}
- EstimatedHistogram getEstimatedHistogramFromCache(String key, long duration) {
- if (key == null) {
- return null;
- }
- CacheEntry value = cache.get(key);
- return (value!= null && value.valid(duration))? value.getEstimatedHistogram() : null;
+ private JsonReaderFactory factory = Json.createReaderFactory(null);
+ private static final Logger logger = Logger.getLogger(APIClient.class.getName());
+
+ private final APIConfig config;
+
+ public APIClient(APIConfig config) {
+ this.config = config;
}
- JsonReaderFactory factory = Json.createReaderFactory(null);
- private static final java.util.logging.Logger logger = java.util.logging.Logger
- .getLogger(APIClient.class.getName());
-
- public static String getBaseUrl() {
- return APIConfig.getBaseUrl();
+ private String getBaseUrl() {
+ return config.getBaseUrl();
}
public Invocation.Builder get(String path, MultivaluedMap queryParams) {
- Client client = ClientBuilder.newClient( new ClientConfig());
+ Client client = ClientBuilder.newClient(new ClientConfig());
WebTarget webTarget = client.target(getBaseUrl()).path(path);
if (queryParams != null) {
- for (Entry> qp : queryParams.entrySet()) {
+ for (Entry> qp : queryParams.entrySet()) {
for (String e : qp.getValue()) {
webTarget = webTarget.queryParam(qp.getKey(), e);
}
@@ -106,10 +104,15 @@ public class APIClient {
}
public Response post(String path, MultivaluedMap queryParams) {
+ return post(path, queryParams, null);
+ }
+
+ public Response post(String path, MultivaluedMap queryParams, Object object, String type) {
try {
- Response response = get(path, queryParams).post(Entity.entity(null, MediaType.TEXT_PLAIN));
- if (response.getStatus() != Response.Status.OK.getStatusCode() ) {
- throw getException("Scylla API server HTTP POST to URL '" + path + "' failed", response.readEntity(String.class));
+ Response response = get(path, queryParams).post(Entity.entity(object, type));
+ if (response.getStatus() != Response.Status.OK.getStatusCode()) {
+ throw getException("Scylla API server HTTP POST to URL '" + path + "' failed",
+ response.readEntity(String.class));
}
return response;
} catch (ProcessingException e) {
@@ -117,6 +120,10 @@ public class APIClient {
}
}
+ public Response post(String path, MultivaluedMap queryParams, Object object) {
+ return post(path, queryParams, object, MediaType.TEXT_PLAIN);
+ }
+
public void post(String path) {
post(path, null);
}
@@ -151,8 +158,7 @@ public class APIClient {
delete(path, null);
}
- public String getRawValue(String string,
- MultivaluedMap queryParams, long duration) {
+ public String getRawValue(String string, MultivaluedMap queryParams, long duration) {
try {
if (string.equals("")) {
return "";
@@ -168,7 +174,8 @@ public class APIClient {
// TBD
// We are currently not caching errors,
// it should be reconsider.
- throw getException("Scylla API server HTTP GET to URL '" + string + "' failed", response.readEntity(String.class));
+ throw getException("Scylla API server HTTP GET to URL '" + string + "' failed",
+ response.readEntity(String.class));
}
res = response.readEntity(String.class);
if (duration > 0) {
@@ -180,8 +187,7 @@ public class APIClient {
}
}
- public String getRawValue(String string,
- MultivaluedMap queryParams) {
+ public String getRawValue(String string, MultivaluedMap queryParams) {
return getRawValue(string, queryParams, 0);
}
@@ -194,23 +200,19 @@ public class APIClient {
}
public String getStringValue(String string, MultivaluedMap queryParams) {
- return getRawValue(string,
- queryParams).replaceAll("^\"|\"$", "");
+ return getRawValue(string, queryParams).replaceAll("^\"|\"$", "");
}
public String getStringValue(String string, MultivaluedMap queryParams, long duration) {
- return getRawValue(string,
- queryParams, duration).replaceAll("^\"|\"$", "");
+ return getRawValue(string, queryParams, duration).replaceAll("^\"|\"$", "");
}
public String getStringValue(String string) {
return getStringValue(string, null);
}
- public JsonReader getReader(String string,
- MultivaluedMap queryParams) {
- return factory.createReader(new StringReader(getRawValue(string,
- queryParams)));
+ public JsonReader getReader(String string, MultivaluedMap queryParams) {
+ return factory.createReader(new StringReader(getRawValue(string, queryParams)));
}
public JsonReader getReader(String string) {
@@ -222,8 +224,7 @@ public class APIClient {
return val.toArray(new String[val.size()]);
}
- public int getIntValue(String string,
- MultivaluedMap queryParams) {
+ public int getIntValue(String string, MultivaluedMap queryParams) {
return Integer.parseInt(getRawValue(string, queryParams));
}
@@ -231,6 +232,19 @@ public class APIClient {
return getIntValue(string, null);
}
+ public static BiFunction getReader(Class type) {
+ if (type == String.class) {
+ return (c, s) -> type.cast(c.getRawValue(s));
+ } else if (type == Integer.class) {
+ return (c, s) -> type.cast(c.getIntValue(s));
+ } else if (type == Double.class) {
+ return (c, s) -> type.cast(c.getDoubleValue(s));
+ } else if (type == Long.class) {
+ return (c, s) -> type.cast(c.getLongValue(s));
+ }
+ throw new IllegalArgumentException(type.getName());
+ }
+
public boolean getBooleanValue(String string) {
return Boolean.parseBoolean(getRawValue(string));
}
@@ -239,8 +253,7 @@ public class APIClient {
return Double.parseDouble(getRawValue(string));
}
- public List getListStrValue(String string,
- MultivaluedMap queryParams) {
+ public List getListStrValue(String string, MultivaluedMap queryParams) {
JsonReader reader = getReader(string, queryParams);
JsonArray arr = reader.readArray();
List res = new ArrayList(arr.size());
@@ -295,8 +308,7 @@ public class APIClient {
return join(arr, ",");
}
- public static String mapToString(Map mp, String pairJoin,
- String joiner) {
+ public static String mapToString(Map mp, String pairJoin, String joiner) {
String res = "";
if (mp != null) {
for (String name : mp.keySet()) {
@@ -313,19 +325,15 @@ public class APIClient {
return mapToString(mp, "=", ",");
}
- public static boolean set_query_param(
- MultivaluedMap queryParams, String key, String value) {
- if (queryParams != null && key != null && value != null
- && !value.equals("")) {
+ public static boolean set_query_param(MultivaluedMap queryParams, String key, String value) {
+ if (queryParams != null && key != null && value != null && !value.equals("")) {
queryParams.add(key, value);
return true;
}
return false;
}
- public static boolean set_bool_query_param(
- MultivaluedMap queryParams, String key,
- boolean value) {
+ public static boolean set_bool_query_param(MultivaluedMap queryParams, String key, boolean value) {
if (queryParams != null && key != null && value) {
queryParams.add(key, "true");
return true;
@@ -344,8 +352,7 @@ public class APIClient {
for (int i = 0; i < arr.size(); i++) {
JsonObject obj = arr.getJsonObject(i);
if (obj.containsKey("key") && obj.containsKey("value")) {
- map.put(obj.getString("key"),
- listStrFromJArr(obj.getJsonArray("value")));
+ map.put(obj.getString("key"), listStrFromJArr(obj.getJsonArray("value")));
}
}
reader.close();
@@ -367,8 +374,7 @@ public class APIClient {
for (int i = 0; i < arr.size(); i++) {
JsonObject obj = arr.getJsonObject(i);
if (obj.containsKey("key") && obj.containsKey("value")) {
- map.put(listStrFromJArr(obj.getJsonArray("key")),
- listStrFromJArr(obj.getJsonArray("value")));
+ map.put(listStrFromJArr(obj.getJsonArray("key")), listStrFromJArr(obj.getJsonArray("value")));
}
}
reader.close();
@@ -379,8 +385,7 @@ public class APIClient {
return getMapListStrValue(string, null);
}
- public Set getSetStringValue(String string,
- MultivaluedMap queryParams) {
+ public Set getSetStringValue(String string, MultivaluedMap queryParams) {
JsonReader reader = getReader(string, queryParams);
JsonArray arr = reader.readArray();
Set res = new HashSet();
@@ -395,8 +400,7 @@ public class APIClient {
return getSetStringValue(string, null);
}
- public Map getMapStrValue(String string,
- MultivaluedMap queryParams) {
+ public Map getMapStrValue(String string, MultivaluedMap queryParams) {
if (string.equals("")) {
return null;
}
@@ -417,8 +421,7 @@ public class APIClient {
return getMapStrValue(string, null);
}
- public Map getReverseMapStrValue(String string,
- MultivaluedMap queryParams) {
+ public Map getReverseMapStrValue(String string, MultivaluedMap queryParams) {
if (string.equals("")) {
return null;
}
@@ -435,12 +438,11 @@ public class APIClient {
return map;
}
- public Map getReverseMapStrValue(String string) {
+ public Map getReverseMapStrValue(String string) {
return getReverseMapStrValue(string, null);
}
- public List getListInetAddressValue(String string,
- MultivaluedMap queryParams) {
+ public List getListInetAddressValue(String string, MultivaluedMap queryParams) {
List vals = getListStrValue(string, queryParams);
List res = new ArrayList();
for (String val : vals) {
@@ -464,22 +466,20 @@ public class APIClient {
}
private TabularDataSupport getSnapshotData(String key, JsonArray arr) {
- TabularDataSupport data = new TabularDataSupport(
- SnapshotDetailsTabularData.TABULAR_TYPE);
+ TabularDataSupport data = new TabularDataSupport(SnapshotDetailsTabularData.TABULAR_TYPE);
for (int i = 0; i < arr.size(); i++) {
JsonObject obj = arr.getJsonObject(i);
if (obj.containsKey("ks") && obj.containsKey("cf")) {
- SnapshotDetailsTabularData.from(key, obj.getString("ks"),
- obj.getString("cf"), obj.getInt("total"),
+ SnapshotDetailsTabularData.from(key, obj.getString("ks"), obj.getString("cf"), obj.getInt("total"),
obj.getInt("live"), data);
}
}
return data;
}
- public Map getMapStringSnapshotTabularDataValue(
- String string, MultivaluedMap queryParams) {
+ public Map getMapStringSnapshotTabularDataValue(String string,
+ MultivaluedMap queryParams) {
if (string.equals("")) {
return null;
}
@@ -513,8 +513,7 @@ public class APIClient {
for (int i = 0; i < arr.size(); i++) {
try {
obj = arr.getJsonObject(i);
- res.put(InetAddress.getByName(obj.getString("key")),
- Float.parseFloat(obj.getString("value")));
+ res.put(InetAddress.getByName(obj.getString("key")), Float.parseFloat(obj.getString("value")));
} catch (UnknownHostException e) {
logger.warning("Bad formatted address " + obj.getString("key"));
}
@@ -526,8 +525,7 @@ public class APIClient {
return getMapInetAddressFloatValue(string, null);
}
- public Map getMapStringLongValue(String string,
- MultivaluedMap queryParams) {
+ public Map getMapStringLongValue(String string, MultivaluedMap queryParams) {
Map res = new HashMap();
JsonReader reader = getReader(string, queryParams);
@@ -545,8 +543,7 @@ public class APIClient {
return getMapStringLongValue(string, null);
}
- public long[] getLongArrValue(String string,
- MultivaluedMap queryParams) {
+ public long[] getLongArrValue(String string, MultivaluedMap queryParams) {
JsonReader reader = getReader(string, queryParams);
JsonArray arr = reader.readArray();
long[] res = new long[arr.size()];
@@ -561,8 +558,7 @@ public class APIClient {
return getLongArrValue(string, null);
}
- public Map getMapStringIntegerValue(String string,
- MultivaluedMap queryParams) {
+ public Map getMapStringIntegerValue(String string, MultivaluedMap queryParams) {
Map res = new HashMap();
JsonReader reader = getReader(string, queryParams);
@@ -580,8 +576,7 @@ public class APIClient {
return getMapStringIntegerValue(string, null);
}
- public int[] getIntArrValue(String string,
- MultivaluedMap queryParams) {
+ public int[] getIntArrValue(String string, MultivaluedMap queryParams) {
JsonReader reader = getReader(string, queryParams);
JsonArray arr = reader.readArray();
int[] res = new int[arr.size()];
@@ -596,8 +591,7 @@ public class APIClient {
return getIntArrValue(string, null);
}
- public Map getListMapStringLongValue(String string,
- MultivaluedMap queryParams) {
+ public Map getListMapStringLongValue(String string, MultivaluedMap queryParams) {
if (string.equals("")) {
return null;
}
@@ -630,8 +624,7 @@ public class APIClient {
return getListMapStringLongValue(string, null);
}
- public JsonArray getJsonArray(String string,
- MultivaluedMap queryParams) {
+ public JsonArray getJsonArray(String string, MultivaluedMap queryParams) {
if (string.equals("")) {
return null;
}
@@ -645,8 +638,7 @@ public class APIClient {
return getJsonArray(string, null);
}
- public List