Make serialized resources more compact to omit redundant parent resource ID
Change-Id: Icafe92f35bded405dd39e57ad8380bca82a6d720
(cherry picked from commit d68739b5839e1d2be907d3806e2c742df9da95fd)
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 a20ca52..7eaedc1 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
@@ -19,7 +19,6 @@
import org.onosproject.net.resource.DiscreteResource;
import org.onosproject.net.resource.DiscreteResourceCodec;
import org.onosproject.net.resource.DiscreteResourceId;
-import org.onosproject.net.resource.DiscreteResourceSet;
import org.onosproject.net.resource.Resources;
import java.util.LinkedHashMap;
@@ -36,7 +35,7 @@
final class EncodableDiscreteResources implements DiscreteResources {
private static final Codecs CODECS = Codecs.getInstance();
private final DiscreteResource parent;
- private final Map<Class<?>, DiscreteResourceSet> values;
+ private final Map<Class<?>, EncodedDiscreteResources> values;
private static Class<?> getClass(DiscreteResource resource) {
return resource.valueAs(Object.class).map(Object::getClass).get();
@@ -55,16 +54,16 @@
Map<Class<?>, Set<DiscreteResource>> grouped = resources.stream()
.collect(Collectors.groupingBy(x -> getClass(x), Collectors.toCollection(LinkedHashSet::new)));
- Map<Class<?>, DiscreteResourceSet> values = new LinkedHashMap<>();
+ Map<Class<?>, EncodedDiscreteResources> values = new LinkedHashMap<>();
for (Map.Entry<Class<?>, Set<DiscreteResource>> entry : grouped.entrySet()) {
DiscreteResourceCodec<?> codec = CODECS.getCodec(entry.getKey());
- values.put(entry.getKey(), DiscreteResourceSet.of(entry.getValue(), codec));
+ values.put(entry.getKey(), EncodedDiscreteResources.of(entry.getValue(), codec));
}
return new EncodableDiscreteResources(parent, values);
}
- private EncodableDiscreteResources(DiscreteResource parent, Map<Class<?>, DiscreteResourceSet> values) {
+ private EncodableDiscreteResources(DiscreteResource parent, Map<Class<?>, EncodedDiscreteResources> values) {
this.parent = parent;
this.values = values;
}
@@ -93,10 +92,8 @@
@Override
public boolean isEmpty() {
- return !values.values().stream()
- .flatMap(x -> x.values().stream())
- .findAny()
- .isPresent();
+ return values.values().stream()
+ .allMatch(x -> x.isEmpty());
}
@Override
@@ -120,7 +117,7 @@
@Override
public Set<DiscreteResource> values() {
return values.values().stream()
- .flatMap(x -> x.values().stream())
+ .flatMap(x -> x.resources(parent.id()).stream())
.collect(Collectors.toCollection(LinkedHashSet::new));
}
@@ -128,7 +125,7 @@
return parent;
}
- Map<Class<?>, DiscreteResourceSet> rawValues() {
+ Map<Class<?>, EncodedDiscreteResources> rawValues() {
return values;
}
}