Make resource retrieval more efficient when specifing resource type
This resolves ONOS-4666
Change-Id: I9d09b60531ca48b36fc20f43498cda62f1badb8b
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 25ec5a7..512b233 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
@@ -16,6 +16,7 @@
package org.onosproject.store.resource.impl;
import com.google.common.base.MoreObjects;
+import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
import org.onosproject.net.resource.DiscreteResource;
import org.onosproject.net.resource.DiscreteResourceCodec;
@@ -114,6 +115,13 @@
.collect(Collectors.toCollection(LinkedHashSet::new));
}
+ @Override
+ public <T> Set<DiscreteResource> valuesOf(Class<T> cls) {
+ return Optional.ofNullable(values.get(cls))
+ .map(x -> x.values(parent.id()))
+ .orElse(ImmutableSet.of());
+ }
+
DiscreteResource parent() {
return parent;
}