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

Reply via email to