aboutsummaryrefslogtreecommitdiffstats
path: root/models-interactions/model-actors
diff options
context:
space:
mode:
authorDaniel Cruz <dc443y@att.com>2019-10-23 17:33:28 -0500
committerDaniel Cruz <dc443y@att.com>2019-10-25 10:14:01 -0500
commitfb601b21a0b0c530c333b3e270285c804a99f3bb (patch)
tree5abc9cd6a414d2d3f03f90da1965c49f6680f6ce /models-interactions/model-actors
parent5f69582dfaf325a8552ebeaa7cd69f81bc7d478f (diff)
Refactor Appc LCM Model
Added model classes for APPC LCM Input and APPC LCM Output and removed adding the input/output tag to the JSON via the APPC LCM custom serializer. Issue-ID: POLICY-2043 Signed-off-by: Daniel Cruz <dc443y@att.com> Change-Id: I54e1b5f589a4b29357cf1a45dbdf2173610870ce
Diffstat (limited to 'models-interactions/model-actors')
-rw-r--r--models-interactions/model-actors/actor.appclcm/src/main/java/org/onap/policy/controlloop/actor/appclcm/AppcLcmActorServiceProvider.java54
-rw-r--r--models-interactions/model-actors/actor.appclcm/src/test/java/org/onap/policy/controlloop/actor/appclcm/AppcLcmActorServiceProviderTest.java139
2 files changed, 116 insertions, 77 deletions
diff --git a/models-interactions/model-actors/actor.appclcm/src/main/java/org/onap/policy/controlloop/actor/appclcm/AppcLcmActorServiceProvider.java b/models-interactions/model-actors/actor.appclcm/src/main/java/org/onap/policy/controlloop/actor/appclcm/AppcLcmActorServiceProvider.java
index 21cce2fd6..447a2720d 100644
--- a/models-interactions/model-actors/actor.appclcm/src/main/java/org/onap/policy/controlloop/actor/appclcm/AppcLcmActorServiceProvider.java
+++ b/models-interactions/model-actors/actor.appclcm/src/main/java/org/onap/policy/controlloop/actor/appclcm/AppcLcmActorServiceProvider.java
@@ -39,12 +39,12 @@ import org.onap.policy.aai.AaiNqQueryParameters;
import org.onap.policy.aai.AaiNqRequest;
import org.onap.policy.aai.AaiNqResponse;
import org.onap.policy.aai.util.AaiException;
-import org.onap.policy.appclcm.LcmCommonHeader;
-import org.onap.policy.appclcm.LcmRequest;
-import org.onap.policy.appclcm.LcmRequestWrapper;
-import org.onap.policy.appclcm.LcmResponse;
-import org.onap.policy.appclcm.LcmResponseCode;
-import org.onap.policy.appclcm.LcmResponseWrapper;
+import org.onap.policy.appclcm.AppcLcmBody;
+import org.onap.policy.appclcm.AppcLcmCommonHeader;
+import org.onap.policy.appclcm.AppcLcmDmaapWrapper;
+import org.onap.policy.appclcm.AppcLcmInput;
+import org.onap.policy.appclcm.AppcLcmOutput;
+import org.onap.policy.appclcm.AppcLcmResponseCode;
import org.onap.policy.controlloop.ControlLoopOperation;
import org.onap.policy.controlloop.VirtualControlLoopEvent;
import org.onap.policy.controlloop.actorserviceprovider.spi.Actor;
@@ -186,7 +186,7 @@ public class AppcLcmActorServiceProvider implements Actor {
* Policy GUI/API
* @return an APPC request conforming to the lcm API using the DMAAP wrapper
*/
- public static LcmRequestWrapper constructRequest(VirtualControlLoopEvent onset, ControlLoopOperation operation,
+ public static AppcLcmDmaapWrapper constructRequest(VirtualControlLoopEvent onset, ControlLoopOperation operation,
Policy policy, String targetVnf) {
/* Construct an APPC request using LCM Model */
@@ -197,17 +197,17 @@ public class AppcLcmActorServiceProvider implements Actor {
*/
AppcLcmRecipeFormatter lcmRecipeFormatter = new AppcLcmRecipeFormatter(policy.getRecipe());
- LcmRequestWrapper dmaapRequest = new LcmRequestWrapper();
+ AppcLcmDmaapWrapper dmaapRequest = new AppcLcmDmaapWrapper();
dmaapRequest.setVersion("2.0");
dmaapRequest.setCorrelationId(onset.getRequestId() + "-" + operation.getSubRequestId());
dmaapRequest.setRpcName(lcmRecipeFormatter.getUrlRecipe());
dmaapRequest.setType("request");
/* This is the actual request that is placed in the dmaap wrapper. */
- final LcmRequest appcRequest = new LcmRequest();
+ final AppcLcmInput appcRequest = new AppcLcmInput();
/* The common header is a required field for all APPC requests. */
- LcmCommonHeader requestCommonHeader = new LcmCommonHeader();
+ AppcLcmCommonHeader requestCommonHeader = new AppcLcmCommonHeader();
requestCommonHeader.setOriginatorId(onset.getRequestId().toString());
requestCommonHeader.setRequestId(onset.getRequestId());
requestCommonHeader.setSubRequestId(operation.getSubRequestId());
@@ -241,9 +241,15 @@ public class AppcLcmActorServiceProvider implements Actor {
}
/*
+ * The APPC request must be wrapped in an input object.
+ */
+ AppcLcmBody body = new AppcLcmBody();
+ body.setInput(appcRequest);
+
+ /*
* Once the LCM request is constructed, add it into the body of the dmaap wrapper.
*/
- dmaapRequest.setBody(appcRequest);
+ dmaapRequest.setBody(body);
/* Return the request to be sent through dmaap. */
return dmaapRequest;
@@ -293,9 +299,17 @@ public class AppcLcmActorServiceProvider implements Actor {
*
* @return an key-value pair that contains the Policy result and APPC response message
*/
- public static SimpleEntry<PolicyResult, String> processResponse(LcmResponseWrapper dmaapResponse) {
- /* The actual APPC response is inside the wrapper's body field. */
- LcmResponse appcResponse = dmaapResponse.getBody();
+ public static SimpleEntry<PolicyResult, String> processResponse(AppcLcmDmaapWrapper dmaapResponse) {
+ AppcLcmBody appcBody = dmaapResponse.getBody();
+ if (appcBody == null) {
+ throw new NullPointerException("APPC Body is null");
+ }
+
+ /* The actual APPC response is inside the dmaap wrapper's body.input field. */
+ AppcLcmOutput appcResponse = appcBody.getOutput();
+ if (appcResponse == null) {
+ throw new NullPointerException("APPC Response is null");
+ }
/* The message returned in the APPC response. */
String message;
@@ -310,7 +324,7 @@ public class AppcLcmActorServiceProvider implements Actor {
}
/* If there is no code, Policy cannot determine if the request was successful. */
- String responseValue = LcmResponseCode.toResponseValue(appcResponse.getStatus().getCode());
+ String responseValue = AppcLcmResponseCode.toResponseValue(appcResponse.getStatus().getCode());
if (responseValue == null) {
message = "Policy was unable to parse APP-C response status code field.";
return new AbstractMap.SimpleEntry<>(PolicyResult.FAILURE_EXCEPTION, message);
@@ -321,18 +335,18 @@ public class AppcLcmActorServiceProvider implements Actor {
/* Maps the APPC response result to a Policy result. */
switch (responseValue) {
- case LcmResponseCode.ACCEPTED:
+ case AppcLcmResponseCode.ACCEPTED:
/* Nothing to do if code is accept, continue processing */
result = null;
break;
- case LcmResponseCode.SUCCESS:
+ case AppcLcmResponseCode.SUCCESS:
result = PolicyResult.SUCCESS;
break;
- case LcmResponseCode.FAILURE:
+ case AppcLcmResponseCode.FAILURE:
result = PolicyResult.FAILURE;
break;
- case LcmResponseCode.REJECT:
- case LcmResponseCode.ERROR:
+ case AppcLcmResponseCode.REJECT:
+ case AppcLcmResponseCode.ERROR:
default:
result = PolicyResult.FAILURE_EXCEPTION;
}
diff --git a/models-interactions/model-actors/actor.appclcm/src/test/java/org/onap/policy/controlloop/actor/appclcm/AppcLcmActorServiceProviderTest.java b/models-interactions/model-actors/actor.appclcm/src/test/java/org/onap/policy/controlloop/actor/appclcm/AppcLcmActorServiceProviderTest.java
index a709f3fa0..45057f008 100644
--- a/models-interactions/model-actors/actor.appclcm/src/test/java/org/onap/policy/controlloop/actor/appclcm/AppcLcmActorServiceProviderTest.java
+++ b/models-interactions/model-actors/actor.appclcm/src/test/java/org/onap/policy/controlloop/actor/appclcm/AppcLcmActorServiceProviderTest.java
@@ -32,11 +32,11 @@ import java.util.UUID;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
-import org.onap.policy.appclcm.LcmCommonHeader;
-import org.onap.policy.appclcm.LcmRequest;
-import org.onap.policy.appclcm.LcmRequestWrapper;
-import org.onap.policy.appclcm.LcmResponse;
-import org.onap.policy.appclcm.LcmResponseWrapper;
+import org.onap.policy.appclcm.AppcLcmBody;
+import org.onap.policy.appclcm.AppcLcmCommonHeader;
+import org.onap.policy.appclcm.AppcLcmDmaapWrapper;
+import org.onap.policy.appclcm.AppcLcmInput;
+import org.onap.policy.appclcm.AppcLcmOutput;
import org.onap.policy.common.endpoints.http.server.HttpServletServerFactoryInstance;
import org.onap.policy.controlloop.ControlLoopEventStatus;
import org.onap.policy.controlloop.ControlLoopOperation;
@@ -68,7 +68,7 @@ public class AppcLcmActorServiceProviderTest {
private static final VirtualControlLoopEvent onsetEvent;
private static final ControlLoopOperation operation;
private static final Policy policy;
- private static final LcmResponseWrapper dmaapResponse;
+ private static final AppcLcmDmaapWrapper dmaapResponse;
private static final String RECIPE_RESTART = "Restart";
private static final String RECIPE_REBUILD = "Rebuild";
@@ -111,19 +111,19 @@ public class AppcLcmActorServiceProviderTest {
policy.setTimeout(300);
/* A sample DMAAP request wrapper. */
- LcmRequestWrapper dmaapRequest = new LcmRequestWrapper();
+ AppcLcmDmaapWrapper dmaapRequest = new AppcLcmDmaapWrapper();
dmaapRequest.setCorrelationId(onsetEvent.getRequestId().toString() + "-" + "1");
dmaapRequest.setRpcName(policy.getRecipe().toLowerCase());
dmaapRequest.setType("request");
/* A sample DMAAP response wrapper */
- dmaapResponse = new LcmResponseWrapper();
+ dmaapResponse = new AppcLcmDmaapWrapper();
dmaapResponse.setCorrelationId(onsetEvent.getRequestId().toString() + "-" + "1");
dmaapResponse.setRpcName(policy.getRecipe().toLowerCase());
dmaapResponse.setType("response");
/* A sample APPC LCM request. */
- LcmRequest appcRequest = new LcmRequest();
+ AppcLcmInput appcRequest = new AppcLcmInput();
/* The following code constructs a sample APPC LCM Request */
appcRequest.setAction("restart");
@@ -133,7 +133,7 @@ public class AppcLcmActorServiceProviderTest {
appcRequest.setActionIdentifiers(actionIdentifiers);
- LcmCommonHeader commonHeader = new LcmCommonHeader();
+ AppcLcmCommonHeader commonHeader = new AppcLcmCommonHeader();
commonHeader.setRequestId(onsetEvent.getRequestId());
commonHeader.setSubRequestId("1");
commonHeader.setOriginatorId(onsetEvent.getRequestId().toString());
@@ -142,14 +142,19 @@ public class AppcLcmActorServiceProviderTest {
appcRequest.setPayload(null);
- dmaapRequest.setBody(appcRequest);
+ AppcLcmBody appcBody = new AppcLcmBody();
+ appcBody.setInput(appcRequest);
+
+ dmaapRequest.setBody(appcBody);
/* The following code constructs a sample APPC LCM Response */
- LcmResponse appcResponse = new LcmResponse(appcRequest);
+ AppcLcmOutput appcResponse = new AppcLcmOutput(appcRequest);
appcResponse.getStatus().setCode(400);
appcResponse.getStatus().setMessage("Restart Successful");
- dmaapResponse.setBody(appcResponse);
+ appcBody.setOutput(appcResponse);
+
+ dmaapResponse.setBody(appcBody);
}
/**
@@ -175,7 +180,7 @@ public class AppcLcmActorServiceProviderTest {
@Test
public void constructRestartRequestTest() {
- LcmRequestWrapper dmaapRequest =
+ AppcLcmDmaapWrapper dmaapRequest =
AppcLcmActorServiceProvider.constructRequest(onsetEvent, operation, policy, VNF01);
/* The service provider must return a non null DMAAP request wrapper */
@@ -187,7 +192,7 @@ public class AppcLcmActorServiceProviderTest {
/* The DMAAP wrapper's body field cannot be null */
assertNotNull(dmaapRequest.getBody());
- LcmRequest appcRequest = dmaapRequest.getBody();
+ AppcLcmInput appcRequest = dmaapRequest.getBody().getInput();
/* A common header is required and cannot be null */
assertNotNull(appcRequest.getCommonHeader());
@@ -217,6 +222,26 @@ public class AppcLcmActorServiceProviderTest {
}
/**
+ * A test to assert that a null pointer exception is thrown if
+ * the APPC response body is null.
+ */
+ @Test(expected = NullPointerException.class)
+ public void processNullBodyResponseTest() {
+ AppcLcmActorServiceProvider.processResponse(new AppcLcmDmaapWrapper());
+ }
+
+ /**
+ * A test to assert that a null pointer exception is thrown if
+ * the APPC response output is null.
+ */
+ @Test(expected = NullPointerException.class)
+ public void processNullOutputResponseTest() {
+ AppcLcmDmaapWrapper dmaapWrapper = new AppcLcmDmaapWrapper();
+ dmaapWrapper.setBody(new AppcLcmBody());
+ AppcLcmActorServiceProvider.processResponse(dmaapWrapper);
+ }
+
+ /**
* A test to map APPC response results to corresponding Policy results.
*/
@Test
@@ -225,83 +250,83 @@ public class AppcLcmActorServiceProviderTest {
AbstractMap.SimpleEntry<PolicyResult, String> result;
/* If APPC accepts, PolicyResult is null */
- dmaapResponse.getBody().getStatus().setCode(100);
- dmaapResponse.getBody().getStatus().setMessage("ACCEPTED");
+ dmaapResponse.getBody().getOutput().getStatus().setCode(100);
+ dmaapResponse.getBody().getOutput().getStatus().setMessage("ACCEPTED");
result = AppcLcmActorServiceProvider.processResponse(dmaapResponse);
assertNull(result.getKey());
/* If APPC is successful, PolicyResult is success */
- dmaapResponse.getBody().getStatus().setCode(400);
- dmaapResponse.getBody().getStatus().setMessage("SUCCESS");
+ dmaapResponse.getBody().getOutput().getStatus().setCode(400);
+ dmaapResponse.getBody().getOutput().getStatus().setMessage("SUCCESS");
result = AppcLcmActorServiceProvider.processResponse(dmaapResponse);
assertEquals(PolicyResult.SUCCESS, result.getKey());
/* If APPC returns an error, PolicyResult is failure exception */
- dmaapResponse.getBody().getStatus().setCode(200);
- dmaapResponse.getBody().getStatus().setMessage("ERROR");
+ dmaapResponse.getBody().getOutput().getStatus().setCode(200);
+ dmaapResponse.getBody().getOutput().getStatus().setMessage("ERROR");
result = AppcLcmActorServiceProvider.processResponse(dmaapResponse);
assertEquals(PolicyResult.FAILURE_EXCEPTION, result.getKey());
/* If APPC rejects, PolicyResult is failure exception */
- dmaapResponse.getBody().getStatus().setCode(300);
- dmaapResponse.getBody().getStatus().setMessage(REJECT);
+ dmaapResponse.getBody().getOutput().getStatus().setCode(300);
+ dmaapResponse.getBody().getOutput().getStatus().setMessage(REJECT);
result = AppcLcmActorServiceProvider.processResponse(dmaapResponse);
assertEquals(PolicyResult.FAILURE_EXCEPTION, result.getKey());
/* Test multiple reject codes */
- dmaapResponse.getBody().getStatus().setCode(306);
- dmaapResponse.getBody().getStatus().setMessage(REJECT);
+ dmaapResponse.getBody().getOutput().getStatus().setCode(306);
+ dmaapResponse.getBody().getOutput().getStatus().setMessage(REJECT);
result = AppcLcmActorServiceProvider.processResponse(dmaapResponse);
assertEquals(PolicyResult.FAILURE_EXCEPTION, result.getKey());
- dmaapResponse.getBody().getStatus().setCode(313);
- dmaapResponse.getBody().getStatus().setMessage(REJECT);
+ dmaapResponse.getBody().getOutput().getStatus().setCode(313);
+ dmaapResponse.getBody().getOutput().getStatus().setMessage(REJECT);
result = AppcLcmActorServiceProvider.processResponse(dmaapResponse);
assertEquals(PolicyResult.FAILURE_EXCEPTION, result.getKey());
/* If APPC returns failure, PolicyResult is failure */
- dmaapResponse.getBody().getStatus().setCode(401);
- dmaapResponse.getBody().getStatus().setMessage(FAILURE);
+ dmaapResponse.getBody().getOutput().getStatus().setCode(401);
+ dmaapResponse.getBody().getOutput().getStatus().setMessage(FAILURE);
result = AppcLcmActorServiceProvider.processResponse(dmaapResponse);
assertEquals(PolicyResult.FAILURE, result.getKey());
/* Test multiple failure codes */
- dmaapResponse.getBody().getStatus().setCode(406);
- dmaapResponse.getBody().getStatus().setMessage(FAILURE);
+ dmaapResponse.getBody().getOutput().getStatus().setCode(406);
+ dmaapResponse.getBody().getOutput().getStatus().setMessage(FAILURE);
result = AppcLcmActorServiceProvider.processResponse(dmaapResponse);
assertEquals(PolicyResult.FAILURE, result.getKey());
- dmaapResponse.getBody().getStatus().setCode(450);
- dmaapResponse.getBody().getStatus().setMessage(FAILURE);
+ dmaapResponse.getBody().getOutput().getStatus().setCode(450);
+ dmaapResponse.getBody().getOutput().getStatus().setMessage(FAILURE);
result = AppcLcmActorServiceProvider.processResponse(dmaapResponse);
assertEquals(PolicyResult.FAILURE, result.getKey());
/* If APPC returns partial success, PolicyResult is failure exception */
- dmaapResponse.getBody().getStatus().setCode(500);
- dmaapResponse.getBody().getStatus().setMessage("PARTIAL SUCCESS");
+ dmaapResponse.getBody().getOutput().getStatus().setCode(500);
+ dmaapResponse.getBody().getOutput().getStatus().setMessage("PARTIAL SUCCESS");
result = AppcLcmActorServiceProvider.processResponse(dmaapResponse);
assertEquals(PolicyResult.FAILURE_EXCEPTION, result.getKey());
/* If APPC returns partial failure, PolicyResult is failure exception */
- dmaapResponse.getBody().getStatus().setCode(501);
- dmaapResponse.getBody().getStatus().setMessage(PARTIAL_FAILURE);
+ dmaapResponse.getBody().getOutput().getStatus().setCode(501);
+ dmaapResponse.getBody().getOutput().getStatus().setMessage(PARTIAL_FAILURE);
result = AppcLcmActorServiceProvider.processResponse(dmaapResponse);
assertEquals(PolicyResult.FAILURE_EXCEPTION, result.getKey());
/* Test multiple partial failure codes */
- dmaapResponse.getBody().getStatus().setCode(599);
- dmaapResponse.getBody().getStatus().setMessage(PARTIAL_FAILURE);
+ dmaapResponse.getBody().getOutput().getStatus().setCode(599);
+ dmaapResponse.getBody().getOutput().getStatus().setMessage(PARTIAL_FAILURE);
result = AppcLcmActorServiceProvider.processResponse(dmaapResponse);
assertEquals(PolicyResult.FAILURE_EXCEPTION, result.getKey());
- dmaapResponse.getBody().getStatus().setCode(550);
- dmaapResponse.getBody().getStatus().setMessage(PARTIAL_FAILURE);
+ dmaapResponse.getBody().getOutput().getStatus().setCode(550);
+ dmaapResponse.getBody().getOutput().getStatus().setMessage(PARTIAL_FAILURE);
result = AppcLcmActorServiceProvider.processResponse(dmaapResponse);
assertEquals(PolicyResult.FAILURE_EXCEPTION, result.getKey());
/* If APPC code is unknown to Policy, PolicyResult is failure exception */
- dmaapResponse.getBody().getStatus().setCode(700);
- dmaapResponse.getBody().getStatus().setMessage("UNKNOWN");
+ dmaapResponse.getBody().getOutput().getStatus().setCode(700);
+ dmaapResponse.getBody().getOutput().getStatus().setMessage("UNKNOWN");
result = AppcLcmActorServiceProvider.processResponse(dmaapResponse);
assertEquals(PolicyResult.FAILURE_EXCEPTION, result.getKey());
}
@@ -340,17 +365,17 @@ public class AppcLcmActorServiceProviderTest {
Policy restartPolicy = constructPolicyWithRecipe(RECIPE_RESTART);
// when
- LcmRequestWrapper migrateRequest =
+ AppcLcmDmaapWrapper migrateRequest =
AppcLcmActorServiceProvider.constructRequest(onsetEvent, operation, migratePolicy, VNF01);
- LcmRequestWrapper rebuildRequest =
+ AppcLcmDmaapWrapper rebuildRequest =
AppcLcmActorServiceProvider.constructRequest(onsetEvent, operation, rebuildPolicy, VNF01);
- LcmRequestWrapper restartRequest =
+ AppcLcmDmaapWrapper restartRequest =
AppcLcmActorServiceProvider.constructRequest(onsetEvent, operation, restartPolicy, VNF01);
// then
- assertNull(migrateRequest.getBody().getPayload());
- assertNull(rebuildRequest.getBody().getPayload());
- assertNull(restartRequest.getBody().getPayload());
+ assertNull(migrateRequest.getBody().getInput().getPayload());
+ assertNull(rebuildRequest.getBody().getInput().getPayload());
+ assertNull(restartRequest.getBody().getInput().getPayload());
}
@Test
@@ -360,15 +385,15 @@ public class AppcLcmActorServiceProviderTest {
Policy emptyPayloadPolicy = constructHealthCheckPolicyWithPayload(new HashMap<>());
// when
- LcmRequestWrapper noPayloadRequest =
+ AppcLcmDmaapWrapper noPayloadRequest =
AppcLcmActorServiceProvider.constructRequest(onsetEvent, operation, noPayloadPolicy, VNF01);
- LcmRequestWrapper emptyPayloadRequest =
+ AppcLcmDmaapWrapper emptyPayloadRequest =
AppcLcmActorServiceProvider.constructRequest(onsetEvent, operation, emptyPayloadPolicy, VNF01);
// then
- assertNull(noPayloadRequest.getBody().getPayload());
- assertNull(emptyPayloadRequest.getBody().getPayload());
+ assertNull(noPayloadRequest.getBody().getInput().getPayload());
+ assertNull(emptyPayloadRequest.getBody().getInput().getPayload());
}
@Test
@@ -379,11 +404,11 @@ public class AppcLcmActorServiceProviderTest {
Policy otherPolicy = constructHealthCheckPolicyWithPayload(payload);
// when
- LcmRequestWrapper dmaapRequest =
+ AppcLcmDmaapWrapper dmaapRequest =
AppcLcmActorServiceProvider.constructRequest(onsetEvent, operation, otherPolicy, VNF01);
// then
- assertEquals(dmaapRequest.getBody().getPayload(),
+ assertEquals(dmaapRequest.getBody().getInput().getPayload(),
"{\"requestParameters\": {\"host-ip-address\":\"10.183.37.25\"}}");
}
@@ -399,11 +424,11 @@ public class AppcLcmActorServiceProviderTest {
Policy otherPolicy = constructHealthCheckPolicyWithPayload(payload);
// when
- LcmRequestWrapper dmaapRequest =
+ AppcLcmDmaapWrapper dmaapRequest =
AppcLcmActorServiceProvider.constructRequest(onsetEvent, operation, otherPolicy, VNF01);
// then
- assertEquals(dmaapRequest.getBody().getPayload(),
+ assertEquals(dmaapRequest.getBody().getInput().getPayload(),
"{\"requestParameters\": "
+ "{\"host-ip-address\":\"10.183.37.25\"},"
+ "\"configurationParameters\": "