From 58cf299286045426a415e11c65a0b80d57f28bf4 Mon Sep 17 00:00:00 2001 From: Knut-Erik Johnsen Date: Thu, 27 Jun 2024 14:33:10 +0200 Subject: [PATCH] Added range check for extra resources (#15) Signed-off-by: Knut-Erik Johnsen --- .../CrossplaneExtraResourcesService.java | 13 +++++----- .../CrossplaneUnexpectedItemsException.java | 24 ------------------- 2 files changed, 7 insertions(+), 30 deletions(-) delete mode 100644 crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/exception/CrossplaneUnexpectedItemsException.java diff --git a/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/conversion/CrossplaneExtraResourcesService.java b/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/conversion/CrossplaneExtraResourcesService.java index 13941d8..fde435e 100644 --- a/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/conversion/CrossplaneExtraResourcesService.java +++ b/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/conversion/CrossplaneExtraResourcesService.java @@ -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 Optional getExtraResource(Map extraResources, String resourceName, Class clazz) { - return getExtraResources(extraResources, resourceName, 1, clazz).get(0); + List> resources = getExtraResources(extraResources, resourceName, 1, clazz); + + if (resources.isEmpty()) { + return Optional.empty(); + } + return resources.get(0); } public List> getExtraResources(Map extraResources, String resourceName, int expectedResources, Class clazz) { List> 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()); diff --git a/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/exception/CrossplaneUnexpectedItemsException.java b/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/exception/CrossplaneUnexpectedItemsException.java deleted file mode 100644 index e0bbbdf..0000000 --- a/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/exception/CrossplaneUnexpectedItemsException.java +++ /dev/null @@ -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); - } -}