summaryrefslogtreecommitdiffstats
path: root/com.gluster.storage.management.client/src/com/gluster
diff options
context:
space:
mode:
authorShireesh Anjal <shireesh@gluster.com>2011-02-22 14:13:56 +0530
committerShireesh Anjal <shireesh@gluster.com>2011-02-22 15:54:14 +0530
commit19454235d428f9adf5ff7ae2dc599cde5a8d55c9 (patch)
tree1ffdbc13ae7c7509c7f2e7bbe469f2158290428f /com.gluster.storage.management.client/src/com/gluster
parent370d15eeccace5729b05825668cb9b6c27f2650d (diff)
auto-discovery
Diffstat (limited to 'com.gluster.storage.management.client/src/com/gluster')
-rw-r--r--com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java68
-rw-r--r--com.gluster.storage.management.client/src/com/gluster/storage/management/client/DiscoveredServersClient.java49
-rw-r--r--com.gluster.storage.management.client/src/com/gluster/storage/management/client/utils/ClientUtil.java3
3 files changed, 91 insertions, 29 deletions
diff --git a/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java b/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java
new file mode 100644
index 00000000..f25c0327
--- /dev/null
+++ b/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java
@@ -0,0 +1,68 @@
+package com.gluster.storage.management.client;
+
+import java.net.URI;
+
+import javax.ws.rs.core.MediaType;
+
+import com.gluster.storage.management.client.utils.ClientUtil;
+import com.gluster.storage.management.core.model.ServerListResponse;
+import com.sun.jersey.api.client.Client;
+import com.sun.jersey.api.client.WebResource;
+import com.sun.jersey.api.client.config.DefaultClientConfig;
+
+public abstract class AbstractClient {
+ protected WebResource resource;
+
+ public AbstractClient() {
+
+ }
+
+ public AbstractClient(String serverName) {
+ URI baseURI = new ClientUtil().getServerBaseURI(serverName);
+ resource = Client.create(new DefaultClientConfig()).resource(baseURI).path(getResourceName());
+ }
+
+ /**
+ * Fetches the given resource by dispatching a GET request
+ *
+ * @param res
+ * Resource to be fetched
+ * @param responseClass
+ * Expected class of the response
+ * @return Object of responseClass received as a result of the GET request
+ */
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ private Object fetchResource(WebResource res, Class responseClass) {
+ return res.accept(MediaType.TEXT_XML).get(responseClass);
+ }
+
+ /**
+ * Fetches the default resource (the one returned by {@link AbstractClient#getResourceName()}) by dispatching a GET
+ * request on the resource
+ *
+ * @param responseClass
+ * Expected class of the response
+ * @return Object of responseClass received as a result of the GET request
+ */
+ @SuppressWarnings("rawtypes")
+ protected Object fetchResource(Class responseClass) {
+ return fetchResource(resource, responseClass);
+ }
+
+ /**
+ * Fetches the resource whose name is arrived at by appending the "subResourceName" parameter to the default
+ * resource (the one returned by {@link AbstractClient#getResourceName()})
+ *
+ * @param subResourceName
+ * Name of the sub-resource
+ * @param responseClass
+ * Expected class of the response
+ * @return Object of responseClass received as a result of the GET request on the sub-resource
+ */
+ @SuppressWarnings("rawtypes")
+ protected Object fetchSubResource(String subResourceName, Class responseClass) {
+ return fetchResource(resource.path(subResourceName), responseClass);
+ }
+
+ public abstract String getResourceName();
+}
diff --git a/com.gluster.storage.management.client/src/com/gluster/storage/management/client/DiscoveredServersClient.java b/com.gluster.storage.management.client/src/com/gluster/storage/management/client/DiscoveredServersClient.java
index 22801b1b..a3f9598a 100644
--- a/com.gluster.storage.management.client/src/com/gluster/storage/management/client/DiscoveredServersClient.java
+++ b/com.gluster.storage.management.client/src/com/gluster/storage/management/client/DiscoveredServersClient.java
@@ -18,56 +18,47 @@
*******************************************************************************/
package com.gluster.storage.management.client;
-import java.net.URI;
import java.util.List;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.UriBuilder;
-
-import com.gluster.storage.management.client.utils.ClientUtil;
import com.gluster.storage.management.core.model.Server;
import com.gluster.storage.management.core.model.ServerDetailsResponse;
import com.gluster.storage.management.core.model.ServerListResponse;
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.WebResource;
-import com.sun.jersey.api.client.WebResource.Builder;
-import com.sun.jersey.api.client.config.DefaultClientConfig;
-public class DiscoveredServersClient {
- private final URI BASE_URI = UriBuilder.fromUri("http://localhost:8080/glustermc").build();
+public class DiscoveredServersClient extends AbstractClient {
+ private static final String RESOURCE_NAME = "discoveredservers";
- public List<Server> getDiscoveredServers() {
- WebResource service = Client.create(new DefaultClientConfig()).resource(BASE_URI);
+ public DiscoveredServersClient(String serverName) {
+ super(serverName);
+ }
- @SuppressWarnings("unchecked")
- ServerListResponse<Server> response = service.path("resources").path("server").path("discover")
- .accept(MediaType.TEXT_XML).get(ServerListResponse.class);
+ @Override
+ public String getResourceName() {
+ return RESOURCE_NAME;
+ }
+ public List<Server> getDiscoveredServers() {
+ @SuppressWarnings("unchecked")
+ ServerListResponse<Server> response = (ServerListResponse<Server>) fetchResource(ServerListResponse.class);
return response.getData();
}
- private Builder getServerBuilder(String serverName) {
- WebResource service = Client.create(new DefaultClientConfig()).resource(
- new ClientUtil().getServerBaseURI(serverName));
-
- return service.path("resources").path("server").path("details")
- .accept(MediaType.TEXT_XML);
- }
-
public Server getServer(String serverName) {
- return getServerBuilder(serverName).get(ServerDetailsResponse.class).getData();
+ @SuppressWarnings("unchecked")
+ ServerDetailsResponse<Server> response = (ServerDetailsResponse<Server>) fetchSubResource(serverName,
+ ServerDetailsResponse.class);
+ return response.getData();
}
public String getServerXML(String serverName) {
- return getServerBuilder(serverName).get(String.class);
+ return ((String) fetchSubResource(serverName, String.class));
}
public static void main(String[] args) {
- DiscoveredServersClient ServerResource = new DiscoveredServersClient();
+ DiscoveredServersClient ServerResource = new DiscoveredServersClient("localhost");
List<Server> discoveredServers = ServerResource.getDiscoveredServers();
System.out.println(discoveredServers.size());
- Server serverDetails = ServerResource.getServer("localhost");
- System.out.println(serverDetails.getName());
+ // Server serverDetails = ServerResource.getServer("localhost");
+ // System.out.println(serverDetails.getName());
}
}
diff --git a/com.gluster.storage.management.client/src/com/gluster/storage/management/client/utils/ClientUtil.java b/com.gluster.storage.management.client/src/com/gluster/storage/management/client/utils/ClientUtil.java
index 7b7971ef..3df89f27 100644
--- a/com.gluster.storage.management.client/src/com/gluster/storage/management/client/utils/ClientUtil.java
+++ b/com.gluster.storage.management.client/src/com/gluster/storage/management/client/utils/ClientUtil.java
@@ -4,6 +4,8 @@ import java.net.URI;
import javax.ws.rs.core.UriBuilder;
+import com.sun.jersey.api.client.WebResource;
+
public class ClientUtil {
private static final String SERVER_PORT = "8080";
private static final String WEB_CONTEXT = "/glustermc";
@@ -13,4 +15,5 @@ public class ClientUtil {
return UriBuilder.fromUri("http://" + serverName + ":" + SERVER_PORT + WEB_CONTEXT + WEB_RESOURCE_BASE_PATH)
.build();
}
+
}