Author: [email protected]
Date: Tue Jul 19 16:43:37 2011
New Revision: 1225
Log:
[AMDATUCASSANDRA-5] Changes necessary for latest changes in Amdatu Auth
0.2.0-SNAPSHOT
Modified:
trunk/amdatu-cassandra/cassandra-store-token/src/main/java/org/amdatu/cassandra/store/token/service/CassandraTokenStorageProviderImpl.java
trunk/amdatu-cassandra/cassandra-store-token/src/test/java/org/amdatu/cassandra/test/unit/CassandraTokenStoreTest.java
Modified:
trunk/amdatu-cassandra/cassandra-store-token/src/main/java/org/amdatu/cassandra/store/token/service/CassandraTokenStorageProviderImpl.java
==============================================================================
---
trunk/amdatu-cassandra/cassandra-store-token/src/main/java/org/amdatu/cassandra/store/token/service/CassandraTokenStorageProviderImpl.java
(original)
+++
trunk/amdatu-cassandra/cassandra-store-token/src/main/java/org/amdatu/cassandra/store/token/service/CassandraTokenStorageProviderImpl.java
Tue Jul 19 16:43:37 2011
@@ -17,9 +17,22 @@
import static
org.amdatu.cassandra.store.token.service.TokenColumnFamilyProvider.CF_TOKEN;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import me.prettyprint.hector.api.beans.HColumn;
+
+import org.amdatu.authentication.tokenprovider.Token;
import org.amdatu.authentication.tokenprovider.TokenStorageProvider;
import org.amdatu.cassandra.application.ThriftException;
import org.amdatu.cassandra.persistencemanager.CassandraPersistenceManager;
+import org.codehaus.jackson.JsonParseException;
+import org.codehaus.jackson.map.JsonMappingException;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.map.type.TypeFactory;
+import org.json.JSONObject;
import org.osgi.service.log.LogService;
/**
@@ -33,7 +46,9 @@
private volatile LogService m_logService;
// Column names
- private static final String C_TOKEN = "token";
+ private static final String C_SECRET = "secret";
+ private static final String C_TIMESTAMP = "timestamp";
+ private static final String C_PROPERTIES = "properties";
/**
* Default (empty) constructor.
@@ -52,10 +67,13 @@
m_logService = logService;
}
- public void addToken(final String token) {
+ public void addToken(final Token token) {
try {
// We use the token also as row key
- m_pm.setValue(CF_TOKEN, token, null, C_TOKEN, token);
+ String rowKey = token.getToken();
+ m_pm.setValue(CF_TOKEN, rowKey, null, C_SECRET,
token.getTokenSecret());
+ m_pm.setValue(CF_TOKEN, rowKey, null, C_TIMESTAMP, new
Long(token.getTimestamp()).toString());
+ m_pm.setValue(CF_TOKEN, rowKey, null, C_PROPERTIES,
mapToString(token.getProperties()));
}
catch (ThriftException e) {
m_logService.log(LogService.LOG_ERROR, "Could not store token '" +
token + "'", e);
@@ -64,8 +82,8 @@
public boolean hasToken(final String token) {
try {
- String value = m_pm.getValue(CF_TOKEN, token, null, C_TOKEN,
String.class);
- return value != null && !value.isEmpty();
+ String value = m_pm.getValue(CF_TOKEN, token, null, C_SECRET,
String.class);
+ return value != null;
}
catch (ThriftException e) {
m_logService.log(LogService.LOG_ERROR, "Could not retrieve token
'" + token + "'", e);
@@ -73,12 +91,56 @@
return false;
}
- public void removeToken(final String token) {
+ public void removeToken(final Token token) {
try {
- m_pm.deleteRow(CF_TOKEN, token);
+ m_pm.deleteRow(CF_TOKEN, token.getToken());
}
catch (ThriftException e) {
m_logService.log(LogService.LOG_ERROR, "Could not remove token '"
+ token + "'", e);
}
}
+
+ public Token getToken(String token) {
+ List<HColumn<String, String>> columns = m_pm.getColumns(CF_TOKEN,
token, String.class);
+ String secret = null;
+ long timestamp = 0L;
+ Map<String, String> properties = null;
+ for (HColumn<String, String> col : columns) {
+ if (C_SECRET.equals(col.getName())) {
+ secret = col.getValue();
+ }
+ else if (C_TIMESTAMP.equals(col.getName())) {
+ timestamp = Long.parseLong(col.getValue());
+ }
+ else if (C_SECRET.equals(col.getName())) {
+ properties = stringToMap(col.getValue());
+ }
+ }
+ Token t = new Token(token, secret, timestamp);
+ t.setProperties(properties);
+ return t;
+ }
+
+ private String mapToString(Map<String, String> map) {
+ JSONObject json = new JSONObject(map);
+ return json.toString();
+ }
+
+ private Map<String, String> stringToMap(String json) {
+ String errorMsg = "Could not convert JSON expression to Map<String,
String>. JSON expression:\r\n" + json;
+ try {
+ Map<String, String> result = new ObjectMapper().readValue(json,
TypeFactory.mapType(HashMap.class, String.class, String.class));
+ return result;
+ }
+ catch (JsonParseException e) {
+ m_logService.log(LogService.LOG_ERROR, errorMsg, e);
+ }
+ catch (JsonMappingException e) {
+ m_logService.log(LogService.LOG_ERROR, errorMsg, e);
+ }
+ catch (IOException e) {
+ m_logService.log(LogService.LOG_ERROR, errorMsg, e);
+ }
+ return null;
+ }
}
Modified:
trunk/amdatu-cassandra/cassandra-store-token/src/test/java/org/amdatu/cassandra/test/unit/CassandraTokenStoreTest.java
==============================================================================
---
trunk/amdatu-cassandra/cassandra-store-token/src/test/java/org/amdatu/cassandra/test/unit/CassandraTokenStoreTest.java
(original)
+++
trunk/amdatu-cassandra/cassandra-store-token/src/test/java/org/amdatu/cassandra/test/unit/CassandraTokenStoreTest.java
Tue Jul 19 16:43:37 2011
@@ -16,6 +16,7 @@
*/
package org.amdatu.cassandra.test.unit;
+import org.amdatu.authentication.tokenprovider.Token;
import org.amdatu.cassandra.listener.ColumnFamilyDefinition;
import
org.amdatu.cassandra.store.token.service.CassandraTokenStorageProviderImpl;
import org.amdatu.cassandra.store.token.service.TokenColumnFamilyProvider;
@@ -37,11 +38,13 @@
CassandraTokenStorageProviderImpl tokenStore = new
CassandraTokenStorageProviderImpl(pm, logService);
// OK, I agree, this will not be the most complex unit test...
- String token = "lwhfsbfgkl!@#$%^&*()~\\ \"[]{}0";
- Assert.assertFalse(tokenStore.hasToken(token));
+ String key = "i_am_the_token";
+ String secret = "i_am_the_secret";
+ Token token = new Token(key, secret, System.currentTimeMillis());
+ Assert.assertFalse(tokenStore.hasToken(key));
tokenStore.addToken(token);
- Assert.assertTrue(tokenStore.hasToken(token));
+ Assert.assertTrue(tokenStore.hasToken(key));
tokenStore.removeToken(token);
- Assert.assertFalse(tokenStore.hasToken(token));
+ Assert.assertFalse(tokenStore.hasToken(key));
}
}
_______________________________________________
Amdatu-commits mailing list
[email protected]
http://lists.amdatu.org/mailman/listinfo/amdatu-commits