Author: [email protected]
Date: Wed Aug  3 15:30:40 2011
New Revision: 1245

Log:
[AMDATU-407] Fixed the classcast exception by using the UserAdminFactory to 
create roels instead

Modified:
   
trunk/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/service/FSUserAdminStorageProvider.java

Modified: 
trunk/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/service/FSUserAdminStorageProvider.java
==============================================================================
--- 
trunk/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/service/FSUserAdminStorageProvider.java
 (original)
+++ 
trunk/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/service/FSUserAdminStorageProvider.java
 Wed Aug  3 15:30:40 2011
@@ -15,35 +15,35 @@
  */
 package org.amdatu.core.useradminstore.fs.service;
 
-import java.io.File;
-import java.io.IOException;
-import java.util.Collection;
-import java.util.Dictionary;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.amdatu.core.tenant.Tenant;
-import org.amdatu.core.useradminstore.fs.internal.FSGroup;
-import org.amdatu.core.useradminstore.fs.internal.FSRole;
-import org.amdatu.core.useradminstore.fs.internal.FSRoleStorage;
-import org.amdatu.core.useradminstore.fs.internal.FSUser;
-import org.apache.felix.dm.Component;
-import org.ops4j.pax.useradmin.service.UserAdminConstants;
-import org.ops4j.pax.useradmin.service.spi.StorageException;
-import org.ops4j.pax.useradmin.service.spi.StorageProvider;
-import org.ops4j.pax.useradmin.service.spi.UserAdminFactory;
-import org.osgi.framework.Filter;
-import org.osgi.framework.FrameworkUtil;
-import org.osgi.framework.InvalidSyntaxException;
-import org.osgi.service.log.LogService;
-import org.osgi.service.useradmin.Group;
-import org.osgi.service.useradmin.Role;
-import org.osgi.service.useradmin.User;
+import java.io.File;
+import java.io.IOException;
+import java.util.Collection;
+import java.util.Dictionary;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.amdatu.core.tenant.Tenant;
+import org.amdatu.core.useradminstore.fs.internal.FSGroup;
+import org.amdatu.core.useradminstore.fs.internal.FSRole;
+import org.amdatu.core.useradminstore.fs.internal.FSRoleStorage;
+import org.amdatu.core.useradminstore.fs.internal.FSUser;
+import org.apache.felix.dm.Component;
+import org.ops4j.pax.useradmin.service.UserAdminConstants;
+import org.ops4j.pax.useradmin.service.spi.StorageException;
+import org.ops4j.pax.useradmin.service.spi.StorageProvider;
+import org.ops4j.pax.useradmin.service.spi.UserAdminFactory;
+import org.osgi.framework.Filter;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.service.log.LogService;
+import org.osgi.service.useradmin.Group;
+import org.osgi.service.useradmin.Role;
+import org.osgi.service.useradmin.User;
 
 /**
  * Filesystem backed implementation of the PAX <code>StorageProvider</code> 
service interface.
@@ -237,8 +237,18 @@
                 filter = FrameworkUtil.createFilter(filterString);
             }
             for (FSRole internalRole : internalRoles) {
-                if (filter == null || 
filter.match(internalRole.getProperties())) {
-                    matchingRoles.add(internalRole);
+                if (filter == null || 
filter.match(internalRole.getProperties())) {
+                    // Note that Pax UserAdmin internally casts the Role to a 
org.ops4j.pax.useradmin.service.internal.RoleImpl
+                    Map<String, Object> properties = 
toMap(internalRole.getProperties());
+                    Map<String, Object> credentials = toMap(((FSUser) 
internalRole).getCredentials());
+                    Role role = null;
+                    if (internalRole.getType() == Role.USER) {                 
      
+                        role = 
userAdminFactory.createUser(internalRole.getName(), properties, credentials);
+                    } else if (internalRole.getType() == Role.GROUP) {
+                        role = 
userAdminFactory.createGroup(internalRole.getName(), properties, credentials);
+                    }
+                   
+                    matchingRoles.add(role);
                 }
             }
         }
@@ -250,7 +260,21 @@
         }
         return matchingRoles;
     }
-
+
+    private Map<String, Object> toMap(Dictionary<?,?> dic) {
+        if (dic == null) {
+            return null;
+        }
+        Map<String, Object> map = new HashMap<String, Object>();
+        Enumeration<?> iter = dic.keys();
+        while (iter.hasMoreElements()) {
+            Object key = iter.nextElement();
+            Object value = dic.get(key);
+            map.put(key.toString(), value);
+        }
+        return map;
+    }
+    
     public Collection<Role> getMembers(final UserAdminFactory 
userAdminFactory, final Group group)
     throws StorageException {
         checkState();
_______________________________________________
Amdatu-commits mailing list
[email protected]
http://lists.amdatu.org/mailman/listinfo/amdatu-commits

Reply via email to