X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=security%2Fimpl%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fusermgt%2FInMemoryGroupSet.java;h=ce2d7b8b1206ee2cf456e4fc62ade5c5fb42954b;hb=96c8961955a306314dfe0cf9ca192252de39fc1c;hp=609b114c5966de866414944f86cc525210caa2c4;hpb=4565fa62b5e77ce0ffbac381bc0ef1813da94af7;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..ce2d7b8b 100644 --- a/security/impl/src/main/java/org/wamblee/usermgt/InMemoryGroupSet.java +++ b/security/impl/src/main/java/org/wamblee/usermgt/InMemoryGroupSet.java @@ -12,11 +12,14 @@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - */ + */ 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); }