diff options
| author | Shireesh Anjal <shireesh@gluster.com> | 2011-02-22 14:13:56 +0530 |
|---|---|---|
| committer | Shireesh Anjal <shireesh@gluster.com> | 2011-02-22 15:54:14 +0530 |
| commit | 19454235d428f9adf5ff7ae2dc599cde5a8d55c9 (patch) | |
| tree | 1ffdbc13ae7c7509c7f2e7bbe469f2158290428f /com.gluster.storage.management.client | |
| parent | 370d15eeccace5729b05825668cb9b6c27f2650d (diff) | |
auto-discovery
Diffstat (limited to 'com.gluster.storage.management.client')
4 files changed, 92 insertions, 30 deletions
diff --git a/com.gluster.storage.management.client/.classpath b/com.gluster.storage.management.client/.classpath index 4422c8d9..576e2438 100644 --- a/com.gluster.storage.management.client/.classpath +++ b/com.gluster.storage.management.client/.classpath @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <classpath> - <classpathentry exported="true" kind="lib" path="lib/jersey-client-1.4.jar"/> + <classpathentry exported="true" kind="lib" path="lib/jersey-client-1.4.jar" sourcepath="/com.sun.jersey"/> <classpathentry exported="true" kind="lib" path="lib/jersey-core-1.4.jar"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> 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(); } + } |
