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() {