You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by tr...@apache.org on 2007/08/17 14:13:43 UTC
svn commit: r567034 - in
/mina/trunk/core/src/main/java/org/apache/mina/util: ConcurrentHashSet.java
MapBackedSet.java
Author: trustin
Date: Fri Aug 17 05:13:42 2007
New Revision: 567034
URL: http://svn.apache.org/viewvc?view=rev&rev=567034
Log:
* Fixed wrong add() implementation of MapBackedSet
* Overrided MapBackedSet.add() in ConcurrentHashSet for perfect atomicity
Modified:
mina/trunk/core/src/main/java/org/apache/mina/util/ConcurrentHashSet.java
mina/trunk/core/src/main/java/org/apache/mina/util/MapBackedSet.java
Modified: mina/trunk/core/src/main/java/org/apache/mina/util/ConcurrentHashSet.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/util/ConcurrentHashSet.java?view=diff&rev=567034&r1=567033&r2=567034
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/util/ConcurrentHashSet.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/util/ConcurrentHashSet.java Fri Aug 17 05:13:42 2007
@@ -22,6 +22,7 @@
import java.util.Collection;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
/**
* A {@link ConcurrentHashMap}-backed {@link Set}.
@@ -36,5 +37,10 @@
public ConcurrentHashSet(Collection<E> c) {
super(new ConcurrentHashMap<E, Boolean>(), c);
+ }
+
+ @Override
+ public boolean add(E o) {
+ return ((ConcurrentMap<E, Boolean>) map).putIfAbsent(o, Boolean.TRUE);
}
}
Modified: mina/trunk/core/src/main/java/org/apache/mina/util/MapBackedSet.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/util/MapBackedSet.java?view=diff&rev=567034&r1=567033&r2=567034
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/util/MapBackedSet.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/util/MapBackedSet.java Fri Aug 17 05:13:42 2007
@@ -32,44 +32,49 @@
* @version $Rev$, $Date$
*/
public class MapBackedSet<E> extends AbstractSet<E> {
- private final Map<E, Boolean> delegate;
+ protected final Map<E, Boolean> map;
public MapBackedSet(Map<E, Boolean> map) {
- this.delegate = map;
+ this.map = map;
}
public MapBackedSet(Map<E, Boolean> map, Collection<E> c) {
- this. delegate = map;
+ this. map = map;
addAll(c);
}
@Override
public int size() {
- return delegate.size();
+ return map.size();
}
@Override
public boolean contains(Object o) {
- return delegate.containsKey(o);
+ return map.containsKey(o);
}
@Override
public Iterator<E> iterator() {
- return delegate.keySet().iterator();
+ return map.keySet().iterator();
}
@Override
- public boolean add(E arg0) {
- return delegate.put(arg0, Boolean.TRUE) == null;
+ public boolean add(E o) {
+ if (map.containsKey(o)) {
+ return false;
+ }
+
+ map.put(o, Boolean.TRUE);
+ return true;
}
@Override
- public boolean remove(Object arg0) {
- return delegate.remove(arg0) != null;
+ public boolean remove(Object o) {
+ return map.remove(o) != null;
}
@Override
public void clear() {
- delegate.clear();
+ map.clear();
}
}