You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@helix.apache.org by ka...@apache.org on 2014/03/05 03:15:37 UTC
git commit: [HELIX-396] Make REST api for /instances parseable
Repository: helix
Updated Branches:
refs/heads/master 74b754c8d -> 3399aadb9
[HELIX-396] Make REST api for /instances parseable
Project: http://git-wip-us.apache.org/repos/asf/helix/repo
Commit: http://git-wip-us.apache.org/repos/asf/helix/commit/3399aadb
Tree: http://git-wip-us.apache.org/repos/asf/helix/tree/3399aadb
Diff: http://git-wip-us.apache.org/repos/asf/helix/diff/3399aadb
Branch: refs/heads/master
Commit: 3399aadb901ac733f27b9aa4658280273095a21e
Parents: 74b754c
Author: Kanak Biscuitwala <ka...@apache.org>
Authored: Tue Mar 4 13:35:38 2014 -0800
Committer: Kanak Biscuitwala <ka...@apache.org>
Committed: Tue Mar 4 13:50:50 2014 -0800
----------------------------------------------------------------------
.../webapp/resources/InstancesResource.java | 27 +++++++++++++++-----
.../webapp/TestClusterManagementWebapp.java | 12 ++++-----
2 files changed, 26 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/helix/blob/3399aadb/helix-admin-webapp/src/main/java/org/apache/helix/webapp/resources/InstancesResource.java
----------------------------------------------------------------------
diff --git a/helix-admin-webapp/src/main/java/org/apache/helix/webapp/resources/InstancesResource.java b/helix-admin-webapp/src/main/java/org/apache/helix/webapp/resources/InstancesResource.java
index 0e98f44..41c6a15 100644
--- a/helix-admin-webapp/src/main/java/org/apache/helix/webapp/resources/InstancesResource.java
+++ b/helix-admin-webapp/src/main/java/org/apache/helix/webapp/resources/InstancesResource.java
@@ -27,6 +27,7 @@ import java.util.TreeMap;
import org.apache.helix.HelixDataAccessor;
import org.apache.helix.HelixException;
+import org.apache.helix.ZNRecord;
import org.apache.helix.manager.zk.ZkClient;
import org.apache.helix.model.InstanceConfig;
import org.apache.helix.model.LiveInstance;
@@ -35,9 +36,6 @@ import org.apache.helix.webapp.RestAdminApplication;
import org.apache.log4j.Logger;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
-import org.restlet.Context;
-import org.restlet.Request;
-import org.restlet.Response;
import org.restlet.data.MediaType;
import org.restlet.data.Status;
import org.restlet.representation.Representation;
@@ -45,6 +43,8 @@ import org.restlet.representation.StringRepresentation;
import org.restlet.representation.Variant;
import org.restlet.resource.ServerResource;
+import com.google.common.collect.Lists;
+
public class InstancesResource extends ServerResource {
private final static Logger LOG = Logger.getLogger(InstancesResource.class);
@@ -54,7 +54,6 @@ public class InstancesResource extends ServerResource {
setNegotiated(false);
}
-
@Override
public Representation get() {
StringRepresentation presentation = null;
@@ -99,10 +98,16 @@ public class InstancesResource extends ServerResource {
}
}
+ // Wrap raw data into an object, then serialize it
+ List<ZNRecord> recordList = Lists.newArrayList();
+ for (InstanceConfig instanceConfig : instanceConfigsMap.values()) {
+ recordList.add(instanceConfig.getRecord());
+ }
+ ListInstancesWrapper wrapper = new ListInstancesWrapper();
+ wrapper.instanceInfo = recordList;
+ wrapper.tagInfo = tagInstanceLists;
StringRepresentation representation =
- new StringRepresentation(
- ClusterRepresentationUtil.ObjectToJson(instanceConfigsMap.values())
- + ClusterRepresentationUtil.ObjectToJson(tagInstanceLists),
+ new StringRepresentation(ClusterRepresentationUtil.ObjectToJson(wrapper),
MediaType.APPLICATION_JSON);
return representation;
@@ -156,4 +161,12 @@ public class InstancesResource extends ServerResource {
}
return null;
}
+
+ /**
+ * A wrapper class for quick serialization of the data presented by this call
+ */
+ public static class ListInstancesWrapper {
+ public List<ZNRecord> instanceInfo;
+ public Map<String, List<String>> tagInfo;
+ }
}
http://git-wip-us.apache.org/repos/asf/helix/blob/3399aadb/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestClusterManagementWebapp.java
----------------------------------------------------------------------
diff --git a/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestClusterManagementWebapp.java b/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestClusterManagementWebapp.java
index c1251de..3eee0a1 100644
--- a/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestClusterManagementWebapp.java
+++ b/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestClusterManagementWebapp.java
@@ -22,7 +22,6 @@ package org.apache.helix.webapp;
import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
-import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -31,10 +30,10 @@ import org.apache.helix.PropertyPathConfig;
import org.apache.helix.PropertyType;
import org.apache.helix.ZNRecord;
import org.apache.helix.model.InstanceConfig.InstanceConfigProperty;
-import org.apache.helix.model.StateModelDefinition;
import org.apache.helix.tools.AdminTestBase;
import org.apache.helix.tools.ClusterSetup;
import org.apache.helix.webapp.resources.ClusterRepresentationUtil;
+import org.apache.helix.webapp.resources.InstancesResource.ListInstancesWrapper;
import org.apache.helix.webapp.resources.JsonParameters;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
@@ -100,7 +99,6 @@ public class TestClusterManagementWebapp extends AdminTestBase {
ZNRecord r = new ZNRecord("Test");
r.merge(zn);
- StateModelDefinition newStateModel = new StateModelDefinition(r);
httpUrlBase = "http://localhost:" + ADMIN_PORT + "/clusters/" + clusterName + "/StateModelDefs";
resourceRef = new Reference(httpUrlBase);
@@ -223,9 +221,10 @@ public class TestClusterManagementWebapp extends AdminTestBase {
ObjectMapper mapper = new ObjectMapper();
- TypeReference<ArrayList<ZNRecord>> typeRef = new TypeReference<ArrayList<ZNRecord>>() {
+ TypeReference<ListInstancesWrapper> typeRef = new TypeReference<ListInstancesWrapper>() {
};
- List<ZNRecord> znList = mapper.readValue(new StringReader(sw.toString()), typeRef);
+ ListInstancesWrapper wrapper = mapper.readValue(new StringReader(sw.toString()), typeRef);
+ List<ZNRecord> znList = wrapper.instanceInfo;
AssertJUnit.assertTrue(znList.get(0).getId().equals(instance1 + "_" + instancePort));
// the case to add more than 1 instances
@@ -264,7 +263,8 @@ public class TestClusterManagementWebapp extends AdminTestBase {
mapper = new ObjectMapper();
- znList = mapper.readValue(new StringReader(sw.toString()), typeRef);
+ wrapper = mapper.readValue(new StringReader(sw.toString()), typeRef);
+ znList = wrapper.instanceInfo;
for (String instance : instances) {
boolean found = false;