diff options
| author | Alex Rudyy <orudyy@apache.org> | 2013-10-05 00:28:57 +0000 |
|---|---|---|
| committer | Alex Rudyy <orudyy@apache.org> | 2013-10-05 00:28:57 +0000 |
| commit | 0dcd7fe71b5376b4ab569623080262be29491343 (patch) | |
| tree | 30c5bca50158dd733ff1b45c41b8ff6ac6048ecb /qpid/java/broker-core/src | |
| parent | 4a8cda9d14fbe042cb8d4ca487c6972fd1173e19 (diff) | |
| download | qpid-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')
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()); } |
