From 16a0085e760db3cb4ee9e32162ada46cbfe344cd Mon Sep 17 00:00:00 2001 From: Rob Austin Date: Thu, 24 Jul 2014 17:29:45 +0100 Subject: [PATCH] HCOLL-119 removed the use of " public SharedHashMap create(File file, Class kClass, Class vClass) " --- .../collections/ConcurrentHashMap.java | 6 ++- .../openhft/collections/VanillaSharedMap.java | 39 ++++++++++--------- .../chronicle/map/ChronicleMap8Test.java | 1 + 3 files changed, 26 insertions(+), 20 deletions(-) diff --git a/src/main/java/net/openhft/collections/ConcurrentHashMap.java b/src/main/java/net/openhft/collections/ConcurrentHashMap.java index aa9266b5b..85c70a552 100644 --- a/src/main/java/net/openhft/collections/ConcurrentHashMap.java +++ b/src/main/java/net/openhft/collections/ConcurrentHashMap.java @@ -1128,7 +1128,7 @@ public abstract class ConcurrentHashMap extends AbstractMap * * @return a string representation of this map */ - public String toString() { + /*public String toString() { Node[] t; int f = (t = table) == null ? 0 : t.length; Traverser it = new Traverser(t, f, 0, f); @@ -1148,6 +1148,10 @@ public abstract class ConcurrentHashMap extends AbstractMap } } return sb.append('}').toString(); + } */ + + public String toString() { + return super.toString(); } /** diff --git a/src/main/java/net/openhft/collections/VanillaSharedMap.java b/src/main/java/net/openhft/collections/VanillaSharedMap.java index 4e11623e6..165991d2b 100644 --- a/src/main/java/net/openhft/collections/VanillaSharedMap.java +++ b/src/main/java/net/openhft/collections/VanillaSharedMap.java @@ -315,7 +315,7 @@ abstract class AbstractVanillaSharedMap extends net.openhft.collections.Co * A view of a ConcurrentHashMap as a {@link Set} of (key, value) entries. This class cannot be directly * instantiated. See {@link #entrySet()}. */ - static final class EntrySetView extends CollectionView> + final class EntrySetView extends CollectionView> implements Set>, java.io.Serializable { private static final long serialVersionUID = 2249069246763182397L; @@ -346,7 +346,7 @@ abstract class AbstractVanillaSharedMap extends net.openhft.collections.Co * @return an iterator over the entries of the backing map */ public Iterator> iterator() { - return new EntryIterator(map); + return new EntryIterator(); } public boolean add(Entry e) { @@ -606,7 +606,7 @@ abstract class AbstractVanillaSharedMap extends net.openhft.collections.Co public void forEach(BiConsumer action) { if (action == null) throw new NullPointerException(); - final EntryIterator entryIterator = new EntryIterator(this); + final EntryIterator entryIterator = new EntryIterator(); for (Entry e = entryIterator.next(); entryIterator.hasNext(); e = entryIterator.next()) { action.accept(e.getKey(), e.getValue()); @@ -1626,8 +1626,8 @@ abstract class AbstractVanillaSharedMap extends net.openhft.collections.Co */ @Override public V put(K key, V value) { - super.put(key, value); - return putVal(key, value, true); + return super.put(key, value); + // return putVal(key, value, true); } @@ -2699,19 +2699,16 @@ abstract class AbstractVanillaSharedMap extends net.openhft.collections.Co } } - static final class EntryIterator implements Iterator>, IntIntMultiMap.EntryConsumer { + final class EntryIterator implements Iterator>, IntIntMultiMap.EntryConsumer { - private final AbstractVanillaSharedMap map; - private int segmentIndex; + int segmentIndex = segments.length; Entry nextEntry, lastReturned; Deque segmentPositions = new ArrayDeque(); //todo: replace with a more efficient, auto resizing int[] - EntryIterator(AbstractVanillaSharedMap map) { + EntryIterator() { nextEntry = nextSegmentEntry(); - this.map = map; - segmentIndex = map.segments.length; } public boolean hasNext() { @@ -2720,7 +2717,7 @@ abstract class AbstractVanillaSharedMap extends net.openhft.collections.Co public void remove() { if (lastReturned == null) throw new IllegalStateException(); - map.remove(lastReturned.getKey()); + AbstractVanillaSharedMap.this.remove(lastReturned.getKey()); lastReturned = null; } @@ -2733,22 +2730,25 @@ abstract class AbstractVanillaSharedMap extends net.openhft.collections.Co return e; } + + Entry nextSegmentEntry() { while (segmentIndex >= 0) { if (segmentPositions.isEmpty()) { switchToNextSegment(); } else { - map.segments[segmentIndex].lock(); + final Segment segment = segments[segmentIndex]; + segment.lock(); try { while (!segmentPositions.isEmpty()) { - final Entry entry = (Entry) map.segments[segmentIndex].getEntry(segmentPositions.removeFirst()); + final Entry entry = (Entry) segment.getEntry(segmentPositions.removeFirst()); if (entry != null) { return entry; } } } finally { - map.segments[segmentIndex].unlock(); + segment.unlock(); } } } @@ -2760,11 +2760,12 @@ abstract class AbstractVanillaSharedMap extends net.openhft.collections.Co segmentIndex--; if (segmentIndex >= 0) { - map.segments[segmentIndex].lock(); + final Segment segment = segments[segmentIndex]; + segment.lock(); try { - map.segments[segmentIndex].visit(this); + segment.visit(this); } finally { - map.segments[segmentIndex].unlock(); + segment.unlock(); } } } @@ -2777,7 +2778,7 @@ abstract class AbstractVanillaSharedMap extends net.openhft.collections.Co final class EntrySet extends AbstractSet> { public Iterator> iterator() { - return new EntryIterator(AbstractVanillaSharedMap.this); + return new EntryIterator(); } public boolean contains(Object o) { diff --git a/src/test/java/net/openhft/chronicle/map/ChronicleMap8Test.java b/src/test/java/net/openhft/chronicle/map/ChronicleMap8Test.java index 8ec86420c..a5363f5d6 100644 --- a/src/test/java/net/openhft/chronicle/map/ChronicleMap8Test.java +++ b/src/test/java/net/openhft/chronicle/map/ChronicleMap8Test.java @@ -99,6 +99,7 @@ public class ChronicleMap8Test extends JSR166TestCase { map.put(three, "C"); map.put(four, "D"); map.put(five, "E"); + System.out.println(map.toString()); final boolean empty = map.isEmpty(); assertFalse(empty); assertEquals(5, map.size());