diff --git a/core/src/main/java/io/atomix/PrimitiveTypes.java b/core/src/main/java/io/atomix/PrimitiveTypes.java index 01c2595be4..83d5769cca 100644 --- a/core/src/main/java/io/atomix/PrimitiveTypes.java +++ b/core/src/main/java/io/atomix/PrimitiveTypes.java @@ -107,11 +107,10 @@ public static ConsistentMapType map() { /** * Returns a new consistent tree map type. * - * @param the key type * @param the value type * @return a new consistent tree map type */ - public static ConsistentTreeMapType treeMap() { + public static ConsistentTreeMapType treeMap() { return ConsistentTreeMapType.instance(); } diff --git a/core/src/main/java/io/atomix/PrimitivesService.java b/core/src/main/java/io/atomix/PrimitivesService.java index 76d0b2b896..83cfb2c3f1 100644 --- a/core/src/main/java/io/atomix/PrimitivesService.java +++ b/core/src/main/java/io/atomix/PrimitivesService.java @@ -68,7 +68,7 @@ default DocumentTreeBuilder documentTreeBuilder(String name) { * @param value type * @return builder for a async consistent tree map */ - default ConsistentTreeMapBuilder consistentTreeMapBuilder(String name) { + default ConsistentTreeMapBuilder consistentTreeMapBuilder(String name) { return primitiveBuilder(name, PrimitiveTypes.treeMap()); } diff --git a/core/src/main/java/io/atomix/map/AsyncConsistentTreeMap.java b/core/src/main/java/io/atomix/map/AsyncConsistentTreeMap.java index a9e0b5c48d..98b91c7f9b 100644 --- a/core/src/main/java/io/atomix/map/AsyncConsistentTreeMap.java +++ b/core/src/main/java/io/atomix/map/AsyncConsistentTreeMap.java @@ -16,9 +16,9 @@ package io.atomix.map; -import io.atomix.primitive.PrimitiveType; import io.atomix.PrimitiveTypes; import io.atomix.map.impl.BlockingConsistentTreeMap; +import io.atomix.primitive.PrimitiveType; import io.atomix.utils.time.Versioned; import java.util.Map; @@ -29,7 +29,7 @@ /** * API for a distributed tree map implementation. */ -public interface AsyncConsistentTreeMap extends AsyncConsistentMap { +public interface AsyncConsistentTreeMap extends AsyncConsistentMap { @Override default PrimitiveType primitiveType() { @@ -41,14 +41,14 @@ default PrimitiveType primitiveType() { * * @return the key or null if none exist */ - CompletableFuture firstKey(); + CompletableFuture firstKey(); /** * Return the highest key in the map. * * @return the key or null if none exist */ - CompletableFuture lastKey(); + CompletableFuture lastKey(); /** * Returns the entry associated with the least key greater than or equal to @@ -57,7 +57,7 @@ default PrimitiveType primitiveType() { * @param key the key * @return the entry or null if no suitable key exists */ - CompletableFuture>> ceilingEntry(K key); + CompletableFuture>> ceilingEntry(String key); /** * Returns the entry associated with the greatest key less than or equal @@ -66,7 +66,7 @@ default PrimitiveType primitiveType() { * @param key the key * @return the entry or null if no suitable key exists */ - CompletableFuture>> floorEntry(K key); + CompletableFuture>> floorEntry(String key); /** * Returns the entry associated with the least key greater than key. @@ -74,7 +74,7 @@ default PrimitiveType primitiveType() { * @param key the key * @return the entry or null if no suitable key exists */ - CompletableFuture>> higherEntry(K key); + CompletableFuture>> higherEntry(String key); /** * Returns the entry associated with the largest key less than key. @@ -82,35 +82,35 @@ default PrimitiveType primitiveType() { * @param key the key * @return the entry or null if no suitable key exists */ - CompletableFuture>> lowerEntry(K key); + CompletableFuture>> lowerEntry(String key); /** * Return the entry associated with the lowest key in the map. * * @return the entry or null if none exist */ - CompletableFuture>> firstEntry(); + CompletableFuture>> firstEntry(); /** * Return the entry associated with the highest key in the map. * * @return the entry or null if none exist */ - CompletableFuture>> lastEntry(); + CompletableFuture>> lastEntry(); /** * Return and remove the entry associated with the lowest key. * * @return the entry or null if none exist */ - CompletableFuture>> pollFirstEntry(); + CompletableFuture>> pollFirstEntry(); /** * Return and remove the entry associated with the highest key. * * @return the entry or null if none exist */ - CompletableFuture>> pollLastEntry(); + CompletableFuture>> pollLastEntry(); /** * Return the entry associated with the greatest key less than key. @@ -118,7 +118,7 @@ default PrimitiveType primitiveType() { * @param key the key * @return the entry or null if no suitable key exists */ - CompletableFuture lowerKey(K key); + CompletableFuture lowerKey(String key); /** * Return the highest key less than or equal to key. @@ -126,7 +126,7 @@ default PrimitiveType primitiveType() { * @param key the key * @return the entry or null if no suitable key exists */ - CompletableFuture floorKey(K key); + CompletableFuture floorKey(String key); /** * Return the lowest key greater than or equal to key. @@ -134,7 +134,7 @@ default PrimitiveType primitiveType() { * @param key the key * @return the entry or null if no suitable key exists */ - CompletableFuture ceilingKey(K key); + CompletableFuture ceilingKey(String key); /** * Return the lowest key greater than key. @@ -142,14 +142,14 @@ default PrimitiveType primitiveType() { * @param key the key * @return the entry or null if no suitable key exists */ - CompletableFuture higherKey(K key); + CompletableFuture higherKey(String key); /** * Returns a navigable set of the keys in this map. * * @return a navigable key set (this may be empty) */ - CompletableFuture> navigableKeySet(); + CompletableFuture> navigableKeySet(); /** * Returns a navigable map containing the entries from the original map @@ -165,16 +165,17 @@ default PrimitiveType primitiveType() { * @return a navigable map containing entries in the specified range (this * may be empty) */ - CompletableFuture> subMap(K upperKey, - K lowerKey, - boolean inclusiveUpper, - boolean inclusiveLower); + CompletableFuture> subMap( + String upperKey, + String lowerKey, + boolean inclusiveUpper, + boolean inclusiveLower); - default ConsistentTreeMap asTreeMap() { + default ConsistentTreeMap asTreeMap() { return asTreeMap(DEFAULT_OPERATION_TIMEOUT_MILLIS); } - default ConsistentTreeMap asTreeMap(long timeoutMillis) { + default ConsistentTreeMap asTreeMap(long timeoutMillis) { return new BlockingConsistentTreeMap<>(this, timeoutMillis); } diff --git a/core/src/main/java/io/atomix/map/ConsistentTreeMap.java b/core/src/main/java/io/atomix/map/ConsistentTreeMap.java index 9be777f8b2..c7f2a15044 100644 --- a/core/src/main/java/io/atomix/map/ConsistentTreeMap.java +++ b/core/src/main/java/io/atomix/map/ConsistentTreeMap.java @@ -16,8 +16,8 @@ package io.atomix.map; -import io.atomix.primitive.PrimitiveType; import io.atomix.PrimitiveTypes; +import io.atomix.primitive.PrimitiveType; import io.atomix.utils.time.Versioned; import java.util.Map; @@ -27,7 +27,7 @@ /** * Tree map interface counterpart to {@link AsyncConsistentTreeMap}. */ -public interface ConsistentTreeMap extends ConsistentMap { +public interface ConsistentTreeMap extends ConsistentMap { @Override default PrimitiveType primitiveType() { @@ -39,14 +39,14 @@ default PrimitiveType primitiveType() { * * @return the key or null if none exist */ - K firstKey(); + String firstKey(); /** * Returns the highest key in the map. * * @return the key or null if none exist */ - K lastKey(); + String lastKey(); /** * Returns the entry associated with the least key greater than or equal to the key. @@ -54,7 +54,7 @@ default PrimitiveType primitiveType() { * @param key the key * @return the entry or null */ - Map.Entry> ceilingEntry(K key); + Map.Entry> ceilingEntry(String key); /** * Returns the entry associated with the greatest key less than or equal to key. @@ -62,7 +62,7 @@ default PrimitiveType primitiveType() { * @param key the key * @return the entry or null */ - Map.Entry> floorEntry(K key); + Map.Entry> floorEntry(String key); /** * Returns the entry associated with the lest key greater than key. @@ -70,7 +70,7 @@ default PrimitiveType primitiveType() { * @param key the key * @return the entry or null */ - Map.Entry> higherEntry(K key); + Map.Entry> higherEntry(String key); /** * Returns the entry associated with the largest key less than key. @@ -78,35 +78,35 @@ default PrimitiveType primitiveType() { * @param key the key * @return the entry or null */ - Map.Entry> lowerEntry(K key); + Map.Entry> lowerEntry(String key); /** * Returns the entry associated with the lowest key in the map. * * @return the entry or null */ - Map.Entry> firstEntry(); + Map.Entry> firstEntry(); /** * Returns the entry associated with the highest key in the map. * * @return the entry or null */ - Map.Entry> lastEntry(); + Map.Entry> lastEntry(); /** * Returns and removes the entry associated with the lowest key. * * @return the entry or null */ - Map.Entry> pollFirstEntry(); + Map.Entry> pollFirstEntry(); /** * Returns and removes the entry associated with the highest key. * * @return the entry or null */ - Map.Entry> pollLastEntry(); + Map.Entry> pollLastEntry(); /** * Returns the entry associated with the greatest key less than key. @@ -114,7 +114,7 @@ default PrimitiveType primitiveType() { * @param key the key * @return the entry or null */ - K lowerKey(K key); + String lowerKey(String key); /** * Returns the entry associated with the highest key less than or equal to key. @@ -122,7 +122,7 @@ default PrimitiveType primitiveType() { * @param key the key * @return the entry or null */ - K floorKey(K key); + String floorKey(String key); /** * Returns the lowest key greater than or equal to key. @@ -130,7 +130,7 @@ default PrimitiveType primitiveType() { * @param key the key * @return the key or null */ - K ceilingKey(K key); + String ceilingKey(String key); /** * Returns the lowest key greater than key. @@ -138,14 +138,14 @@ default PrimitiveType primitiveType() { * @param key the key * @return the key or null */ - K higherKey(K key); + String higherKey(String key); /** * Returns a navigable set of the keys in this map. * * @return a navigable key set */ - NavigableSet navigableKeySet(); + NavigableSet navigableKeySet(); /** * Returns a navigable map containing the entries from the original map @@ -161,9 +161,10 @@ default PrimitiveType primitiveType() { * @return a navigable map containing entries in the specified range (this * may be empty) */ - NavigableMap subMap(K upperKey, - K lowerKey, - boolean inclusiveUpper, - boolean inclusiveLower); + NavigableMap subMap( + String upperKey, + String lowerKey, + boolean inclusiveUpper, + boolean inclusiveLower); } diff --git a/core/src/main/java/io/atomix/map/ConsistentTreeMapBuilder.java b/core/src/main/java/io/atomix/map/ConsistentTreeMapBuilder.java index b7bef796cd..359e5c6e7f 100644 --- a/core/src/main/java/io/atomix/map/ConsistentTreeMapBuilder.java +++ b/core/src/main/java/io/atomix/map/ConsistentTreeMapBuilder.java @@ -16,12 +16,12 @@ package io.atomix.map; +import io.atomix.PrimitiveTypes; import io.atomix.primitive.Consistency; import io.atomix.primitive.DistributedPrimitiveBuilder; import io.atomix.primitive.Persistence; import io.atomix.primitive.PrimitiveProtocol; import io.atomix.primitive.Replication; -import io.atomix.PrimitiveTypes; import io.atomix.protocols.backup.MultiPrimaryProtocol; import io.atomix.protocols.raft.RaftProtocol; import io.atomix.protocols.raft.ReadConsistency; @@ -31,8 +31,8 @@ /** * Builder for {@link ConsistentTreeMap}. */ -public abstract class ConsistentTreeMapBuilder - extends DistributedPrimitiveBuilder, ConsistentTreeMap, AsyncConsistentTreeMap> { +public abstract class ConsistentTreeMapBuilder + extends DistributedPrimitiveBuilder, ConsistentTreeMap, AsyncConsistentTreeMap> { public ConsistentTreeMapBuilder(String name) { super(PrimitiveTypes.treeMap(), name); @@ -100,7 +100,7 @@ private PrimitiveProtocol newMultiPrimaryProtocol(Consistency consistency, Repli } @Override - public ConsistentTreeMap build() { + public ConsistentTreeMap build() { return buildAsync().asTreeMap(); } } diff --git a/core/src/main/java/io/atomix/map/ConsistentTreeMapType.java b/core/src/main/java/io/atomix/map/ConsistentTreeMapType.java index 146bf5acb8..683c5f79e5 100644 --- a/core/src/main/java/io/atomix/map/ConsistentTreeMapType.java +++ b/core/src/main/java/io/atomix/map/ConsistentTreeMapType.java @@ -15,28 +15,28 @@ */ package io.atomix.map; +import io.atomix.map.impl.ConsistentTreeMapProxyBuilder; +import io.atomix.map.impl.ConsistentTreeMapService; import io.atomix.primitive.PrimitiveManagementService; import io.atomix.primitive.PrimitiveType; import io.atomix.primitive.service.PrimitiveService; -import io.atomix.map.impl.ConsistentTreeMapProxyBuilder; -import io.atomix.map.impl.ConsistentTreeMapService; import static com.google.common.base.MoreObjects.toStringHelper; /** * Consistent tree map primitive type. */ -public class ConsistentTreeMapType implements PrimitiveType, ConsistentTreeMap, AsyncConsistentTreeMap> { +public class ConsistentTreeMapType + implements PrimitiveType, ConsistentTreeMap, AsyncConsistentTreeMap> { private static final String NAME = "CONSISTENT_TREEMAP"; /** * Returns a new consistent tree map type. * - * @param the key type * @param the value type * @return a new consistent tree map type */ - public static ConsistentTreeMapType instance() { + public static ConsistentTreeMapType instance() { return new ConsistentTreeMapType<>(); } @@ -54,7 +54,7 @@ public PrimitiveService newService() { } @Override - public ConsistentTreeMapBuilder newPrimitiveBuilder(String name, PrimitiveManagementService managementService) { + public ConsistentTreeMapBuilder newPrimitiveBuilder(String name, PrimitiveManagementService managementService) { return new ConsistentTreeMapProxyBuilder<>(name, managementService); } diff --git a/core/src/main/java/io/atomix/map/impl/BlockingConsistentTreeMap.java b/core/src/main/java/io/atomix/map/impl/BlockingConsistentTreeMap.java index 0051993909..b6f634db26 100644 --- a/core/src/main/java/io/atomix/map/impl/BlockingConsistentTreeMap.java +++ b/core/src/main/java/io/atomix/map/impl/BlockingConsistentTreeMap.java @@ -17,12 +17,12 @@ package io.atomix.map.impl; import com.google.common.base.Throwables; -import io.atomix.primitive.Synchronous; import io.atomix.map.AsyncConsistentTreeMap; import io.atomix.map.ConsistentMapBackedJavaMap; import io.atomix.map.ConsistentMapException; import io.atomix.map.ConsistentTreeMap; import io.atomix.map.MapEventListener; +import io.atomix.primitive.Synchronous; import io.atomix.utils.time.Versioned; import java.util.Collection; @@ -42,14 +42,14 @@ /** * Implementation of the {@link ConsistentTreeMap} interface. */ -public class BlockingConsistentTreeMap - extends Synchronous> - implements ConsistentTreeMap { - private final AsyncConsistentTreeMap treeMap; +public class BlockingConsistentTreeMap + extends Synchronous> + implements ConsistentTreeMap { + private final AsyncConsistentTreeMap treeMap; private final long operationTimeoutMillis; - private Map javaMap; + private Map javaMap; - public BlockingConsistentTreeMap(AsyncConsistentTreeMap treeMap, long operationTimeoutMillis) { + public BlockingConsistentTreeMap(AsyncConsistentTreeMap treeMap, long operationTimeoutMillis) { super(treeMap); this.treeMap = treeMap; this.operationTimeoutMillis = operationTimeoutMillis; @@ -70,77 +70,77 @@ private T complete(CompletableFuture future) { } @Override - public K firstKey() { + public String firstKey() { return complete(treeMap.firstKey()); } @Override - public K lastKey() { + public String lastKey() { return complete(treeMap.lastKey()); } @Override - public Map.Entry> ceilingEntry(K key) { + public Map.Entry> ceilingEntry(String key) { return complete(treeMap.ceilingEntry(key)); } @Override - public Map.Entry> floorEntry(K key) { + public Map.Entry> floorEntry(String key) { return complete(treeMap.floorEntry(key)); } @Override - public Map.Entry> higherEntry(K key) { + public Map.Entry> higherEntry(String key) { return complete(treeMap.higherEntry(key)); } @Override - public Map.Entry> lowerEntry(K key) { + public Map.Entry> lowerEntry(String key) { return complete(treeMap.lowerEntry(key)); } @Override - public Map.Entry> firstEntry() { + public Map.Entry> firstEntry() { return complete(treeMap.firstEntry()); } @Override - public Map.Entry> lastEntry() { + public Map.Entry> lastEntry() { return complete(treeMap.lastEntry()); } @Override - public Map.Entry> pollFirstEntry() { + public Map.Entry> pollFirstEntry() { return complete(treeMap.pollFirstEntry()); } @Override - public Map.Entry> pollLastEntry() { + public Map.Entry> pollLastEntry() { return complete(treeMap.pollLastEntry()); } @Override - public K lowerKey(K key) { + public String lowerKey(String key) { return complete(treeMap.lowerKey(key)); } @Override - public K floorKey(K key) { + public String floorKey(String key) { return complete(treeMap.floorKey(key)); } @Override - public K ceilingKey(K key) { + public String ceilingKey(String key) { return complete(treeMap.ceilingKey(key)); } @Override - public K higherKey(K key) { + public String higherKey(String key) { return complete(treeMap.higherKey(key)); } @Override - public NavigableSet navigableKeySet() { + public NavigableSet navigableKeySet() { return complete(treeMap.navigableKeySet()); } @@ -155,7 +155,7 @@ public boolean isEmpty() { } @Override - public boolean containsKey(K key) { + public boolean containsKey(String key) { return complete(treeMap.containsKey(key)); } @@ -165,49 +165,49 @@ public boolean containsValue(V value) { } @Override - public Versioned get(K key) { + public Versioned get(String key) { return complete(treeMap.get(key)); } @Override - public Versioned getOrDefault(K key, V defaultValue) { + public Versioned getOrDefault(String key, V defaultValue) { return complete(treeMap.getOrDefault(key, defaultValue)); } @Override - public Versioned computeIfAbsent(K key, Function mappingFunction) { + public Versioned computeIfAbsent(String key, Function mappingFunction) { return complete(treeMap.computeIfAbsent(key, mappingFunction)); } @Override - public Versioned compute(K key, BiFunction remappingFunction) { + public Versioned compute(String key, BiFunction remappingFunction) { return complete(treeMap.compute(key, remappingFunction)); } @Override - public Versioned computeIfPresent(K key, BiFunction remappingFunction) { + public Versioned computeIfPresent(String key, BiFunction remappingFunction) { return complete(treeMap.computeIfPresent(key, remappingFunction)); } @Override - public Versioned computeIf(K key, + public Versioned computeIf(String key, Predicate condition, - BiFunction remappingFunction) { + BiFunction remappingFunction) { return complete(treeMap.computeIf(key, condition, remappingFunction)); } @Override - public Versioned put(K key, V value) { + public Versioned put(String key, V value) { return complete(treeMap.put(key, value)); } @Override - public Versioned putAndGet(K key, V value) { + public Versioned putAndGet(String key, V value) { return complete(treeMap.putAndGet(key, value)); } @Override - public Versioned remove(K key) { + public Versioned remove(String key) { return complete(treeMap.remove(key)); } @@ -217,7 +217,7 @@ public void clear() { } @Override - public Set keySet() { + public Set keySet() { return complete(treeMap.keySet()); } @@ -227,52 +227,52 @@ public Collection> values() { } @Override - public Set>> entrySet() { + public Set>> entrySet() { return complete(treeMap.entrySet()); } @Override - public Versioned putIfAbsent(K key, V value) { + public Versioned putIfAbsent(String key, V value) { return complete(treeMap.putIfAbsent(key, value)); } @Override - public boolean remove(K key, V value) { + public boolean remove(String key, V value) { return complete(treeMap.remove(key, value)); } @Override - public boolean remove(K key, long version) { + public boolean remove(String key, long version) { return complete(treeMap.remove(key, version)); } @Override - public Versioned replace(K key, V value) { + public Versioned replace(String key, V value) { return complete(treeMap.replace(key, value)); } @Override - public boolean replace(K key, V oldValue, V newValue) { + public boolean replace(String key, V oldValue, V newValue) { return complete(treeMap.replace(key, oldValue, newValue)); } @Override - public boolean replace(K key, long oldVersion, V newValue) { + public boolean replace(String key, long oldVersion, V newValue) { return complete(treeMap.replace(key, oldVersion, newValue)); } @Override - public void addListener(MapEventListener listener, Executor executor) { + public void addListener(MapEventListener listener, Executor executor) { complete(treeMap.addListener(listener, executor)); } @Override - public void removeListener(MapEventListener listener) { + public void removeListener(MapEventListener listener) { complete(treeMap.removeListener(listener)); } @Override - public Map asJavaMap() { + public Map asJavaMap() { synchronized (this) { if (javaMap == null) { javaMap = new ConsistentMapBackedJavaMap<>(this); @@ -282,7 +282,7 @@ public Map asJavaMap() { } @Override - public NavigableMap subMap(K upperKey, K lowerKey, boolean inclusiveUpper, boolean inclusiveLower) { + public NavigableMap subMap(String upperKey, String lowerKey, boolean inclusiveUpper, boolean inclusiveLower) { return complete(treeMap.subMap(upperKey, lowerKey, inclusiveUpper, inclusiveLower)); } diff --git a/core/src/main/java/io/atomix/map/impl/ConsistentTreeMapProxy.java b/core/src/main/java/io/atomix/map/impl/ConsistentTreeMapProxy.java index 6b9c48a47a..3147ee27af 100644 --- a/core/src/main/java/io/atomix/map/impl/ConsistentTreeMapProxy.java +++ b/core/src/main/java/io/atomix/map/impl/ConsistentTreeMapProxy.java @@ -16,7 +16,6 @@ package io.atomix.map.impl; -import io.atomix.primitive.proxy.PrimitiveProxy; import io.atomix.map.AsyncConsistentTreeMap; import io.atomix.map.impl.ConsistentTreeMapOperations.CeilingEntry; import io.atomix.map.impl.ConsistentTreeMapOperations.CeilingKey; @@ -26,6 +25,7 @@ import io.atomix.map.impl.ConsistentTreeMapOperations.HigherKey; import io.atomix.map.impl.ConsistentTreeMapOperations.LowerEntry; import io.atomix.map.impl.ConsistentTreeMapOperations.LowerKey; +import io.atomix.primitive.proxy.PrimitiveProxy; import io.atomix.transaction.TransactionId; import io.atomix.transaction.TransactionLog; import io.atomix.utils.serializer.KryoNamespace; @@ -58,7 +58,7 @@ /** * Implementation of {@link io.atomix.map.AsyncConsistentTreeMap}. */ -public class ConsistentTreeMapProxy extends ConsistentMapProxy implements AsyncConsistentTreeMap { +public class ConsistentTreeMapProxy extends ConsistentMapProxy implements AsyncConsistentTreeMap { private static final Serializer SERIALIZER = Serializer.using(KryoNamespace.builder() .register(KryoNamespaces.BASIC) .register(ConsistentMapOperations.NAMESPACE) diff --git a/core/src/main/java/io/atomix/map/impl/ConsistentTreeMapProxyBuilder.java b/core/src/main/java/io/atomix/map/impl/ConsistentTreeMapProxyBuilder.java index 801cbb4132..9c1d0e5f75 100644 --- a/core/src/main/java/io/atomix/map/impl/ConsistentTreeMapProxyBuilder.java +++ b/core/src/main/java/io/atomix/map/impl/ConsistentTreeMapProxyBuilder.java @@ -15,12 +15,11 @@ */ package io.atomix.map.impl; -import com.google.common.io.BaseEncoding; +import io.atomix.map.AsyncConsistentTreeMap; +import io.atomix.map.ConsistentTreeMapBuilder; import io.atomix.primitive.PrimitiveManagementService; import io.atomix.primitive.PrimitiveProtocol; import io.atomix.primitive.proxy.PrimitiveProxy; -import io.atomix.map.AsyncConsistentTreeMap; -import io.atomix.map.ConsistentTreeMapBuilder; import io.atomix.utils.serializer.Serializer; import static com.google.common.base.Preconditions.checkNotNull; @@ -30,7 +29,7 @@ * * @param type for map value */ -public class ConsistentTreeMapProxyBuilder extends ConsistentTreeMapBuilder { +public class ConsistentTreeMapProxyBuilder extends ConsistentTreeMapBuilder { private final PrimitiveManagementService managementService; public ConsistentTreeMapProxyBuilder(String name, PrimitiveManagementService managementService) { @@ -38,21 +37,19 @@ public ConsistentTreeMapProxyBuilder(String name, PrimitiveManagementService man this.managementService = checkNotNull(managementService); } - protected AsyncConsistentTreeMap newTreeMap(PrimitiveProxy proxy) { + protected AsyncConsistentTreeMap newTreeMap(PrimitiveProxy proxy) { ConsistentTreeMapProxy rawMap = new ConsistentTreeMapProxy(proxy.open().join()); Serializer serializer = serializer(); return new TranscodingAsyncConsistentTreeMap<>( rawMap, - key -> BaseEncoding.base16().encode(serializer.encode(key)), - string -> serializer.decode(BaseEncoding.base16().decode(string)), value -> value == null ? null : serializer.encode(value), bytes -> serializer.decode(bytes)); } @Override @SuppressWarnings("unchecked") - public AsyncConsistentTreeMap buildAsync() { + public AsyncConsistentTreeMap buildAsync() { PrimitiveProtocol protocol = protocol(); return newTreeMap(managementService.getPartitionService() .getPartitionGroup(protocol) diff --git a/core/src/main/java/io/atomix/map/impl/DelegatingAsyncConsistentTreeMap.java b/core/src/main/java/io/atomix/map/impl/DelegatingAsyncConsistentTreeMap.java index 1d884efe38..bf77c8971d 100644 --- a/core/src/main/java/io/atomix/map/impl/DelegatingAsyncConsistentTreeMap.java +++ b/core/src/main/java/io/atomix/map/impl/DelegatingAsyncConsistentTreeMap.java @@ -16,9 +16,9 @@ package io.atomix.map.impl; -import io.atomix.primitive.impl.DelegatingDistributedPrimitive; import io.atomix.map.AsyncConsistentTreeMap; import io.atomix.map.MapEventListener; +import io.atomix.primitive.impl.DelegatingDistributedPrimitive; import io.atomix.transaction.TransactionId; import io.atomix.transaction.TransactionLog; import io.atomix.utils.time.Version; @@ -40,97 +40,97 @@ * A {@link AsyncConsistentTreeMap} that delegates control to another instance * of {@link AsyncConsistentTreeMap}. */ -public class DelegatingAsyncConsistentTreeMap +public class DelegatingAsyncConsistentTreeMap extends DelegatingDistributedPrimitive - implements AsyncConsistentTreeMap { + implements AsyncConsistentTreeMap { - private final AsyncConsistentTreeMap delegateMap; + private final AsyncConsistentTreeMap delegateMap; - DelegatingAsyncConsistentTreeMap(AsyncConsistentTreeMap delegateMap) { + DelegatingAsyncConsistentTreeMap(AsyncConsistentTreeMap delegateMap) { super(delegateMap); this.delegateMap = checkNotNull(delegateMap, "delegate map cannot be null"); } @Override - public CompletableFuture firstKey() { + public CompletableFuture firstKey() { return delegateMap.firstKey(); } @Override - public CompletableFuture lastKey() { + public CompletableFuture lastKey() { return delegateMap.lastKey(); } @Override - public CompletableFuture>> ceilingEntry(K key) { + public CompletableFuture>> ceilingEntry(String key) { return delegateMap.ceilingEntry(key); } @Override - public CompletableFuture>> floorEntry(K key) { + public CompletableFuture>> floorEntry(String key) { return delegateMap.floorEntry(key); } @Override - public CompletableFuture>> higherEntry(K key) { + public CompletableFuture>> higherEntry(String key) { return delegateMap.higherEntry(key); } @Override - public CompletableFuture>> lowerEntry(K key) { + public CompletableFuture>> lowerEntry(String key) { return delegateMap.lowerEntry(key); } @Override - public CompletableFuture>> firstEntry() { + public CompletableFuture>> firstEntry() { return delegateMap.firstEntry(); } @Override - public CompletableFuture>> lastEntry() { + public CompletableFuture>> lastEntry() { return delegateMap.lastEntry(); } @Override - public CompletableFuture>> pollFirstEntry() { + public CompletableFuture>> pollFirstEntry() { return delegateMap.pollFirstEntry(); } @Override - public CompletableFuture>> pollLastEntry() { + public CompletableFuture>> pollLastEntry() { return delegateMap.pollLastEntry(); } @Override - public CompletableFuture lowerKey(K key) { + public CompletableFuture lowerKey(String key) { return delegateMap.lowerKey(key); } @Override - public CompletableFuture floorKey(K key) { + public CompletableFuture floorKey(String key) { return delegateMap.floorKey(key); } @Override - public CompletableFuture ceilingKey(K key) { + public CompletableFuture ceilingKey(String key) { return delegateMap.ceilingKey(key); } @Override - public CompletableFuture higherKey(K key) { + public CompletableFuture higherKey(String key) { return delegateMap.higherKey(key); } @Override - public CompletableFuture> navigableKeySet() { + public CompletableFuture> navigableKeySet() { return delegateMap.navigableKeySet(); } @Override - public CompletableFuture> subMap( - K upperKey, - K lowerKey, + public CompletableFuture> subMap( + String upperKey, + String lowerKey, boolean inclusiveUpper, boolean inclusiveLower) { return delegateMap.subMap(upperKey, lowerKey, @@ -143,7 +143,7 @@ public CompletableFuture size() { } @Override - public CompletableFuture containsKey(K key) { + public CompletableFuture containsKey(String key) { return delegateMap.containsKey(key); } @@ -153,36 +153,36 @@ public CompletableFuture containsValue(V value) { } @Override - public CompletableFuture> get(K key) { + public CompletableFuture> get(String key) { return delegateMap.get(key); } @Override - public CompletableFuture> getOrDefault(K key, V defaultValue) { + public CompletableFuture> getOrDefault(String key, V defaultValue) { return delegateMap.getOrDefault(key, defaultValue); } @Override public CompletableFuture> computeIf( - K key, + String key, Predicate condition, - BiFunction remappingFunction) { return delegateMap.computeIf(key, condition, remappingFunction); } @Override - public CompletableFuture> put(K key, V value) { + public CompletableFuture> put(String key, V value) { return delegateMap.put(key, value); } @Override - public CompletableFuture> putAndGet(K key, V value) { + public CompletableFuture> putAndGet(String key, V value) { return delegateMap.putAndGet(key, value); } @Override - public CompletableFuture> remove(K key) { + public CompletableFuture> remove(String key) { return delegateMap.remove(key); } @@ -192,7 +192,7 @@ public CompletableFuture clear() { } @Override - public CompletableFuture> keySet() { + public CompletableFuture> keySet() { return delegateMap.keySet(); } @@ -202,51 +202,51 @@ public CompletableFuture>> values() { } @Override - public CompletableFuture>>> entrySet() { + public CompletableFuture>>> entrySet() { return delegateMap.entrySet(); } @Override - public CompletableFuture> putIfAbsent(K key, V value) { + public CompletableFuture> putIfAbsent(String key, V value) { return delegateMap.putIfAbsent(key, value); } @Override - public CompletableFuture remove(K key, V value) { + public CompletableFuture remove(String key, V value) { return delegateMap.remove(key, value); } @Override - public CompletableFuture remove(K key, long version) { + public CompletableFuture remove(String key, long version) { return delegateMap.remove(key, version); } @Override - public CompletableFuture> replace(K key, V value) { + public CompletableFuture> replace(String key, V value) { return delegateMap.replace(key, value); } @Override - public CompletableFuture replace(K key, V oldValue, + public CompletableFuture replace(String key, V oldValue, V newValue) { return delegateMap.replace(key, oldValue, newValue); } @Override - public CompletableFuture replace(K key, long oldVersion, + public CompletableFuture replace(String key, long oldVersion, V newValue) { return delegateMap.replace(key, oldVersion, newValue); } @Override public CompletableFuture addListener( - MapEventListener listener, Executor executor) { + MapEventListener listener, Executor executor) { return delegateMap.addListener(listener, executor); } @Override public CompletableFuture removeListener( - MapEventListener listener) { + MapEventListener listener) { return delegateMap.removeListener(listener); } @@ -256,12 +256,12 @@ public CompletableFuture begin(TransactionId transactionId) { } @Override - public CompletableFuture prepare(TransactionLog> transactionLog) { + public CompletableFuture prepare(TransactionLog> transactionLog) { return delegateMap.prepare(transactionLog); } @Override - public CompletableFuture prepareAndCommit(TransactionLog> transactionLog) { + public CompletableFuture prepareAndCommit(TransactionLog> transactionLog) { return delegateMap.prepareAndCommit(transactionLog); } diff --git a/core/src/main/java/io/atomix/map/impl/TranscodingAsyncConsistentTreeMap.java b/core/src/main/java/io/atomix/map/impl/TranscodingAsyncConsistentTreeMap.java index 011eab146f..9a38d100bf 100644 --- a/core/src/main/java/io/atomix/map/impl/TranscodingAsyncConsistentTreeMap.java +++ b/core/src/main/java/io/atomix/map/impl/TranscodingAsyncConsistentTreeMap.java @@ -31,7 +31,6 @@ import java.util.NavigableMap; import java.util.NavigableSet; import java.util.Set; -import java.util.TreeSet; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; import java.util.function.BiFunction; @@ -47,127 +46,110 @@ * @param value type of other map * @param value type of this map */ -public class TranscodingAsyncConsistentTreeMap implements AsyncConsistentTreeMap { - private final AsyncConsistentTreeMap backingMap; - private final Function keyEncoder; - private final Function keyDecoder; +public class TranscodingAsyncConsistentTreeMap implements AsyncConsistentTreeMap { + private final AsyncConsistentTreeMap backingMap; private final Function valueDecoder; private final Function valueEncoder; private final Function, Versioned> versionedValueTransform; - private final Map, InternalBackingMapEventListener> listeners = Maps.newIdentityHashMap(); + private final Map, InternalBackingMapEventListener> listeners = Maps.newIdentityHashMap(); public TranscodingAsyncConsistentTreeMap( - AsyncConsistentTreeMap backingMap, - Function keyEncoder, - Function keyDecoder, + AsyncConsistentTreeMap backingMap, Function valueEncoder, Function valueDecoder) { this.backingMap = backingMap; - this.keyEncoder = k -> k == null ? null : keyEncoder.apply(k); - this.keyDecoder = k -> k == null ? null : keyDecoder.apply(k); this.valueEncoder = v -> v == null ? null : valueEncoder.apply(v); this.valueDecoder = v -> v == null ? null : valueDecoder.apply(v); this.versionedValueTransform = v -> v == null ? null : v.map(valueDecoder); } @Override - public CompletableFuture firstKey() { - return backingMap.firstKey().thenApply(keyDecoder); + public CompletableFuture firstKey() { + return backingMap.firstKey(); } @Override - public CompletableFuture lastKey() { - return backingMap.lastKey().thenApply(keyDecoder); + public CompletableFuture lastKey() { + return backingMap.lastKey(); } @Override - public CompletableFuture>> ceilingEntry(K1 key) { - return backingMap.ceilingEntry(keyEncoder.apply(key)) - .thenApply(entry -> entry != null ? Maps.immutableEntry(keyDecoder.apply(entry.getKey()), versionedValueTransform.apply(entry.getValue())) : null); + public CompletableFuture>> ceilingEntry(String key) { + return backingMap.ceilingEntry(key) + .thenApply(entry -> entry != null ? Maps.immutableEntry(entry.getKey(), versionedValueTransform.apply(entry.getValue())) : null); } @Override - public CompletableFuture>> floorEntry(K1 key) { - return backingMap.floorEntry(keyEncoder.apply(key)) - .thenApply(entry -> entry != null ? Maps.immutableEntry(keyDecoder.apply(entry.getKey()), versionedValueTransform.apply(entry.getValue())) : null); + public CompletableFuture>> floorEntry(String key) { + return backingMap.floorEntry(key) + .thenApply(entry -> entry != null ? Maps.immutableEntry(entry.getKey(), versionedValueTransform.apply(entry.getValue())) : null); } @Override - public CompletableFuture>> higherEntry(K1 key) { - return backingMap.higherEntry(keyEncoder.apply(key)) - .thenApply(entry -> entry != null ? Maps.immutableEntry(keyDecoder.apply(entry.getKey()), versionedValueTransform.apply(entry.getValue())) : null); + public CompletableFuture>> higherEntry(String key) { + return backingMap.higherEntry(key) + .thenApply(entry -> entry != null ? Maps.immutableEntry(entry.getKey(), versionedValueTransform.apply(entry.getValue())) : null); } @Override - public CompletableFuture>> lowerEntry(K1 key) { - return backingMap.lowerEntry(keyEncoder.apply(key)) - .thenApply(entry -> entry != null ? Maps.immutableEntry(keyDecoder.apply(entry.getKey()), versionedValueTransform.apply(entry.getValue())) : null); + public CompletableFuture>> lowerEntry(String key) { + return backingMap.lowerEntry(key) + .thenApply(entry -> entry != null ? Maps.immutableEntry(entry.getKey(), versionedValueTransform.apply(entry.getValue())) : null); } @Override - public CompletableFuture>> firstEntry() { + public CompletableFuture>> firstEntry() { return backingMap.firstEntry() - .thenApply(entry -> entry != null ? Maps.immutableEntry(keyDecoder.apply(entry.getKey()), versionedValueTransform.apply(entry.getValue())) : null); + .thenApply(entry -> entry != null ? Maps.immutableEntry(entry.getKey(), versionedValueTransform.apply(entry.getValue())) : null); } @Override - public CompletableFuture>> lastEntry() { + public CompletableFuture>> lastEntry() { return backingMap.lastEntry() - .thenApply(entry -> entry != null ? Maps.immutableEntry(keyDecoder.apply(entry.getKey()), versionedValueTransform.apply(entry.getValue())) : null); + .thenApply(entry -> entry != null ? Maps.immutableEntry(entry.getKey(), versionedValueTransform.apply(entry.getValue())) : null); } @Override - public CompletableFuture>> pollFirstEntry() { + public CompletableFuture>> pollFirstEntry() { return backingMap.pollFirstEntry() - .thenApply(entry -> entry != null ? Maps.immutableEntry(keyDecoder.apply(entry.getKey()), versionedValueTransform.apply(entry.getValue())) : null); + .thenApply(entry -> entry != null ? Maps.immutableEntry(entry.getKey(), versionedValueTransform.apply(entry.getValue())) : null); } @Override - public CompletableFuture>> pollLastEntry() { + public CompletableFuture>> pollLastEntry() { return backingMap.pollLastEntry() - .thenApply(entry -> entry != null ? Maps.immutableEntry(keyDecoder.apply(entry.getKey()), versionedValueTransform.apply(entry.getValue())) : null); + .thenApply(entry -> entry != null ? Maps.immutableEntry(entry.getKey(), versionedValueTransform.apply(entry.getValue())) : null); } @Override - public CompletableFuture lowerKey(K1 key) { - return backingMap.lowerKey(keyEncoder.apply(key)) - .thenApply(keyDecoder); + public CompletableFuture lowerKey(String key) { + return backingMap.lowerKey(key); } @Override - public CompletableFuture floorKey(K1 key) { - return backingMap.floorKey(keyEncoder.apply(key)) - .thenApply(keyDecoder); + public CompletableFuture floorKey(String key) { + return backingMap.floorKey(key); } @Override - public CompletableFuture ceilingKey(K1 key) { - return backingMap.ceilingKey(keyEncoder.apply(key)) - .thenApply(keyDecoder); + public CompletableFuture ceilingKey(String key) { + return backingMap.ceilingKey(key); } @Override - public CompletableFuture higherKey(K1 key) { - return backingMap.higherKey(keyEncoder.apply(key)) - .thenApply(keyDecoder); + public CompletableFuture higherKey(String key) { + return backingMap.higherKey(key); } @Override - public CompletableFuture> navigableKeySet() { - return backingMap.navigableKeySet() - .thenApply(set -> set.stream() - .map(keyDecoder) - .collect(Collectors.toCollection(TreeSet::new))); + public CompletableFuture> navigableKeySet() { + return backingMap.navigableKeySet(); } @Override - public CompletableFuture> subMap( - K1 upperKey, - K1 lowerKey, - boolean inclusiveUpper, - boolean inclusiveLower) { - throw new UnsupportedOperationException("This operation is not yet" + - "supported."); + public CompletableFuture> subMap( + String upperKey, String lowerKey, boolean inclusiveUpper, boolean inclusiveLower) { + throw new UnsupportedOperationException("This operation is not yet supported."); } @Override @@ -181,8 +163,8 @@ public CompletableFuture size() { } @Override - public CompletableFuture containsKey(K1 key) { - return backingMap.containsKey(keyEncoder.apply(key)); + public CompletableFuture containsKey(String key) { + return backingMap.containsKey(key); } @Override @@ -191,23 +173,23 @@ public CompletableFuture containsValue(V1 value) { } @Override - public CompletableFuture> get(K1 key) { - return backingMap.get(keyEncoder.apply(key)).thenApply(versionedValueTransform); + public CompletableFuture> get(String key) { + return backingMap.get(key).thenApply(versionedValueTransform); } @Override - public CompletableFuture> getOrDefault(K1 key, V1 defaultValue) { - return backingMap.getOrDefault(keyEncoder.apply(key), valueEncoder.apply(defaultValue)).thenApply(versionedValueTransform); + public CompletableFuture> getOrDefault(String key, V1 defaultValue) { + return backingMap.getOrDefault(key, valueEncoder.apply(defaultValue)).thenApply(versionedValueTransform); } @Override public CompletableFuture> computeIf( - K1 key, + String key, Predicate condition, - BiFunction remappingFunction) { + BiFunction remappingFunction) { try { return backingMap.computeIf( - keyEncoder.apply(key), + key, v -> condition.test(valueDecoder.apply(v)), (k, v) -> valueEncoder.apply(remappingFunction.apply(key, valueDecoder.apply(v)))) .thenApply(versionedValueTransform); @@ -217,20 +199,20 @@ public CompletableFuture> computeIf( } @Override - public CompletableFuture> put(K1 key, V1 value) { - return backingMap.put(keyEncoder.apply(key), valueEncoder.apply(value)) + public CompletableFuture> put(String key, V1 value) { + return backingMap.put(key, valueEncoder.apply(value)) .thenApply(versionedValueTransform); } @Override - public CompletableFuture> putAndGet(K1 key, V1 value) { - return backingMap.putAndGet(keyEncoder.apply(key), valueEncoder.apply(value)) + public CompletableFuture> putAndGet(String key, V1 value) { + return backingMap.putAndGet(key, valueEncoder.apply(value)) .thenApply(versionedValueTransform); } @Override - public CompletableFuture> remove(K1 key) { - return backingMap.remove(keyEncoder.apply(key)).thenApply(versionedValueTransform); + public CompletableFuture> remove(String key) { + return backingMap.remove(key).thenApply(versionedValueTransform); } @Override @@ -239,11 +221,8 @@ public CompletableFuture clear() { } @Override - public CompletableFuture> keySet() { - return backingMap.keySet() - .thenApply(keys -> keys.stream() - .map(keyDecoder) - .collect(Collectors.toSet())); + public CompletableFuture> keySet() { + return backingMap.keySet(); } @Override @@ -255,58 +234,56 @@ public CompletableFuture>> values() { } @Override - public CompletableFuture>>> entrySet() { + public CompletableFuture>>> entrySet() { return backingMap.entrySet() .thenApply(entries -> entries.stream() - .map(entry -> Maps.immutableEntry(keyDecoder.apply(entry.getKey()), versionedValueTransform.apply(entry.getValue()))) + .map(entry -> Maps.immutableEntry(entry.getKey(), versionedValueTransform.apply(entry.getValue()))) .collect(Collectors.toSet())); } @Override - public CompletableFuture> putIfAbsent(K1 key, V1 value) { - return backingMap.putIfAbsent(keyEncoder.apply(key), valueEncoder.apply(value)) + public CompletableFuture> putIfAbsent(String key, V1 value) { + return backingMap.putIfAbsent(key, valueEncoder.apply(value)) .thenApply(versionedValueTransform); } @Override - public CompletableFuture remove(K1 key, V1 value) { - return backingMap.remove(keyEncoder.apply(key), valueEncoder.apply(value)); + public CompletableFuture remove(String key, V1 value) { + return backingMap.remove(key, valueEncoder.apply(value)); } @Override - public CompletableFuture remove(K1 key, long version) { - return backingMap.remove(keyEncoder.apply(key), version); + public CompletableFuture remove(String key, long version) { + return backingMap.remove(key, version); } @Override - public CompletableFuture> replace(K1 key, V1 value) { - return backingMap.replace(keyEncoder.apply(key), valueEncoder.apply(value)) + public CompletableFuture> replace(String key, V1 value) { + return backingMap.replace(key, valueEncoder.apply(value)) .thenApply(versionedValueTransform); } @Override - public CompletableFuture replace(K1 key, V1 oldValue, - V1 newValue) { - return backingMap.replace(keyEncoder.apply(key), valueEncoder.apply(oldValue), + public CompletableFuture replace(String key, V1 oldValue, V1 newValue) { + return backingMap.replace(key, valueEncoder.apply(oldValue), valueEncoder.apply(newValue)); } @Override - public CompletableFuture replace(K1 key, long oldVersion, - V1 newValue) { - return backingMap.replace(keyEncoder.apply(key), oldVersion, + public CompletableFuture replace(String key, long oldVersion, V1 newValue) { + return backingMap.replace(key, oldVersion, valueEncoder.apply(newValue)); } @Override - public CompletableFuture addListener(MapEventListener listener, Executor executor) { + public CompletableFuture addListener(MapEventListener listener, Executor executor) { InternalBackingMapEventListener backingMapEventListener = listeners.computeIfAbsent(listener, k -> new InternalBackingMapEventListener(listener)); return backingMap.addListener(backingMapEventListener, executor); } @Override - public CompletableFuture removeListener(MapEventListener listener) { + public CompletableFuture removeListener(MapEventListener listener) { InternalBackingMapEventListener backingMapEventListener = listeners.remove(listener); if (backingMapEventListener == null) { return CompletableFuture.completedFuture(null); @@ -321,12 +298,12 @@ public CompletableFuture begin(TransactionId transactionId) { } @Override - public CompletableFuture prepare(TransactionLog> transactionLog) { + public CompletableFuture prepare(TransactionLog> transactionLog) { throw new UnsupportedOperationException("This operation is not yet supported."); } @Override - public CompletableFuture prepareAndCommit(TransactionLog> transactionLog) { + public CompletableFuture prepareAndCommit(TransactionLog> transactionLog) { throw new UnsupportedOperationException("This operation is not yet supported."); } @@ -345,19 +322,19 @@ public CompletableFuture close() { return backingMap.close(); } - private class InternalBackingMapEventListener implements MapEventListener { - private final MapEventListener listener; + private class InternalBackingMapEventListener implements MapEventListener { + private final MapEventListener listener; - InternalBackingMapEventListener(MapEventListener listener) { + InternalBackingMapEventListener(MapEventListener listener) { this.listener = listener; } @Override - public void event(MapEvent event) { + public void event(MapEvent event) { listener.event(new MapEvent<>( event.type(), event.name(), - keyDecoder.apply(event.key()), + event.key(), event.newValue() != null ? event.newValue().map(valueDecoder) : null, event.oldValue() != null ? event.oldValue().map(valueDecoder) : null)); } diff --git a/core/src/test/java/io/atomix/map/impl/ConsistentTreeMapTest.java b/core/src/test/java/io/atomix/map/impl/ConsistentTreeMapTest.java index 1111748fa7..72dccbe9bb 100644 --- a/core/src/test/java/io/atomix/map/impl/ConsistentTreeMapTest.java +++ b/core/src/test/java/io/atomix/map/impl/ConsistentTreeMapTest.java @@ -59,7 +59,7 @@ public void testBasicMapOperations() throws Throwable { //make sure that the previous section has been cleaned up, they serve //the secondary purpose of testing isEmpty but that is not their //primary purpose. - AsyncConsistentTreeMap map = createResource("basicTestMap"); + AsyncConsistentTreeMap map = createResource("basicTestMap"); //test size map.size().thenAccept(result -> assertEquals(0, (int) result)).join(); map.isEmpty().thenAccept(result -> assertTrue(result)).join(); @@ -243,7 +243,7 @@ public void mapListenerTests() throws Throwable { final String value2 = "value2"; final String value3 = "value3"; - AsyncConsistentTreeMap map = createResource("treeMapListenerTestMap"); + AsyncConsistentTreeMap map = createResource("treeMapListenerTestMap"); TestMapEventListener listener = new TestMapEventListener(); // add listener; insert new value into map and verify an INSERT event @@ -306,7 +306,7 @@ public void mapListenerTests() throws Throwable { @Test public void treeMapFunctionsTest() { - AsyncConsistentTreeMap map = createResource("treeMapFunctionTestMap"); + AsyncConsistentTreeMap map = createResource("treeMapFunctionTestMap"); //Tests on empty map map.firstKey().thenAccept(result -> assertNull(result)).join(); map.lastKey().thenAccept(result -> assertNull(result)).join(); @@ -454,9 +454,9 @@ public void treeMapFunctionsTest() { //map.delete().join(); } - private AsyncConsistentTreeMap createResource(String mapName) { + private AsyncConsistentTreeMap createResource(String mapName) { try { - return atomix().consistentTreeMapBuilder(mapName).buildAsync(); + return atomix().consistentTreeMapBuilder(mapName).buildAsync(); } catch (Throwable e) { throw new RuntimeException(e.toString()); }