Committed by
Ray Milkey
Define and implement a method to query available resources
Change-Id: I49fbcdf215e402603ea15f469d41e572f1cce1c6
Showing
4 changed files
with
39 additions
and
0 deletions
| ... | @@ -153,6 +153,14 @@ public interface ResourceService { | ... | @@ -153,6 +153,14 @@ public interface ResourceService { |
| 153 | Collection<ResourceAllocation> getResourceAllocations(ResourceConsumer consumer); | 153 | Collection<ResourceAllocation> getResourceAllocations(ResourceConsumer consumer); |
| 154 | 154 | ||
| 155 | /** | 155 | /** |
| 156 | + * Returns resource paths that point available child resources under the specified resource path. | ||
| 157 | + * | ||
| 158 | + * @param parent parent resource path | ||
| 159 | + * @return available resource paths under the specified resource path | ||
| 160 | + */ | ||
| 161 | + Collection<ResourcePath> getAvailableResources(ResourcePath parent); | ||
| 162 | + | ||
| 163 | + /** | ||
| 156 | * Returns the availability of the specified resource. | 164 | * Returns the availability of the specified resource. |
| 157 | * | 165 | * |
| 158 | * @param resource resource to check the availability | 166 | * @param resource resource to check the availability | ... | ... |
| ... | @@ -92,6 +92,14 @@ public interface ResourceStore { | ... | @@ -92,6 +92,14 @@ public interface ResourceStore { |
| 92 | Collection<ResourcePath> getResources(ResourceConsumer consumer); | 92 | Collection<ResourcePath> getResources(ResourceConsumer consumer); |
| 93 | 93 | ||
| 94 | /** | 94 | /** |
| 95 | + * Returns a collection of the child resources of the specified parent. | ||
| 96 | + * | ||
| 97 | + * @param parent parent of the resource to be returned | ||
| 98 | + * @return a collection of the child resources of the specified resource | ||
| 99 | + */ | ||
| 100 | + Collection<ResourcePath> getChildResources(ResourcePath parent); | ||
| 101 | + | ||
| 102 | + /** | ||
| 95 | * Returns a collection of the resources which are children of the specified parent and | 103 | * Returns a collection of the resources which are children of the specified parent and |
| 96 | * whose type is the specified class. | 104 | * whose type is the specified class. |
| 97 | * | 105 | * | ... | ... |
| ... | @@ -127,6 +127,17 @@ public final class ResourceManager implements ResourceService, ResourceAdminServ | ... | @@ -127,6 +127,17 @@ public final class ResourceManager implements ResourceService, ResourceAdminServ |
| 127 | } | 127 | } |
| 128 | 128 | ||
| 129 | @Override | 129 | @Override |
| 130 | + public Collection<ResourcePath> getAvailableResources(ResourcePath parent) { | ||
| 131 | + checkNotNull(parent); | ||
| 132 | + | ||
| 133 | + Collection<ResourcePath> children = store.getChildResources(parent); | ||
| 134 | + return children.stream() | ||
| 135 | + // We access store twice in this method, then the store may be updated by others | ||
| 136 | + .filter(x -> !store.getConsumer(x).isPresent()) | ||
| 137 | + .collect(Collectors.toList()); | ||
| 138 | + } | ||
| 139 | + | ||
| 140 | + @Override | ||
| 130 | public boolean isAvailable(ResourcePath resource) { | 141 | public boolean isAvailable(ResourcePath resource) { |
| 131 | checkNotNull(resource); | 142 | checkNotNull(resource); |
| 132 | 143 | ... | ... |
| ... | @@ -239,6 +239,18 @@ public class ConsistentResourceStore implements ResourceStore { | ... | @@ -239,6 +239,18 @@ public class ConsistentResourceStore implements ResourceStore { |
| 239 | } | 239 | } |
| 240 | 240 | ||
| 241 | @Override | 241 | @Override |
| 242 | + public Collection<ResourcePath> getChildResources(ResourcePath parent) { | ||
| 243 | + checkNotNull(parent); | ||
| 244 | + | ||
| 245 | + Versioned<List<ResourcePath>> children = childMap.get(parent); | ||
| 246 | + if (children == null) { | ||
| 247 | + return Collections.emptyList(); | ||
| 248 | + } | ||
| 249 | + | ||
| 250 | + return children.value(); | ||
| 251 | + } | ||
| 252 | + | ||
| 253 | + @Override | ||
| 242 | public <T> Collection<ResourcePath> getAllocatedResources(ResourcePath parent, Class<T> cls) { | 254 | public <T> Collection<ResourcePath> getAllocatedResources(ResourcePath parent, Class<T> cls) { |
| 243 | checkNotNull(parent); | 255 | checkNotNull(parent); |
| 244 | checkNotNull(cls); | 256 | checkNotNull(cls); | ... | ... |
-
Please register or login to post a comment