summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJim Hahn <jrh3@att.com>2020-02-24 15:11:35 -0500
committerJim Hahn <jrh3@att.com>2020-02-25 10:18:07 -0500
commit7a59728f0d4cc0964bed2e4575a8f02de59f385f (patch)
tree1cff490ea1e9f3dd2478c822c2ee80fb55b5335e
parentfd9186d130a6777f93c10e7aff0289a05efed86c (diff)
Add PipelineUtil
Issue-ID: POLICY-2385 Signed-off-by: Jim Hahn <jrh3@att.com> Change-Id: I7745e8286dd6f086941b979f16b2328bfa066788
-rw-r--r--models-interactions/model-actors/actorServiceProvider/src/main/java/org/onap/policy/controlloop/actorserviceprovider/impl/OperationPartial.java16
-rw-r--r--models-interactions/model-actors/actorServiceProvider/src/main/java/org/onap/policy/controlloop/actorserviceprovider/pipeline/PipelineUtil.java48
-rw-r--r--models-interactions/model-actors/actorServiceProvider/src/test/java/org/onap/policy/controlloop/actorserviceprovider/pipeline/PipelineUtilTest.java37
3 files changed, 93 insertions, 8 deletions
diff --git a/models-interactions/model-actors/actorServiceProvider/src/main/java/org/onap/policy/controlloop/actorserviceprovider/impl/OperationPartial.java b/models-interactions/model-actors/actorServiceProvider/src/main/java/org/onap/policy/controlloop/actorserviceprovider/impl/OperationPartial.java
index be357b8f3..ff1b46264 100644
--- a/models-interactions/model-actors/actorServiceProvider/src/main/java/org/onap/policy/controlloop/actorserviceprovider/impl/OperationPartial.java
+++ b/models-interactions/model-actors/actorServiceProvider/src/main/java/org/onap/policy/controlloop/actorserviceprovider/impl/OperationPartial.java
@@ -113,7 +113,7 @@ public abstract class OperationPartial implements Operation {
}
@Override
- public final CompletableFuture<OperationOutcome> start() {
+ public CompletableFuture<OperationOutcome> start() {
// allocate a controller for the entire operation
final PipelineControllerFuture<OperationOutcome> controller = new PipelineControllerFuture<>();
@@ -539,7 +539,7 @@ public abstract class OperationPartial implements Operation {
* created. If this future is canceled, then all of the futures will be
* canceled
*/
- protected CompletableFuture<OperationOutcome> anyOf(
+ public CompletableFuture<OperationOutcome> anyOf(
@SuppressWarnings("unchecked") Supplier<CompletableFuture<OperationOutcome>>... futureMakers) {
return anyOf(Arrays.asList(futureMakers));
@@ -558,7 +558,7 @@ public abstract class OperationPartial implements Operation {
* canceled. Similarly, when this future completes, any incomplete futures
* will be canceled
*/
- protected CompletableFuture<OperationOutcome> anyOf(
+ public CompletableFuture<OperationOutcome> anyOf(
List<Supplier<CompletableFuture<OperationOutcome>>> futureMakers) {
PipelineControllerFuture<OperationOutcome> controller = new PipelineControllerFuture<>();
@@ -592,7 +592,7 @@ public abstract class OperationPartial implements Operation {
* created. If this future is canceled, then all of the futures will be
* canceled
*/
- protected CompletableFuture<OperationOutcome> allOf(
+ public CompletableFuture<OperationOutcome> allOf(
@SuppressWarnings("unchecked") Supplier<CompletableFuture<OperationOutcome>>... futureMakers) {
return allOf(Arrays.asList(futureMakers));
@@ -610,7 +610,7 @@ public abstract class OperationPartial implements Operation {
* canceled. Similarly, when this future completes, any incomplete futures
* will be canceled
*/
- protected CompletableFuture<OperationOutcome> allOf(
+ public CompletableFuture<OperationOutcome> allOf(
List<Supplier<CompletableFuture<OperationOutcome>>> futureMakers) {
PipelineControllerFuture<OperationOutcome> controller = new PipelineControllerFuture<>();
@@ -769,7 +769,7 @@ public abstract class OperationPartial implements Operation {
* @param futureMakers functions to make the futures
* @return a future to cancel the sequence or await the outcome
*/
- protected CompletableFuture<OperationOutcome> sequence(
+ public CompletableFuture<OperationOutcome> sequence(
@SuppressWarnings("unchecked") Supplier<CompletableFuture<OperationOutcome>>... futureMakers) {
return sequence(Arrays.asList(futureMakers));
@@ -784,7 +784,7 @@ public abstract class OperationPartial implements Operation {
* @return a future to cancel the sequence or await the outcome, or {@code null} if
* there were no tasks to perform
*/
- protected CompletableFuture<OperationOutcome> sequence(
+ public CompletableFuture<OperationOutcome> sequence(
List<Supplier<CompletableFuture<OperationOutcome>>> futureMakers) {
Queue<Supplier<CompletableFuture<OperationOutcome>>> queue = new ArrayDeque<>(futureMakers);
@@ -926,7 +926,7 @@ public abstract class OperationPartial implements Operation {
* @param operation operation to be updated
* @return the updated operation
*/
- protected OperationOutcome setOutcome(OperationOutcome operation, Throwable thrown) {
+ public OperationOutcome setOutcome(OperationOutcome operation, Throwable thrown) {
PolicyResult result = (isTimeout(thrown) ? PolicyResult.FAILURE_TIMEOUT : PolicyResult.FAILURE_EXCEPTION);
return setOutcome(operation, result);
}
diff --git a/models-interactions/model-actors/actorServiceProvider/src/main/java/org/onap/policy/controlloop/actorserviceprovider/pipeline/PipelineUtil.java b/models-interactions/model-actors/actorServiceProvider/src/main/java/org/onap/policy/controlloop/actorserviceprovider/pipeline/PipelineUtil.java
new file mode 100644
index 000000000..3854fb29a
--- /dev/null
+++ b/models-interactions/model-actors/actorServiceProvider/src/main/java/org/onap/policy/controlloop/actorserviceprovider/pipeline/PipelineUtil.java
@@ -0,0 +1,48 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP
+ * ================================================================================
+ * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.controlloop.actorserviceprovider.pipeline;
+
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ForkJoinPool;
+import org.onap.policy.controlloop.actorserviceprovider.OperationOutcome;
+import org.onap.policy.controlloop.actorserviceprovider.impl.OperationPartial;
+import org.onap.policy.controlloop.actorserviceprovider.parameters.ControlLoopOperationParams;
+import org.onap.policy.controlloop.actorserviceprovider.parameters.OperatorConfig;
+
+/**
+ * Utility class providing anyOf(), allOf(), sequence() to actor clients.
+ */
+public class PipelineUtil extends OperationPartial {
+
+ /**
+ * Constructs the utility.
+ *
+ * @param params utility parameters
+ */
+ public PipelineUtil(ControlLoopOperationParams params) {
+ super(params, new OperatorConfig(ForkJoinPool.commonPool()));
+ }
+
+ @Override
+ public CompletableFuture<OperationOutcome> start() {
+ throw new UnsupportedOperationException("cannot start() pipeline utility");
+ }
+}
diff --git a/models-interactions/model-actors/actorServiceProvider/src/test/java/org/onap/policy/controlloop/actorserviceprovider/pipeline/PipelineUtilTest.java b/models-interactions/model-actors/actorServiceProvider/src/test/java/org/onap/policy/controlloop/actorserviceprovider/pipeline/PipelineUtilTest.java
new file mode 100644
index 000000000..fbcacbf30
--- /dev/null
+++ b/models-interactions/model-actors/actorServiceProvider/src/test/java/org/onap/policy/controlloop/actorserviceprovider/pipeline/PipelineUtilTest.java
@@ -0,0 +1,37 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP
+ * ================================================================================
+ * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.controlloop.actorserviceprovider.pipeline;
+
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+
+import org.junit.Test;
+import org.onap.policy.controlloop.actorserviceprovider.parameters.ControlLoopOperationParams;
+
+public class PipelineUtilTest {
+
+ @Test
+ public void testPipelineUtil() {
+ ControlLoopOperationParams params = ControlLoopOperationParams.builder().build();
+ PipelineUtil util = new PipelineUtil(params);
+
+ assertThatThrownBy(() -> util.start()).isInstanceOf(UnsupportedOperationException.class);
+ }
+}