diff options
| author | Shireesh Anjal <shireesh@gluster.com> | 2011-07-05 13:16:45 +0530 |
|---|---|---|
| committer | Shireesh Anjal <shireesh@gluster.com> | 2011-07-05 13:24:31 +0530 |
| commit | 429d3149d5cf042f1aabc5836d7df451c7da06bd (patch) | |
| tree | f911faaa91cd87cbd26d864c12ecc6ed53a5df20 /src | |
| parent | 70e5b09bba0a5d035bc7fd37db707cd041db9580 (diff) | |
Changed base URI of REST resources to include the API version
Diffstat (limited to 'src')
21 files changed, 61 insertions, 55 deletions
diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/UsersClient.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/UsersClient.java index c839a15a..6dc251dc 100644 --- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/UsersClient.java +++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/UsersClient.java @@ -22,6 +22,8 @@ import java.net.ConnectException; import javax.ws.rs.core.Response; +import org.apache.log4j.Logger; + import com.gluster.storage.management.core.exceptions.GlusterRuntimeException; import com.gluster.storage.management.core.model.Status; import com.sun.jersey.api.client.UniformInterfaceException; @@ -32,6 +34,7 @@ public class UsersClient extends AbstractClient { private static final String RESOURCE_NAME = "users"; private static final String FORM_PARAM_OLD_PASSWORD = "oldpassword"; private static final String FORM_PARAM_NEW_PASSWORD = "newpassword"; + private static final Logger logger = Logger.getLogger(UsersClient.class); private String generateSecurityToken(String user, String password) { return new String(Base64.encode(user + ":" + password)); @@ -44,7 +47,7 @@ public class UsersClient extends AbstractClient { public void authenticate(String user, String password) { setSecurityToken(generateSecurityToken(user, password)); try { - fetchSubResource(user, String.class); + fetchSubResource(user, Status.class); } catch (RuntimeException e) { Throwable cause = e.getCause(); if(cause == null) { @@ -58,14 +61,16 @@ public class UsersClient extends AbstractClient { setSecurityToken(null); throw new GlusterRuntimeException("Invalid user id or password!"); } else { - // TODO: Log the exception - throw new GlusterRuntimeException("Exception during authentication: [" - + e1.getResponse().getStatus() + "]"); + String errMsg = "Exception during authentication: [" + e1.getResponse().getStatus() + "]"; + logger.error(errMsg); + throw new GlusterRuntimeException(errMsg); } } else if(cause instanceof ConnectException) { throw new GlusterRuntimeException("Couldn't connect to Gluster Management Gateway!"); } else { - throw new GlusterRuntimeException("Exception during authentication: [" + e.getMessage() + "]"); + String errMsg = "Exception during authentication: [" + e.getMessage() + "]"; + logger.error(errMsg); + throw new GlusterRuntimeException(errMsg); } } } @@ -80,20 +85,18 @@ public class UsersClient extends AbstractClient { } public static void main(String[] args) { -// UsersClient authClient = new UsersClient(); -// -// // authenticate user -// authClient.authenticate("gluster", "gluster"); -// -// // change password to gluster1 -// authClient.changePassword("gluster", "gluster", "gluster1"); -// -// // change it back to gluster -// authClient.changePassword("gluster", "gluster1", "gluster"); -// -// System.out.println("success"); - System.out.println(new String(Base64.encode("abcdefghijklmnopqrstuvwxyz"))); - System.out.println(new String(Base64.decode("YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo="))); + UsersClient authClient = new UsersClient(); + + // authenticate user + authClient.authenticate("gluster", "gluster"); + + // change password to gluster1 + authClient.changePassword("gluster", "gluster", "gluster1"); + + // change it back to gluster + authClient.changePassword("gluster", "gluster1", "gluster"); + + System.out.println("success"); } /* diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/constants/ClientConstants.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/constants/ClientConstants.java index 4726fc36..765735fb 100644 --- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/constants/ClientConstants.java +++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/constants/ClientConstants.java @@ -27,7 +27,7 @@ public class ClientConstants { public static final String SYS_PROP_SERVER_URL = "gluster.server.url"; public static final String DEFAULT_SERVER_URL = "https://localhost:8443/glustermg/linux.gtk.x86_64"; public static final String CONTEXT_ROOT = "glustermg"; - public static final String WEB_RESOURCE_BASE_PATH = "resources"; + public static final String REST_API_VERSION = "1.0"; // SSL related public static final String TRUSTED_KEYSTORE = "gmc-trusted.keystore"; diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/utils/ClientUtil.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/utils/ClientUtil.java index 4f7ea64e..3f87fd27 100644 --- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/utils/ClientUtil.java +++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/utils/ClientUtil.java @@ -9,7 +9,7 @@ import com.gluster.storage.management.client.constants.ClientConstants; public class ClientUtil { public static URI getServerBaseURI() { - return UriBuilder.fromUri(getBaseURL()).path(ClientConstants.WEB_RESOURCE_BASE_PATH).build(); + return UriBuilder.fromUri(getBaseURL()).path(ClientConstants.REST_API_VERSION).build(); } private static String getBaseURL() { diff --git a/src/com.gluster.storage.management.core/.classpath b/src/com.gluster.storage.management.core/.classpath index b41cbcdb..221aeec4 100644 --- a/src/com.gluster.storage.management.core/.classpath +++ b/src/com.gluster.storage.management.core/.classpath @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <classpath> + <classpathentry exported="true" kind="lib" path="lib/log4j-1.2.16.jar"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="src" path="src"/> <classpathentry kind="src" path="junit"/> diff --git a/src/com.gluster.storage.management.core/META-INF/MANIFEST.MF b/src/com.gluster.storage.management.core/META-INF/MANIFEST.MF index a32970c8..fae660fb 100644 --- a/src/com.gluster.storage.management.core/META-INF/MANIFEST.MF +++ b/src/com.gluster.storage.management.core/META-INF/MANIFEST.MF @@ -9,5 +9,8 @@ Export-Package: com.gluster.storage.management.core.constants, com.gluster.storage.management.core.exceptions, com.gluster.storage.management.core.model, com.gluster.storage.management.core.response, - com.gluster.storage.management.core.utils + com.gluster.storage.management.core.utils, + org.apache.log4j Require-Bundle: org.eclipse.core.runtime;bundle-version="3.6.0" +Bundle-ClassPath: lib/log4j-1.2.16.jar, + . diff --git a/src/com.gluster.storage.management.core/build.properties b/src/com.gluster.storage.management.core/build.properties index 34d2e4d2..89d32a46 100644 --- a/src/com.gluster.storage.management.core/build.properties +++ b/src/com.gluster.storage.management.core/build.properties @@ -1,4 +1,7 @@ source.. = src/ output.. = bin/ bin.includes = META-INF/,\ - . + .,\ + lib/ +src.includes = lib/,\ + src/ diff --git a/src/com.gluster.storage.management.core/lib/log4j-1.2.16.jar b/src/com.gluster.storage.management.core/lib/log4j-1.2.16.jar Binary files differnew file mode 100644 index 00000000..3f9d8476 --- /dev/null +++ b/src/com.gluster.storage.management.core/lib/log4j-1.2.16.jar diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/User.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/User.java index da92ca14..ed5d12f7 100644 --- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/User.java +++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/User.java @@ -19,6 +19,7 @@ package com.gluster.storage.management.core.model; import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlTransient; @XmlRootElement public class User { @@ -31,6 +32,8 @@ public class User { public void setUserId(String userId) { this.userId = userId; } + + @XmlTransient public String getPassword() { return password; } diff --git a/src/com.gluster.storage.management.server/WebContent/WEB-INF/web.xml b/src/com.gluster.storage.management.server/WebContent/WEB-INF/web.xml index 4aaa3c9b..7c20d6c7 100644 --- a/src/com.gluster.storage.management.server/WebContent/WEB-INF/web.xml +++ b/src/com.gluster.storage.management.server/WebContent/WEB-INF/web.xml @@ -30,12 +30,12 @@ <!-- Jersey REST servlet --> <servlet> - <servlet-name>gluster-resources</servlet-name> + <servlet-name>gluster-resources-1.0</servlet-name> <!-- servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class --> <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class> <init-param> <param-name>com.sun.jersey.config.property.packages</param-name> - <param-value>com.gluster.storage.management.server.resources</param-value> + <param-value>com.gluster.storage.management.server.resources.v1_0</param-value> </init-param> <init-param> <param-name>com.sun.jersey.spi.container.ResourceFilters</param-name> @@ -44,8 +44,8 @@ <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> - <servlet-name>gluster-resources</servlet-name> - <url-pattern>/resources/*</url-pattern> + <servlet-name>gluster-resources-1.0</servlet-name> + <url-pattern>/1.0/*</url-pattern> </servlet-mapping> <!-- JNLP download servlet --> diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/AbstractResource.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/AbstractResource.java index feef8b3e..c28c0da0 100644 --- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/AbstractResource.java +++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/AbstractResource.java @@ -16,7 +16,7 @@ * along with this program. If not, see * <http://www.gnu.org/licenses/>. *******************************************************************************/ -package com.gluster.storage.management.server.resources; +package com.gluster.storage.management.server.resources.v1_0; import java.net.URI; import java.util.ArrayList; @@ -158,17 +158,6 @@ public class AbstractResource { } /** - * Creates an OK response without any entity in the response body. - * - * @param mediaType - * Media type to be set on the response - * @return the {@link Response} object - */ - protected Response okResponse(String mediaType) { - return Response.ok().type(mediaType).build(); - } - - /** * Creates a streaming output response and sets the given streaming output in the response. Typically used for * "download" requests * diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/AbstractServersResource.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/AbstractServersResource.java index dd6e2804..8b4b6d99 100644 --- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/AbstractServersResource.java +++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/AbstractServersResource.java @@ -18,7 +18,7 @@ * along with this program. If not, see * <http://www.gnu.org/licenses/>. */ -package com.gluster.storage.management.server.resources; +package com.gluster.storage.management.server.resources.v1_0; import com.gluster.storage.management.server.utils.GlusterUtil; import com.gluster.storage.management.server.utils.ServerUtil; diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/AlertsResource.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/AlertsResource.java index 3c70beec..91eeef1a 100644 --- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/AlertsResource.java +++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/AlertsResource.java @@ -1,4 +1,4 @@ -package com.gluster.storage.management.server.resources; +package com.gluster.storage.management.server.resources.v1_0; import static com.gluster.storage.management.core.constants.RESTConstants.*; diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/ClustersResource.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/ClustersResource.java index 4c834973..431de952 100644 --- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/ClustersResource.java +++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/ClustersResource.java @@ -16,7 +16,7 @@ * along with this program. If not, see * <http://www.gnu.org/licenses/>. *******************************************************************************/ -package com.gluster.storage.management.server.resources; +package com.gluster.storage.management.server.resources.v1_0; import static com.gluster.storage.management.core.constants.RESTConstants.FORM_PARAM_CLUSTER_NAME; import static com.gluster.storage.management.core.constants.RESTConstants.FORM_PARAM_SERVER_NAME; 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/v1_0/DiscoveredServersResource.java index 283ab147..cb39746c 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/v1_0/DiscoveredServersResource.java @@ -16,7 +16,7 @@ * along with this program. If not, see * <http://www.gnu.org/licenses/>. *******************************************************************************/ -package com.gluster.storage.management.server.resources; +package com.gluster.storage.management.server.resources.v1_0; import static com.gluster.storage.management.core.constants.RESTConstants.PATH_PARAM_SERVER_NAME; import static com.gluster.storage.management.core.constants.RESTConstants.QUERY_PARAM_DETAILS; diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/GlusterServersResource.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/GlusterServersResource.java index 1f4b15de..619e4f55 100644 --- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/GlusterServersResource.java +++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/GlusterServersResource.java @@ -16,7 +16,7 @@ * along with this program. If not, see * <http://www.gnu.org/licenses/>. *******************************************************************************/ -package com.gluster.storage.management.server.resources; +package com.gluster.storage.management.server.resources.v1_0; import static com.gluster.storage.management.core.constants.RESTConstants.FORM_PARAM_SERVER_NAME; import static com.gluster.storage.management.core.constants.RESTConstants.PATH_PARAM_CLUSTER_NAME; diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/TasksResource.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/TasksResource.java index 53122f11..777565eb 100644 --- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/TasksResource.java +++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/TasksResource.java @@ -18,7 +18,7 @@ * along with this program. If not, see * <http://www.gnu.org/licenses/>. */ -package com.gluster.storage.management.server.resources; +package com.gluster.storage.management.server.resources.v1_0; import static com.gluster.storage.management.core.constants.RESTConstants.FORM_PARAM_OPERATION; import static com.gluster.storage.management.core.constants.RESTConstants.PATH_PARAM_CLUSTER_NAME; diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/UsersResource.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/UsersResource.java index 0ccb4263..1b5e8fad 100644 --- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/UsersResource.java +++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/UsersResource.java @@ -16,7 +16,7 @@ * along with this program. If not, see * <http://www.gnu.org/licenses/>. *******************************************************************************/ -package com.gluster.storage.management.server.resources; +package com.gluster.storage.management.server.resources.v1_0; import static com.gluster.storage.management.core.constants.RESTConstants.PATH_PARAM_USER; import static com.gluster.storage.management.core.constants.RESTConstants.RESOURCE_PATH_USERS; @@ -30,12 +30,14 @@ import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; +import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.encoding.PasswordEncoder; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.provisioning.JdbcUserDetailsManager; import org.springframework.stereotype.Component; +import com.gluster.storage.management.core.model.Status; import com.sun.jersey.spi.resource.Singleton; @Singleton @@ -47,6 +49,8 @@ public class UsersResource extends AbstractResource { @Autowired private PasswordEncoder passwordEncoder; + + private static final Logger logger = Logger.getLogger(UsersResource.class); @Path("{" + PATH_PARAM_USER + "}") @GET @@ -67,8 +71,8 @@ public class UsersResource extends AbstractResource { } public Response getAuthenticationResponse(String user, String mediaType) { - return (SecurityContextHolder.getContext().getAuthentication().getName().equals(user) ? okResponse(mediaType) - : unauthorizedResponse()); + return (SecurityContextHolder.getContext().getAuthentication().getName().equals(user) ? okResponse( + Status.STATUS_SUCCESS, mediaType) : unauthorizedResponse()); } @Path("{" + PATH_PARAM_USER + "}") @@ -78,9 +82,9 @@ public class UsersResource extends AbstractResource { try { jdbcUserService.changePassword(oldPassword, passwordEncoder.encodePassword(newPassword, null)); } catch (Exception ex) { - // TODO: Log the exception - ex.printStackTrace(); - return errorResponse("Could not change password. Error: [" + ex.getMessage() + "]"); + String errMsg = "Could not change password. Error: [" + ex.getMessage() + "]"; + logger.error(errMsg, ex); + return errorResponse(errMsg); } return noContentResponse(); } diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/VolumesResource.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/VolumesResource.java index 7ccd2f3c..a09b7f08 100644 --- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/VolumesResource.java +++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/VolumesResource.java @@ -18,7 +18,7 @@ * along with this program. If not, see * <http://www.gnu.org/licenses/>. */ -package com.gluster.storage.management.server.resources; +package com.gluster.storage.management.server.resources.v1_0; import static com.gluster.storage.management.core.constants.RESTConstants.FORM_PARAM_ACCESS_PROTOCOLS; import static com.gluster.storage.management.core.constants.RESTConstants.FORM_PARAM_AUTO_COMMIT; diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/ServerDiscoveryTask.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/ServerDiscoveryTask.java index b0959445..e5b8d726 100644 --- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/ServerDiscoveryTask.java +++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/ServerDiscoveryTask.java @@ -30,7 +30,7 @@ import com.gluster.storage.management.core.constants.CoreConstants; import com.gluster.storage.management.core.utils.ProcessResult; import com.gluster.storage.management.server.data.ClusterInfo; import com.gluster.storage.management.server.data.PersistenceDao; -import com.gluster.storage.management.server.resources.DiscoveredServersResource; +import com.gluster.storage.management.server.resources.v1_0.DiscoveredServersResource; import com.gluster.storage.management.server.utils.ServerUtil; /** diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/GlusterUtil.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/GlusterUtil.java index 2a86a690..a24e147c 100644 --- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/GlusterUtil.java +++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/GlusterUtil.java @@ -44,7 +44,7 @@ import com.gluster.storage.management.core.model.Volume.VOLUME_TYPE; import com.gluster.storage.management.core.utils.GlusterCoreUtil; import com.gluster.storage.management.core.utils.ProcessResult; import com.gluster.storage.management.core.utils.StringUtil; -import com.gluster.storage.management.server.resources.TasksResource; +import com.gluster.storage.management.server.resources.v1_0.TasksResource; import com.sun.jersey.api.core.InjectParam; @Component diff --git a/src/com.gluster.storage.management.server/src/spring/gluster-server-security.xml b/src/com.gluster.storage.management.server/src/spring/gluster-server-security.xml index 59714c87..c8301c7b 100644 --- a/src/com.gluster.storage.management.server/src/spring/gluster-server-security.xml +++ b/src/com.gluster.storage.management.server/src/spring/gluster-server-security.xml @@ -16,7 +16,7 @@ <intercept-url pattern="/*" access="permitAll" /--> <!-- SSL Protection --> - <intercept-url pattern="/resources/*" access="hasRole('ROLE_ADMIN') + <intercept-url pattern="/1.0/*" access="hasRole('ROLE_ADMIN') and fullyAuthenticated" requires-channel="https" /> <intercept-url pattern="/*" access="permitAll" requires-channel="any" /> |
