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