Immutability for getMeters APIs

Change-Id: Iaf908766aa360e84e82306e398fff56c9593d8f1
diff --git a/core/api/src/main/java/org/onosproject/net/meter/MeterStore.java b/core/api/src/main/java/org/onosproject/net/meter/MeterStore.java
index 3f0efa0..675592a 100644
--- a/core/api/src/main/java/org/onosproject/net/meter/MeterStore.java
+++ b/core/api/src/main/java/org/onosproject/net/meter/MeterStore.java
@@ -70,8 +70,9 @@
      * Updates a given meter's state with the provided state.
      *
      * @param meter a meter
+     * @return the updated meter
      */
-    void updateMeterState(Meter meter);
+    Meter updateMeterState(Meter meter);
 
     /**
      * Obtains a meter matching the given meter key.
@@ -84,7 +85,7 @@
     /**
      * Returns all meters stored in the store.
      *
-     * @return a collection of meters
+     * @return an immutable copy of all meters
      */
     Collection<Meter> getAllMeters();
 
@@ -93,7 +94,7 @@
      * precise device.
      *
      * @param deviceId the device to get the meter list from
-     * @return a collection of meters
+     * @return an immutable copy of the meters stored for a given device
      */
     Collection<Meter> getAllMeters(DeviceId deviceId);
 
diff --git a/core/api/src/test/java/org/onosproject/store/service/TestConsistentMap.java b/core/api/src/test/java/org/onosproject/store/service/TestConsistentMap.java
index 84d1734..e0df8c6 100644
--- a/core/api/src/test/java/org/onosproject/store/service/TestConsistentMap.java
+++ b/core/api/src/test/java/org/onosproject/store/service/TestConsistentMap.java
@@ -44,6 +44,8 @@
     private final String mapName;
     private final AtomicLong counter = new AtomicLong(0);
     private final Serializer serializer;
+    private Map<K, V> javaMap;
+
 
     private TestConsistentMap(String mapName, Serializer serializer) {
         map = new ConcurrentHashMap<>();
@@ -197,9 +199,7 @@
 
     @Override
     public Collection<Versioned<V>> values() {
-        return map.values()
-                .stream()
-                .collect(Collectors.toList());
+        return map.values();
     }
 
     @Override
@@ -295,7 +295,12 @@
 
     @Override
     public Map<K, V> asJavaMap() {
-        return new ConsistentMapBackedJavaMap<>(this);
+        synchronized (this) {
+            if (javaMap == null) {
+                javaMap = new ConsistentMapBackedJavaMap<>(this);
+            }
+        }
+        return javaMap;
     }
 
     public static Builder builder() {