Added range check for extra resources (#15)
Signed-off-by: Knut-Erik Johnsen <abstract@knut-erik.org>
This commit is contained in:
parent
f25bf16b83
commit
58cf299286
|
@ -4,7 +4,6 @@ import com.google.protobuf.util.JsonFormat;
|
|||
|
||||
import io.crossplane.compositefunctions.protobuf.ResourceSelector;
|
||||
import io.crossplane.compositefunctions.protobuf.Resources;
|
||||
import io.crossplane.compositefunctions.starter.exception.CrossplaneUnexpectedItemsException;
|
||||
import io.crossplane.compositefunctions.starter.exception.CrossplaneUnmarshallException;
|
||||
import io.fabric8.kubernetes.api.model.HasMetadata;
|
||||
import io.fabric8.kubernetes.client.utils.Serialization;
|
||||
|
@ -31,17 +30,19 @@ public class CrossplaneExtraResourcesService {
|
|||
|
||||
|
||||
public <T> Optional<T> getExtraResource(Map<String, Resources> extraResources, String resourceName, Class<T> clazz) {
|
||||
return getExtraResources(extraResources, resourceName, 1, clazz).get(0);
|
||||
List<Optional<T>> resources = getExtraResources(extraResources, resourceName, 1, clazz);
|
||||
|
||||
if (resources.isEmpty()) {
|
||||
return Optional.empty();
|
||||
}
|
||||
return resources.get(0);
|
||||
}
|
||||
|
||||
public <T> List<Optional<T>> getExtraResources(Map<String, Resources> extraResources, String resourceName, int expectedResources, Class<T> clazz) {
|
||||
List<Optional<T>> result = new ArrayList<>();
|
||||
Resources resources = extraResources.get(resourceName);
|
||||
|
||||
if (resources != null ) {
|
||||
if (resources.getItemsCount() != expectedResources) {
|
||||
throw new CrossplaneUnexpectedItemsException("Unexpected number of resources. Expected " + expectedResources + " but got " + resources.getItemsCount() + ".");
|
||||
}
|
||||
if (resources != null && resources.getItemsCount() == expectedResources) {
|
||||
for (int i = 0; i < expectedResources; i++) {
|
||||
try {
|
||||
logger.debug("We have an extra resource " + clazz.getSimpleName());
|
||||
|
|
|
@ -1,24 +0,0 @@
|
|||
package io.crossplane.compositefunctions.starter.exception;
|
||||
|
||||
/**
|
||||
* Exception for unexpected items encountered when converting
|
||||
*/
|
||||
public class CrossplaneUnexpectedItemsException extends RuntimeException {
|
||||
|
||||
/**
|
||||
* Constructor with message
|
||||
* @param message The exception message
|
||||
*/
|
||||
public CrossplaneUnexpectedItemsException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor with message and cause
|
||||
* @param message The exception message
|
||||
* @param cause The throwable that caused the exception
|
||||
*/
|
||||
public CrossplaneUnexpectedItemsException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue