diff options
Diffstat (limited to 'models-interactions/model-actors/actorServiceProvider')
2 files changed, 19 insertions, 9 deletions
diff --git a/models-interactions/model-actors/actorServiceProvider/src/main/java/org/onap/policy/controlloop/actorserviceprovider/impl/BidirectionalTopicOperation.java b/models-interactions/model-actors/actorServiceProvider/src/main/java/org/onap/policy/controlloop/actorserviceprovider/impl/BidirectionalTopicOperation.java index b38ddb08a..ec522a405 100644 --- a/models-interactions/model-actors/actorServiceProvider/src/main/java/org/onap/policy/controlloop/actorserviceprovider/impl/BidirectionalTopicOperation.java +++ b/models-interactions/model-actors/actorServiceProvider/src/main/java/org/onap/policy/controlloop/actorserviceprovider/impl/BidirectionalTopicOperation.java @@ -25,6 +25,7 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; import java.util.function.BiConsumer; import lombok.Getter; +import org.apache.commons.lang3.tuple.Pair; import org.onap.policy.common.endpoints.utils.NetLoggerUtil.EventType; import org.onap.policy.common.utils.coder.CoderException; import org.onap.policy.common.utils.coder.StandardCoderObject; @@ -105,7 +106,10 @@ public abstract class BidirectionalTopicOperation<Q, S> extends OperationPartial @Override protected CompletableFuture<OperationOutcome> startOperationAsync(int attempt, OperationOutcome outcome) { - final Q request = makeRequest(attempt); + final Pair<String,Q> pair = makeRequest(attempt); + final Q request = pair.getRight(); + outcome.setSubRequestId(pair.getLeft()); + final List<String> expectedKeyValues = getExpectedKeyValues(attempt, request); final PipelineControllerFuture<OperationOutcome> controller = new PipelineControllerFuture<>(); @@ -142,9 +146,10 @@ public abstract class BidirectionalTopicOperation<Q, S> extends OperationPartial * Makes the request. * * @param attempt operation attempt - * @return a new request + * @return a pair containing sub request ID, which may be {@code null} and the new + * request */ - protected abstract Q makeRequest(int attempt); + protected abstract Pair<String, Q> makeRequest(int attempt); /** * Gets values, expected in the response, that should match the selector keys. diff --git a/models-interactions/model-actors/actorServiceProvider/src/test/java/org/onap/policy/controlloop/actorserviceprovider/impl/BidirectionalTopicOperationTest.java b/models-interactions/model-actors/actorServiceProvider/src/test/java/org/onap/policy/controlloop/actorserviceprovider/impl/BidirectionalTopicOperationTest.java index 5725a6d61..587564a2e 100644 --- a/models-interactions/model-actors/actorServiceProvider/src/test/java/org/onap/policy/controlloop/actorserviceprovider/impl/BidirectionalTopicOperationTest.java +++ b/models-interactions/model-actors/actorServiceProvider/src/test/java/org/onap/policy/controlloop/actorserviceprovider/impl/BidirectionalTopicOperationTest.java @@ -40,6 +40,7 @@ import java.util.concurrent.CompletableFuture; import java.util.function.BiConsumer; import lombok.Getter; import lombok.Setter; +import org.apache.commons.lang3.tuple.Pair; import org.junit.Before; import org.junit.Test; import org.mockito.ArgumentCaptor; @@ -66,6 +67,7 @@ public class BidirectionalTopicOperationTest { private static final String OPERATION = "my-operation"; private static final String REQ_ID = "my-request-id"; private static final String TEXT = "some text"; + private static final String SUB_REQID = "my-sub-request-id"; private static final int TIMEOUT_SEC = 10; private static final long TIMEOUT_MS = 1000 * TIMEOUT_SEC; private static final int MAX_REQUESTS = 100; @@ -136,6 +138,8 @@ public class BidirectionalTopicOperationTest { CompletableFuture<OperationOutcome> future = oper.startOperationAsync(1, outcome); assertFalse(future.isDone()); + assertEquals(SUB_REQID, outcome.getSubRequestId()); + verify(forwarder).register(eq(Arrays.asList(REQ_ID)), listenerCaptor.capture()); verify(forwarder, never()).unregister(any(), any()); @@ -323,13 +327,14 @@ public class BidirectionalTopicOperationTest { private class MyStringOperation extends BidirectionalTopicOperation<String, String> { + public MyStringOperation() { super(BidirectionalTopicOperationTest.this.params, config, String.class); } @Override - protected String makeRequest(int attempt) { - return TEXT; + protected Pair<String, String> makeRequest(int attempt) { + return Pair.of(SUB_REQID, TEXT); } @Override @@ -350,8 +355,8 @@ public class BidirectionalTopicOperationTest { } @Override - protected MyRequest makeRequest(int attempt) { - return new MyRequest(); + protected Pair<String, MyRequest> makeRequest(int attempt) { + return Pair.of(SUB_REQID, new MyRequest()); } @Override @@ -372,8 +377,8 @@ public class BidirectionalTopicOperationTest { } @Override - protected MyRequest makeRequest(int attempt) { - return new MyRequest(); + protected Pair<String, MyRequest> makeRequest(int attempt) { + return Pair.of(SUB_REQID, new MyRequest()); } @Override |