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/ConsistentContinuousResourceSubStore.java b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/ConsistentContinuousResourceSubStore.java
index e9c9ad7..60eed40 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/ConsistentContinuousResourceSubStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/ConsistentContinuousResourceSubStore.java
@@ -32,6 +32,7 @@
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
+import java.util.stream.Collectors;
import java.util.stream.Stream;
import static org.onosproject.store.resource.impl.ConsistentResourceStore.SERIALIZER;
@@ -79,6 +80,13 @@
return children.value();
}
+ <T> Set<ContinuousResource> getChildResources(DiscreteResourceId parent, Class<T> cls) {
+ // naive implementation
+ return getChildResources(parent).stream()
+ .filter(x -> x.isTypeOf(cls))
+ .collect(Collectors.toCollection(LinkedHashSet::new));
+ }
+
public boolean isAvailable(ContinuousResource resource) {
// check if it's registered or not.
Versioned<Set<ContinuousResource>> children = childMap.get(resource.parent().get().id());