diff options
| author | Shireesh Anjal <shireesh@gluster.com> | 2011-06-23 19:50:06 +0530 |
|---|---|---|
| committer | Shireesh Anjal <shireesh@gluster.com> | 2011-06-23 19:50:06 +0530 |
| commit | c3c0e6d50a641c050b179beaca023c2511b00157 (patch) | |
| tree | 5eef30b58c317f3379ba98a11ea4802965de9a83 /src | |
| parent | 356b3102e5aa24ab1eaae6d1460401be4d546152 (diff) | |
REST API Enhancements
Diffstat (limited to 'src')
4 files changed, 75 insertions, 19 deletions
diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/DiscoveredServersClient.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/DiscoveredServersClient.java index e055a2dd..68ef27d2 100644 --- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/DiscoveredServersClient.java +++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/DiscoveredServersClient.java @@ -18,13 +18,16 @@ *******************************************************************************/ package com.gluster.storage.management.client; +import static com.gluster.storage.management.core.constants.RESTConstants.QUERY_PARAM_DETAILS; +import static com.gluster.storage.management.core.constants.RESTConstants.RESOURCE_PATH_DISCOVERED_SERVERS; + import javax.ws.rs.core.MultivaluedMap; import com.gluster.storage.management.core.model.Server; import com.gluster.storage.management.core.response.GenericResponse; import com.gluster.storage.management.core.response.ServerListResponse; +import com.gluster.storage.management.core.response.ServerNameListResponse; import com.gluster.storage.management.core.response.StringListResponse; -import static com.gluster.storage.management.core.constants.RESTConstants.RESOURCE_PATH_DISCOVERED_SERVERS; import com.sun.jersey.core.util.MultivaluedMapImpl; public class DiscoveredServersClient extends AbstractClient { @@ -45,13 +48,12 @@ public class DiscoveredServersClient extends AbstractClient { @SuppressWarnings("rawtypes") private Object getDiscoveredServers(Boolean getDetails, Class responseClass) { MultivaluedMap<String, String> queryParams = new MultivaluedMapImpl(); - queryParams.putSingle("details", getDetails.toString()); + queryParams.putSingle(QUERY_PARAM_DETAILS, getDetails.toString()); return fetchResource(queryParams, responseClass); } - public StringListResponse getDiscoveredServerNames() { - - return (StringListResponse) getDiscoveredServers(Boolean.FALSE, StringListResponse.class); + public ServerNameListResponse getDiscoveredServerNames() { + return (ServerNameListResponse) getDiscoveredServers(Boolean.FALSE, ServerNameListResponse.class); } public ServerListResponse getDiscoveredServerDetails() { @@ -68,8 +70,8 @@ public class DiscoveredServersClient extends AbstractClient { UsersClient usersClient = new UsersClient(); if (usersClient.authenticate("gluster", "gluster").isSuccess()) { DiscoveredServersClient serverResource = new DiscoveredServersClient(usersClient.getSecurityToken()); - StringListResponse discoveredServerNames = serverResource.getDiscoveredServerNames(); - System.out.println(discoveredServerNames.getData()); + ServerNameListResponse discoveredServerNames = serverResource.getDiscoveredServerNames(); + System.out.println(discoveredServerNames.getServerNames()); ServerListResponse discoveredServers = serverResource.getDiscoveredServerDetails(); System.out.println(discoveredServers.getData()); diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/constants/RESTConstants.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/constants/RESTConstants.java index a2d222a8..b3dc30c2 100644 --- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/constants/RESTConstants.java +++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/constants/RESTConstants.java @@ -56,7 +56,6 @@ public class RESTConstants { public static final String FORM_PARAM_ACCESS_PROTOCOLS = "accessProtocols"; public static final String FORM_PARAM_VOLUME_OPTIONS = "options"; - public static final String FORM_PARAM_CLUSTER_NAME = "clusterName"; public static final String FORM_PARAM_SERVER_NAME = "serverName"; public static final String FORM_PARAM_DISKS = "disks"; @@ -85,6 +84,7 @@ public class RESTConstants { public static final String QUERY_PARAM_TO_TIMESTAMP = "toTimestamp"; public static final String QUERY_PARAM_DOWNLOAD = "download"; public static final String QUERY_PARAM_SERVER_NAME = "serverName"; + public static final String QUERY_PARAM_DETAILS = "details"; public static final String FORMAT_XML = "xml"; public static final String FORMAT_JSON = "json"; diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/ServerNameListResponse.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/ServerNameListResponse.java new file mode 100644 index 00000000..2211f29f --- /dev/null +++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/ServerNameListResponse.java @@ -0,0 +1,46 @@ +/******************************************************************************* + * Copyright (c) 2011 Gluster, Inc. <http://www.gluster.com> + * This file is part of Gluster Management Console. + * + * Gluster Management Console is free software; you can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License as published + * by the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * Gluster Management Console is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License + * for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see + * <http://www.gnu.org/licenses/>. + *******************************************************************************/ +package com.gluster.storage.management.core.response; + +import java.util.ArrayList; +import java.util.List; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; + +/** + * Response object for transferring cluster names during REST communication. This is just a wrapper over a list of + * Strings, and is required because the jersey rest framework can't transfer lists directly. + */ +@XmlRootElement(name="servers") +public class ServerNameListResponse { +private List<String> serverNames = new ArrayList<String>(); + + public ServerNameListResponse() { + } + + public ServerNameListResponse(List<String> serverNames) { + this.serverNames = serverNames; + } + + @XmlElement(name = "server", type = String.class) + public List<String> getServerNames() { + return serverNames; + } +} diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/DiscoveredServersResource.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/DiscoveredServersResource.java index aba88d82..2c764770 100644 --- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/DiscoveredServersResource.java +++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/DiscoveredServersResource.java @@ -18,7 +18,7 @@ *******************************************************************************/ package com.gluster.storage.management.server.resources; -import static com.gluster.storage.management.core.constants.RESTConstants.RESOURCE_PATH_DISCOVERED_SERVERS; +import static com.gluster.storage.management.core.constants.RESTConstants.*; import java.util.ArrayList; import java.util.List; @@ -29,16 +29,16 @@ import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; import org.springframework.stereotype.Component; import com.gluster.storage.management.core.constants.CoreConstants; -import com.gluster.storage.management.core.model.Response; import com.gluster.storage.management.core.model.Server; import com.gluster.storage.management.core.model.Status; import com.gluster.storage.management.core.response.GenericResponse; import com.gluster.storage.management.core.response.ServerListResponse; -import com.gluster.storage.management.core.response.StringListResponse; +import com.gluster.storage.management.core.response.ServerNameListResponse; import com.sun.jersey.spi.resource.Singleton; @Component @@ -67,12 +67,22 @@ public class DiscoveredServersResource extends AbstractServersResource { @GET @Produces(MediaType.APPLICATION_XML) - @SuppressWarnings("rawtypes") - public Response getDiscoveredServers(@QueryParam("details") Boolean getDetails) { + public Response getDiscoveredServersXML(@QueryParam(QUERY_PARAM_DETAILS) Boolean getDetails) { + return getDiscoveredServers(getDetails, MediaType.APPLICATION_XML); + } + + @GET + @Produces(MediaType.APPLICATION_JSON) + public Response getDiscoveredServersJSON(@QueryParam(QUERY_PARAM_DETAILS) Boolean getDetails) { + return getDiscoveredServers(getDetails, MediaType.APPLICATION_JSON); + } + + public Response getDiscoveredServers(Boolean getDetails, String mediaType) { if(getDetails != null && getDetails == true) { - return getDiscoveredServerDetails(); + return okResponse(getDiscoveredServerDetails(), mediaType); } - return new StringListResponse(getDiscoveredServerNames()); + + return okResponse(new ServerNameListResponse(getDiscoveredServerNames()), mediaType); } private ServerListResponse getDiscoveredServerDetails() { @@ -115,9 +125,7 @@ public class DiscoveredServersResource extends AbstractServersResource { } public static void main(String[] args) { - StringListResponse listResponse = (StringListResponse)new DiscoveredServersResource().getDiscoveredServers(false); - for (String server : listResponse.getData()) { - System.out.println(server); - } + Response response = (Response)new DiscoveredServersResource().getDiscoveredServersXML(false); + System.out.println(response.getEntity()); } } |
