Avoid extracting resoure set from backing range set
This is one of fixes for ONOS-4684
Change-Id: I5192df366d16b8aad5f8987abbf539897ca0e51c
diff --git a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodableDiscreteResources.java b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodableDiscreteResources.java
index f1b8f89..3dc12b3 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodableDiscreteResources.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodableDiscreteResources.java
@@ -122,7 +122,16 @@
@Override
public DiscreteResources add(DiscreteResources other) {
if (other instanceof EncodableDiscreteResources) {
- return of(parent, Sets.union(this.values(), other.values()));
+ EncodableDiscreteResources cast = (EncodableDiscreteResources) other;
+ LinkedHashMap<Class<?>, EncodedDiscreteResources> newMap =
+ Stream.concat(this.map.entrySet().stream(), cast.map.entrySet().stream())
+ .collect(Collectors.toMap(
+ Map.Entry::getKey,
+ Map.Entry::getValue,
+ EncodedDiscreteResources::add,
+ LinkedHashMap::new
+ ));
+ return new EncodableDiscreteResources(parent, newMap);
} else if (other instanceof EmptyDiscreteResources) {
return this;
}