Author: adietish
Date: 2011-01-28 05:38:32 -0500 (Fri, 28 Jan 2011)
New Revision: 28693
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/DeltaCloudPasswordStorageKey.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/SecurePasswordStore.java
Log:
[JBIDE-8248] moved encoding to storage (was in key), url encoding keys now
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/DeltaCloudPasswordStorageKey.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/DeltaCloudPasswordStorageKey.java 2011-01-28
02:40:48 UTC (rev 28692)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/DeltaCloudPasswordStorageKey.java 2011-01-28
10:38:32 UTC (rev 28693)
@@ -10,7 +10,6 @@
******************************************************************************/
package org.jboss.tools.deltacloud.core;
-import org.eclipse.equinox.security.storage.EncodingUtils;
import org.jboss.tools.deltacloud.core.SecurePasswordStore.IStorageKey;
/**
@@ -21,23 +20,24 @@
*/
public class DeltaCloudPasswordStorageKey implements IStorageKey {
- private static final String PREFERNCES_BASEKEY =
Activator.PLUGIN_ID.replace('.', '/');
+ private static final char SEPARATOR = '/';
+
+ private static final String PREFERNCES_BASEKEY =
Activator.PLUGIN_ID.replace('.', SEPARATOR);
private String cloudName;
private String userName;
public DeltaCloudPasswordStorageKey(String cloudName, String userName) {
- this.userName = EncodingUtils.encodeBase64(userName.getBytes());
- this.cloudName = EncodingUtils.encodeBase64(cloudName.getBytes());
+ this.userName = userName;
+ this.cloudName = userName;
}
@Override
public String getKey() {
- String key = new StringBuilder(PREFERNCES_BASEKEY)
+ return new StringBuilder(PREFERNCES_BASEKEY)
.append(cloudName)
- .append('/') //$NON-NLS-1$
+ .append(SEPARATOR)
.append(userName)
.toString();
- return EncodingUtils.encodeSlashes(key);
}
@Override
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/SecurePasswordStore.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/SecurePasswordStore.java 2011-01-28
02:40:48 UTC (rev 28692)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/SecurePasswordStore.java 2011-01-28
10:38:32 UTC (rev 28693)
@@ -10,17 +10,27 @@
******************************************************************************/
package org.jboss.tools.deltacloud.core;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+
+import org.eclipse.equinox.security.storage.EncodingUtils;
import org.eclipse.equinox.security.storage.ISecurePreferences;
import org.eclipse.equinox.security.storage.SecurePreferencesFactory;
import org.eclipse.equinox.security.storage.StorageException;
/**
* @author Andre Dietisheim
+ *
+ * TODO: replace DeltaCloudException by SecurePasswordStoreException
+ * (decouple from Deltacloud)
*/
public class SecurePasswordStore {
+ private static final String ENCODING = "UTF-8";
+
public static interface IStorageKey {
public String getKey();
+
public boolean equals(IStorageKey key);
}
@@ -43,13 +53,13 @@
} else {
try {
return this.password = getFromPreferences(storageKey);
- } catch (StorageException e) {
+ } catch (Exception e) {
// TODO: internationalize strings
throw new DeltaCloudException("Could get password", e);
}
}
}
-
+
public void setPassword(String password) throws DeltaCloudException {
update(storageKey, password);
}
@@ -72,32 +82,44 @@
}
public void remove() throws DeltaCloudException {
- ISecurePreferences node = getNode(storageKey);
- if (node == null) {
- // TODO: internationalize strings
- throw new DeltaCloudException("Could not remove password");
+ try {
+ ISecurePreferences node = getNode(storageKey);
+ if (node == null) {
+ // TODO: internationalize strings
+ throw new DeltaCloudException("Could not remove password");
+ }
+ node.clear();
+ } catch (Exception e) {
+ throw new DeltaCloudException("Could not remove password", e);
}
- node.clear();
}
- private String getFromPreferences(IStorageKey key) throws StorageException {
+ private String getFromPreferences(IStorageKey key) throws StorageException,
UnsupportedEncodingException {
ISecurePreferences node = getNode(key);
String password = node.get("password", null); //$NON-NLS-1$
- return password;
+ if (password == null) {
+ return null;
+ }
+ return EncodingUtils.encodeBase64(password.getBytes());
}
private void storeInPreferences(String password, IStorageKey key) throws
DeltaCloudException {
try {
ISecurePreferences node = getNode(key);
- node.put("password", password, true /* encrypt */); //$NON-NLS-1$
- } catch (StorageException e) {
+ node.put("password", EncodingUtils.encodeBase64(password.getBytes()), true
/* encrypt */); //$NON-NLS-1$
+ } catch (Exception e) {
// TODO: internationalize string
throw new DeltaCloudException("Could not store password", e);
}
}
- private ISecurePreferences getNode(IStorageKey key) {
+ private ISecurePreferences getNode(IStorageKey key) throws UnsupportedEncodingException
{
+ if (key == null) {
+ return null;
+ }
+
ISecurePreferences root = SecurePreferencesFactory.getDefault();
- return root.node(key.getKey());
+ String keyString = URLEncoder.encode(key.getKey(), ENCODING);
+ return root.node(keyString);
}
}
Show replies by date