Tighten return type to specific resource type
Change-Id: If279efae78e59de5bb8fde35e11def761158abf9
diff --git a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/TransactionalContinuousResourceStore.java b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/TransactionalContinuousResourceStore.java
index 7a91f06..c7a7d6e 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/TransactionalContinuousResourceStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/TransactionalContinuousResourceStore.java
@@ -21,7 +21,6 @@
import org.onosproject.net.resource.ContinuousResource;
import org.onosproject.net.resource.ContinuousResourceId;
import org.onosproject.net.resource.DiscreteResourceId;
-import org.onosproject.net.resource.Resource;
import org.onosproject.net.resource.ResourceAllocation;
import org.onosproject.net.resource.ResourceConsumer;
import org.onosproject.store.service.TransactionContext;
@@ -35,6 +34,7 @@
import java.util.Set;
import java.util.stream.Collectors;
+import static com.google.common.base.Preconditions.checkArgument;
import static org.onosproject.store.resource.impl.ConsistentResourceStore.SERIALIZER;
import static org.onosproject.store.resource.impl.ResourceStoreUtil.hasEnoughResource;
@@ -49,10 +49,9 @@
}
// iterate over the values in the set: O(n) operation
- Optional<Resource> lookup(ContinuousResourceId id) {
- if (!id.parent().isPresent()) {
- return Optional.of(Resource.ROOT);
- }
+ Optional<ContinuousResource> lookup(ContinuousResourceId id) {
+ // continuous resource always has its parent
+ checkArgument(id.parent().isPresent());
Set<ContinuousResource> values = childMap.get(id.parent().get());
if (values == null) {
@@ -61,7 +60,6 @@
return values.stream()
.filter(x -> x.id().equals(id))
- .map(x -> (Resource) x)
.findFirst();
}
@@ -128,12 +126,12 @@
boolean allocate(ResourceConsumer consumer, ContinuousResource request) {
// if the resource is not registered, then abort
- Optional<Resource> lookedUp = lookup(request.id());
+ Optional<ContinuousResource> lookedUp = lookup(request.id());
if (!lookedUp.isPresent()) {
return false;
}
// Down cast: this must be safe as ContinuousResource is associated with ContinuousResourceId
- ContinuousResource original = (ContinuousResource) lookedUp.get();
+ ContinuousResource original = lookedUp.get();
ContinuousResourceAllocation allocations = consumers.get(request.id());
if (!hasEnoughResource(original, request, allocations)) {
return false;
diff --git a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/TransactionalDiscreteResourceStore.java b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/TransactionalDiscreteResourceStore.java
index 3c99da9..7aad6a6 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/TransactionalDiscreteResourceStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/TransactionalDiscreteResourceStore.java
@@ -44,7 +44,7 @@
}
// check the existence in the set: O(1) operation
- Optional<Resource> lookup(DiscreteResourceId id) {
+ Optional<DiscreteResource> lookup(DiscreteResourceId id) {
if (!id.parent().isPresent()) {
return Optional.of(Resource.ROOT);
}
@@ -115,7 +115,7 @@
boolean allocate(ResourceConsumer consumer, DiscreteResource resource) {
// if the resource is not registered, then abort
- Optional<Resource> lookedUp = lookup(resource.id());
+ Optional<DiscreteResource> lookedUp = lookup(resource.id());
if (!lookedUp.isPresent()) {
return false;
}