Discard requests in APPC legacy actor 23/104523/1
authorJim Hahn <jrh3@att.com>
Thu, 26 Mar 2020 15:51:52 +0000 (11:51 -0400)
committerJim Hahn <jrh3@att.com>
Thu, 26 Mar 2020 15:57:54 +0000 (11:57 -0400)
The new actor for legacy APPC attempts to discard request
messages received on the response topic by discarding those
that have a null response.  Unfortunately, when it decodes them,
the Response object creates a status object, even if there isn't
one in the json message, thus the test fails and the actor treats
it as a failed response.

Issue-ID: POLICY-2434
Signed-off-by: Jim Hahn <jrh3@att.com>
Change-Id: I26cfb25443ff2ed394781d309f9097d50b8f160b
Signed-off-by: Jim Hahn <jrh3@att.com>
models-interactions/model-actors/actor.appc/src/test/java/org/onap/policy/controlloop/actor/appc/AppcServiceProviderTest.java
models-interactions/model-impl/appc/src/main/java/org/onap/policy/appc/Response.java

index 068f0b5..0fd3a8a 100644 (file)
@@ -37,6 +37,7 @@ import org.junit.Test;
 import org.onap.policy.appc.Request;
 import org.onap.policy.appc.Response;
 import org.onap.policy.appc.ResponseCode;
+import org.onap.policy.appc.ResponseStatus;
 import org.onap.policy.appc.util.Serialization;
 import org.onap.policy.common.endpoints.http.server.HttpServletServerFactoryInstance;
 import org.onap.policy.controlloop.ControlLoopEventStatus;
@@ -194,6 +195,7 @@ public class AppcServiceProviderTest extends BasicActor {
         assertFalse(jsonRequest.contains(SUBVALUE + ".0"));
 
         Response appcResponse = new Response(appcRequest);
+        appcResponse.setStatus(new ResponseStatus());
         appcResponse.getStatus().setCode(ResponseCode.SUCCESS.getValue());
         appcResponse.getStatus().setDescription("AppC success");
         /* Print out request as json to make sure serialization works */
@@ -237,6 +239,7 @@ public class AppcServiceProviderTest extends BasicActor {
         assertTrue(jsonRequest.contains(GENERIC_VNF_ID));
 
         Response appcResponse = new Response(appcRequest);
+        appcResponse.setStatus(new ResponseStatus());
         appcResponse.getStatus().setCode(ResponseCode.SUCCESS.getValue());
         appcResponse.getStatus().setDescription("AppC success");
         /* Print out request as json to make sure serialization works */
index ae8b764..fb70151 100644 (file)
@@ -38,8 +38,13 @@ public class Response implements Serializable {
     @SerializedName("CommonHeader")
     private CommonHeader commonHeader;
 
+    /**
+     * This should only be populated if the incoming message actually has a "Status"
+     * field. Otherwise, actor.appc will be unable to use this to distinguish between
+     * Request and Response objects.
+     */
     @SerializedName("Status")
-    private ResponseStatus status = new ResponseStatus();
+    private ResponseStatus status;
 
     @SerializedName("Payload")
     private Map<String, Object> payload = new HashMap<>();