Author: [email protected]
Date: Tue Mar 29 15:55:52 2011
New Revision: 914
Log:
[AMDATU-308] Refactored cassandra user admin storage provider to stop using a
public property 'name' used internally to derive the name of a Role. Also
removed strange and incorrect login in getUser(factory, key, value) to return
any user of which the name equals this value (despite the specified property
'key').
Modified:
trunk/amdatu-cassandra/cassandra-useradminstore/src/main/java/org/amdatu/cassandra/useradminstore/service/CassandraStorageProvider.java
trunk/integration-tests/src/test/java/org/amdatu/test/integration/base/UserAdminStoreTestBase.java
Modified:
trunk/amdatu-cassandra/cassandra-useradminstore/src/main/java/org/amdatu/cassandra/useradminstore/service/CassandraStorageProvider.java
==============================================================================
---
trunk/amdatu-cassandra/cassandra-useradminstore/src/main/java/org/amdatu/cassandra/useradminstore/service/CassandraStorageProvider.java
(original)
+++
trunk/amdatu-cassandra/cassandra-useradminstore/src/main/java/org/amdatu/cassandra/useradminstore/service/CassandraStorageProvider.java
Tue Mar 29 15:55:52 2011
@@ -64,7 +64,6 @@
private static final String SUPER_COLUMN_MEMBERS = "Members";
// Basic column names
- private static final String COLUMN_NAME = "name";
private static final String COLUMN_ROLE_TYPE = "roletype";
private static final String COLUMN_BASIC_MEMBERS = "basic";
private static final String COLUMN_REQUIRED_MEMBERS = "required";
@@ -118,27 +117,19 @@
try {
lock.lock();
- // First we try to match by row key (which is the name)
- String rowKey = USER_KEY_PREFIX + value;
- if (m_pm.exists(CF_ROLE, rowKey)) {
- return (User) internalLoadRole(factory, rowKey, null);
- } else {
- // Otherwise, match by role properties
- Filter filter = m_context.createFilter("(" + key + "=" + value
+ ")");
- Collection<Role> roles = internalLoadRoles(factory, filter);
- Collection<User> users = new ArrayList<User>();
- for (Role role : roles) {
- if (Role.USER == role.getType()) {
- users.add((User) role);
- }
+ // Otherwise, match by role properties
+ Filter filter = m_context.createFilter("(" + key + "=" + value +
")");
+ Collection<Role> roles = internalLoadRoles(factory, filter);
+ Collection<User> users = new ArrayList<User>();
+ for (Role role : roles) {
+ if (Role.USER == role.getType()) {
+ users.add((User) role);
}
- if (users.size() == 1) {
- return users.iterator().next();
- }
- return null;
}
- } catch (CassandraException e) {
- throw new StorageException(e.getMessage());
+ if (users.size() == 1) {
+ return users.iterator().next();
+ }
+ return null;
} catch (InvalidSyntaxException e) {
throw new StorageException(e.getMessage());
} finally {
@@ -397,7 +388,7 @@
}
return map;
}
-
+
private Map<String, Object> toMap(HSuperColumn<String, String, byte[]>
superColumn, HSuperColumn<String, String, byte[]> superColumnTypes) throws
StorageException, UnsupportedEncodingException {
Map<String, Object> map = new HashMap<String, Object>();
if (superColumn != null) {
@@ -438,8 +429,13 @@
return null;
}
- if (basicSC != null && getColumn(basicSC.getColumns(),
COLUMN_NAME) != null && getColumn(basicSC.getColumns(), COLUMN_ROLE_TYPE) !=
null) {
- String name = new String(getColumn(basicSC.getColumns(),
COLUMN_NAME).getValue(), "UTF-8");
+ if (basicSC != null && getColumn(basicSC.getColumns(),
COLUMN_ROLE_TYPE) != null) {
+ String name;
+ if (key.startsWith(GROUP_KEY_PREFIX)) {
+ name = key.substring(GROUP_KEY_PREFIX.length());
+ } else {
+ name = key.substring(USER_KEY_PREFIX.length());
+ }
int roleType = Integer.parseInt(new
String(getColumn(basicSC.getColumns(), COLUMN_ROLE_TYPE).getValue(), "UTF-8"));
if (Role.USER == roleType) {
return factory.createUser(name, properties, credentials);
@@ -469,7 +465,6 @@
// Set the basic properties
m_pm.setValue(CF_ROLE, key, SUPER_COLUMN_BASIC, COLUMN_ROLE_TYPE,
new Integer(role.getType()).toString());
- m_pm.setValue(CF_ROLE, key, SUPER_COLUMN_BASIC, COLUMN_NAME,
role.getName());
} catch (CassandraException e) {
throw new StorageException(e.getMessage());
}
Modified:
trunk/integration-tests/src/test/java/org/amdatu/test/integration/base/UserAdminStoreTestBase.java
==============================================================================
---
trunk/integration-tests/src/test/java/org/amdatu/test/integration/base/UserAdminStoreTestBase.java
(original)
+++
trunk/integration-tests/src/test/java/org/amdatu/test/integration/base/UserAdminStoreTestBase.java
Tue Mar 29 15:55:52 2011
@@ -85,7 +85,11 @@
Assert.assertTrue("TestAdmin user could not be found",
m_userAdmin.getRole(ADMIN_USER) != null);
Assert.assertTrue("TestEditor user could not be found",
m_userAdmin.getRole(EDITOR_USER) != null);
Assert.assertTrue("TestGuest user could not be found",
m_userAdmin.getRole(GUEST_USER) != null);
-
+
+ Assert.assertTrue("TestAdmin user could be retrieved by undefined
'name' property", m_userAdmin.getUser("name", ADMIN_USER) == null);
+ Assert.assertTrue("TestEditor user could be retrieved by undefined
'name' property", m_userAdmin.getUser("name", EDITOR_USER) == null);
+ Assert.assertTrue("TestGuest user could be retrieved by undefined
'name' property", m_userAdmin.getUser("name", GUEST_USER) == null);
+
// Set user properties of admin
adminUser.getProperties().put("firstName", "John".getBytes());
adminUser.getProperties().put("lastName", "Doe".getBytes());
_______________________________________________
Amdatu-commits mailing list
[email protected]
http://lists.amdatu.org/mailman/listinfo/amdatu-commits