[ONOS-6423] Implement missing getOrDefault methods in primitive wrappers

Change-Id: I560ee03e20511f5ffc93cc4ceb874cb3142c11ab
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/MeteredAsyncConsistentMap.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/MeteredAsyncConsistentMap.java
index ccffead..4b9ff98 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/MeteredAsyncConsistentMap.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/MeteredAsyncConsistentMap.java
@@ -54,6 +54,7 @@
     private static final String CONTAINS_KEY = "containsKey";
     private static final String CONTAINS_VALUE = "containsValue";
     private static final String GET = "get";
+    private static final String GET_OR_DEFAULT = "getOrDefault";
     private static final String COMPUTE_IF = "computeIf";
     private static final String PUT = "put";
     private static final String PUT_AND_GET = "putAndGet";
@@ -119,6 +120,13 @@
     }
 
     @Override
+    public CompletableFuture<Versioned<V>> getOrDefault(K key, V defaultValue) {
+        final MeteringAgent.Context timer = monitor.startTimer(GET_OR_DEFAULT);
+        return super.getOrDefault(key, defaultValue)
+                .whenComplete((r, e) -> timer.stop(e));
+    }
+
+    @Override
     public CompletableFuture<Versioned<V>> computeIfAbsent(K key,
                                                            Function<? super K, ? extends V> mappingFunction) {
         final MeteringAgent.Context timer = monitor.startTimer(COMPUTE_IF_ABSENT);