summaryrefslogtreecommitdiffstats
path: root/src/com.gluster.storage.management.client/src/com/gluster/storage/management
diff options
context:
space:
mode:
authorSelvasundaram <selvam@gluster.com>2011-07-12 22:25:25 +0530
committerSelvasundaram <selvam@gluster.com>2011-07-12 22:25:25 +0530
commit62f8ce362f04fc270baeddc7a2b47a610b83bbb3 (patch)
tree7c345747a6d990329dc2e145c8e4f81b53aff350 /src/com.gluster.storage.management.client/src/com/gluster/storage/management
parent02c48d2325fa838c194d2ddb32a8bf21f14b0e83 (diff)
Change password dialog
Diffstat (limited to 'src/com.gluster.storage.management.client/src/com/gluster/storage/management')
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java44
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java3
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/UsersClient.java34
3 files changed, 46 insertions, 35 deletions
diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java
index 3a2592f0..8898cf92 100644
--- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java
+++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java
@@ -9,6 +9,7 @@ import static com.gluster.storage.management.client.constants.ClientConstants.TR
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.net.ConnectException;
import java.net.URI;
import java.security.KeyStore;
@@ -19,6 +20,7 @@ import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManagerFactory;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.core.Response;
import com.gluster.storage.management.client.utils.ClientUtil;
import com.gluster.storage.management.core.exceptions.GlusterRuntimeException;
@@ -130,10 +132,35 @@ public abstract class AbstractClient {
*/
private <T> T fetchResource(WebResource res, MultivaluedMap<String, String> queryParams, Class<T> responseClass) {
try {
- return res.queryParams(queryParams)
- .header(HTTP_HEADER_AUTH, authHeader).accept(MediaType.APPLICATION_XML).get(responseClass);
- } catch(UniformInterfaceException e) {
- throw new GlusterRuntimeException(e.getResponse().getEntity(String.class), e);
+ return res.queryParams(queryParams).header(HTTP_HEADER_AUTH, authHeader).accept(MediaType.APPLICATION_XML)
+ .get(responseClass);
+ } catch (Exception e1) {
+ throw createGlusterException(e1);
+ }
+ }
+
+ private GlusterRuntimeException createGlusterException(Exception e) {
+ if(e instanceof GlusterRuntimeException) {
+ return (GlusterRuntimeException)e;
+ }
+
+ if (e instanceof UniformInterfaceException) {
+ UniformInterfaceException uie = (UniformInterfaceException) e;
+ if ((uie.getResponse().getStatus() == Response.Status.UNAUTHORIZED.getStatusCode())) {
+ // authentication failed. clear security token.
+ setSecurityToken(null);
+ return new GlusterRuntimeException("Invalid credentials!");
+ } else {
+ return new GlusterRuntimeException("[" + uie.getResponse().getStatus() + "]["
+ + uie.getResponse().getEntity(String.class) + "]");
+ }
+ } else {
+ Throwable cause = e.getCause();
+ if (cause != null && cause instanceof ConnectException) {
+ return new GlusterRuntimeException("Couldn't connect to Gluster Management Gateway!");
+ }
+
+ return new GlusterRuntimeException("Exception in REST communication!", e);
}
}
@@ -273,12 +300,17 @@ public abstract class AbstractClient {
private ClientResponse putRequest(WebResource resource, Form form) {
try {
ClientResponse response = prepareFormRequestBuilder(resource).put(ClientResponse.class, form);
+ if ((response.getStatus() == Response.Status.UNAUTHORIZED.getStatusCode())) {
+ // authentication failed. clear security token.
+ setSecurityToken(null);
+ throw new GlusterRuntimeException("Invalid credentials!");
+ }
if(response.getStatus() >= 300) {
throw new GlusterRuntimeException(response.getEntity(String.class));
}
return response;
- } catch (UniformInterfaceException e) {
- throw new GlusterRuntimeException(e.getResponse().getEntity(String.class));
+ } catch (Exception e) {
+ throw createGlusterException(e);
}
}
diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java
index 6c2fbdb3..ba5ce336 100644
--- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java
+++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java
@@ -86,8 +86,7 @@ public class GlusterDataModelManager {
return instance;
}
- public void initializeModel(String securityToken, String clusterName) {
- setSecurityToken(securityToken);
+ public void initializeModel(String clusterName) {
setClusterName(clusterName);
model = fetchData(clusterName);
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 6dc251dc..45dcf27f 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
@@ -46,33 +46,9 @@ public class UsersClient extends AbstractClient {
public void authenticate(String user, String password) {
setSecurityToken(generateSecurityToken(user, password));
- try {
- fetchSubResource(user, Status.class);
- } catch (RuntimeException e) {
- Throwable cause = e.getCause();
- if(cause == null) {
- throw e;
- }
-
- if (cause instanceof UniformInterfaceException) {
- UniformInterfaceException e1 = (UniformInterfaceException) cause;
- if ((e1.getResponse().getStatus() == Response.Status.UNAUTHORIZED.getStatusCode())) {
- // authentication failed. clear security token.
- setSecurityToken(null);
- throw new GlusterRuntimeException("Invalid user id or password!");
- } else {
- 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 {
- String errMsg = "Exception during authentication: [" + e.getMessage() + "]";
- logger.error(errMsg);
- throw new GlusterRuntimeException(errMsg);
- }
- }
+ fetchSubResource(user, Status.class);
+ // authentication successful. update security token in the data model manager
+ GlusterDataModelManager.getInstance().setSecurityToken(getSecurityToken());
}
public void changePassword(String user, String oldPassword, String newPassword) {
@@ -82,6 +58,10 @@ public class UsersClient extends AbstractClient {
form.add(FORM_PARAM_OLD_PASSWORD, oldPassword);
form.add(FORM_PARAM_NEW_PASSWORD, newPassword);
putRequest(user, form);
+
+ // password changed. set the new security token
+ setSecurityToken(generateSecurityToken(user, newPassword));
+ GlusterDataModelManager.getInstance().setSecurityToken(getSecurityToken());
}
public static void main(String[] args) {