summaryrefslogtreecommitdiffstats
path: root/cps-service/src/main/java/org
diff options
context:
space:
mode:
authorkissand <andras.zoltan.kiss@est.tech>2022-09-23 13:49:05 +0200
committerAndras Zoltan Kiss <andras.zoltan.kiss@est.tech>2022-10-12 12:32:42 +0000
commitd05c1d71f33c1d951d5a5196f6c206457431da9e (patch)
tree175b3ae4682d256dd971f046fcfd1169e5891a45 /cps-service/src/main/java/org
parentc9ec915d7d16b88f53493c85928d463d070df472 (diff)
Fix Id-searches endpoint performance degradation
- create more flexible control over fetch descendants - add a new FETCH_DIRECT_CHILDREN_ONLY option to fetch descendants options - enabel create custom fetch descendants option Reviewer: Toine, Joe, Priyank Issue-ID: CPS-1216 Change-Id: I900b32e813367aa9566c1dec986b20f009d27203 Signed-off-by: kissand <andras.zoltan.kiss@est.tech>
Diffstat (limited to 'cps-service/src/main/java/org')
-rw-r--r--cps-service/src/main/java/org/onap/cps/spi/FetchDescendantsOption.java48
1 files changed, 45 insertions, 3 deletions
diff --git a/cps-service/src/main/java/org/onap/cps/spi/FetchDescendantsOption.java b/cps-service/src/main/java/org/onap/cps/spi/FetchDescendantsOption.java
index 0c994d8d7b..b80054ac3b 100644
--- a/cps-service/src/main/java/org/onap/cps/spi/FetchDescendantsOption.java
+++ b/cps-service/src/main/java/org/onap/cps/spi/FetchDescendantsOption.java
@@ -1,6 +1,7 @@
/*
* ============LICENSE_START=======================================================
* Copyright (C) 2021 Pantheon.tech
+ * Copyright (C) 2022 Nordix Foundation
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,7 +20,48 @@
package org.onap.cps.spi;
-public enum FetchDescendantsOption {
- OMIT_DESCENDANTS,
- INCLUDE_ALL_DESCENDANTS
+import lombok.RequiredArgsConstructor;
+
+@RequiredArgsConstructor
+public class FetchDescendantsOption {
+
+ public static final FetchDescendantsOption FETCH_DIRECT_CHILDREN_ONLY = new FetchDescendantsOption(1);
+ public static final FetchDescendantsOption OMIT_DESCENDANTS = new FetchDescendantsOption(0);
+ public static final FetchDescendantsOption INCLUDE_ALL_DESCENDANTS = new FetchDescendantsOption(-1);
+
+ private final int depth;
+
+ /**
+ * Has next depth.
+ *
+ * @return true if next level of depth is available
+ * @throws IllegalArgumentException when depth less than -1
+ */
+ public boolean hasNext() {
+ validateDepth(depth);
+ return depth > 0 || this.depth == INCLUDE_ALL_DESCENDANTS.depth;
+ }
+
+ /**
+ * Next fetch descendants option.
+ *
+ * @return the next fetch descendants option
+ * @throws IllegalArgumentException when depth less than -1 or 0
+ */
+ public FetchDescendantsOption next() {
+ if (depth == 0) {
+ throw new IllegalArgumentException("Do not use next() method with zero depth");
+ }
+ final FetchDescendantsOption nextDescendantsOption = this.depth == INCLUDE_ALL_DESCENDANTS.depth
+ ? INCLUDE_ALL_DESCENDANTS : new FetchDescendantsOption(depth - 1);
+ validateDepth(nextDescendantsOption.depth);
+ return nextDescendantsOption;
+ }
+
+ private static void validateDepth(final int depth) {
+ if (depth < -1) {
+ throw new IllegalArgumentException("A depth of less than minus one is not allowed");
+ }
+ }
+
}