Add method to get available resources filtered by its type
Change-Id: I034bdcf4e9a399af6c68c7ed7f53185bba9b2e27
diff --git a/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceManager.java b/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceManager.java
index 1138fd6..88c3ab6 100644
--- a/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceManager.java
+++ b/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceManager.java
@@ -24,6 +24,7 @@
import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.apache.felix.scr.annotations.Service;
import org.onlab.util.GuavaCollectors;
+import org.onlab.util.Tools;
import org.onosproject.event.AbstractListenerManager;
import org.onosproject.net.newresource.DiscreteResourceId;
import org.onosproject.net.newresource.ResourceAdminService;
@@ -150,6 +151,28 @@
}
@Override
+ public <T> Set<Resource> getAvailableResources(DiscreteResourceId parent, Class<T> cls) {
+ checkNotNull(parent);
+ checkNotNull(cls);
+
+ // naive implementation
+ return getAvailableResources(parent).stream()
+ .filter(resource -> resource.isTypeOf(cls))
+ .collect(Collectors.toSet());
+ }
+
+ @Override
+ public <T> Set<T> getAvailableResourceValues(DiscreteResourceId parent, Class<T> cls) {
+ checkNotNull(parent);
+ checkNotNull(cls);
+
+ // naive implementation
+ return getAvailableResources(parent).stream()
+ .flatMap(resource -> Tools.stream(resource.valueAs(cls)))
+ .collect(Collectors.toSet());
+ }
+
+ @Override
public Set<Resource> getRegisteredResources(DiscreteResourceId parent) {
checkNotNull(parent);