Author: bdekruijff at gmail.com
Date: Thu Jan 13 19:58:35 2011
New Revision: 626

Log:
AMDATU-207 refactorred useradminstore-fs to use fsstorage lib

Added:
   
trunk/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/internal/FSRoleStore.java
      - copied, changed from r622, 
/trunk/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/internal/FSRoleStorage.java
Removed:
   
trunk/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/internal/FSRoleNameList.java
   
trunk/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/internal/FSUtil.java
Modified:
   trunk/amdatu-core/useradminstore-fs/pom.xml
   
trunk/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/internal/FSGroup.java
   
trunk/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/internal/FSRole.java
   
trunk/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/internal/FSRoleStorage.java
   
trunk/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/internal/FSUser.java
   
trunk/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/service/FSUserAdminStorageProvider.java
   
trunk/amdatu-core/useradminstore-fs/src/test/java/org/amdatu/core/useradminstore/fs/osgi/FSUserAdminStorageProviderActivatorTest.java
   
trunk/amdatu-core/useradminstore-fs/src/test/java/org/amdatu/core/useradminstore/fs/service/mock/MockGroup.java

Modified: trunk/amdatu-core/useradminstore-fs/pom.xml
==============================================================================
--- trunk/amdatu-core/useradminstore-fs/pom.xml (original)
+++ trunk/amdatu-core/useradminstore-fs/pom.xml Thu Jan 13 19:58:35 2011
@@ -15,6 +15,12 @@
 
   <dependencies>
     <dependency>
+      <groupId>org.amdatu.libraries</groupId>
+      <artifactId>fsstorage</artifactId>
+      <version>${platform.version}</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
       <groupId>org.ops4j.pax.useradmin</groupId>
       <artifactId>pax-useradmin-service</artifactId>
       <scope>provided</scope>
@@ -30,6 +36,7 @@
           <instructions>
             
<Bundle-Activator>org.amdatu.core.useradminstore.fs.osgi.FSUserAdminStorageProviderActivator</Bundle-Activator>
             
<Bundle-SymbolicName>org.amdatu.core.useradminstore-fs</Bundle-SymbolicName>
+            <Embed-Dependency>*;scope=compile</Embed-Dependency>
           </instructions>
         </configuration>
       </plugin>

Modified: 
trunk/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/internal/FSGroup.java
==============================================================================
--- 
trunk/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/internal/FSGroup.java
   (original)
+++ 
trunk/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/internal/FSGroup.java
   Thu Jan 13 19:58:35 2011
@@ -31,7 +31,6 @@
 
     public FSGroup(final Group group) {
         super(group);
-        m_type = Role.GROUP;
         Role[] members = group.getMembers();
         if (m_members == null) {
             m_members = new HashMap<String, Role>();
@@ -54,7 +53,11 @@
 
     public FSGroup(final String name, final Dictionary properties, final 
Dictionary credentials) {
         super(name, properties, credentials);
-        m_type = Role.GROUP;
+    }
+
+    @Override
+    public int getType() {
+        return Role.GROUP;
     }
 
     public boolean addMember(Role role) {

Modified: 
trunk/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/internal/FSRole.java
==============================================================================
--- 
trunk/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/internal/FSRole.java
    (original)
+++ 
trunk/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/internal/FSRole.java
    Thu Jan 13 19:58:35 2011
@@ -19,14 +19,18 @@
 import java.util.Dictionary;
 import java.util.Hashtable;
 
+import org.amdatu.libraries.fsstorage.FSStoreEntity;
 import org.osgi.service.useradmin.Role;
 
-public abstract class FSRole implements Role {
+public abstract class FSRole implements Role, FSStoreEntity {
 
-    protected int m_type;
     protected String m_name;
     protected Dictionary m_properties;
 
+    public String getId() {
+        return m_name;
+    }
+
     public String getName() {
         return m_name;
     }
@@ -36,7 +40,7 @@
     }
 
     public int getType() {
-        return m_type;
+        return Role.ROLE;
     }
 
     public void setProperties(Dictionary dictionary) {

Modified: 
trunk/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/internal/FSRoleStorage.java
==============================================================================
--- 
trunk/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/internal/FSRoleStorage.java
     (original)
+++ 
trunk/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/internal/FSRoleStorage.java
     Thu Jan 13 19:58:35 2011
@@ -17,211 +17,22 @@
 package org.amdatu.core.useradminstore.fs.internal;
 
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
 import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.UnsupportedEncodingException;
-import java.util.Dictionary;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-import org.ops4j.pax.useradmin.service.spi.StorageException;
-import org.osgi.service.useradmin.Role;
-import org.osgi.service.useradmin.User;
-
-public final class FSRoleStorage {
-
-    private final File m_file;
-    private final Map<String, FSRole> m_roles;
-
-    public FSRoleStorage(final File file)
-        throws StorageException {
-        m_file = file;
-        m_roles = new HashMap<String, FSRole>();
-        try {
-            readRoles();
-        }
-        catch (IOException e) {
-            throw new StorageException(e.getMessage());
-        }
-    }
-
-    public void save() throws StorageException {
-        try {
-            writeRoles();
-        }
-        catch (IOException e) {
-            throw new StorageException(e.getMessage());
-        }
-    }
-
-    public FSRole getRole(final String roleName) {
-        return m_roles.get(roleName);
-    }
 
-    public FSRole addRole(final FSRole role) {
-        return m_roles.put(role.getName(), role);
-    }
-
-    public FSRole removeRole(final FSRole role) {
-        return m_roles.remove(role.getName());
-    }
-
-    private void readRoles() throws IOException {
-        if (m_file.exists()) {
-            FileInputStream fis = null;
-            ObjectInputStream ois = null;
-            try {
-                fis = new FileInputStream(m_file);
-                ois = new ObjectInputStream(fis);
-                final int numberOfUsers = ois.readInt();
-                for (int i = 0; i < numberOfUsers; i++) {
-                    FSRole role = readRole(ois);
-                    m_roles.put(role.getName(), role);
-                }
-            }
-            finally {
-                FSUtil.closeInputStreamsSafely(ois, fis);
-            }
-        }
-    }
+import org.amdatu.libraries.fsstorage.FSStorageBase;
 
-    private FSRole readRole(final ObjectInputStream ois) throws IOException,
-        UnsupportedEncodingException {
+public class FSRoleStorage extends FSStorageBase<FSRoleStore, FSRole> {
 
-        final int roleType = ois.readInt();
-        final String name = FSUtil.readString(ois);
-        final Dictionary properties = readDictionary(ois);
-        final Dictionary credentials = readDictionary(ois);
-
-        if (roleType == Role.USER) {
-            return new FSUser(name, properties, credentials);
-        }
-        else if (roleType == Role.GROUP) {
-            FSGroup group = new FSGroup(name, properties, credentials);
-            group.setMembers(readMembers(ois));
-            group.setRequiredMembers(readMembers(ois));
-            return group;
-        }
-        else {
-            throw new IllegalStateException("Deserialization error: illegal 
roletype " + roleType);
-        }
-    }
-
-    private List<FSRole> readMembers(final ObjectInputStream ois) throws 
IOException {
-        final int numberOfMembers = ois.readInt();
-        if (numberOfMembers == 0) {
-            return null;
-        }
-        final List<FSRole> members = new LinkedList<FSRole>();
-        for (int i = 0; i < numberOfMembers; i++) {
-            final int memberType = ois.readInt();
-            if (memberType == Role.USER) {
-                members.add(new FSUser(FSUtil.readString(ois), null, null));
-            }
-            else if (memberType == Role.GROUP) {
-                members.add(new FSGroup(FSUtil.readString(ois), null, null));
-            }
-            else {
-                throw new IllegalStateException("Deserialization error: 
illegal membertype " + memberType);
-            }
-        }
-        return members;
-    }
-
-    private Dictionary readDictionary(final ObjectInputStream ois) throws 
IOException {
-        final int numberOfEntries = ois.readInt();
-        if (numberOfEntries == 0) {
-            return null;
-        }
-        final Dictionary dictionary = new Hashtable();
-        for (int j = 0; j < numberOfEntries; j++) {
-            final String key = FSUtil.readString(ois);
-            final int type = ois.readInt();
-            switch (type) {
-                case 0:
-                    byte[] byteValue = FSUtil.readBytes(ois);
-                    dictionary.put(key, byteValue);
-                    break;
-                case 1:
-                    String stringValue = FSUtil.readString(ois);
-                    dictionary.put(key, stringValue);
-                    break;
-                default:
-                    break;
-            }
-        }
-        return dictionary;
-    }
-
-    private void writeRoles() throws IOException {
-        FileOutputStream fos = null;
-        ObjectOutputStream oos = null;
-        try {
-            fos = new FileOutputStream(m_file);
-            oos = new ObjectOutputStream(fos);
-            oos.writeInt(m_roles.size());
-            for (FSRole role : m_roles.values()) {
-                writeRole(oos, role);
-            }
-            oos.flush();
-        }
-        finally {
-            FSUtil.closeOutputStreamsSafely(oos, fos);
-        }
-    }
-
-    private void writeRole(ObjectOutputStream oos, FSRole role) throws 
UnsupportedEncodingException,
-        IOException {
-        oos.writeInt(role.getType());
-        FSUtil.writeString(oos, role.getName());
-        writeDictionary(oos, role.getProperties());
-        writeDictionary(oos, ((User) role).getCredentials());
-        if (role.getType() == Role.GROUP) {
-            writeMembers(oos, ((FSGroup) role).getMembers());
-            writeMembers(oos, ((FSGroup) role).getRequiredMembers());
-        }
-    }
+    private static final String ENTITYLIST_FILENAME = "roleNameList.ser";
+    private static final String STORAGEFILE_PREFIX = "t_";
+    private static final String STORAGEFILE_POSTFIX = ".ser";
 
-    private void writeMembers(final ObjectOutputStream oos, final Role[] 
members) throws IOException {
-        if (members == null) {
-            oos.writeInt(0);
-        }
-        else {
-            oos.writeInt(members.length);
-            for (Role member : members) {
-                oos.writeInt(member.getType());
-                FSUtil.writeString(oos, member.getName());
-            }
-        }
+    public FSRoleStorage(File dataDirectory) throws IOException {
+        super(dataDirectory, ENTITYLIST_FILENAME, STORAGEFILE_PREFIX, 
STORAGEFILE_POSTFIX);
     }
 
-    private void writeDictionary(final ObjectOutputStream oos, final 
Dictionary dictionary) throws IOException {
-        if (dictionary == null) {
-            oos.writeInt(0);
-        }
-        else {
-            oos.writeInt(dictionary.size());
-            Enumeration keys = dictionary.keys();
-            while (keys.hasMoreElements()) {
-                String key = (String) keys.nextElement();
-                FSUtil.writeString(oos, key);
-                Object value = dictionary.get(key);
-                if (value instanceof byte[]) {
-                    oos.writeInt(0);
-                    FSUtil.writeBytes(oos, (byte[]) value);
-                }
-                else if (value instanceof String) {
-                    oos.writeInt(1);
-                    FSUtil.writeString(oos, (String) value);
-                }
-            }
-        }
+    @Override
+    protected FSRoleStore newFSStore(File file) throws IOException {
+        return new FSRoleStore(file);
     }
-}
+}
\ No newline at end of file

Copied: 
trunk/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/internal/FSRoleStore.java
 (from r622, 
/trunk/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/internal/FSRoleStorage.java)
==============================================================================
--- 
/trunk/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/internal/FSRoleStorage.java
    (original)
+++ 
trunk/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/internal/FSRoleStore.java
       Thu Jan 13 19:58:35 2011
@@ -17,88 +17,32 @@
 package org.amdatu.core.useradminstore.fs.internal;
 
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.io.UnsupportedEncodingException;
 import java.util.Dictionary;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Hashtable;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.Map;
 
-import org.ops4j.pax.useradmin.service.spi.StorageException;
+import org.amdatu.libraries.fsstorage.FSStorageUtil;
+import org.amdatu.libraries.fsstorage.FSStoreBase;
+import org.osgi.service.useradmin.Group;
 import org.osgi.service.useradmin.Role;
 import org.osgi.service.useradmin.User;
 
-public final class FSRoleStorage {
+public final class FSRoleStore extends FSStoreBase<FSRole> {
 
-    private final File m_file;
-    private final Map<String, FSRole> m_roles;
-
-    public FSRoleStorage(final File file)
-        throws StorageException {
-        m_file = file;
-        m_roles = new HashMap<String, FSRole>();
-        try {
-            readRoles();
-        }
-        catch (IOException e) {
-            throw new StorageException(e.getMessage());
-        }
-    }
-
-    public void save() throws StorageException {
-        try {
-            writeRoles();
-        }
-        catch (IOException e) {
-            throw new StorageException(e.getMessage());
-        }
-    }
-
-    public FSRole getRole(final String roleName) {
-        return m_roles.get(roleName);
-    }
-
-    public FSRole addRole(final FSRole role) {
-        return m_roles.put(role.getName(), role);
-    }
-
-    public FSRole removeRole(final FSRole role) {
-        return m_roles.remove(role.getName());
+    public FSRoleStore(File file) throws IOException {
+        super(file);
     }
 
-    private void readRoles() throws IOException {
-        if (m_file.exists()) {
-            FileInputStream fis = null;
-            ObjectInputStream ois = null;
-            try {
-                fis = new FileInputStream(m_file);
-                ois = new ObjectInputStream(fis);
-                final int numberOfUsers = ois.readInt();
-                for (int i = 0; i < numberOfUsers; i++) {
-                    FSRole role = readRole(ois);
-                    m_roles.put(role.getName(), role);
-                }
-            }
-            finally {
-                FSUtil.closeInputStreamsSafely(ois, fis);
-            }
-        }
-    }
-
-    private FSRole readRole(final ObjectInputStream ois) throws IOException,
+    protected FSRole readEntity(ObjectInputStream ois) throws IOException,
         UnsupportedEncodingException {
-
-        final int roleType = ois.readInt();
-        final String name = FSUtil.readString(ois);
-        final Dictionary properties = readDictionary(ois);
-        final Dictionary credentials = readDictionary(ois);
+        int roleType = ois.readInt();
+        String name = FSStorageUtil.readString(ois);
+        Dictionary<String, Object> properties = 
FSStorageUtil.readDictionary(ois);
+        Dictionary<String, Object> credentials = 
FSStorageUtil.readDictionary(ois);
 
         if (roleType == Role.USER) {
             return new FSUser(name, properties, credentials);
@@ -114,6 +58,18 @@
         }
     }
 
+    protected void writeEntity(ObjectOutputStream oos, FSRole role) throws 
UnsupportedEncodingException,
+        IOException {
+        oos.writeInt(role.getType());
+        FSStorageUtil.writeString(oos, role.getName());
+        FSStorageUtil.writeDictionary(oos, role.getProperties());
+        FSStorageUtil.writeDictionary(oos, ((User) role).getCredentials());
+        if (role.getType() == Role.GROUP) {
+            writeMembers(oos, ((Group) role).getMembers());
+            writeMembers(oos, ((Group) role).getRequiredMembers());
+        }
+    }
+
     private List<FSRole> readMembers(final ObjectInputStream ois) throws 
IOException {
         final int numberOfMembers = ois.readInt();
         if (numberOfMembers == 0) {
@@ -123,10 +79,10 @@
         for (int i = 0; i < numberOfMembers; i++) {
             final int memberType = ois.readInt();
             if (memberType == Role.USER) {
-                members.add(new FSUser(FSUtil.readString(ois), null, null));
+                members.add(new FSUser(FSStorageUtil.readString(ois), null, 
null));
             }
             else if (memberType == Role.GROUP) {
-                members.add(new FSGroup(FSUtil.readString(ois), null, null));
+                members.add(new FSGroup(FSStorageUtil.readString(ois), null, 
null));
             }
             else {
                 throw new IllegalStateException("Deserialization error: 
illegal membertype " + memberType);
@@ -135,60 +91,6 @@
         return members;
     }
 
-    private Dictionary readDictionary(final ObjectInputStream ois) throws 
IOException {
-        final int numberOfEntries = ois.readInt();
-        if (numberOfEntries == 0) {
-            return null;
-        }
-        final Dictionary dictionary = new Hashtable();
-        for (int j = 0; j < numberOfEntries; j++) {
-            final String key = FSUtil.readString(ois);
-            final int type = ois.readInt();
-            switch (type) {
-                case 0:
-                    byte[] byteValue = FSUtil.readBytes(ois);
-                    dictionary.put(key, byteValue);
-                    break;
-                case 1:
-                    String stringValue = FSUtil.readString(ois);
-                    dictionary.put(key, stringValue);
-                    break;
-                default:
-                    break;
-            }
-        }
-        return dictionary;
-    }
-
-    private void writeRoles() throws IOException {
-        FileOutputStream fos = null;
-        ObjectOutputStream oos = null;
-        try {
-            fos = new FileOutputStream(m_file);
-            oos = new ObjectOutputStream(fos);
-            oos.writeInt(m_roles.size());
-            for (FSRole role : m_roles.values()) {
-                writeRole(oos, role);
-            }
-            oos.flush();
-        }
-        finally {
-            FSUtil.closeOutputStreamsSafely(oos, fos);
-        }
-    }
-
-    private void writeRole(ObjectOutputStream oos, FSRole role) throws 
UnsupportedEncodingException,
-        IOException {
-        oos.writeInt(role.getType());
-        FSUtil.writeString(oos, role.getName());
-        writeDictionary(oos, role.getProperties());
-        writeDictionary(oos, ((User) role).getCredentials());
-        if (role.getType() == Role.GROUP) {
-            writeMembers(oos, ((FSGroup) role).getMembers());
-            writeMembers(oos, ((FSGroup) role).getRequiredMembers());
-        }
-    }
-
     private void writeMembers(final ObjectOutputStream oos, final Role[] 
members) throws IOException {
         if (members == null) {
             oos.writeInt(0);
@@ -197,30 +99,7 @@
             oos.writeInt(members.length);
             for (Role member : members) {
                 oos.writeInt(member.getType());
-                FSUtil.writeString(oos, member.getName());
-            }
-        }
-    }
-
-    private void writeDictionary(final ObjectOutputStream oos, final 
Dictionary dictionary) throws IOException {
-        if (dictionary == null) {
-            oos.writeInt(0);
-        }
-        else {
-            oos.writeInt(dictionary.size());
-            Enumeration keys = dictionary.keys();
-            while (keys.hasMoreElements()) {
-                String key = (String) keys.nextElement();
-                FSUtil.writeString(oos, key);
-                Object value = dictionary.get(key);
-                if (value instanceof byte[]) {
-                    oos.writeInt(0);
-                    FSUtil.writeBytes(oos, (byte[]) value);
-                }
-                else if (value instanceof String) {
-                    oos.writeInt(1);
-                    FSUtil.writeString(oos, (String) value);
-                }
+                FSStorageUtil.writeString(oos, member.getName());
             }
         }
     }

Modified: 
trunk/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/internal/FSUser.java
==============================================================================
--- 
trunk/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/internal/FSUser.java
    (original)
+++ 
trunk/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/internal/FSUser.java
    Thu Jan 13 19:58:35 2011
@@ -27,19 +27,22 @@
     private Dictionary m_credentials;
 
     public FSUser(final User user) {
-        m_type = Role.USER;
         m_name = user.getName();
         m_properties = user.getProperties();
         m_credentials = user.getCredentials();
     }
 
     public FSUser(final String name, final Dictionary properties, final 
Dictionary credentials) {
-        m_type = Role.USER;
         m_name = name;
         m_properties = properties;
         m_credentials = credentials;
     }
 
+    @Override
+    public int getType() {
+        return Role.USER;
+    }
+
     public Object getcredential(final String key) {
         if (m_credentials != null) {
             return m_credentials.get(key);

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
 Thu Jan 13 19:58:35 2011
@@ -1,6 +1,7 @@
 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;
@@ -13,7 +14,6 @@
 
 import org.amdatu.core.useradminstore.fs.internal.FSGroup;
 import org.amdatu.core.useradminstore.fs.internal.FSRole;
-import org.amdatu.core.useradminstore.fs.internal.FSRoleNameList;
 import org.amdatu.core.useradminstore.fs.internal.FSRoleStorage;
 import org.amdatu.core.useradminstore.fs.internal.FSUser;
 import org.ops4j.pax.useradmin.service.spi.StorageException;
@@ -37,75 +37,27 @@
     public static final String CONFIGURATION_PID = 
"org.amdatu.core.useradminstore-fs";
     public final static String DATA_DIRECTORY = "datadir";
 
-    // File naming constants
-    private static final String ENTITYLIST_FILENAME = "roleNameList.ser";
-    private static final String STORAGEFILE_PREFIX = "t_";
-    private static final String STORAGEFILE_POSTFIX = ".ser";
-
-    // DM injected (option)
     private volatile LogService m_logService;
-
-    // Storage directory
-    private File m_dataDirectory;
-
-    // Collaborator
-    private FSRoleNameList m_roleNamelist;
-
-    /*
-     * Constructors
-     */
+    private FSRoleStorage m_storage;
 
     public FSUserAdminStorageProvider() throws StorageException {
     }
 
-    /*
-     * Accessor methods
-     */
-
-    public synchronized File getDataDirectory() {
-        return m_dataDirectory;
+    public FSRoleStorage getFSStorage() {
+        return m_storage;
     }
 
-    public synchronized void setDataDirectory(File dataDirectory) throws 
StorageException {
-        if (!dataDirectory.isAbsolute()) {
-            File userDirectory = new File(System.getProperty("user.dir"));
-            dataDirectory = new File(userDirectory, dataDirectory.getPath());
-        }
-        if (!((dataDirectory.exists() && dataDirectory.canRead() && 
dataDirectory.canWrite()) || dataDirectory
-            .mkdirs())) {
-            throw new StorageException("Unable to access data directory: "
-                + dataDirectory.getAbsolutePath());
-        }
-        m_dataDirectory = dataDirectory;
-        m_roleNamelist = new FSRoleNameList(new File(m_dataDirectory, 
ENTITYLIST_FILENAME));
-
-        if (m_logService != null)
-            m_logService.log(LogService.LOG_DEBUG, "Datadirectory set to: " + 
m_dataDirectory.getAbsolutePath());
-    }
-
-    /*
-     * DM Service lifecycle
-     */
-
     public synchronized void start() throws StorageException {
-        // by contract DM ConfigurationDependency contract dataDirectory has
-        // been set through the updated method.
         if (m_logService != null)
             m_logService.log(LogService.LOG_INFO, "Filesystem UserAdmin 
storage provider started");
     }
 
     public synchronized void stop() {
-        m_roleNamelist = null;
-        
         if (m_logService != null)
             m_logService.log(LogService.LOG_INFO, "Filesystem UserAdmin 
storage provider stopped");
     }
 
-    /*
-     * DM ManagedService
-     */
-
-    public synchronized void updated(Dictionary dictionary) throws 
ConfigurationException {
+    public synchronized void updated(Dictionary<String, Object> dictionary) 
throws ConfigurationException {
         if (dictionary != null) {
             String dataDirectoryName = (String) dictionary.get(DATA_DIRECTORY);
             if (dataDirectoryName == null || "".equals(dataDirectoryName)) {
@@ -121,204 +73,258 @@
         }
     }
 
+    public synchronized void setDataDirectory(File dataDirectory) throws 
StorageException {
+        if (!dataDirectory.isAbsolute()) {
+            File userDirectory = new File(System.getProperty("user.dir"));
+            dataDirectory = new File(userDirectory, dataDirectory.getPath());
+        }
+        if (!((dataDirectory.exists() && dataDirectory.canRead() && 
dataDirectory.canWrite()) || dataDirectory
+            .mkdirs())) {
+            throw new StorageException("Unable to access data directory: "
+                + dataDirectory.getAbsolutePath());
+        }
+        try {
+            m_storage = new FSRoleStorage(dataDirectory);
+        }
+        catch (IOException e) {
+            throw new StorageException(e.getMessage());
+        }
+        if (m_logService != null)
+            m_logService.log(LogService.LOG_DEBUG, "Datadirectory set to: "
+                + m_storage.getDataDirectory().getAbsolutePath());
+    }
+
     /*
      * PAX StorageProvider API
      */
 
-    public synchronized boolean addMember(final Group group, final Role role) 
throws StorageException {
-        final FSRoleStorage internalRoleFile = getStorageFile(group.getName());
-        final FSRole internalRole = internalRoleFile.getRole(group.getName());
-        if (internalRole != null && internalRole.getType() == Role.GROUP) {
-            ((FSGroup) internalRole).addMember(role);
-            internalRoleFile.save();
-            return true;
+    public boolean addMember(final Group group, final Role role) throws 
StorageException {
+        checkState();
+        try {
+            FSRole internalRole = m_storage.getEntity(group.getName());
+            if (internalRole != null && internalRole.getType() == Role.GROUP) {
+                ((FSGroup) internalRole).addMember(role);
+                m_storage.addEntity(internalRole);
+                return true;
+            }
+            return false;
+        }
+        catch (IOException e) {
+            throw new StorageException(e.getMessage());
         }
-        return false;
     }
 
-    public synchronized boolean addRequiredMember(Group group, Role role) 
throws StorageException {
-        final FSRoleStorage internalRoleFile = getStorageFile(group.getName());
-        final FSRole internalRole = internalRoleFile.getRole(group.getName());
-        if (internalRole != null && internalRole.getType() == Role.GROUP) {
-            ((FSGroup) internalRole).addRequiredMember(role);
-            internalRoleFile.save();
-            return true;
+    public boolean addRequiredMember(Group group, Role role) throws 
StorageException {
+        checkState();
+        try {
+            FSRole internalRole = m_storage.getEntity(group.getName());
+            if (internalRole != null && internalRole.getType() == Role.GROUP) {
+                ((FSGroup) internalRole).addRequiredMember(role);
+                m_storage.addEntity(internalRole);
+                return true;
+            }
+            return false;
+        }
+        catch (IOException e) {
+            throw new StorageException(e.getMessage());
         }
-        return false;
     }
 
-    public synchronized void clearRoleAttributes(final Role role) throws 
StorageException {
-        final FSRoleStorage internalRoleFile = getStorageFile(role.getName());
-        final FSRole internalRole = internalRoleFile.getRole(role.getName());
-        if (internalRole != null && internalRole.getProperties() != null) {
-            internalRole.setProperties(null);
-            internalRoleFile.save();
+    public void clearRoleAttributes(final Role role) throws StorageException {
+        checkState();
+        try {
+            FSRole internalRole = m_storage.getEntity(role.getName());
+            if (internalRole != null && internalRole.getProperties() != null) {
+                internalRole.setProperties(null);
+                m_storage.addEntity(internalRole);
+            }
+        }
+        catch (IOException e) {
+            throw new StorageException(e.getMessage());
         }
     }
 
-    public synchronized void clearUserCredentials(final User user) throws 
StorageException {
-        final FSRoleStorage internalRoleFile = getStorageFile(user.getName());
-        final FSRole internalRole = internalRoleFile.getRole(user.getName());
-        if (internalRole != null && internalRole.getType() == Role.USER
-            && ((FSUser) internalRole).getCredentials() != null) {
-            ((FSUser) internalRole).setCredentials(null);
-            internalRoleFile.save();
+    public void clearUserCredentials(final User user) throws StorageException {
+        checkState();
+        try {
+            FSRole internalRole = m_storage.getEntity(user.getName());
+            if (internalRole != null && internalRole.getType() == Role.USER
+                                && ((FSUser) internalRole).getCredentials() != 
null) {
+                ((FSUser) internalRole).setCredentials(null);
+                m_storage.addEntity(internalRole);
+            }
+        }
+        catch (IOException e) {
+            throw new StorageException(e.getMessage());
         }
     }
 
-    public synchronized Group createGroup(final UserAdminFactory 
userAdminFactory, final String groupName)
+    public Group createGroup(final UserAdminFactory userAdminFactory, final 
String groupName)
         throws StorageException {
-        // FIXME guard against overwrite?
+        checkState();
         final Group group = userAdminFactory.createGroup(groupName, null, 
null);
-        final FSRoleStorage internalRoleFile = getStorageFile(group.getName());
-        final FSRole storedRole = internalRoleFile.addRole(new FSGroup(group));
-        if (storedRole == null) {
-            m_roleNamelist.addRoleName(group.getName());
+        try {
+            m_storage.addEntity(new FSGroup(group));
+        }
+        catch (IOException e) {
+            throw new StorageException(e.getMessage());
         }
-        internalRoleFile.save();
         return group;
     }
 
-    public synchronized User createUser(final UserAdminFactory 
userAdminFactory, final String userName)
+    public User createUser(final UserAdminFactory userAdminFactory, final 
String userName)
         throws StorageException {
-        // FIXME guard against overwrite?
+        checkState();
         final User user = userAdminFactory.createUser(userName, null, null);
-        final FSRoleStorage internalRoleFile = getStorageFile(user.getName());
-        final FSRole storedRole = internalRoleFile.addRole(new FSUser(user));
-        if (storedRole == null) {
-            m_roleNamelist.addRoleName(user.getName());
+        try {
+            m_storage.addEntity(new FSUser(user));
+        }
+        catch (IOException e) {
+            throw new StorageException(e.getMessage());
         }
-        internalRoleFile.save();
         return user;
     }
 
     public boolean deleteRole(Role role) throws StorageException {
-        // FIXME ugly construct
-        final FSRoleStorage internalRoleFile = getStorageFile(role.getName());
-        final FSRole internalRole = internalRoleFile.getRole(role.getName());
-        if (internalRole != null) {
-            if (internalRole.getType() == Role.USER) {
-                internalRoleFile.removeRole(new FSUser((User) role));
-            }
-            else if (internalRole.getType() == Role.GROUP) {
-                internalRoleFile.removeRole(new FSGroup((Group) role));
-            }
-            m_roleNamelist.removeRoleName(role.getName());
-            internalRoleFile.save();
-            return true;
+        checkState();
+        try {
+            FSRole internalRole = m_storage.removeEntity(role.getName());
+            if (internalRole != null)
+                return true;
+            return false;
+        }
+        catch (IOException e) {
+            throw new StorageException(e.getMessage());
         }
-        return false;
     }
 
-    public synchronized Collection<Role> findRoles(final UserAdminFactory 
userAdminFactory, final String filterString)
+    public Collection<Role> findRoles(final UserAdminFactory userAdminFactory, 
final String filterString)
         throws StorageException {
+        checkState();
         List<Role> matchingRoles = new LinkedList<Role>();
         try {
+            List<FSRole> internalRoles = m_storage.getAll();
             Filter filter = FrameworkUtil.createFilter(filterString);
-            List<String> allRoleNames = m_roleNamelist.getAll();
-            for (String roleName : allRoleNames) {
-                Role role = getRole(userAdminFactory, roleName);
-                if (filter.match(role.getProperties())) {
-                    matchingRoles.add(role);
+            for (FSRole internalRole : internalRoles) {
+                if (filter.match(internalRole.getProperties())) {
+                    matchingRoles.add(internalRole);
                 }
             }
         }
         catch (InvalidSyntaxException e) {
             throw new StorageException(e.getMessage());
         }
+        catch (IOException e) {
+            throw new StorageException(e.getMessage());
+        }
         return matchingRoles;
     }
 
-    public synchronized Collection<Role> getMembers(final UserAdminFactory 
userAdminFactory, final Group group)
+    public Collection<Role> getMembers(final UserAdminFactory 
userAdminFactory, final Group group)
         throws StorageException {
-        final FSRoleStorage internalRoleFile = getStorageFile(group.getName());
-        final FSRole internalRole = internalRoleFile.getRole(group.getName());
-        if (internalRole != null && internalRole.getType() == Role.GROUP) {
-            Set<Role> members = new HashSet<Role>();
-            for (Role role : ((FSGroup) internalRole).getMembers()) {
-                if (role.getType() == Role.USER) {
-                    User newuser =
-                            userAdminFactory.createUser(role.getName(), 
dictionaryToMap(role.getProperties()),
-                                dictionaryToMap(((User) 
role).getCredentials()));
-                    members.add(newuser);
-                }
-                else if (role.getType() == Role.GROUP) {
-                    Group newgroup =
-                            userAdminFactory.createGroup(role.getName(), 
dictionaryToMap(role.getProperties()),
-                                dictionaryToMap(((Group) 
role).getCredentials()));
-                    members.add(newgroup);
+        checkState();
+        Set<Role> members = new HashSet<Role>();
+        try {
+            FSRole internalRole = m_storage.getEntity(group.getName());
+            if (internalRole != null && internalRole.getType() == Role.GROUP) {
+                for (Role role : ((FSGroup) internalRole).getMembers()) {
+                    if (role.getType() == Role.USER) {
+                        User newuser =
+                                    
userAdminFactory.createUser(role.getName(), 
dictionaryToMap(role.getProperties()),
+                                        dictionaryToMap(((User) 
role).getCredentials()));
+                        members.add(newuser);
+                    }
+                    else if (role.getType() == Role.GROUP) {
+                        Group newgroup =
+                                    
userAdminFactory.createGroup(role.getName(), 
dictionaryToMap(role.getProperties()),
+                                        dictionaryToMap(((Group) 
role).getCredentials()));
+                        members.add(newgroup);
+                    }
                 }
             }
-            return members;
         }
-        return new HashSet<Role>();
+        catch (IOException e) {
+            throw new StorageException(e.getMessage());
+        }
+        return members;
     }
 
-    public synchronized Collection<Role> getRequiredMembers(final 
UserAdminFactory userAdminFactory, final Group group)
+    public Collection<Role> getRequiredMembers(final UserAdminFactory 
userAdminFactory, final Group group)
         throws StorageException {
-        final FSRoleStorage internalRoleFile = getStorageFile(group.getName());
-        final FSRole internalRole = internalRoleFile.getRole(group.getName());
+        checkState();
         Set<Role> members = new HashSet<Role>();
-        if (internalRole != null && internalRole.getType() == Role.GROUP) {
-            for (Role role : ((FSGroup) internalRole).getRequiredMembers()) {
-                if (role.getType() == Role.USER) {
-                    User newuser =
-                            userAdminFactory.createUser(role.getName(), 
dictionaryToMap(role.getProperties()),
-                                dictionaryToMap(((User) 
role).getCredentials()));
-                    members.add(newuser);
-                }
-                else if (role.getType() == Role.GROUP) {
-
-                    Group newgroup = 
userAdminFactory.createGroup(internalRole.getName(),
-                        dictionaryToMap(internalRole.getProperties()),
-                        dictionaryToMap(((Group) 
internalRole).getCredentials()));
-                    for (Role member : ((FSGroup) internalRole).getMembers()) {
-                        newgroup.addMember(getRole(userAdminFactory, 
member.getName()));
+        try {
+            FSRole internalRole = m_storage.getEntity(group.getName());
+            if (internalRole != null && internalRole.getType() == Role.GROUP) {
+                for (Role role : ((FSGroup) 
internalRole).getRequiredMembers()) {
+                    if (role.getType() == Role.USER) {
+                        User newuser =
+                                    
userAdminFactory.createUser(role.getName(), 
dictionaryToMap(role.getProperties()),
+                                        dictionaryToMap(((User) 
role).getCredentials()));
+                        members.add(newuser);
                     }
-                    for (Role member : ((FSGroup) 
internalRole).getRequiredMembers()) {
-                        newgroup.addRequiredMember(getRole(userAdminFactory, 
member.getName()));
+                    else if (role.getType() == Role.GROUP) {
+
+                        Group newgroup = 
userAdminFactory.createGroup(internalRole.getName(),
+                                dictionaryToMap(internalRole.getProperties()),
+                                dictionaryToMap(((Group) 
internalRole).getCredentials()));
+                        for (Role member : ((FSGroup) 
internalRole).getMembers()) {
+                            newgroup.addMember(getRole(userAdminFactory, 
member.getName()));
+                        }
+                        for (Role member : ((FSGroup) 
internalRole).getRequiredMembers()) {
+                            
newgroup.addRequiredMember(getRole(userAdminFactory, member.getName()));
+                        }
+                        members.add(newgroup);
                     }
-                    members.add(newgroup);
                 }
             }
         }
+        catch (IOException e) {
+            throw new StorageException(e.getMessage());
+        }
         return members;
     }
 
-    public synchronized Role getRole(final UserAdminFactory userAdminFactory, 
final String roleName)
+    public Role getRole(final UserAdminFactory userAdminFactory, final String 
roleName)
         throws StorageException {
-        final FSRoleStorage internalRoleFile = getStorageFile(roleName);
-        final FSRole internalRole = internalRoleFile.getRole(roleName);
-        if (internalRole != null) {
-            if (internalRole.getType() == Role.USER) {
-                return userAdminFactory.createUser(internalRole.getName(),
-                        dictionaryToMap(internalRole.getProperties()),
-                        dictionaryToMap(((User) 
internalRole).getCredentials()));
-            }
-            else if (internalRole.getType() == Role.GROUP) {
-                Group newgroup = 
userAdminFactory.createGroup(internalRole.getName(),
-                    dictionaryToMap(internalRole.getProperties()),
-                    dictionaryToMap(((Group) internalRole).getCredentials()));
-                for (Role member : ((FSGroup) internalRole).getMembers()) {
-                    newgroup.addMember(getRole(userAdminFactory, 
member.getName()));
+        checkState();
+        try {
+            FSRole internalRole = m_storage.getEntity(roleName);
+            if (internalRole != null) {
+                if (internalRole.getType() == Role.USER) {
+                    return userAdminFactory.createUser(internalRole.getName(),
+                                dictionaryToMap(internalRole.getProperties()),
+                                dictionaryToMap(((User) 
internalRole).getCredentials()));
                 }
-                for (Role member : ((FSGroup) 
internalRole).getRequiredMembers()) {
-                    newgroup.addRequiredMember(getRole(userAdminFactory, 
member.getName()));
+                else if (internalRole.getType() == Role.GROUP) {
+                    Group newgroup = 
userAdminFactory.createGroup(internalRole.getName(),
+                            dictionaryToMap(internalRole.getProperties()),
+                            dictionaryToMap(((Group) 
internalRole).getCredentials()));
+                    for (Role member : ((FSGroup) internalRole).getMembers()) {
+                        newgroup.addMember(getRole(userAdminFactory, 
member.getName()));
+                    }
+                    for (Role member : ((FSGroup) 
internalRole).getRequiredMembers()) {
+                        newgroup.addRequiredMember(getRole(userAdminFactory, 
member.getName()));
+                    }
+                    return newgroup;
                 }
-                return newgroup;
             }
         }
+        catch (IOException e) {
+            throw new StorageException(e.getMessage());
+        }
         return null;
     }
 
-    public synchronized User getUser(final UserAdminFactory userAdminFactory, 
final String key, final String value)
+    public User getUser(final UserAdminFactory userAdminFactory, final String 
key, final String value)
         throws StorageException {
+        checkState();
         List<User> matchingUsers = new LinkedList<User>();
         try {
             Filter filter = FrameworkUtil.createFilter("(" + key + "=" + value 
+ ")");
-            List<String> allRoleNames = m_roleNamelist.getAll();
-            for (String roleName : allRoleNames) {
-                Role role = getRole(userAdminFactory, roleName);
+            List<FSRole> fsRoles = m_storage.getAll();
+            for (FSRole fsRole : fsRoles) {
+                Role role = getRole(userAdminFactory, fsRole.getId());
                 if (role.getType() == Role.USER && 
filter.match(role.getProperties())) {
                     matchingUsers.add((User) role);
                 }
@@ -327,73 +333,92 @@
         catch (InvalidSyntaxException e) {
             throw new StorageException(e.getMessage());
         }
+        catch (IOException e) {
+            throw new StorageException(e.getMessage());
+        }
         if (matchingUsers.size() == 1) {
             return matchingUsers.get(0);
         }
         return null;
     }
 
-    public synchronized boolean removeMember(final Group group, final Role 
role) throws StorageException {
-        final FSRoleStorage internalRoleFile = getStorageFile(group.getName());
-        final FSRole internalRole = internalRoleFile.getRole(group.getName());
-        if (internalRole != null && internalRole.getType() == Role.GROUP
-            && ((FSGroup) internalRole).removeMember(role)) {
-            internalRoleFile.save();
-            return true;
+    public boolean removeMember(final Group group, final Role role) throws 
StorageException {
+        checkState();
+        try {
+            FSRole internalRole = m_storage.getEntity(group.getName());
+            if (internalRole != null && internalRole.getType() == Role.GROUP
+                                && ((FSGroup) 
internalRole).removeMember(role)) {
+                m_storage.addEntity(internalRole);
+                return true;
+            }
+        }
+        catch (IOException e) {
+            throw new StorageException(e.getMessage());
+
         }
         return false;
     }
 
-    public synchronized void removeRoleAttribute(final Role role, final String 
key) throws StorageException {
-        final FSRoleStorage internalRoleFile = getStorageFile(role.getName());
-        final FSRole internalRole = internalRoleFile.getRole(role.getName());
-        if (internalRole != null) {
-            Object value = internalRole.getProperties().remove(key);
-            if (value != null) {
-                internalRoleFile.save();
+    public void removeRoleAttribute(final Role role, final String key) throws 
StorageException {
+        checkState();
+        try {
+            FSRole internalRole = m_storage.getEntity(role.getName());
+            if (internalRole != null) {
+                Object value = internalRole.getProperties().remove(key);
+                if (value != null) {
+                    m_storage.addEntity(internalRole);
+                }
             }
         }
+        catch (IOException e) {
+            throw new StorageException(e.getMessage());
+        }
     }
 
-    public synchronized void removeUserCredential(final User user, final 
String key) throws StorageException {
-        final FSRoleStorage internalRoleFile = getStorageFile(user.getName());
-        final FSRole internalRole = internalRoleFile.getRole(user.getName());
-        if (internalRole != null && internalRole.getType() == Role.USER) {
-            Object value = ((FSUser) internalRole).removeCredential(key);
-            if (value != null) {
-                internalRoleFile.save();
+    public void removeUserCredential(final User user, final String key) throws 
StorageException {
+        checkState();
+        try {
+            FSRole internalRole = m_storage.getEntity(user.getName());
+            if (internalRole != null && internalRole.getType() == Role.USER) {
+                Object value = ((FSUser) internalRole).removeCredential(key);
+                if (value != null) {
+                    m_storage.addEntity(internalRole);
+                }
             }
         }
+        catch (IOException e) {
+            throw new StorageException(e.getMessage());
+        }
     }
 
-    public synchronized void setRoleAttribute(final Role role, final String 
key, final Object value)
+    public void setRoleAttribute(final Role role, final String key, final 
Object value)
         throws StorageException {
-        final FSRoleStorage internalRoleFile = getStorageFile(role.getName());
-        final FSRole internalRole = internalRoleFile.getRole(role.getName());
-        if (internalRole != null) {
-            internalRole.setProperty(key, value);
-            internalRoleFile.save();
+        checkState();
+        try {
+            FSRole internalRole = m_storage.getEntity(role.getName());
+            if (internalRole != null) {
+                internalRole.setProperty(key, value);
+                m_storage.addEntity(internalRole);
+            }
+        }
+        catch (IOException e) {
+            throw new StorageException(e.getMessage());
         }
     }
 
-    public synchronized void setUserCredential(final User user, final String 
key, final Object value)
+    public void setUserCredential(final User user, final String key, final 
Object value)
         throws StorageException {
-        final FSRoleStorage internalRoleFile = getStorageFile(user.getName());
-        final FSRole internalRole = internalRoleFile.getRole(user.getName());
-        if (internalRole != null && internalRole.getType() == Role.USER) {
-            ((FSUser) internalRole).setCredential(key, value);
-            internalRoleFile.save();
+        checkState();
+        try {
+            FSRole internalRole = m_storage.getEntity(user.getName());
+            if (internalRole != null && internalRole.getType() == Role.USER) {
+                ((FSUser) internalRole).setCredential(key, value);
+                m_storage.addEntity(internalRole);
+            }
         }
-    }
-
-    private FSRoleStorage getStorageFile(final String entityId) throws 
StorageException {
-        final int hash = Math.abs(entityId.hashCode());
-        final String subdirName = "" + (hash % 50);
-        final File subdirFile = new File(m_dataDirectory, subdirName);
-        if (!subdirFile.exists()) {
-            subdirFile.mkdir();
+        catch (IOException e) {
+            throw new StorageException(e.getMessage());
         }
-        return new FSRoleStorage(new File(subdirFile, STORAGEFILE_PREFIX + 
hash + STORAGEFILE_POSTFIX));
     }
 
     private Map<String, Object> dictionaryToMap(final Dictionary<String, 
Object> dictionary) {
@@ -408,4 +433,10 @@
         }
         return map;
     }
+
+    private void checkState() throws StorageException {
+        if (m_storage == null)
+            throw new StorageException("Storage backend is not configured");
+    }
+
 }
\ No newline at end of file

Modified: 
trunk/amdatu-core/useradminstore-fs/src/test/java/org/amdatu/core/useradminstore/fs/osgi/FSUserAdminStorageProviderActivatorTest.java
==============================================================================
--- 
trunk/amdatu-core/useradminstore-fs/src/test/java/org/amdatu/core/useradminstore/fs/osgi/FSUserAdminStorageProviderActivatorTest.java
       (original)
+++ 
trunk/amdatu-core/useradminstore-fs/src/test/java/org/amdatu/core/useradminstore/fs/osgi/FSUserAdminStorageProviderActivatorTest.java
       Thu Jan 13 19:58:35 2011
@@ -196,9 +196,10 @@
         provider.createUser(new MockUserAdminFactory(), "Bram");
 
         // assert that the correct storage directory was actually used
-        Assert.assertEquals(((FSUserAdminStorageProvider) 
provider).getDataDirectory().getAbsolutePath(),
+        Assert.assertEquals(
+            ((FSUserAdminStorageProvider) 
provider).getFSStorage().getDataDirectory().getAbsolutePath(),
             absolutebundleStorageDirectory.getAbsolutePath());
-        String[] files = ((FSUserAdminStorageProvider) 
provider).getDataDirectory().list();
+        String[] files = ((FSUserAdminStorageProvider) 
provider).getFSStorage().getDataDirectory().list();
         Assert.assertTrue(files.length > 0);
 
         // checkerdiecheck

Modified: 
trunk/amdatu-core/useradminstore-fs/src/test/java/org/amdatu/core/useradminstore/fs/service/mock/MockGroup.java
==============================================================================
--- 
trunk/amdatu-core/useradminstore-fs/src/test/java/org/amdatu/core/useradminstore/fs/service/mock/MockGroup.java
     (original)
+++ 
trunk/amdatu-core/useradminstore-fs/src/test/java/org/amdatu/core/useradminstore/fs/service/mock/MockGroup.java
     Thu Jan 13 19:58:35 2011
@@ -32,6 +32,11 @@
         super(name, properties, credentials);
     }
 
+    @Override
+    public int getType() {
+        return Role.GROUP;
+    }
+
     public boolean addMember(Role role) {
         if (m_members == null) {
             m_members = new HashSet<Role>();

Reply via email to