diff options
author | Selvasundaram <selvam@gluster.com> | 2011-07-12 22:25:25 +0530 |
---|---|---|
committer | Selvasundaram <selvam@gluster.com> | 2011-07-12 22:25:25 +0530 |
commit | 62f8ce362f04fc270baeddc7a2b47a610b83bbb3 (patch) | |
tree | 7c345747a6d990329dc2e145c8e4f81b53aff350 /src/com.gluster.storage.management.client/src/com/gluster/storage/management | |
parent | 02c48d2325fa838c194d2ddb32a8bf21f14b0e83 (diff) |
Change password dialog
Diffstat (limited to 'src/com.gluster.storage.management.client/src/com/gluster/storage/management')
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) { |