X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=security%2Fimpl%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fusermgt%2FInMemoryGroupSet.java;h=227e8853bca8b980e8821c571eb268da5c247dc9;hb=476ab93a6ea0c57bbcc75594886de985ea8f04c2;hp=609b114c5966de866414944f86cc525210caa2c4;hpb=c03650620dc44ee4a122023fa9951b6a7b97b530;p=utils diff --git a/security/impl/src/main/java/org/wamblee/usermgt/InMemoryGroupSet.java b/security/impl/src/main/java/org/wamblee/usermgt/InMemoryGroupSet.java index 609b114c..227e8853 100644 --- a/security/impl/src/main/java/org/wamblee/usermgt/InMemoryGroupSet.java +++ b/security/impl/src/main/java/org/wamblee/usermgt/InMemoryGroupSet.java @@ -15,8 +15,11 @@ */ package org.wamblee.usermgt; +import java.util.ArrayList; +import java.util.List; import java.util.Set; import java.util.TreeSet; +import java.util.concurrent.atomic.AtomicLong; /** * In-memory group set implementation. @@ -24,16 +27,19 @@ import java.util.TreeSet; * @author Erik Brakkee */ public class InMemoryGroupSet implements GroupSet { + + private AtomicLong pk = new AtomicLong(1l); + /** * Groups. */ - private Set groups; + private List groups; /** * Constructs an empty group set. */ public InMemoryGroupSet() { - groups = new TreeSet(); + groups = new ArrayList(); } /* @@ -43,8 +49,13 @@ public class InMemoryGroupSet implements GroupSet { * org.wamblee.usermgt.GroupSet#groupModified(org.wamblee.usermgt.Group) */ public void groupModified(Group aGroup) { - groups.remove(aGroup); - groups.add(aGroup); + for (int i = 0; i < groups.size(); i++) { + if (groups.get(i).getPrimaryKey().equals(aGroup.getPrimaryKey())) { + groups.remove(i); + groups.add(aGroup); + return; + } + } } /* @@ -55,7 +66,7 @@ public class InMemoryGroupSet implements GroupSet { public Group find(String aName) { for (Group group : groups) { if (group.getName().equals(aName)) { - return new Group(group); + return group; } } @@ -77,6 +88,10 @@ public class InMemoryGroupSet implements GroupSet { * @see org.wamblee.usermgt.GroupSet#add(org.wamblee.usermgt.Group) */ public boolean add(Group aGroup) { + aGroup.setPrimaryKey(pk.getAndIncrement()); + if ( find(aGroup.getName()) != null ) { + return false; + } return groups.add(aGroup); }