[ONOS-6324] Add getOrDefault method to ConsistentMap.
Change-Id: Ice7ad6260c6eb8076320ef469874c0c4ceeadc19
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DelegatingAsyncConsistentMap.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DelegatingAsyncConsistentMap.java
index ce725e24..2f4a665 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DelegatingAsyncConsistentMap.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DelegatingAsyncConsistentMap.java
@@ -83,6 +83,11 @@
}
@Override
+ public CompletableFuture<Versioned<V>> getOrDefault(K key, V defaultValue) {
+ return delegateMap.getOrDefault(key, defaultValue);
+ }
+
+ @Override
public CompletableFuture<Versioned<V>> computeIf(K key,
Predicate<? super V> condition,
BiFunction<? super K, ? super V, ? extends V> remappingFunction) {
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DelegatingAsyncConsistentTreeMap.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DelegatingAsyncConsistentTreeMap.java
index 31d5f8e..48c0b85 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DelegatingAsyncConsistentTreeMap.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DelegatingAsyncConsistentTreeMap.java
@@ -160,6 +160,11 @@
}
@Override
+ public CompletableFuture<Versioned<V>> getOrDefault(String key, V defaultValue) {
+ return delegateMap.getOrDefault(key, defaultValue);
+ }
+
+ @Override
public CompletableFuture<Versioned<V>> computeIf(
String key,
Predicate<? super V> condition,
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/PartitionedAsyncConsistentMap.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/PartitionedAsyncConsistentMap.java
index 6378024..9adcb33 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/PartitionedAsyncConsistentMap.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/PartitionedAsyncConsistentMap.java
@@ -94,12 +94,18 @@
Match.ifValue(true),
false);
}
+
@Override
public CompletableFuture<Versioned<V>> get(K key) {
return getMap(key).get(key);
}
@Override
+ public CompletableFuture<Versioned<V>> getOrDefault(K key, V defaultValue) {
+ return getMap(key).getOrDefault(key, defaultValue);
+ }
+
+ @Override
public CompletableFuture<Versioned<V>> computeIf(K key,
Predicate<? super V> condition,
BiFunction<? super K, ? super V, ? extends V> remappingFunction) {
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/TranscodingAsyncConsistentMap.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/TranscodingAsyncConsistentMap.java
index f3938ce..2afb5df 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/TranscodingAsyncConsistentMap.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/TranscodingAsyncConsistentMap.java
@@ -109,6 +109,16 @@
}
@Override
+ public CompletableFuture<Versioned<V1>> getOrDefault(K1 key, V1 defaultValue) {
+ try {
+ return backingMap.getOrDefault(keyEncoder.apply(key), valueEncoder.apply(defaultValue))
+ .thenApply(versionedValueTransform);
+ } catch (Exception e) {
+ return Tools.exceptionalFuture(e);
+ }
+ }
+
+ @Override
public CompletableFuture<Versioned<V1>> computeIf(K1 key,
Predicate<? super V1> condition,
BiFunction<? super K1, ? super V1, ? extends V1> remappingFunction) {
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/TranscodingAsyncConsistentTreeMap.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/TranscodingAsyncConsistentTreeMap.java
index e7d86ff..747008f 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/TranscodingAsyncConsistentTreeMap.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/TranscodingAsyncConsistentTreeMap.java
@@ -66,6 +66,7 @@
this.versionedValueTransform = v -> v == null ? null :
v.map(valueDecoder);
}
+
@Override
public CompletableFuture<String> firstKey() {
return backingMap.firstKey();
@@ -226,6 +227,11 @@
}
@Override
+ public CompletableFuture<Versioned<V1>> getOrDefault(String key, V1 defaultValue) {
+ return backingMap.getOrDefault(key, valueEncoder.apply(defaultValue)).thenApply(versionedValueTransform);
+ }
+
+ @Override
public CompletableFuture<Versioned<V1>> computeIf(
String key, Predicate<? super V1> condition,
BiFunction<? super String, ? super V1, ? extends V1>