Add subrequest ID to OperationOutcome
[policy/models.git] / models-interactions / model-actors / actor.so / src / main / java / org / onap / policy / controlloop / actor / so / SoOperation.java
index 1ca6c73..3a14c3b 100644 (file)
@@ -198,12 +198,14 @@ public abstract class SoOperation extends HttpOperation<SoResponse> {
         if (rawResponse.getStatus() == 200) {
             String requestState = getRequestState(response);
             if (COMPLETE.equalsIgnoreCase(requestState)) {
+                populateSubRequestId(outcome, response);
                 successfulCompletion();
                 return CompletableFuture
                                 .completedFuture(setOutcome(outcome, PolicyResult.SUCCESS, rawResponse, response));
             }
 
             if (FAILED.equalsIgnoreCase(requestState)) {
+                populateSubRequestId(outcome, response);
                 return CompletableFuture
                                 .completedFuture(setOutcome(outcome, PolicyResult.FAILURE, rawResponse, response));
             }
@@ -212,8 +214,7 @@ public abstract class SoOperation extends HttpOperation<SoResponse> {
         // still incomplete
 
         // need a request ID with which to query
-        if (response == null || response.getRequestReferences() == null
-                        || response.getRequestReferences().getRequestId() == null) {
+        if (!populateSubRequestId(outcome, response)) {
             throw new IllegalArgumentException("missing request ID in response");
         }
 
@@ -230,6 +231,16 @@ public abstract class SoOperation extends HttpOperation<SoResponse> {
         return sleep(getWaitMsGet(), TimeUnit.MILLISECONDS).thenComposeAsync(doGet);
     }
 
+    private boolean populateSubRequestId(OperationOutcome outcome, SoResponse response) {
+        if (response == null || response.getRequestReferences() == null
+                        || response.getRequestReferences().getRequestId() == null) {
+            return false;
+        }
+
+        outcome.setSubRequestId(response.getRequestReferences().getRequestId());
+        return true;
+    }
+
     /**
      * Invoked when a request completes successfully.
      */