summaryrefslogtreecommitdiff
path: root/qpid/java/broker-core/src
diff options
context:
space:
mode:
authorAlex Rudyy <orudyy@apache.org>2013-10-05 00:28:57 +0000
committerAlex Rudyy <orudyy@apache.org>2013-10-05 00:28:57 +0000
commit0dcd7fe71b5376b4ab569623080262be29491343 (patch)
tree30c5bca50158dd733ff1b45c41b8ff6ac6048ecb /qpid/java/broker-core/src
parent4a8cda9d14fbe042cb8d4ca487c6972fd1173e19 (diff)
downloadqpid-python-0dcd7fe71b5376b4ab569623080262be29491343.tar.gz
QPID-5138: Change preferences provider to allow deletion of preferences for multiple users
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1529362 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/broker-core/src')
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/PreferencesProvider.java8
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/User.java2
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java9
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProvider.java22
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProviderTest.java29
5 files changed, 52 insertions, 18 deletions
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/PreferencesProvider.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/PreferencesProvider.java
index 96d02b2ef6..fadd036a58 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/PreferencesProvider.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/PreferencesProvider.java
@@ -69,11 +69,11 @@ public interface PreferencesProvider extends ConfiguredObject
Map<String, Object> setPreferences(String userId, Map<String, Object> preferences);
/**
- * Delete preferences for a given user ID
- * @param userId user ID to delete preferences for
- * @return user preferences before the deletion
+ * Delete preferences for given user IDs
+ * @param userIDs user IDs to delete preferences for
+ * @return user an array with user IDs having preferences deleted
*/
- Map<String, Object> deletePreferences(String userId);
+ String[] deletePreferences(String... userIDs);
/**
* Returns set of the user IDs having preferences set
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/User.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/User.java
index f9d6f17ffd..cf1a688634 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/User.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/User.java
@@ -61,5 +61,5 @@ public interface User extends ConfiguredObject
public Map<String, Object> setPreferences(Map<String, Object> preferences);
- public Map<String, Object> replacePreferences(Map<String, Object> newPreferences);
+ public boolean deletePreferences();
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java
index bb734ba5bd..ee2cd6a5fc 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java
@@ -803,16 +803,15 @@ public abstract class AuthenticationProviderAdapter<T extends AuthenticationMana
}
@Override
- public Map<String, Object> replacePreferences(Map<String, Object> newPreferences)
+ public boolean deletePreferences()
{
PreferencesProvider preferencesProvider = getPreferencesProvider();
if (preferencesProvider == null)
{
- return null;
+ return false;
}
- Map<String, Object> preferences = preferencesProvider.deletePreferences(this.getName());
- preferencesProvider.setPreferences(this.getName(), newPreferences);
- return preferences;
+ String[] deleted = preferencesProvider.deletePreferences(this.getName());
+ return deleted.length == 1;
}
private PreferencesProvider getPreferencesProvider()
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProvider.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProvider.java
index 365393ee8d..39f0017fc3 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProvider.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProvider.java
@@ -35,6 +35,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
@@ -301,9 +302,9 @@ public class FileSystemPreferencesProvider extends AbstractAdapter implements Pr
}
@Override
- public Map<String, Object> deletePreferences(String userId)
+ public String[] deletePreferences(String... userIDs)
{
- return _store.deletePreferences(userId);
+ return _store.deletePreferences(userIDs);
}
@Override
@@ -566,19 +567,26 @@ public class FileSystemPreferencesProvider extends AbstractAdapter implements Pr
return userPreferences;
}
- public Map<String, Object> deletePreferences(String userId)
+ public String[] deletePreferences(String... userIDs)
{
checkStoreOpened();
- Map<String, Object> userPreferences = null;
+ Set<String> deletedUsers = new HashSet<String>();
synchronized (_preferences)
{
- if (_preferences.containsKey(userId))
+ for (String id : userIDs)
+ {
+ if (_preferences.containsKey(id))
+ {
+ _preferences.remove(id);
+ deletedUsers.add(id);
+ }
+ }
+ if (!deletedUsers.isEmpty())
{
- userPreferences = _preferences.remove(userId);
save();
}
}
- return userPreferences;
+ return deletedUsers.toArray(new String[deletedUsers.size()]);
}
public Set<String> listUserIDs()
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProviderTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProviderTest.java
index aebea294d8..8b0847e0d2 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProviderTest.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProviderTest.java
@@ -210,7 +210,7 @@ public class FileSystemPreferencesProviderTest extends QpidTestCase
String user3 = "user3";
Map<String, Object> preferences3 = _preferencesProvider.getPreferences(user3);
- assertTrue("No preference found for user3", preferences3.isEmpty());
+ assertTrue("Unexpected preferences found for user3", preferences3.isEmpty());
}
public void testDeletePrefernces()
@@ -218,6 +218,9 @@ public class FileSystemPreferencesProviderTest extends QpidTestCase
_preferencesProvider = createPreferencesProvider();
_preferencesProvider.setDesiredState(State.INITIALISING, State.ACTIVE);
+ assertUser1Preferences(_preferencesProvider.getPreferences(_user1));
+ assertUser2Preferences(_preferencesProvider.getPreferences(_user2));
+
_preferencesProvider.deletePreferences(_user1);
_preferencesProvider.setDesiredState(State.ACTIVE, State.STOPPED);
@@ -231,6 +234,30 @@ public class FileSystemPreferencesProviderTest extends QpidTestCase
String user3 = "user3";
Map<String, Object> preferences3 = _preferencesProvider.getPreferences(user3);
+ assertTrue("Unexpected preferences found for user3", preferences3.isEmpty());
+ }
+
+ public void testDeleteMultipleUsersPrefernces()
+ {
+ _preferencesProvider = createPreferencesProvider();
+ _preferencesProvider.setDesiredState(State.INITIALISING, State.ACTIVE);
+
+ assertUser1Preferences(_preferencesProvider.getPreferences(_user1));
+ assertUser2Preferences(_preferencesProvider.getPreferences(_user2));
+
+ _preferencesProvider.deletePreferences(_user1, _user2);
+ _preferencesProvider.setDesiredState(State.ACTIVE, State.STOPPED);
+
+ _preferencesProvider = createPreferencesProvider();
+ _preferencesProvider.setDesiredState(State.INITIALISING, State.ACTIVE);
+ Map<String, Object> preferences1 = _preferencesProvider.getPreferences(_user1);
+ assertTrue("Preferences should not be set for user 1", preferences1.isEmpty());
+
+ Map<String, Object> preferences2 = _preferencesProvider.getPreferences(_user2);
+ assertTrue("Preferences should not be set for user 2", preferences2.isEmpty());
+
+ String user3 = "user3";
+ Map<String, Object> preferences3 = _preferencesProvider.getPreferences(user3);
assertTrue("No preference found for user3", preferences3.isEmpty());
}