aboutsummaryrefslogtreecommitdiffstats
path: root/gui-editors/gui-editor-apex/src/test
diff options
context:
space:
mode:
authorandre.schmid <andre.schmid@est.tech>2020-07-20 17:48:48 +0100
committerandre.schmid <andre.schmid@est.tech>2020-08-07 18:39:06 +0100
commitd4dd779aa66be0e046ecb1938fb532312cfe7680 (patch)
tree55dd7fede3fcaf372a6fe4061b0e69fb5c05632c /gui-editors/gui-editor-apex/src/test
parent76102da29a02f918d6c61e03cea4da2fd1fdcd92 (diff)
Upload policy feature
Implements an upload feature that can be enable/disabled through configuration properties. An upload endpoint must be provided also by configuration. The upload has similar feature as the download, but it sends the file to the provided endpoint instead, converting it to TOSCA YAML. Creates an configuration endpoint so the front-end can read it. Introduces a pub/sub feature in the front-end so it can asynchronous read configuration information and send configuration ready message to components that depends on it. Issue-ID: POLICY-2751 Signed-off-by: andre.schmid <andre.schmid@est.tech> Change-Id: I5e8e91616a7d4dc69e6739604fcd36528cce0028
Diffstat (limited to 'gui-editors/gui-editor-apex/src/test')
-rw-r--r--gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/ApexEditorStartupTest.java2
-rw-r--r--gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/RestInterfaceTest.java2
-rw-r--r--gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/UploadPluginConfigParametersTest.java85
-rw-r--r--gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/ApexEditorRestResourceTest.java3
-rw-r--r--gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/ConfigurationRestResourceTest.java64
-rw-r--r--gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/converter/tosca/ApexConfigProcessorTest.java113
-rw-r--r--gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/converter/tosca/PolicyToscaConverterTest.java187
-rw-r--r--gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/converter/tosca/PolicyUploadHandlerTest.java200
-rw-r--r--gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/converter/tosca/ToscaTemplateProcessorTest.java216
-rw-r--r--gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/UploadPluginClientTest.java71
-rw-r--r--gui-editors/gui-editor-apex/src/test/resources/converter/APEXgRPCPolicy.json1968
-rw-r--r--gui-editors/gui-editor-apex/src/test/resources/converter/ApexConfig-engineServiceParameters-notAnObject.json7
-rw-r--r--gui-editors/gui-editor-apex/src/test/resources/converter/ApexConfig.json112
-rw-r--r--gui-editors/gui-editor-apex/src/test/resources/converter/ToscaTemplate.json17
-rw-r--r--gui-editors/gui-editor-apex/src/test/resources/processor/ApexConfig-invalid-engineServiceParameters.json3
-rw-r--r--gui-editors/gui-editor-apex/src/test/resources/processor/ApexConfig-invalid.json1
-rw-r--r--gui-editors/gui-editor-apex/src/test/resources/processor/ApexConfig-missing-engineServiceParameters.json6
-rw-r--r--gui-editors/gui-editor-apex/src/test/resources/processor/ApexConfig.json37
-rw-r--r--gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-invalid-toscaDefinitions.json4
-rw-r--r--gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-invalid.json1
-rw-r--r--gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-invalidEntry-policies.json6
-rw-r--r--gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-invalidEntry-properties.json12
-rw-r--r--gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-invalidEntry-topologyTemplate.json4
-rw-r--r--gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-invalidPolicy1.json10
-rw-r--r--gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-invalidPolicy2.json8
-rw-r--r--gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-missing-policies.json5
-rw-r--r--gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-missing-policy.json6
-rw-r--r--gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-missing-properties.json15
-rw-r--r--gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-missing-topology-template.json3
-rw-r--r--gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-missing-tosca-definitions-version.json16
-rw-r--r--gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-more-than-one-policy.json20
-rw-r--r--gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate.json17
32 files changed, 3220 insertions, 1 deletions
diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/ApexEditorStartupTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/ApexEditorStartupTest.java
index 1dc47cd..c80b816 100644
--- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/ApexEditorStartupTest.java
+++ b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/ApexEditorStartupTest.java
@@ -30,6 +30,7 @@ import java.io.IOException;
import java.io.PrintStream;
import java.util.concurrent.TimeUnit;
import org.junit.Test;
+import org.onap.policy.common.parameters.ParameterService;
import org.onap.policy.gui.editors.apex.rest.ApexEditorMain.EditorState;
/**
@@ -385,6 +386,7 @@ public class ApexEditorStartupTest {
* @throws InterruptedException if the test is interrupted
*/
private String runEditor(final String[] args) throws InterruptedException {
+ ParameterService.clear();
final ByteArrayOutputStream outBaStream = new ByteArrayOutputStream();
final PrintStream outStream = new PrintStream(outBaStream);
diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/RestInterfaceTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/RestInterfaceTest.java
index 238e3b9..60a2012 100644
--- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/RestInterfaceTest.java
+++ b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/RestInterfaceTest.java
@@ -46,6 +46,7 @@ import org.onap.policy.apex.model.basicmodel.handling.ApexModelStringWriter;
import org.onap.policy.apex.model.modelapi.ApexApiResult;
import org.onap.policy.apex.model.policymodel.concepts.AxPolicy;
import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel;
+import org.onap.policy.common.parameters.ParameterService;
import org.onap.policy.common.utils.resources.ResourceUtils;
import org.onap.policy.gui.editors.apex.rest.ApexEditorMain.EditorState;
@@ -74,6 +75,7 @@ public class RestInterfaceTest {
*/
@BeforeClass
public static void setUp() throws Exception {
+ ParameterService.clear();
// Start the editor
editorMain = new ApexEditorMain(EDITOR_MAIN_ARGS, System.out);
// prevent a stray stdin value from killing the editor
diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/UploadPluginConfigParametersTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/UploadPluginConfigParametersTest.java
new file mode 100644
index 0000000..3f743a7
--- /dev/null
+++ b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/UploadPluginConfigParametersTest.java
@@ -0,0 +1,85 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2020 Nordix Foundation
+ * ================================================================================
+ * 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.gui.editors.apex.rest;
+
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.Optional;
+import org.junit.Test;
+import org.onap.policy.gui.editors.apex.rest.handling.config.PolicyUploadPluginConfigKey;
+
+public class UploadPluginConfigParametersTest {
+
+ @Test
+ public void setupPropertiesTest() {
+ final String expectedUrl = "aUrl";
+ final boolean expectedEnabled = true;
+ System.setProperty(PolicyUploadPluginConfigKey.URL.getKey(), expectedUrl);
+ System.setProperty(PolicyUploadPluginConfigKey.ENABLE.getKey(), String.valueOf(expectedEnabled));
+ final UploadPluginConfigParameters uploadPluginConfigParameters = new UploadPluginConfigParameters();
+ final String url = uploadPluginConfigParameters.getUrl();
+ final Boolean isEnabled = uploadPluginConfigParameters.isEnabled();
+ assertThat(url).isEqualTo(expectedUrl);
+ assertThat(isEnabled).isEqualTo(expectedEnabled);
+ }
+
+ @Test
+ public void testGetValue() {
+ final String expectedUrl = "aUrl";
+ final boolean expectedEnabled = true;
+ System.setProperty(PolicyUploadPluginConfigKey.URL.getKey(), expectedUrl);
+ System.setProperty(PolicyUploadPluginConfigKey.ENABLE.getKey(), String.valueOf(expectedEnabled));
+ UploadPluginConfigParameters uploadPluginConfigParameters = new UploadPluginConfigParameters();
+ Optional<String> actualUrl = uploadPluginConfigParameters.getValue(PolicyUploadPluginConfigKey.URL);
+ assertThat(actualUrl).isPresent().contains(expectedUrl);
+ Optional<Boolean> actualEnabled = uploadPluginConfigParameters.getValue(PolicyUploadPluginConfigKey.ENABLE);
+ assertThat(actualEnabled).isPresent().contains(expectedEnabled);
+
+ System.clearProperty(PolicyUploadPluginConfigKey.URL.getKey());
+ uploadPluginConfigParameters = new UploadPluginConfigParameters();
+ actualUrl = uploadPluginConfigParameters.getValue(PolicyUploadPluginConfigKey.URL);
+ assertThat(actualUrl).isNotPresent();
+
+ System.clearProperty(PolicyUploadPluginConfigKey.ENABLE.getKey());
+ uploadPluginConfigParameters = new UploadPluginConfigParameters();
+ actualEnabled = uploadPluginConfigParameters.getValue(PolicyUploadPluginConfigKey.ENABLE);
+ assertThat(actualEnabled).isPresent();
+ assertThat(actualEnabled.get()).isFalse();
+ }
+
+ @Test
+ public void testValidate() {
+ final String expectedUrl = "aUrl";
+ final boolean expectedEnabled = true;
+ System.setProperty(PolicyUploadPluginConfigKey.URL.getKey(), expectedUrl);
+ System.setProperty(PolicyUploadPluginConfigKey.ENABLE.getKey(), String.valueOf(expectedEnabled));
+ UploadPluginConfigParameters uploadPluginConfigParameters = new UploadPluginConfigParameters();
+ assertThat(uploadPluginConfigParameters.isValid()).isTrue();
+
+ System.clearProperty(PolicyUploadPluginConfigKey.URL.getKey());
+ uploadPluginConfigParameters = new UploadPluginConfigParameters();
+ assertThat(uploadPluginConfigParameters.isValid()).isFalse();
+
+ System.clearProperty(PolicyUploadPluginConfigKey.ENABLE.getKey());
+ uploadPluginConfigParameters = new UploadPluginConfigParameters();
+ assertThat(uploadPluginConfigParameters.isValid()).isTrue();
+ }
+} \ No newline at end of file
diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/ApexEditorRestResourceTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/ApexEditorRestResourceTest.java
index 934ca7e..9b0ce32 100644
--- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/ApexEditorRestResourceTest.java
+++ b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/ApexEditorRestResourceTest.java
@@ -28,6 +28,7 @@ import java.io.IOException;
import javax.ws.rs.client.Entity;
import javax.ws.rs.core.Application;
import javax.ws.rs.core.MediaType;
+import org.glassfish.jersey.media.multipart.MultiPartFeature;
import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.test.JerseyTest;
import org.junit.Test;
@@ -43,7 +44,7 @@ import org.onap.policy.common.utils.resources.TextFileUtils;
public class ApexEditorRestResourceTest extends JerseyTest {
@Override
protected Application configure() {
- return new ResourceConfig(ApexEditorRestResource.class);
+ return new ResourceConfig(ApexEditorRestResource.class).register(MultiPartFeature.class);
}
@Test
diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/ConfigurationRestResourceTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/ConfigurationRestResourceTest.java
new file mode 100644
index 0000000..3820240
--- /dev/null
+++ b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/ConfigurationRestResourceTest.java
@@ -0,0 +1,64 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2020 Nordix Foundation
+ * ================================================================================
+ * 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.gui.editors.apex.rest.handling;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.Assert.assertEquals;
+
+import javax.ws.rs.core.Application;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status;
+import org.glassfish.jersey.server.ResourceConfig;
+import org.glassfish.jersey.test.JerseyTest;
+import org.junit.Test;
+import org.onap.policy.apex.model.modelapi.ApexApiResult;
+import org.onap.policy.apex.model.modelapi.ApexApiResult.Result;
+import org.onap.policy.common.parameters.ParameterService;
+import org.onap.policy.gui.editors.apex.rest.UploadPluginConfigParameters;
+import org.onap.policy.gui.editors.apex.rest.handling.config.PolicyUploadPluginConfigKey;
+
+public class ConfigurationRestResourceTest extends JerseyTest {
+
+ private String anUrl;
+ private Boolean isEnabled;
+
+ @Override
+ protected Application configure() {
+ anUrl = "url";
+ isEnabled = true;
+ System.setProperty(PolicyUploadPluginConfigKey.URL.getKey(), anUrl);
+ System.setProperty(PolicyUploadPluginConfigKey.ENABLE.getKey(), String.valueOf(isEnabled));
+ final UploadPluginConfigParameters uploadPluginConfigParameters = new UploadPluginConfigParameters();
+ ParameterService.clear();
+ ParameterService.register(uploadPluginConfigParameters);
+ return new ResourceConfig(ConfigurationRestResource.class);
+ }
+
+ @Test
+ public void testShowSuccess() {
+ final Response response = target("/editor/config").request().get();
+ assertEquals(Status.OK.getStatusCode(), response.getStatus());
+ final ApexApiResult apexApiResult = response.readEntity(ApexApiResult.class);
+ assertEquals(Result.SUCCESS, apexApiResult.getResult());
+ final String message = apexApiResult.getMessage();
+ assertThat(message).contains(String.format("\"%s\":\"%s\"", PolicyUploadPluginConfigKey.URL.getKey(), anUrl))
+ .contains(String.format("\"%s\":%s", PolicyUploadPluginConfigKey.ENABLE.getKey(), isEnabled));
+ }
+} \ No newline at end of file
diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/converter/tosca/ApexConfigProcessorTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/converter/tosca/ApexConfigProcessorTest.java
new file mode 100644
index 0000000..a12f7e1
--- /dev/null
+++ b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/converter/tosca/ApexConfigProcessorTest.java
@@ -0,0 +1,113 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2020 Nordix Foundation
+ * ================================================================================
+ * 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.gui.editors.apex.rest.handling.converter.tosca;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.contains;
+import static org.hamcrest.Matchers.is;
+import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.ApexConfigProcessor.ErrorMessage.INVALID_APEX_CONFIG;
+import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.ApexConfigProcessor.ErrorMessage.INVALID_ENTRY;
+import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.ApexConfigProcessor.ErrorMessage.MISSING_ENTRY;
+import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.PolicyToscaConverter.ToscaKey.ENGINE_SERVICE_PARAMETERS;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.List;
+import org.junit.Test;
+import org.onap.policy.common.utils.coder.StandardCoder;
+
+public class ApexConfigProcessorTest {
+
+ private final ApexConfigProcessor apexConfigProcessor = new ApexConfigProcessor(new StandardCoder());
+ private final Path testResourcesPath = Paths.get("src", "test", "resources", "processor");
+
+ @Test
+ public void testProcessSuccess() throws IOException {
+ final String fileName = "ApexConfig.json";
+ final ProcessedTemplate process;
+ try (final FileInputStream fileInputStream = readFileAsStream(fileName)) {
+ process = apexConfigProcessor.process(fileInputStream);
+ }
+ assertThat("Template should be valid", process.isValid(), is(true));
+ final String expectedContent = readFileAsString(fileName);
+ assertThat("Content should be the same", process.getContent(), is(expectedContent));
+ }
+
+ @Test
+ public void testProcessMissingPoliciesEntry() throws IOException {
+ final ProcessedTemplate processedTemplate;
+ try (final FileInputStream fileInputStream =
+ readFileAsStream("ApexConfig-missing-engineServiceParameters.json")) {
+ processedTemplate = apexConfigProcessor.process(fileInputStream);
+ }
+ assertProcessedTemplate(processedTemplate, false,
+ List.of(MISSING_ENTRY.getMessage(ENGINE_SERVICE_PARAMETERS.getKey())));
+ }
+
+ @Test
+ public void testProcessInvalidToscaTemplate() throws IOException {
+ final ProcessedTemplate processedTemplate;
+ try (final FileInputStream fileInputStream = readFileAsStream("ApexConfig-invalid.json")) {
+ processedTemplate = apexConfigProcessor.process(fileInputStream);
+ }
+ assertProcessedTemplate(processedTemplate, false,
+ List.of(INVALID_APEX_CONFIG.getMessage()));
+ }
+
+ @Test
+ public void testProcessInvalidEngineServiceParameters() throws IOException {
+ final ProcessedTemplate processedTemplate;
+ try (final FileInputStream fileInputStream =
+ readFileAsStream("ApexConfig-invalid-engineServiceParameters.json")) {
+ processedTemplate = apexConfigProcessor.process(fileInputStream);
+ }
+ assertProcessedTemplate(processedTemplate, false,
+ List.of(INVALID_ENTRY.getMessage(ENGINE_SERVICE_PARAMETERS.getKey())));
+ }
+
+ private void assertProcessedTemplate(final ProcessedTemplate process, boolean isValid,
+ final List<String> expectedErrorList) {
+
+ assertThat("Template should be valid", process.isValid(), is(isValid));
+ if (isValid || expectedErrorList == null) {
+ return;
+ }
+ assertThat("Should contains the expected quantity of errors",
+ process.getErrorSet().size(), is(expectedErrorList.size()));
+ expectedErrorList
+ .forEach(errorMsg -> assertThat("Should contains a specific error message", process.getErrorSet(),
+ contains(errorMsg)));
+ }
+
+ private FileInputStream readFileAsStream(final String fileName) throws FileNotFoundException {
+ final Path path = Paths.get(testResourcesPath.toString(), fileName);
+ return new FileInputStream(path.toFile());
+ }
+
+ private String readFileAsString(final String fileName) throws IOException {
+ final Path path = Paths.get(testResourcesPath.toString(), fileName);
+ return Files.readString(path);
+ }
+
+} \ No newline at end of file
diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/converter/tosca/PolicyToscaConverterTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/converter/tosca/PolicyToscaConverterTest.java
new file mode 100644
index 0000000..ecf896e
--- /dev/null
+++ b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/converter/tosca/PolicyToscaConverterTest.java
@@ -0,0 +1,187 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2020 Nordix Foundation
+ * ================================================================================
+ * 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.gui.editors.apex.rest.handling.converter.tosca;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doThrow;
+import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.PolicyToscaConverter.ToscaKey.ENGINE_SERVICE_PARAMETERS;
+import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.PolicyToscaConverter.ToscaKey.POLICIES;
+import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.PolicyToscaConverter.ToscaKey.POLICY_TYPE_IMPL;
+import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.PolicyToscaConverter.ToscaKey.PROPERTIES;
+import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.PolicyToscaConverter.ToscaKey.TOPOLOGY_TEMPLATE;
+import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.PolicyToscaConverter.ToscaKey.TOSCA_DEFINITIONS_VERSION;
+
+import com.google.gson.JsonObject;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.InjectMocks;
+import org.mockito.MockitoAnnotations;
+import org.mockito.Spy;
+import org.onap.policy.common.utils.coder.CoderException;
+import org.onap.policy.common.utils.coder.StandardCoder;
+import org.onap.policy.common.utils.coder.StandardYamlCoder;
+import org.onap.policy.common.utils.coder.YamlJsonTranslator;
+import org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.exception.PolicyToscaConverterException;
+
+public class PolicyToscaConverterTest {
+
+ @Spy
+ private final StandardCoder standardCoder = new StandardCoder();
+ @Spy
+ private final YamlJsonTranslator yamlJsonTranslator = new YamlJsonTranslator();
+ @InjectMocks
+ private PolicyToscaConverter policyToscaConverter;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ }
+
+ @Test
+ public void testConvertSuccess() throws IOException, PolicyToscaConverterException, CoderException {
+ final String apexConfig = readResourceFileToString(Paths.get("converter", "ApexConfig.json"));
+ final String apexPolicy = readResourceFileToString(Paths.get("converter", "APEXgRPCPolicy.json"));
+ final String toscaTemplate = readResourceFileToString(Paths.get("converter", "ToscaTemplate.json"));
+ final Optional<String> convert = policyToscaConverter.convert(apexPolicy, apexConfig, toscaTemplate);
+ assertTrue(convert.isPresent());
+ final String convertedYaml = convert.get();
+ final StandardYamlCoder standardYamlCoder = new StandardYamlCoder();
+ @SuppressWarnings("unchecked") final Map<String, Object> yamlAsMap =
+ standardYamlCoder.decode(convertedYaml, Map.class);
+ assertThat(yamlAsMap).containsKeys(TOSCA_DEFINITIONS_VERSION.getKey(), TOPOLOGY_TEMPLATE.getKey());
+ @SuppressWarnings("unchecked") final Map<String, Object> topology_template =
+ (Map<String, Object>) yamlAsMap.get(TOPOLOGY_TEMPLATE.getKey());
+ assertThat(topology_template).containsKey(POLICIES.getKey());
+ @SuppressWarnings("unchecked") final List<Object> policies =
+ (List<Object>) topology_template.get(POLICIES.getKey());
+ assertEquals(1, policies.size());
+ @SuppressWarnings("unchecked") final Map<String, Object> firstPolicyMap = (Map<String, Object>) policies.get(0);
+ assertEquals(1, firstPolicyMap.keySet().size());
+ @SuppressWarnings("unchecked") final Map<String, Object> firstPolicy =
+ (Map<String, Object>) firstPolicyMap.get(firstPolicyMap.keySet().iterator().next());
+ assertThat(firstPolicy).containsKey(PROPERTIES.getKey());
+ @SuppressWarnings("unchecked") final Map<String, Object> propertiesMap =
+ (Map<String, Object>) firstPolicy.get(PROPERTIES.getKey());
+ assertThat(propertiesMap).containsKey(ENGINE_SERVICE_PARAMETERS.getKey());
+ @SuppressWarnings("unchecked") final Map<String, Object> engineServiceParametersProperty =
+ (Map<String, Object>) propertiesMap.get(ENGINE_SERVICE_PARAMETERS.getKey());
+ assertThat(engineServiceParametersProperty).containsKey(POLICY_TYPE_IMPL.getKey());
+ }
+
+ @Test
+ public void testConvertInvalidJsonDecode() throws CoderException {
+ final String invalidJson = "this is an invalid JSON";
+ doThrow(CoderException.class).when(standardCoder).decode(eq(invalidJson), eq(JsonObject.class));
+
+ final String expectedMsg = String.format("Could not convert JSON string to JSON:\n%s", invalidJson);
+ assertThatThrownBy(() -> policyToscaConverter.convert(invalidJson, invalidJson, invalidJson))
+ .isInstanceOf(PolicyToscaConverterException.class)
+ .hasMessage(expectedMsg);
+ }
+
+ @Test
+ public void testConvertInvalidJsonEncodeToString() throws IOException {
+ final String apexConfig = readResourceFileToString(Paths.get("converter", "ApexConfig.json"));
+ final String apexPolicy = readResourceFileToString(Paths.get("converter", "APEXgRPCPolicy.json"));
+ final String toscaTemplate = readResourceFileToString(Paths.get("converter", "ToscaTemplate.json"));
+
+ doThrow(RuntimeException.class).when(yamlJsonTranslator).toYaml(any(JsonObject.class));
+
+ assertThatThrownBy(() -> policyToscaConverter.convert(apexPolicy, apexConfig, toscaTemplate))
+ .isInstanceOf(PolicyToscaConverterException.class)
+ .hasMessageContaining("Could not convert JSON Object to YAML:");
+ }
+
+ @Test
+ public void testCouldNotReadFirstPolicy() throws IOException {
+ final String apexConfig = readResourceFileToString(Paths.get("converter", "ApexConfig.json"));
+ final String apexPolicy = readResourceFileToString(Paths.get("converter", "APEXgRPCPolicy.json"));
+ final String toscaTemplate1 =
+ readResourceFileToString(Paths.get("processor", "ToscaTemplate-missing-policies.json"));
+ final String expectedError =
+ String.format("Could not read the first policy in the '%s' entry under '%s'",
+ POLICIES.getKey(), TOPOLOGY_TEMPLATE.getKey());
+
+ assertThatThrownBy(() -> policyToscaConverter.convert(apexPolicy, apexConfig, toscaTemplate1))
+ .isInstanceOf(PolicyToscaConverterException.class)
+ .hasMessage(expectedError);
+ final String toscaTemplate2 =
+ readResourceFileToString(Paths.get("processor", "ToscaTemplate-missing-policy.json"));
+
+ assertThatThrownBy(() -> policyToscaConverter.convert(apexPolicy, apexConfig, toscaTemplate2))
+ .isInstanceOf(PolicyToscaConverterException.class)
+ .hasMessage(expectedError);
+ }
+
+ @Test
+ public void testCouldNotReadPolicyProperties() throws IOException {
+ final String apexConfig = readResourceFileToString(Paths.get("converter", "ApexConfig.json"));
+ final String apexPolicy = readResourceFileToString(Paths.get("converter", "APEXgRPCPolicy.json"));
+ final String toscaTemplate =
+ readResourceFileToString(Paths.get("processor", "ToscaTemplate-missing-properties.json"));
+ assertThatThrownBy(() -> policyToscaConverter.convert(apexPolicy, apexConfig, toscaTemplate))
+ .isInstanceOf(PolicyToscaConverterException.class)
+ .hasMessage(String.format("Could not read the policy '%s' entry", PROPERTIES.getKey()));
+ }
+
+ @Test
+ public void testCouldNotReadEngineServiceParameters() throws IOException {
+ final String apexConfig =
+ readResourceFileToString(Paths.get("converter", "ApexConfig-engineServiceParameters-notAnObject.json"));
+ final String apexPolicy = readResourceFileToString(Paths.get("converter", "APEXgRPCPolicy.json"));
+ final String toscaTemplate =
+ readResourceFileToString(Paths.get("converter", "ToscaTemplate.json"));
+ assertThatThrownBy(() -> policyToscaConverter.convert(apexPolicy, apexConfig, toscaTemplate))
+ .isInstanceOf(PolicyToscaConverterException.class)
+ .hasMessage(
+ String.format("Could not read the '%s' in the Apex Config", ENGINE_SERVICE_PARAMETERS.getKey()));
+ }
+
+ @Test
+ public void testCouldNotReadTopologyTemplate() throws IOException {
+ final String apexConfig = readResourceFileToString(Paths.get("converter", "ApexConfig.json"));
+ final String apexPolicy = readResourceFileToString(Paths.get("converter", "APEXgRPCPolicy.json"));
+ final String toscaTemplate =
+ readResourceFileToString(Paths.get("processor", "ToscaTemplate-missing-topology-template.json"));
+ assertThatThrownBy(() -> policyToscaConverter.convert(apexPolicy, apexConfig, toscaTemplate))
+ .isInstanceOf(PolicyToscaConverterException.class)
+ .hasMessage(
+ String.format("Could not read the '%s' entry in the Tosca Template", TOPOLOGY_TEMPLATE.getKey()));
+ }
+
+ private String readResourceFileToString(final Path filePathFromResources) throws IOException {
+ final Path resourceDirectory = Paths.get("src", "test", "resources");
+ final Path converter = Paths.get(resourceDirectory.toString(), filePathFromResources.toString());
+ return Files.readString(converter);
+ }
+
+} \ No newline at end of file
diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/converter/tosca/PolicyUploadHandlerTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/converter/tosca/PolicyUploadHandlerTest.java
new file mode 100644
index 0000000..7a6ead7
--- /dev/null
+++ b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/converter/tosca/PolicyUploadHandlerTest.java
@@ -0,0 +1,200 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2020 Nordix Foundation
+ * ================================================================================
+ * 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.gui.editors.apex.rest.handling.converter.tosca;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
+import javax.ws.rs.core.Response;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
+import org.onap.policy.apex.model.basicmodel.concepts.AxKeyInfo;
+import org.onap.policy.apex.model.basicmodel.concepts.AxKeyInformation;
+import org.onap.policy.apex.model.modelapi.ApexApiResult;
+import org.onap.policy.apex.model.modelapi.ApexModel;
+import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel;
+import org.onap.policy.gui.editors.apex.rest.UploadPluginConfigParameters;
+import org.onap.policy.gui.editors.apex.rest.handling.PolicyUploadHandler;
+import org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.exception.PolicyToscaConverterException;
+import org.onap.policy.gui.editors.apex.rest.handling.plugin.upload.UploadPluginClient;
+import org.onap.policy.gui.editors.apex.rest.handling.plugin.upload.UploadPolicyRequestDto;
+
+public class PolicyUploadHandlerTest {
+
+ @Mock
+ private PolicyToscaConverter policyToscaConverter;
+ @Mock
+ private ToscaTemplateProcessor toscaTemplateProcessor;
+ @Mock
+ private ApexConfigProcessor apexConfigProcessor;
+ @Mock
+ private UploadPluginClient uploadPluginClient;
+ @Mock
+ private UploadPluginConfigParameters config;
+
+ @InjectMocks
+ private PolicyUploadHandler policyUploadHandler;
+
+ @Before
+ public void setup() {
+ MockitoAnnotations.initMocks(this);
+ when(config.isEnabled()).thenReturn(true);
+ }
+
+ @Test
+ public void doUploadResponseSuccessAndFail() throws PolicyToscaConverterException, IOException {
+ final ApexModel apexModel = mockApexModel();
+ final ProcessedTemplate processedToscaTemplate = new ProcessedTemplate();
+ processedToscaTemplate.setContent("tosca");
+ final ProcessedTemplate processedApexConfig = new ProcessedTemplate();
+ processedApexConfig.setContent("apexConfig");
+ when(toscaTemplateProcessor.process(any(InputStream.class))).thenReturn(processedToscaTemplate);
+ when(apexConfigProcessor.process(any(InputStream.class))).thenReturn(processedApexConfig);
+ when(policyToscaConverter.convert(eq("policy\n"), eq("apexConfig"), eq("tosca")))
+ .thenReturn(Optional.of("test"));
+ when(uploadPluginClient.upload(any(UploadPolicyRequestDto.class)))
+ .thenReturn(Response.ok().status(201).build());
+
+ ApexApiResult apexApiResult = policyUploadHandler
+ .doUpload(apexModel, mock(InputStream.class), mock(InputStream.class));
+
+ assertThat("Response should be ok", apexApiResult.isOk(), is(true));
+ String expectedSuccessMsg =
+ String.format("Policy '%s' uploaded successfully", apexModel.getPolicyModel().getId());
+ assertThat("Response message should be as expected",
+ apexApiResult.getMessage(), is(expectedSuccessMsg + "\n"));
+
+ when(uploadPluginClient.upload(any(UploadPolicyRequestDto.class)))
+ .thenReturn(Response.serverError().build());
+
+ apexApiResult = policyUploadHandler
+ .doUpload(apexModel, mock(InputStream.class), mock(InputStream.class));
+
+ assertThat("Response should not be ok", apexApiResult.isNok(), is(true));
+ expectedSuccessMsg =
+ String.format("An error has occurred while uploading the Policy '%s'. Status was %s",
+ apexModel.getPolicyModel().getId(), 500);
+ assertThat("Response message should be as expected",
+ apexApiResult.getMessage(), is(expectedSuccessMsg + "\n"));
+ }
+
+ @Test
+ public void doUploadPluginDisabled() throws IOException {
+ when(config.isEnabled()).thenReturn(false);
+
+ final ProcessedTemplate processedToscaTemplate = new ProcessedTemplate();
+ final ProcessedTemplate processedApexConfig = new ProcessedTemplate();
+ when(toscaTemplateProcessor.process(any(InputStream.class))).thenReturn(processedToscaTemplate);
+ when(apexConfigProcessor.process(any(InputStream.class))).thenReturn(processedApexConfig);
+ final ApexApiResult apexApiResult = policyUploadHandler
+ .doUpload(mock(ApexModel.class), mock(InputStream.class), mock(InputStream.class));
+
+ assertThat("Response should not be ok", apexApiResult.isNok(), is(true));
+ assertThat("Response message should be as expected",
+ apexApiResult.getMessage(), is("Upload feature is disabled\n"));
+ }
+
+ @Test
+ public void doUploadInvalidToscaTemplate() throws IOException {
+ when(config.isEnabled()).thenReturn(false);
+
+ final ProcessedTemplate processedToscaTemplate = new ProcessedTemplate();
+ final String errorMsg = "an error";
+ processedToscaTemplate.addToErrors(Collections.singleton(errorMsg));
+ when(toscaTemplateProcessor.process(any(InputStream.class))).thenReturn(processedToscaTemplate);
+ final ApexApiResult apexApiResult = policyUploadHandler
+ .doUpload(mock(ApexModel.class), mock(InputStream.class), mock(InputStream.class));
+
+ assertThat("Response should not be ok", apexApiResult.isNok(), is(true));
+ assertThat("Response message should be as expected",
+ apexApiResult.getMessage(), is(errorMsg + "\n"));
+ }
+
+ @Test
+ public void doUploadInvalidApexConfigTemplate() throws IOException {
+ when(config.isEnabled()).thenReturn(false);
+
+ when(toscaTemplateProcessor.process(any(InputStream.class))).thenReturn(new ProcessedTemplate());
+ final ProcessedTemplate processedApexConfig = new ProcessedTemplate();
+ final String errorMsg = "an error";
+ processedApexConfig.addToErrors(Collections.singleton(errorMsg));
+ when(apexConfigProcessor.process(any(InputStream.class))).thenReturn(processedApexConfig);
+ final ApexApiResult apexApiResult = policyUploadHandler
+ .doUpload(mock(ApexModel.class), mock(InputStream.class), mock(InputStream.class));
+
+ assertThat("Response should not be ok", apexApiResult.isNok(), is(true));
+ assertThat("Response message should be as expected",
+ apexApiResult.getMessage(), is(errorMsg + "\n"));
+ }
+
+ @Test
+ public void doUploadConversionFailed() throws PolicyToscaConverterException, IOException {
+ final ApexModel apexModel = mockApexModel();
+ final ProcessedTemplate processedToscaTemplate = new ProcessedTemplate();
+ processedToscaTemplate.setContent("tosca");
+ final ProcessedTemplate processedApexConfig = new ProcessedTemplate();
+ processedApexConfig.setContent("apexConfig");
+ when(toscaTemplateProcessor.process(any(InputStream.class))).thenReturn(processedToscaTemplate);
+ when(apexConfigProcessor.process(any(InputStream.class))).thenReturn(processedApexConfig);
+ when(policyToscaConverter.convert(eq("policy\n"), eq("apexConfig"), eq("tosca")))
+ .thenThrow(PolicyToscaConverterException.class);
+ when(uploadPluginClient.upload(any(UploadPolicyRequestDto.class)))
+ .thenReturn(Response.ok().status(201).build());
+
+ final ApexApiResult apexApiResult = policyUploadHandler
+ .doUpload(apexModel, mock(InputStream.class), mock(InputStream.class));
+
+ assertThat("Response should not be ok", apexApiResult.isNok(), is(true));
+ final String expectedErrorMsg = String
+ .format("An error has occurred while uploading the converting the Policy '%s' to YAML.",
+ apexModel.getPolicyModel().getId());
+ assertThat("Response message should be as expected",
+ apexApiResult.getMessage(), is(expectedErrorMsg + "\n"));
+ }
+
+ private ApexModel mockApexModel() {
+ final ApexModel apexModel = mock(ApexModel.class);
+ final ApexApiResult listModelApexApiResult = new ApexApiResult();
+ listModelApexApiResult.addMessage("policy");
+ when(apexModel.listModel()).thenReturn(listModelApexApiResult);
+ final AxPolicyModel axPolicyModel = new AxPolicyModel();
+ final AxArtifactKey axArtifactKey = new AxArtifactKey("policyKey", "1.0.0");
+ final Map<AxArtifactKey, AxKeyInfo> keyInfoMap = new HashMap<>();
+ keyInfoMap.put(axArtifactKey, new AxKeyInfo(axArtifactKey));
+ final AxKeyInformation axKeyInformation = new AxKeyInformation(axArtifactKey, keyInfoMap);
+ axPolicyModel.setKeyInformation(axKeyInformation);
+ when(apexModel.getPolicyModel()).thenReturn(axPolicyModel);
+ return apexModel;
+ }
+} \ No newline at end of file
diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/converter/tosca/ToscaTemplateProcessorTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/converter/tosca/ToscaTemplateProcessorTest.java
new file mode 100644
index 0000000..461b26e
--- /dev/null
+++ b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/converter/tosca/ToscaTemplateProcessorTest.java
@@ -0,0 +1,216 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2020 Nordix Foundation
+ * ================================================================================
+ * 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.gui.editors.apex.rest.handling.converter.tosca;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.contains;
+import static org.hamcrest.Matchers.is;
+import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.PolicyToscaConverter.ToscaKey.POLICIES;
+import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.PolicyToscaConverter.ToscaKey.PROPERTIES;
+import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.PolicyToscaConverter.ToscaKey.TOPOLOGY_TEMPLATE;
+import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.PolicyToscaConverter.ToscaKey.TOSCA_DEFINITIONS_VERSION;
+import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.ToscaTemplateProcessor.ErrorMessage.INVALID_ENTRY;
+import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.ToscaTemplateProcessor.ErrorMessage.INVALID_POLICY;
+import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.ToscaTemplateProcessor.ErrorMessage.INVALID_TOSCA_TEMPLATE;
+import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.ToscaTemplateProcessor.ErrorMessage.MISSING_ENTRY;
+import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.ToscaTemplateProcessor.ErrorMessage.MISSING_POLICY;
+import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.ToscaTemplateProcessor.ErrorMessage.ONLY_ONE_POLICY_ALLOWED;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.List;
+import org.junit.Test;
+import org.onap.policy.common.utils.coder.StandardCoder;
+
+public class ToscaTemplateProcessorTest {
+
+ private final ToscaTemplateProcessor toscaTemplateProcessor = new ToscaTemplateProcessor(new StandardCoder());
+ private final Path testResourcesPath = Paths.get("src", "test", "resources", "processor");
+
+ @Test
+ public void testProcessSuccess() throws IOException {
+ final String fileName = "ToscaTemplate.json";
+ final ProcessedTemplate process;
+ try (final FileInputStream fileInputStream = readFileAsStream(fileName)) {
+ process = toscaTemplateProcessor.process(fileInputStream);
+ }
+ assertThat("Template should be valid", process.isValid(), is(true));
+ final String expectedContent = readFileAsString(fileName);
+ assertThat("Content should be the same", process.getContent(), is(expectedContent));
+ }
+
+ @Test
+ public void testProcessMissingPoliciesEntry() throws IOException {
+ final ProcessedTemplate processedTemplate;
+ try (final FileInputStream fileInputStream = readFileAsStream("ToscaTemplate-missing-policies.json")) {
+ processedTemplate = toscaTemplateProcessor.process(fileInputStream);
+ }
+ assertProcessedTemplate(processedTemplate, false, List.of(MISSING_ENTRY.getMessage(POLICIES.getKey())));
+ }
+
+ @Test
+ public void testProcessMissingTopologyTemplate() throws IOException {
+ final ProcessedTemplate processedTemplate;
+ try (final FileInputStream fileInputStream = readFileAsStream("ToscaTemplate-missing-topology-template.json")) {
+ processedTemplate = toscaTemplateProcessor.process(fileInputStream);
+ }
+ assertProcessedTemplate(processedTemplate, false,
+ List.of(MISSING_ENTRY.getMessage(TOPOLOGY_TEMPLATE.getKey())));
+ }
+
+ @Test
+ public void testProcessMissingPolicy() throws IOException {
+ final ProcessedTemplate processedTemplate;
+ try (final FileInputStream fileInputStream = readFileAsStream("ToscaTemplate-missing-policy.json")) {
+ processedTemplate = toscaTemplateProcessor.process(fileInputStream);
+ }
+ assertProcessedTemplate(processedTemplate, false, List.of(MISSING_POLICY.getMessage()));
+ }
+
+ @Test
+ public void testProcessMissingToscaDefinitionsVersion() throws IOException {
+ final ProcessedTemplate processedTemplate;
+ try (final FileInputStream fileInputStream =
+ readFileAsStream("ToscaTemplate-missing-tosca-definitions-version.json")) {
+ processedTemplate = toscaTemplateProcessor.process(fileInputStream);
+ }
+ assertProcessedTemplate(processedTemplate, false,
+ List.of(MISSING_ENTRY.getMessage(TOSCA_DEFINITIONS_VERSION.getKey())));
+ }
+
+ @Test
+ public void testProcessMissingProperties() throws IOException {
+ final ProcessedTemplate processedTemplate;
+ try (final FileInputStream fileInputStream = readFileAsStream("ToscaTemplate-missing-properties.json")) {
+ processedTemplate = toscaTemplateProcessor.process(fileInputStream);
+ }
+ assertProcessedTemplate(processedTemplate, false,
+ List.of(MISSING_ENTRY.getMessage(PROPERTIES.getKey())));
+ }
+
+ @Test
+ public void testProcessMoreThanOnePolicy() throws IOException {
+ final ProcessedTemplate processedTemplate;
+ try (final FileInputStream fileInputStream = readFileAsStream("ToscaTemplate-more-than-one-policy.json")) {
+ processedTemplate = toscaTemplateProcessor.process(fileInputStream);
+ }
+ assertProcessedTemplate(processedTemplate, false,
+ List.of(ONLY_ONE_POLICY_ALLOWED.getMessage()));
+ }
+
+ @Test
+ public void testProcessInvalidToscaTemplate() throws IOException {
+ final ProcessedTemplate processedTemplate;
+ try (final FileInputStream fileInputStream = readFileAsStream("ToscaTemplate-invalid.json")) {
+ processedTemplate = toscaTemplateProcessor.process(fileInputStream);
+ }
+ assertProcessedTemplate(processedTemplate, false,
+ List.of(INVALID_TOSCA_TEMPLATE.getMessage()));
+ }
+
+ @Test
+ public void testProcessInvalidEntryToscaDefinitionsVersion() throws IOException {
+ final ProcessedTemplate processedTemplate;
+ try (final FileInputStream fileInputStream =
+ readFileAsStream("ToscaTemplate-invalid-toscaDefinitions.json")) {
+ processedTemplate = toscaTemplateProcessor.process(fileInputStream);
+ }
+ assertProcessedTemplate(processedTemplate, false,
+ List.of(INVALID_ENTRY.getMessage(TOSCA_DEFINITIONS_VERSION.getKey())));
+ }
+
+ @Test
+ public void testProcessInvalidEntryTopologyTemplate() throws IOException {
+ final ProcessedTemplate processedTemplate;
+ try (final FileInputStream fileInputStream =
+ readFileAsStream("ToscaTemplate-invalidEntry-topologyTemplate.json")) {
+ processedTemplate = toscaTemplateProcessor.process(fileInputStream);
+ }
+ assertProcessedTemplate(processedTemplate, false,
+ List.of(INVALID_ENTRY.getMessage(TOPOLOGY_TEMPLATE.getKey())));
+ }
+
+ @Test
+ public void testProcessInvalidEntryPolicies() throws IOException {
+ final ProcessedTemplate processedTemplate;
+ try (final FileInputStream fileInputStream =
+ readFileAsStream("ToscaTemplate-invalidEntry-policies.json")) {
+ processedTemplate = toscaTemplateProcessor.process(fileInputStream);
+ }
+ assertProcessedTemplate(processedTemplate, false,
+ List.of(INVALID_ENTRY.getMessage(POLICIES.getKey())));
+ }
+
+ @Test
+ public void testProcessInvalidPolicy() throws IOException {
+ ProcessedTemplate processedTemplate;
+ try (final FileInputStream fileInputStream = readFileAsStream("ToscaTemplate-invalidPolicy1.json")) {
+ processedTemplate = toscaTemplateProcessor.process(fileInputStream);
+ }
+ assertProcessedTemplate(processedTemplate, false,
+ List.of(INVALID_POLICY.getMessage()));
+
+ try (final FileInputStream fileInputStream = readFileAsStream("ToscaTemplate-invalidPolicy2.json")) {
+ processedTemplate = toscaTemplateProcessor.process(fileInputStream);
+ }
+ assertProcessedTemplate(processedTemplate, false,
+ List.of(INVALID_POLICY.getMessage()));
+ }
+
+ @Test
+ public void testProcessInvalidEntryProperties() throws IOException {
+ final ProcessedTemplate processedTemplate;
+ try (final FileInputStream fileInputStream =
+ readFileAsStream("ToscaTemplate-invalidEntry-properties.json")) {
+ processedTemplate = toscaTemplateProcessor.process(fileInputStream);
+ }
+ assertProcessedTemplate(processedTemplate, false,
+ List.of(INVALID_ENTRY.getMessage(PROPERTIES.getKey())));
+ }
+
+
+ private void assertProcessedTemplate(final ProcessedTemplate process, boolean isValid,
+ final List<String> expectedErrorList) {
+ assertThat("Template should be valid", process.isValid(), is(isValid));
+ if (isValid || expectedErrorList == null) {
+ return;
+ }
+ assertThat("Should contains the expected quantity of errors",
+ process.getErrorSet().size(), is(expectedErrorList.size()));
+ expectedErrorList
+ .forEach(errorMsg -> assertThat("Should contains a specific error message", process.getErrorSet(),
+ contains(errorMsg)));
+ }
+
+ private FileInputStream readFileAsStream(final String fileName) throws FileNotFoundException {
+ final Path path = Paths.get(testResourcesPath.toString(), fileName);
+ return new FileInputStream(path.toFile());
+ }
+
+ private String readFileAsString(final String fileName) throws IOException {
+ final Path path = Paths.get(testResourcesPath.toString(), fileName);
+ return Files.readString(path);
+ }
+
+} \ No newline at end of file
diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/UploadPluginClientTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/UploadPluginClientTest.java
new file mode 100644
index 0000000..ab9445e
--- /dev/null
+++ b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/UploadPluginClientTest.java
@@ -0,0 +1,71 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2020 Nordix Foundation
+ * ================================================================================
+ * 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.gui.editors.apex.rest.handling.plugin.upload;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.Invocation.Builder;
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.onap.policy.gui.editors.apex.rest.UploadPluginConfigParameters;
+import org.onap.policy.gui.editors.apex.rest.handling.config.PolicyUploadPluginConfigKey;
+
+public class UploadPluginClientTest {
+
+ private UploadPluginClient uploadPluginClient;
+
+ @Mock
+ private Client client;
+
+ private static final String url = "aUrl";
+
+ /**
+ * Init the mocks and system properties.
+ */
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ System.setProperty(PolicyUploadPluginConfigKey.URL.getKey(), url);
+ final UploadPluginConfigParameters uploadPluginConfigParameters = new UploadPluginConfigParameters();
+ uploadPluginClient = new UploadPluginClient(client, uploadPluginConfigParameters);
+ }
+
+ @Test
+ public void upload() {
+ final Builder mockBuilder = mock(Builder.class);
+ final WebTarget mockWebTarget = mock(WebTarget.class);
+ final Response mockResponse = mock(Response.class);
+ doReturn(mockWebTarget).when(client).target(url);
+ doReturn(mockBuilder).when(mockWebTarget).request(MediaType.APPLICATION_JSON);
+ when(mockBuilder.post(any())).thenReturn(mockResponse);
+ final Response actualResponse = uploadPluginClient.upload(new UploadPolicyRequestDto());
+ assertEquals(mockResponse, actualResponse);
+ }
+} \ No newline at end of file
diff --git a/gui-editors/gui-editor-apex/src/test/resources/converter/APEXgRPCPolicy.json b/gui-editors/gui-editor-apex/src/test/resources/converter/APEXgRPCPolicy.json
new file mode 100644
index 0000000..25ad71d
--- /dev/null
+++ b/gui-editors/gui-editor-apex/src/test/resources/converter/APEXgRPCPolicy.json
@@ -0,0 +1,1968 @@
+{
+ "apexPolicyModel" : {
+ "key" : {
+ "name" : "APEXgRPCPolicy",
+ "version" : "0.0.1"
+ },
+ "keyInformation" : {
+ "key" : {
+ "name" : "APEXgRPCPolicy_KeyInfo",
+ "version" : "0.0.1"
+ },
+ "keyInfoMap" : {
+ "entry" : [ {
+ "key" : {
+ "name" : "APEXgRPCPolicy",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "APEXgRPCPolicy",
+ "version" : "0.0.1"
+ },
+ "UUID" : "b8424cdb-29fb-3566-b77a-f4f847d81cc9",
+ "description" : "Generated description for concept referred to by key \"APEXgRPCPolicy:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "APEXgRPCPolicy_Albums",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "APEXgRPCPolicy_Albums",
+ "version" : "0.0.1"
+ },
+ "UUID" : "9922906c-ccaa-34f7-95e2-bcc36e77821b",
+ "description" : "Generated description for concept referred to by key \"APEXgRPCPolicy_Albums:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "APEXgRPCPolicy_Events",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "APEXgRPCPolicy_Events",
+ "version" : "0.0.1"
+ },
+ "UUID" : "5bf28afd-787c-3138-a3e1-b33ad94a038a",
+ "description" : "Generated description for concept referred to by key \"APEXgRPCPolicy_Events:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "APEXgRPCPolicy_KeyInfo",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "APEXgRPCPolicy_KeyInfo",
+ "version" : "0.0.1"
+ },
+ "UUID" : "68abaa6f-8d03-3a53-9590-007115817d5c",
+ "description" : "Generated description for concept referred to by key \"APEXgRPCPolicy_KeyInfo:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "APEXgRPCPolicy_Policies",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "APEXgRPCPolicy_Policies",
+ "version" : "0.0.1"
+ },
+ "UUID" : "819d06c3-33c2-3031-aa78-96281aa4270a",
+ "description" : "Generated description for concept referred to by key \"APEXgRPCPolicy_Policies:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "APEXgRPCPolicy_Schemas",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "APEXgRPCPolicy_Schemas",
+ "version" : "0.0.1"
+ },
+ "UUID" : "8e67d466-f990-3a39-9fd7-4490cac342dc",
+ "description" : "Generated description for concept referred to by key \"APEXgRPCPolicy_Schemas:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "APEXgRPCPolicy_Tasks",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "APEXgRPCPolicy_Tasks",
+ "version" : "0.0.1"
+ },
+ "UUID" : "4668db3d-6fe2-3885-8e47-f30cd0102f0a",
+ "description" : "Generated description for concept referred to by key \"APEXgRPCPolicy_Tasks:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "CDSActionIdentifiersType",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "CDSActionIdentifiersType",
+ "version" : "0.0.1"
+ },
+ "UUID" : "6e5fa19b-14df-37e3-a4ae-8c537e861a82",
+ "description" : "Generated description for concept referred to by key \"CDSActionIdentifiersType:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "CDSCreateSubscriptionPayloadType",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "CDSCreateSubscriptionPayloadType",
+ "version" : "0.0.1"
+ },
+ "UUID" : "8350ac5e-c157-38b9-9614-a0f93a830e60",
+ "description" : "Generated description for concept referred to by key \"CDSCreateSubscriptionPayloadType:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "CDSDeleteSubscriptionPayloadType",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "CDSDeleteSubscriptionPayloadType",
+ "version" : "0.0.1"
+ },
+ "UUID" : "12658406-9147-3c9d-a38c-5ad5e30b092b",
+ "description" : "Generated description for concept referred to by key \"CDSDeleteSubscriptionPayloadType:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "CDSRequestCommonHeaderType",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "CDSRequestCommonHeaderType",
+ "version" : "0.0.1"
+ },
+ "UUID" : "35590ac0-062c-39f1-8786-b4ff716e30b1",
+ "description" : "Generated description for concept referred to by key \"CDSRequestCommonHeaderType:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "CDSResponseCommonHeaderType",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "CDSResponseCommonHeaderType",
+ "version" : "0.0.1"
+ },
+ "UUID" : "dd7e1805-885a-350b-aaf9-ed541321ae3c",
+ "description" : "Generated description for concept referred to by key \"CDSResponseCommonHeaderType:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "CDSResponseEvent",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "CDSResponseEvent",
+ "version" : "0.0.1"
+ },
+ "UUID" : "15161037-9ac8-3223-820f-4e743562a345",
+ "description" : "Generated description for concept referred to by key \"CDSResponseEvent:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "CDSResponsePayloadType",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "CDSResponsePayloadType",
+ "version" : "0.0.1"
+ },
+ "UUID" : "97dc5f58-25bb-3c20-8d53-fdb70d7ca256",
+ "description" : "Generated description for concept referred to by key \"CDSResponsePayloadType:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "CDSResponsePolicy",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "CDSResponsePolicy",
+ "version" : "0.0.1"
+ },
+ "UUID" : "c28b05a8-7436-3ac0-82ca-6d5fc18c9584",
+ "description" : "Generated description for concept referred to by key \"CDSResponsePolicy:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "CDSResponseStatusEvent",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "CDSResponseStatusEvent",
+ "version" : "0.0.1"
+ },
+ "UUID" : "7986e21b-32f7-302e-9554-31f21b673493",
+ "description" : "Generated description for concept referred to by key \"CDSResponseStatusEvent:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "CDSResponseStatusType",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "CDSResponseStatusType",
+ "version" : "0.0.1"
+ },
+ "UUID" : "92b8a2cf-344e-3ce1-8cc0-2b7d3cb695fa",
+ "description" : "Generated description for concept referred to by key \"CDSResponseStatusType:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "CDSResponseTask",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "CDSResponseTask",
+ "version" : "0.0.1"
+ },
+ "UUID" : "d22c78a5-272c-391d-8083-28588280caf9",
+ "description" : "Generated description for concept referred to by key \"CDSResponseTask:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "CreateSubscriptionPayloadEvent",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "CreateSubscriptionPayloadEvent",
+ "version" : "0.0.1"
+ },
+ "UUID" : "92162397-1a8e-3a3f-a469-d2af7700af4a",
+ "description" : "Generated description for concept referred to by key \"CreateSubscriptionPayloadEvent:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "CreateSubscriptionPayloadTask",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "CreateSubscriptionPayloadTask",
+ "version" : "0.0.1"
+ },
+ "UUID" : "bc0c69f0-52ed-38ea-b468-ae4a6fd1730d",
+ "description" : "Generated description for concept referred to by key \"CreateSubscriptionPayloadTask:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "CreateSubscriptionRequestEvent",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "CreateSubscriptionRequestEvent",
+ "version" : "0.0.1"
+ },
+ "UUID" : "7cfcf843-337e-3f41-b755-5043cb0a08fc",
+ "description" : "Generated description for concept referred to by key \"CreateSubscriptionRequestEvent:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "CreateSubscriptionRequestTask",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "CreateSubscriptionRequestTask",
+ "version" : "0.0.1"
+ },
+ "UUID" : "89cb75e9-f06c-30d3-b4ff-698d45f63869",
+ "description" : "Generated description for concept referred to by key \"CreateSubscriptionRequestTask:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "DeleteSubscriptionPayloadEvent",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "DeleteSubscriptionPayloadEvent",
+ "version" : "0.0.1"
+ },
+ "UUID" : "994fa441-04ab-33bb-832d-1cd12ab5d074",
+ "description" : "Generated description for concept referred to by key \"DeleteSubscriptionPayloadEvent:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "DeleteSubscriptionPayloadTask",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "DeleteSubscriptionPayloadTask",
+ "version" : "0.0.1"
+ },
+ "UUID" : "0f519117-5fea-3e4b-941f-8f778100465f",
+ "description" : "Generated description for concept referred to by key \"DeleteSubscriptionPayloadTask:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "DeleteSubscriptionRequestEvent",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "DeleteSubscriptionRequestEvent",
+ "version" : "0.0.1"
+ },
+ "UUID" : "15d618d8-1689-3a05-89a5-05efa9388f65",
+ "description" : "Generated description for concept referred to by key \"DeleteSubscriptionRequestEvent:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "DeleteSubscriptionRequestTask",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "DeleteSubscriptionRequestTask",
+ "version" : "0.0.1"
+ },
+ "UUID" : "acb772fe-d442-39e3-98f9-b1080caf4150",
+ "description" : "Generated description for concept referred to by key \"DeleteSubscriptionRequestTask:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "PMSubscriptionAlbum",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "PMSubscriptionAlbum",
+ "version" : "0.0.1"
+ },
+ "UUID" : "c2bd6f0d-6854-317a-9be2-97c08338428c",
+ "description" : "Generated description for concept referred to by key \"PMSubscriptionAlbum:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "PMSubscriptionOutputEvent",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "PMSubscriptionOutputEvent",
+ "version" : "0.0.1"
+ },
+ "UUID" : "992b7819-9f69-3aa0-bb0f-6e45ea15ce05",
+ "description" : "Generated description for concept referred to by key \"PMSubscriptionOutputEvent:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "PMSubscriptionType",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "PMSubscriptionType",
+ "version" : "0.0.1"
+ },
+ "UUID" : "73c1c397-4fc3-357f-93b6-a8ad707fbaae",
+ "description" : "Generated description for concept referred to by key \"PMSubscriptionType:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "ReceiveEventPolicy",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "ReceiveEventPolicy",
+ "version" : "0.0.1"
+ },
+ "UUID" : "568b7345-9de1-36d3-b6a3-9b857e6809a1",
+ "description" : "Generated description for concept referred to by key \"ReceiveEventPolicy:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "ReceivePMSubscriptionTask",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "ReceivePMSubscriptionTask",
+ "version" : "0.0.1"
+ },
+ "UUID" : "6c1c6c45-26e0-3591-94bf-679d20e283f4",
+ "description" : "Generated description for concept referred to by key \"ReceivePMSubscriptionTask:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "SimpleIntType",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "SimpleIntType",
+ "version" : "0.0.1"
+ },
+ "UUID" : "153791fd-ae0a-36a7-88a5-309a7936415d",
+ "description" : "Generated description for concept referred to by key \"SimpleIntType:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "SimpleStringType",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "SimpleStringType",
+ "version" : "0.0.1"
+ },
+ "UUID" : "8a4957cf-9493-3a76-8c22-a208e23259af",
+ "description" : "Generated description for concept referred to by key \"SimpleStringType:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "SubscriptionStatusType",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "SubscriptionStatusType",
+ "version" : "0.0.1"
+ },
+ "UUID" : "597643b1-9db1-31ce-85d0-e1c63c43b30b",
+ "description" : "Generated description for concept referred to by key \"SubscriptionStatusType:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "SubscriptionType",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "SubscriptionType",
+ "version" : "0.0.1"
+ },
+ "UUID" : "184547bb-7d64-3cb2-a273-d7185102c5ce",
+ "description" : "Generated description for concept referred to by key \"SubscriptionType:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "UUIDType",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "UUIDType",
+ "version" : "0.0.1"
+ },
+ "UUID" : "6a8cc68e-dfc8-3403-9c6d-071c886b319c",
+ "description" : "Generated description for concept referred to by key \"UUIDType:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "testPolicyB",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "testPolicyB",
+ "version" : "0.0.1"
+ },
+ "UUID" : "ead590a3-ba2e-3a01-b6e9-9329f5c8fee1",
+ "description" : "Generated description for concept referred to by key \"testPolicyB:0.0.1\""
+ }
+ } ]
+ }
+ },
+ "policies" : {
+ "key" : {
+ "name" : "APEXgRPCPolicy_Policies",
+ "version" : "0.0.1"
+ },
+ "policyMap" : {
+ "entry" : [ {
+ "key" : {
+ "name" : "CDSResponsePolicy",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "policyKey" : {
+ "name" : "CDSResponsePolicy",
+ "version" : "0.0.1"
+ },
+ "template" : "Freestyle",
+ "state" : {
+ "entry" : [ {
+ "key" : "CDSResponseState",
+ "value" : {
+ "stateKey" : {
+ "parentKeyName" : "CDSResponsePolicy",
+ "parentKeyVersion" : "0.0.1",
+ "parentLocalName" : "NULL",
+ "localName" : "CDSResponseState"
+ },
+ "trigger" : {
+ "name" : "CDSResponseEvent",
+ "version" : "0.0.1"
+ },
+ "stateOutputs" : {
+ "entry" : [ {
+ "key" : "ResponseOutput",
+ "value" : {
+ "key" : {
+ "parentKeyName" : "CDSResponsePolicy",
+ "parentKeyVersion" : "0.0.1",
+ "parentLocalName" : "CDSResponseState",
+ "localName" : "ResponseOutput"
+ },
+ "outgoingEvent" : {
+ "name" : "CDSResponseStatusEvent",
+ "version" : "0.0.1"
+ },
+ "nextState" : {
+ "parentKeyName" : "NULL",
+ "parentKeyVersion" : "0.0.0",
+ "parentLocalName" : "NULL",
+ "localName" : "NULL"
+ }
+ }
+ } ]
+ },
+ "contextAlbumReference" : [ ],
+ "taskSelectionLogic" : {
+ "key" : "NULL",
+ "logicFlavour" : "UNDEFINED",
+ "logic" : ""
+ },
+ "stateFinalizerLogicMap" : {
+ "entry" : [ ]
+ },
+ "defaultTask" : {
+ "name" : "CDSResponseTask",
+ "version" : "0.0.1"
+ },
+ "taskReferences" : {
+ "entry" : [ {
+ "key" : {
+ "name" : "CDSResponseTask",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "parentKeyName" : "CDSResponsePolicy",
+ "parentKeyVersion" : "0.0.1",
+ "parentLocalName" : "CDSResponseState",
+ "localName" : "CDSResponsePolicy"
+ },
+ "outputType" : "DIRECT",
+ "output" : {
+ "parentKeyName" : "CDSResponsePolicy",
+ "parentKeyVersion" : "0.0.1",
+ "parentLocalName" : "CDSResponseState",
+ "localName" : "ResponseOutput"
+ }
+ }
+ } ]
+ }
+ }
+ } ]
+ },
+ "firstState" : "CDSResponseState"
+ }
+ }, {
+ "key" : {
+ "name" : "ReceiveEventPolicy",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "policyKey" : {
+ "name" : "ReceiveEventPolicy",
+ "version" : "0.0.1"
+ },
+ "template" : "Freestyle",
+ "state" : {
+ "entry" : [ {
+ "key" : "CreateOrDeleteState",
+ "value" : {
+ "stateKey" : {
+ "parentKeyName" : "ReceiveEventPolicy",
+ "parentKeyVersion" : "0.0.1",
+ "parentLocalName" : "NULL",
+ "localName" : "CreateOrDeleteState"
+ },
+ "trigger" : {
+ "name" : "PMSubscriptionOutputEvent",
+ "version" : "0.0.1"
+ },
+ "stateOutputs" : {
+ "entry" : [ {
+ "key" : "CreateSubscriptionPayload",
+ "value" : {
+ "key" : {
+ "parentKeyName" : "ReceiveEventPolicy",
+ "parentKeyVersion" : "0.0.1",
+ "parentLocalName" : "CreateOrDeleteState",
+ "localName" : "CreateSubscriptionPayload"
+ },
+ "outgoingEvent" : {
+ "name" : "CreateSubscriptionPayloadEvent",
+ "version" : "0.0.1"
+ },
+ "nextState" : {
+ "parentKeyName" : "ReceiveEventPolicy",
+ "parentKeyVersion" : "0.0.1",
+ "parentLocalName" : "NULL",
+ "localName" : "CreateSubscription"
+ }
+ }
+ }, {
+ "key" : "DeleteSubscriptionPayload",
+ "value" : {
+ "key" : {
+ "parentKeyName" : "ReceiveEventPolicy",
+ "parentKeyVersion" : "0.0.1",
+ "parentLocalName" : "CreateOrDeleteState",
+ "localName" : "DeleteSubscriptionPayload"
+ },
+ "outgoingEvent" : {
+ "name" : "DeleteSubscriptionPayloadEvent",
+ "version" : "0.0.1"
+ },
+ "nextState" : {
+ "parentKeyName" : "ReceiveEventPolicy",
+ "parentKeyVersion" : "0.0.1",
+ "parentLocalName" : "NULL",
+ "localName" : "DeleteSubscription"
+ }
+ }
+ } ]
+ },
+ "contextAlbumReference" : [ {
+ "name" : "PMSubscriptionAlbum",
+ "version" : "0.0.1"
+ } ],
+ "taskSelectionLogic" : {
+ "key" : "TaskSelectionLogic",
+ "logicFlavour" : "JAVASCRIPT",
+ "logic" : "/*\n * ============LICENSE_START=======================================================\n * Copyright (C) 2020 Nordix Foundation.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\nexecutor.logger.info(executor.subject.id);\n\nvar pmSubscriptionInfo = executor.getContextAlbum(\"PMSubscriptionAlbum\").get(executor.inFields.get(\"albumID\").toString())\nvar changeType = pmSubscriptionInfo.get(\"changeType\").toString()\n\nif (\"CREATE\".equals(changeType)) {\n executor.subject.getTaskKey(\"CreateSubscriptionPayloadTask\").copyTo(executor.selectedTask);\n}\nelse if (\"DELETE\".equals(changeType)) {\n executor.subject.getTaskKey(\"DeleteSubscriptionPayloadTask\").copyTo(executor.selectedTask);\n}\n\ntrue;"
+ },
+ "stateFinalizerLogicMap" : {
+ "entry" : [ ]
+ },
+ "defaultTask" : {
+ "name" : "CreateSubscriptionPayloadTask",
+ "version" : "0.0.1"
+ },
+ "taskReferences" : {
+ "entry" : [ {
+ "key" : {
+ "name" : "CreateSubscriptionPayloadTask",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "parentKeyName" : "ReceiveEventPolicy",
+ "parentKeyVersion" : "0.0.1",
+ "parentLocalName" : "CreateOrDeleteState",
+ "localName" : "ReceiveEventPolicy"
+ },
+ "outputType" : "DIRECT",
+ "output" : {
+ "parentKeyName" : "ReceiveEventPolicy",
+ "parentKeyVersion" : "0.0.1",
+ "parentLocalName" : "CreateOrDeleteState",
+ "localName" : "CreateSubscriptionPayload"
+ }
+ }
+ }, {
+ "key" : {
+ "name" : "DeleteSubscriptionPayloadTask",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "parentKeyName" : "ReceiveEventPolicy",
+ "parentKeyVersion" : "0.0.1",
+ "parentLocalName" : "CreateOrDeleteState",
+ "localName" : "ReceiveEventPolicy"
+ },
+ "outputType" : "DIRECT",
+ "output" : {
+ "parentKeyName" : "ReceiveEventPolicy",
+ "parentKeyVersion" : "0.0.1",
+ "parentLocalName" : "CreateOrDeleteState",
+ "localName" : "DeleteSubscriptionPayload"
+ }
+ }
+ } ]
+ }
+ }
+ }, {
+ "key" : "CreateSubscription",
+ "value" : {
+ "stateKey" : {
+ "parentKeyName" : "ReceiveEventPolicy",
+ "parentKeyVersion" : "0.0.1",
+ "parentLocalName" : "NULL",
+ "localName" : "CreateSubscription"
+ },
+ "trigger" : {
+ "name" : "CreateSubscriptionPayloadEvent",
+ "version" : "0.0.1"
+ },
+ "stateOutputs" : {
+ "entry" : [ {
+ "key" : "IssueCreateSubscriptionRequestOutput",
+ "value" : {
+ "key" : {
+ "parentKeyName" : "ReceiveEventPolicy",
+ "parentKeyVersion" : "0.0.1",
+ "parentLocalName" : "CreateSubscription",
+ "localName" : "IssueCreateSubscriptionRequestOutput"
+ },
+ "outgoingEvent" : {
+ "name" : "CreateSubscriptionRequestEvent",
+ "version" : "0.0.1"
+ },
+ "nextState" : {
+ "parentKeyName" : "NULL",
+ "parentKeyVersion" : "0.0.0",
+ "parentLocalName" : "NULL",
+ "localName" : "NULL"
+ }
+ }
+ } ]
+ },
+ "contextAlbumReference" : [ {
+ "name" : "PMSubscriptionAlbum",
+ "version" : "0.0.1"
+ } ],
+ "taskSelectionLogic" : {
+ "key" : "NULL",
+ "logicFlavour" : "UNDEFINED",
+ "logic" : ""
+ },
+ "stateFinalizerLogicMap" : {
+ "entry" : [ ]
+ },
+ "defaultTask" : {
+ "name" : "CreateSubscriptionRequestTask",
+ "version" : "0.0.1"
+ },
+ "taskReferences" : {
+ "entry" : [ {
+ "key" : {
+ "name" : "CreateSubscriptionRequestTask",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "parentKeyName" : "ReceiveEventPolicy",
+ "parentKeyVersion" : "0.0.1",
+ "parentLocalName" : "CreateSubscription",
+ "localName" : "ReceiveEventPolicy"
+ },
+ "outputType" : "DIRECT",
+ "output" : {
+ "parentKeyName" : "ReceiveEventPolicy",
+ "parentKeyVersion" : "0.0.1",
+ "parentLocalName" : "CreateSubscription",
+ "localName" : "IssueCreateSubscriptionRequestOutput"
+ }
+ }
+ } ]
+ }
+ }
+ }, {
+ "key" : "DeleteSubscription",
+ "value" : {
+ "stateKey" : {
+ "parentKeyName" : "ReceiveEventPolicy",
+ "parentKeyVersion" : "0.0.1",
+ "parentLocalName" : "NULL",
+ "localName" : "DeleteSubscription"
+ },
+ "trigger" : {
+ "name" : "DeleteSubscriptionPayloadEvent",
+ "version" : "0.0.1"
+ },
+ "stateOutputs" : {
+ "entry" : [ {
+ "key" : "IssueDeleteSubscriptionRequestOutput",
+ "value" : {
+ "key" : {
+ "parentKeyName" : "ReceiveEventPolicy",
+ "parentKeyVersion" : "0.0.1",
+ "parentLocalName" : "DeleteSubscription",
+ "localName" : "IssueDeleteSubscriptionRequestOutput"
+ },
+ "outgoingEvent" : {
+ "name" : "DeleteSubscriptionRequestEvent",
+ "version" : "0.0.1"
+ },
+ "nextState" : {
+ "parentKeyName" : "NULL",
+ "parentKeyVersion" : "0.0.0",
+ "parentLocalName" : "NULL",
+ "localName" : "NULL"
+ }
+ }
+ } ]
+ },
+ "contextAlbumReference" : [ {
+ "name" : "PMSubscriptionAlbum",
+ "version" : "0.0.1"
+ } ],
+ "taskSelectionLogic" : {
+ "key" : "NULL",
+ "logicFlavour" : "UNDEFINED",
+ "logic" : ""
+ },
+ "stateFinalizerLogicMap" : {
+ "entry" : [ ]
+ },
+ "defaultTask" : {
+ "name" : "DeleteSubscriptionRequestTask",
+ "version" : "0.0.1"
+ },
+ "taskReferences" : {
+ "entry" : [ {
+ "key" : {
+ "name" : "DeleteSubscriptionRequestTask",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "parentKeyName" : "ReceiveEventPolicy",
+ "parentKeyVersion" : "0.0.1",
+ "parentLocalName" : "DeleteSubscription",
+ "localName" : "ReceiveEventPolicy"
+ },
+ "outputType" : "DIRECT",
+ "output" : {
+ "parentKeyName" : "ReceiveEventPolicy",
+ "parentKeyVersion" : "0.0.1",
+ "parentLocalName" : "DeleteSubscription",
+ "localName" : "IssueDeleteSubscriptionRequestOutput"
+ }
+ }
+ } ]
+ }
+ }
+ }, {
+ "key" : "ReceiveSubscriptionState",
+ "value" : {
+ "stateKey" : {
+ "parentKeyName" : "ReceiveEventPolicy",
+ "parentKeyVersion" : "0.0.1",
+ "parentLocalName" : "NULL",
+ "localName" : "ReceiveSubscriptionState"
+ },
+ "trigger" : {
+ "name" : "testPolicyB",
+ "version" : "0.0.1"
+ },
+ "stateOutputs" : {
+ "entry" : [ {
+ "key" : "ReceivePMSubscriptionOutput",
+ "value" : {
+ "key" : {
+ "parentKeyName" : "ReceiveEventPolicy",
+ "parentKeyVersion" : "0.0.1",
+ "parentLocalName" : "ReceiveSubscriptionState",
+ "localName" : "ReceivePMSubscriptionOutput"
+ },
+ "outgoingEvent" : {
+ "name" : "PMSubscriptionOutputEvent",
+ "version" : "0.0.1"
+ },
+ "nextState" : {
+ "parentKeyName" : "ReceiveEventPolicy",
+ "parentKeyVersion" : "0.0.1",
+ "parentLocalName" : "NULL",
+ "localName" : "CreateOrDeleteState"
+ }
+ }
+ } ]
+ },
+ "contextAlbumReference" : [ {
+ "name" : "PMSubscriptionAlbum",
+ "version" : "0.0.1"
+ } ],
+ "taskSelectionLogic" : {
+ "key" : "NULL",
+ "logicFlavour" : "UNDEFINED",
+ "logic" : ""
+ },
+ "stateFinalizerLogicMap" : {
+ "entry" : [ ]
+ },
+ "defaultTask" : {
+ "name" : "ReceivePMSubscriptionTask",
+ "version" : "0.0.1"
+ },
+ "taskReferences" : {
+ "entry" : [ {
+ "key" : {
+ "name" : "ReceivePMSubscriptionTask",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "parentKeyName" : "ReceiveEventPolicy",
+ "parentKeyVersion" : "0.0.1",
+ "parentLocalName" : "ReceiveSubscriptionState",
+ "localName" : "ReceiveEventPolicy"
+ },
+ "outputType" : "DIRECT",
+ "output" : {
+ "parentKeyName" : "ReceiveEventPolicy",
+ "parentKeyVersion" : "0.0.1",
+ "parentLocalName" : "ReceiveSubscriptionState",
+ "localName" : "ReceivePMSubscriptionOutput"
+ }
+ }
+ } ]
+ }
+ }
+ } ]
+ },
+ "firstState" : "ReceiveSubscriptionState"
+ }
+ } ]
+ }
+ },
+ "tasks" : {
+ "key" : {
+ "name" : "APEXgRPCPolicy_Tasks",
+ "version" : "0.0.1"
+ },
+ "taskMap" : {
+ "entry" : [ {
+ "key" : {
+ "name" : "CDSResponseTask",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "CDSResponseTask",
+ "version" : "0.0.1"
+ },
+ "inputFields" : {
+ "entry" : [ {
+ "key" : "actionIdentifiers",
+ "value" : {
+ "key" : "actionIdentifiers",
+ "fieldSchemaKey" : {
+ "name" : "CDSActionIdentifiersType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ }, {
+ "key" : "commonHeader",
+ "value" : {
+ "key" : "commonHeader",
+ "fieldSchemaKey" : {
+ "name" : "CDSResponseCommonHeaderType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ }, {
+ "key" : "payload",
+ "value" : {
+ "key" : "payload",
+ "fieldSchemaKey" : {
+ "name" : "CDSResponsePayloadType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ }, {
+ "key" : "status",
+ "value" : {
+ "key" : "status",
+ "fieldSchemaKey" : {
+ "name" : "CDSResponseStatusType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ } ]
+ },
+ "outputFields" : {
+ "entry" : [ {
+ "key" : "status",
+ "value" : {
+ "key" : "status",
+ "fieldSchemaKey" : {
+ "name" : "SubscriptionStatusType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ } ]
+ },
+ "taskParameters" : {
+ "entry" : [ ]
+ },
+ "contextAlbumReference" : [ {
+ "name" : "PMSubscriptionAlbum",
+ "version" : "0.0.1"
+ } ],
+ "taskLogic" : {
+ "key" : "TaskLogic",
+ "logicFlavour" : "JAVASCRIPT",
+ "logic" : "/*\n * ============LICENSE_START=======================================================\n * Copyright (C) 2020 Nordix. All rights reserved.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\n\nvar uuidType = java.util.UUID;\n\nvar albumID = uuidType.fromString(\"d0050623-18e5-46c9-9298-9a567990cd7c\");\n\nvar pmSubscriptionInfo = executor.getContextAlbum(\"PMSubscriptionAlbum\").get(albumID.toString());\n\nvar responseStatus = executor.subject.getOutFieldSchemaHelper(\"status\").createNewInstance();\n\nresponseStatus.put(\"subscriptionName\", pmSubscriptionInfo.get(\"subscription\").get(\"subscriptionName\"))\nresponseStatus.put(\"nfName\", pmSubscriptionInfo.get(\"nfName\"))\nresponseStatus.put(\"changeType\", pmSubscriptionInfo.get(\"changeType\"))\n\nvar response = executor.inFields.get(\"payload\")\n\nif (\"failure\".equals(response.get(\"create_DasH_subscription_DasH_response\").get(\"odl_DasH_response\").get(\"status\"))) {\n responseStatus.put(\"message\", \"failed\")\n} else {\n responseStatus.put(\"message\", \"success\")\n}\n\nexecutor.outFields.put(\"status\", responseStatus)\n\ntrue;"
+ }
+ }
+ }, {
+ "key" : {
+ "name" : "CreateSubscriptionPayloadTask",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "CreateSubscriptionPayloadTask",
+ "version" : "0.0.1"
+ },
+ "inputFields" : {
+ "entry" : [ {
+ "key" : "albumID",
+ "value" : {
+ "key" : "albumID",
+ "fieldSchemaKey" : {
+ "name" : "UUIDType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ } ]
+ },
+ "outputFields" : {
+ "entry" : [ {
+ "key" : "albumID",
+ "value" : {
+ "key" : "albumID",
+ "fieldSchemaKey" : {
+ "name" : "UUIDType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ }, {
+ "key" : "payload",
+ "value" : {
+ "key" : "payload",
+ "fieldSchemaKey" : {
+ "name" : "CDSCreateSubscriptionPayloadType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ } ]
+ },
+ "taskParameters" : {
+ "entry" : [ ]
+ },
+ "contextAlbumReference" : [ {
+ "name" : "PMSubscriptionAlbum",
+ "version" : "0.0.1"
+ } ],
+ "taskLogic" : {
+ "key" : "TaskLogic",
+ "logicFlavour" : "JAVASCRIPT",
+ "logic" : "/*\n * ============LICENSE_START=======================================================\n * Copyright (C) 2020 Nordix. All rights reserved.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\nexecutor.logger.info(executor.subject.id);\n\nvar pmSubscriptionInfo = executor.getContextAlbum(\"PMSubscriptionAlbum\").get(executor.inFields.get(\"albumID\").toString())\n\nvar payloadProperties = executor.subject.getOutFieldSchemaHelper(\"payload\").createNewSubInstance(\"create_DasH_subscription_DasH_properties_record\");\n\npayloadProperties.put(\"nfName\", pmSubscriptionInfo.get(\"nfName\"))\npayloadProperties.put(\"subscriptionName\", pmSubscriptionInfo.get(\"subscription\").get(\"subscriptionName\"))\npayloadProperties.put(\"administrativeState\", pmSubscriptionInfo.get(\"subscription\").get(\"administrativeState\"))\npayloadProperties.put(\"fileBasedGP\", pmSubscriptionInfo.get(\"subscription\").get(\"fileBasedGP\").toString())\npayloadProperties.put(\"fileLocation\", pmSubscriptionInfo.get(\"subscription\").get(\"fileLocation\"))\npayloadProperties.put(\"measurementGroups\", pmSubscriptionInfo.get(\"subscription\").get(\"measurementGroups\"))\n\nvar payloadEntry = executor.subject.getOutFieldSchemaHelper(\"payload\").createNewSubInstance(\"CDSRequestPayloadEntry\");\npayloadEntry.put(\"create_DasH_subscription_DasH_properties\", payloadProperties)\n\nvar payload = executor.subject.getOutFieldSchemaHelper(\"payload\").createNewInstance();\npayload.put(\"create_DasH_subscription_DasH_request\", payloadEntry);\n\nexecutor.outFields.put(\"albumID\", executor.inFields.get(\"albumID\"))\nexecutor.outFields.put(\"payload\", payload);\n\nexecutor.logger.info(\"Sending Create Subscription Event to CDS\")\n\ntrue;"
+ }
+ }
+ }, {
+ "key" : {
+ "name" : "CreateSubscriptionRequestTask",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "CreateSubscriptionRequestTask",
+ "version" : "0.0.1"
+ },
+ "inputFields" : {
+ "entry" : [ {
+ "key" : "albumID",
+ "value" : {
+ "key" : "albumID",
+ "fieldSchemaKey" : {
+ "name" : "UUIDType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ }, {
+ "key" : "payload",
+ "value" : {
+ "key" : "payload",
+ "fieldSchemaKey" : {
+ "name" : "CDSCreateSubscriptionPayloadType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ } ]
+ },
+ "outputFields" : {
+ "entry" : [ {
+ "key" : "actionIdentifiers",
+ "value" : {
+ "key" : "actionIdentifiers",
+ "fieldSchemaKey" : {
+ "name" : "CDSActionIdentifiersType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ }, {
+ "key" : "commonHeader",
+ "value" : {
+ "key" : "commonHeader",
+ "fieldSchemaKey" : {
+ "name" : "CDSRequestCommonHeaderType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ }, {
+ "key" : "payload",
+ "value" : {
+ "key" : "payload",
+ "fieldSchemaKey" : {
+ "name" : "CDSCreateSubscriptionPayloadType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ } ]
+ },
+ "taskParameters" : {
+ "entry" : [ ]
+ },
+ "contextAlbumReference" : [ {
+ "name" : "PMSubscriptionAlbum",
+ "version" : "0.0.1"
+ } ],
+ "taskLogic" : {
+ "key" : "TaskLogic",
+ "logicFlavour" : "JAVASCRIPT",
+ "logic" : "/*\n * ============LICENSE_START=======================================================\n * Copyright (C) 2020 Nordix. All rights reserved.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\nexecutor.logger.info(executor.subject.id);\n\nvar pmSubscriptionInfo = executor.getContextAlbum(\"PMSubscriptionAlbum\").get(executor.inFields.get(\"albumID\").toString())\nvar payload = executor.inFields.get(\"payload\")\nvar actionName = \"create-subscription\"\n\nvar commonHeader = executor.subject.getOutFieldSchemaHelper(\"commonHeader\").createNewInstance();\ncommonHeader.put(\"originatorId\", \"sdnc\");\ncommonHeader.put(\"requestId\", \"123456-1000\");\ncommonHeader.put(\"subRequestId\", \"sub-123456-1000\");\n\nvar actionIdentifiers = executor.subject.getOutFieldSchemaHelper(\"actionIdentifiers\").createNewInstance();\nactionIdentifiers.put(\"actionName\", actionName);\nactionIdentifiers.put(\"blueprintName\", \"pm_control\");\nactionIdentifiers.put(\"blueprintVersion\", \"1.0.0\");\nactionIdentifiers.put(\"mode\", \"sync\");\n\nexecutor.outFields.put(\"commonHeader\", commonHeader);\nexecutor.outFields.put(\"actionIdentifiers\", actionIdentifiers);\nexecutor.outFields.put(\"payload\", payload);\n\nexecutor.logger.info(\"Sending Activate Subscription Event to CDS\")\n\ntrue;"
+ }
+ }
+ }, {
+ "key" : {
+ "name" : "DeleteSubscriptionPayloadTask",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "DeleteSubscriptionPayloadTask",
+ "version" : "0.0.1"
+ },
+ "inputFields" : {
+ "entry" : [ {
+ "key" : "albumID",
+ "value" : {
+ "key" : "albumID",
+ "fieldSchemaKey" : {
+ "name" : "UUIDType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ } ]
+ },
+ "outputFields" : {
+ "entry" : [ {
+ "key" : "albumID",
+ "value" : {
+ "key" : "albumID",
+ "fieldSchemaKey" : {
+ "name" : "UUIDType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ }, {
+ "key" : "payload",
+ "value" : {
+ "key" : "payload",
+ "fieldSchemaKey" : {
+ "name" : "CDSDeleteSubscriptionPayloadType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ } ]
+ },
+ "taskParameters" : {
+ "entry" : [ ]
+ },
+ "contextAlbumReference" : [ {
+ "name" : "PMSubscriptionAlbum",
+ "version" : "0.0.1"
+ } ],
+ "taskLogic" : {
+ "key" : "TaskLogic",
+ "logicFlavour" : "JAVASCRIPT",
+ "logic" : "/*\n * ============LICENSE_START=======================================================\n * Copyright (C) 2020 Nordix. All rights reserved.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\nexecutor.logger.info(executor.subject.id);\n\nvar pmSubscriptionInfo = executor.getContextAlbum(\"PMSubscriptionAlbum\").get(executor.inFields.get(\"albumID\").toString())\n\nvar payloadProperties = executor.subject.getOutFieldSchemaHelper(\"payload\").createNewSubInstance(\"delete_DasH_subscription_DasH_properties_record\");\n\npayloadProperties.put(\"nfName\", pmSubscriptionInfo.get(\"nfName\"))\npayloadProperties.put(\"subscriptionName\", pmSubscriptionInfo.get(\"subscription\").get(\"subscriptionName\"))\npayloadProperties.put(\"administrativeState\", pmSubscriptionInfo.get(\"subscription\").get(\"administrativeState\"))\npayloadProperties.put(\"fileBasedGP\", pmSubscriptionInfo.get(\"subscription\").get(\"fileBasedGP\").toString())\npayloadProperties.put(\"fileLocation\", pmSubscriptionInfo.get(\"subscription\").get(\"fileLocation\"))\npayloadProperties.put(\"measurementGroups\", pmSubscriptionInfo.get(\"subscription\").get(\"measurementGroups\"))\n\nvar payloadEntry = executor.subject.getOutFieldSchemaHelper(\"payload\").createNewSubInstance(\"CDSRequestPayloadEntry\");\npayloadEntry.put(\"delete_DasH_subscription_DasH_properties\", payloadProperties)\n\nvar payload = executor.subject.getOutFieldSchemaHelper(\"payload\").createNewInstance();\npayload.put(\"delete_DasH_subscription_DasH_request\", payloadEntry);\n\nexecutor.outFields.put(\"albumID\", executor.inFields.get(\"albumID\"))\nexecutor.outFields.put(\"payload\", payload);\n\nexecutor.logger.info(\"Sending delete Subscription Event to CDS\")\n\ntrue;"
+ }
+ }
+ }, {
+ "key" : {
+ "name" : "DeleteSubscriptionRequestTask",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "DeleteSubscriptionRequestTask",
+ "version" : "0.0.1"
+ },
+ "inputFields" : {
+ "entry" : [ {
+ "key" : "albumID",
+ "value" : {
+ "key" : "albumID",
+ "fieldSchemaKey" : {
+ "name" : "UUIDType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ }, {
+ "key" : "payload",
+ "value" : {
+ "key" : "payload",
+ "fieldSchemaKey" : {
+ "name" : "CDSDeleteSubscriptionPayloadType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ } ]
+ },
+ "outputFields" : {
+ "entry" : [ {
+ "key" : "actionIdentifiers",
+ "value" : {
+ "key" : "actionIdentifiers",
+ "fieldSchemaKey" : {
+ "name" : "CDSActionIdentifiersType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ }, {
+ "key" : "commonHeader",
+ "value" : {
+ "key" : "commonHeader",
+ "fieldSchemaKey" : {
+ "name" : "CDSRequestCommonHeaderType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ }, {
+ "key" : "payload",
+ "value" : {
+ "key" : "payload",
+ "fieldSchemaKey" : {
+ "name" : "CDSDeleteSubscriptionPayloadType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ } ]
+ },
+ "taskParameters" : {
+ "entry" : [ ]
+ },
+ "contextAlbumReference" : [ {
+ "name" : "PMSubscriptionAlbum",
+ "version" : "0.0.1"
+ } ],
+ "taskLogic" : {
+ "key" : "TaskLogic",
+ "logicFlavour" : "JAVASCRIPT",
+ "logic" : "/*\n * ============LICENSE_START=======================================================\n * Copyright (C) 2020 Nordix. All rights reserved.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\nexecutor.logger.info(executor.subject.id);\n\nvar pmSubscriptionInfo = executor.getContextAlbum(\"PMSubscriptionAlbum\").get(executor.inFields.get(\"albumID\").toString())\nvar payload = executor.inFields.get(\"payload\")\nvar actionName = \"delete-subscription\"\n\nvar commonHeader = executor.subject.getOutFieldSchemaHelper(\"commonHeader\").createNewInstance();\ncommonHeader.put(\"originatorId\", \"sdnc\");\ncommonHeader.put(\"requestId\", \"123456-1000\");\ncommonHeader.put(\"subRequestId\", \"sub-123456-1000\");\n\nvar actionIdentifiers = executor.subject.getOutFieldSchemaHelper(\"actionIdentifiers\").createNewInstance();\nactionIdentifiers.put(\"actionName\", actionName);\nactionIdentifiers.put(\"blueprintName\", \"pm_control\");\nactionIdentifiers.put(\"blueprintVersion\", \"1.0.0\");\nactionIdentifiers.put(\"mode\", \"sync\");\n\nexecutor.outFields.put(\"commonHeader\", commonHeader);\nexecutor.outFields.put(\"actionIdentifiers\", actionIdentifiers);\nexecutor.outFields.put(\"payload\", payload);\n\nexecutor.logger.info(\"Sending Deactivate Subscription Event to CDS\")\n\ntrue;"
+ }
+ }
+ }, {
+ "key" : {
+ "name" : "ReceivePMSubscriptionTask",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "ReceivePMSubscriptionTask",
+ "version" : "0.0.1"
+ },
+ "inputFields" : {
+ "entry" : [ {
+ "key" : "changeType",
+ "value" : {
+ "key" : "changeType",
+ "fieldSchemaKey" : {
+ "name" : "SimpleStringType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ }, {
+ "key" : "closedLoopControlName",
+ "value" : {
+ "key" : "closedLoopControlName",
+ "fieldSchemaKey" : {
+ "name" : "SimpleStringType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ }, {
+ "key" : "nfName",
+ "value" : {
+ "key" : "nfName",
+ "fieldSchemaKey" : {
+ "name" : "SimpleStringType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ }, {
+ "key" : "policyName",
+ "value" : {
+ "key" : "policyName",
+ "fieldSchemaKey" : {
+ "name" : "SimpleStringType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ }, {
+ "key" : "subscription",
+ "value" : {
+ "key" : "subscription",
+ "fieldSchemaKey" : {
+ "name" : "SubscriptionType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ } ]
+ },
+ "outputFields" : {
+ "entry" : [ {
+ "key" : "albumID",
+ "value" : {
+ "key" : "albumID",
+ "fieldSchemaKey" : {
+ "name" : "UUIDType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ } ]
+ },
+ "taskParameters" : {
+ "entry" : [ ]
+ },
+ "contextAlbumReference" : [ {
+ "name" : "PMSubscriptionAlbum",
+ "version" : "0.0.1"
+ } ],
+ "taskLogic" : {
+ "key" : "TaskLogic",
+ "logicFlavour" : "JAVASCRIPT",
+ "logic" : "/*\n * ============LICENSE_START=======================================================\n * Copyright (C) 2020 Nordix. All rights reserved.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\nvar uuidType = java.util.UUID;\n\n\n//albumID will be used to fetch info from our album later\nvar albumID = uuidType.fromString(\"d0050623-18e5-46c9-9298-9a567990cd7c\");\nvar pmSubscriptionInfo = executor.getContextAlbum(\"PMSubscriptionAlbum\").getSchemaHelper().createNewInstance();\nvar returnValue = true;;\n\nif(executor.inFields.get(\"policyName\") != null) {\n var changeType = executor.inFields.get(\"changeType\")\n var nfName = executor.inFields.get(\"nfName\")\n var policyName = executor.inFields.get(\"policyName\")\n var closedLoopControlName = executor.inFields.get(\"closedLoopControlName\")\n var subscription = executor.inFields.get(\"subscription\")\n\n pmSubscriptionInfo.put(\"nfName\", executor.inFields.get(\"nfName\"));\n pmSubscriptionInfo.put(\"changeType\", executor.inFields.get(\"changeType\"))\n pmSubscriptionInfo.put(\"policyName\", executor.inFields.get(\"policyName\"))\n pmSubscriptionInfo.put(\"closedLoopControlName\", executor.inFields.get(\"closedLoopControlName\"))\n pmSubscriptionInfo.put(\"subscription\", subscription)\n\n executor.getContextAlbum(\"PMSubscriptionAlbum\").put(albumID.toString(), pmSubscriptionInfo);\n\n executor.outFields.put(\"albumID\", albumID)\n} else {\n executor.message = \"Received invalid event\"\n returnValue = false;\n}\nreturnValue;"
+ }
+ }
+ } ]
+ }
+ },
+ "events" : {
+ "key" : {
+ "name" : "APEXgRPCPolicy_Events",
+ "version" : "0.0.1"
+ },
+ "eventMap" : {
+ "entry" : [ {
+ "key" : {
+ "name" : "CDSResponseEvent",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "CDSResponseEvent",
+ "version" : "0.0.1"
+ },
+ "nameSpace" : "org.onap.policy.apex.onap.pmcontrol",
+ "source" : "CDS",
+ "target" : "APEX",
+ "parameter" : {
+ "entry" : [ {
+ "key" : "actionIdentifiers",
+ "value" : {
+ "key" : "actionIdentifiers",
+ "fieldSchemaKey" : {
+ "name" : "CDSActionIdentifiersType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ }, {
+ "key" : "commonHeader",
+ "value" : {
+ "key" : "commonHeader",
+ "fieldSchemaKey" : {
+ "name" : "CDSResponseCommonHeaderType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ }, {
+ "key" : "payload",
+ "value" : {
+ "key" : "payload",
+ "fieldSchemaKey" : {
+ "name" : "CDSResponsePayloadType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ }, {
+ "key" : "status",
+ "value" : {
+ "key" : "status",
+ "fieldSchemaKey" : {
+ "name" : "CDSResponseStatusType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ } ]
+ }
+ }
+ }, {
+ "key" : {
+ "name" : "CDSResponseStatusEvent",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "CDSResponseStatusEvent",
+ "version" : "0.0.1"
+ },
+ "nameSpace" : "org.onap.policy.apex.onap.pmcontrol",
+ "source" : "APEX",
+ "target" : "DCAE",
+ "parameter" : {
+ "entry" : [ {
+ "key" : "status",
+ "value" : {
+ "key" : "status",
+ "fieldSchemaKey" : {
+ "name" : "SubscriptionStatusType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ } ]
+ }
+ }
+ }, {
+ "key" : {
+ "name" : "CreateSubscriptionPayloadEvent",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "CreateSubscriptionPayloadEvent",
+ "version" : "0.0.1"
+ },
+ "nameSpace" : "org.onap.policy.apex.onap.pmcontrol",
+ "source" : "APEX",
+ "target" : "APEX",
+ "parameter" : {
+ "entry" : [ {
+ "key" : "albumID",
+ "value" : {
+ "key" : "albumID",
+ "fieldSchemaKey" : {
+ "name" : "UUIDType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ }, {
+ "key" : "payload",
+ "value" : {
+ "key" : "payload",
+ "fieldSchemaKey" : {
+ "name" : "CDSCreateSubscriptionPayloadType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ } ]
+ }
+ }
+ }, {
+ "key" : {
+ "name" : "CreateSubscriptionRequestEvent",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "CreateSubscriptionRequestEvent",
+ "version" : "0.0.1"
+ },
+ "nameSpace" : "org.onap.policy.apex.onap.pmcontrol",
+ "source" : "APEX",
+ "target" : "APEX",
+ "parameter" : {
+ "entry" : [ {
+ "key" : "actionIdentifiers",
+ "value" : {
+ "key" : "actionIdentifiers",
+ "fieldSchemaKey" : {
+ "name" : "CDSActionIdentifiersType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ }, {
+ "key" : "commonHeader",
+ "value" : {
+ "key" : "commonHeader",
+ "fieldSchemaKey" : {
+ "name" : "CDSRequestCommonHeaderType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ }, {
+ "key" : "payload",
+ "value" : {
+ "key" : "payload",
+ "fieldSchemaKey" : {
+ "name" : "CDSCreateSubscriptionPayloadType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ } ]
+ }
+ }
+ }, {
+ "key" : {
+ "name" : "DeleteSubscriptionPayloadEvent",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "DeleteSubscriptionPayloadEvent",
+ "version" : "0.0.1"
+ },
+ "nameSpace" : "org.onap.policy.apex.onap.pmcontrol",
+ "source" : "APEX",
+ "target" : "APEX",
+ "parameter" : {
+ "entry" : [ {
+ "key" : "albumID",
+ "value" : {
+ "key" : "albumID",
+ "fieldSchemaKey" : {
+ "name" : "UUIDType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ }, {
+ "key" : "payload",
+ "value" : {
+ "key" : "payload",
+ "fieldSchemaKey" : {
+ "name" : "CDSDeleteSubscriptionPayloadType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ } ]
+ }
+ }
+ }, {
+ "key" : {
+ "name" : "DeleteSubscriptionRequestEvent",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "DeleteSubscriptionRequestEvent",
+ "version" : "0.0.1"
+ },
+ "nameSpace" : "org.onap.policy.apex.onap.pmcontrol",
+ "source" : "APEX",
+ "target" : "APEX",
+ "parameter" : {
+ "entry" : [ {
+ "key" : "actionIdentifiers",
+ "value" : {
+ "key" : "actionIdentifiers",
+ "fieldSchemaKey" : {
+ "name" : "CDSActionIdentifiersType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ }, {
+ "key" : "commonHeader",
+ "value" : {
+ "key" : "commonHeader",
+ "fieldSchemaKey" : {
+ "name" : "CDSRequestCommonHeaderType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ }, {
+ "key" : "payload",
+ "value" : {
+ "key" : "payload",
+ "fieldSchemaKey" : {
+ "name" : "CDSDeleteSubscriptionPayloadType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ } ]
+ }
+ }
+ }, {
+ "key" : {
+ "name" : "PMSubscriptionOutputEvent",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "PMSubscriptionOutputEvent",
+ "version" : "0.0.1"
+ },
+ "nameSpace" : "org.onap.policy.apex.onap.pmcontrol",
+ "source" : "APEX",
+ "target" : "APEX",
+ "parameter" : {
+ "entry" : [ {
+ "key" : "albumID",
+ "value" : {
+ "key" : "albumID",
+ "fieldSchemaKey" : {
+ "name" : "UUIDType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ } ]
+ }
+ }
+ }, {
+ "key" : {
+ "name" : "testPolicyB",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "testPolicyB",
+ "version" : "0.0.1"
+ },
+ "nameSpace" : "org.onap.policy.apex.onap.pmcontrol",
+ "source" : "DCAE",
+ "target" : "APEX",
+ "parameter" : {
+ "entry" : [ {
+ "key" : "changeType",
+ "value" : {
+ "key" : "changeType",
+ "fieldSchemaKey" : {
+ "name" : "SimpleStringType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ }, {
+ "key" : "closedLoopControlName",
+ "value" : {
+ "key" : "closedLoopControlName",
+ "fieldSchemaKey" : {
+ "name" : "SimpleStringType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ }, {
+ "key" : "nfName",
+ "value" : {
+ "key" : "nfName",
+ "fieldSchemaKey" : {
+ "name" : "SimpleStringType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ }, {
+ "key" : "policyName",
+ "value" : {
+ "key" : "policyName",
+ "fieldSchemaKey" : {
+ "name" : "SimpleStringType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ }, {
+ "key" : "subscription",
+ "value" : {
+ "key" : "subscription",
+ "fieldSchemaKey" : {
+ "name" : "SubscriptionType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ } ]
+ }
+ }
+ } ]
+ }
+ },
+ "albums" : {
+ "key" : {
+ "name" : "APEXgRPCPolicy_Albums",
+ "version" : "0.0.1"
+ },
+ "albums" : {
+ "entry" : [ {
+ "key" : {
+ "name" : "PMSubscriptionAlbum",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "PMSubscriptionAlbum",
+ "version" : "0.0.1"
+ },
+ "scope" : "policy",
+ "isWritable" : true,
+ "itemSchema" : {
+ "name" : "PMSubscriptionType",
+ "version" : "0.0.1"
+ }
+ }
+ } ]
+ }
+ },
+ "schemas" : {
+ "key" : {
+ "name" : "APEXgRPCPolicy_Schemas",
+ "version" : "0.0.1"
+ },
+ "schemas" : {
+ "entry" : [ {
+ "key" : {
+ "name" : "CDSActionIdentifiersType",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "CDSActionIdentifiersType",
+ "version" : "0.0.1"
+ },
+ "schemaFlavour" : "Avro",
+ "schemaDefinition" : "{\n \"type\": \"record\",\n \"name\": \"CDSActionIdentifiers_Type\",\n \"namespace\": \"org.onap.policy.apex.onap.helloworld\",\n \"fields\": [\n {\n \"name\": \"actionName\",\n \"type\": \"string\"\n },\n {\n \"name\": \"blueprintName\",\n \"type\": \"string\"\n },\n {\n \"name\": \"blueprintVersion\",\n \"type\": \"string\"\n },\n {\n \"name\": \"mode\",\n \"type\": \"string\"\n }\n ]\n}"
+ }
+ }, {
+ "key" : {
+ "name" : "CDSCreateSubscriptionPayloadType",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "CDSCreateSubscriptionPayloadType",
+ "version" : "0.0.1"
+ },
+ "schemaFlavour" : "Avro",
+ "schemaDefinition" : "{\n \"type\": \"map\",\n \"values\": {\n \"type\": \"record\",\n \"name\": \"CDSRequestPayloadEntry\",\n \"fields\": [\n {\n \"name\": \"create_DasH_subscription_DasH_properties\",\n \"type\": {\n \"name\": \"create_DasH_subscription_DasH_properties_record\",\n \"type\": \"record\",\n \"fields\": [\n {\n \"name\": \"nfName\",\n \"type\": \"string\"\n },\n {\n \"name\": \"subscriptionName\",\n \"type\": \"string\"\n },\n {\n \"name\": \"administrativeState\",\n \"type\": \"string\"\n },\n {\n \"name\": \"fileBasedGP\",\n \"type\": \"string\"\n },\n {\n \"name\": \"fileLocation\",\n \"type\": \"string\"\n },\n {\n \"name\": \"measurementGroups\",\n \"type\": {\n \"type\": \"array\",\n \"items\": {\n \"name\": \"measurementGroups_record\",\n \"type\": \"record\",\n \"fields\": [\n {\n \"name\": \"measurementGroup\",\n \"type\": {\n \"name\": \"measurementGroup\",\n \"type\": \"record\",\n \"fields\": [\n {\n \"name\": \"measurementTypes\",\n \"type\": {\n \"type\": \"array\",\n \"items\": {\n \"name\": \"measurementTypes_record\",\n \"type\": \"record\",\n \"fields\": [\n {\n \"name\": \"measurementType\",\n \"type\": \"string\"\n }\n ]\n }\n }\n },\n {\n \"name\": \"managedObjectDNsBasic\",\n \"type\": {\n \"type\": \"array\",\n \"items\": {\n \"name\": \"managedObjectDNsBasic_record\",\n \"type\": \"record\",\n \"fields\": [\n {\n \"name\": \"DN\",\n \"type\": \"string\"\n }\n ]\n }\n }\n }\n ]\n }\n }\n ]\n }\n }\n }\n ]\n }\n }\n ]\n }\n}"
+ }
+ }, {
+ "key" : {
+ "name" : "CDSDeleteSubscriptionPayloadType",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "CDSDeleteSubscriptionPayloadType",
+ "version" : "0.0.1"
+ },
+ "schemaFlavour" : "Avro",
+ "schemaDefinition" : "{\n \"type\": \"map\",\n \"values\": {\n \"type\": \"record\",\n \"name\": \"CDSRequestPayloadEntry\",\n \"fields\": [\n {\n \"name\": \"delete_DasH_subscription_DasH_properties\",\n \"type\": {\n \"name\": \"delete_DasH_subscription_DasH_properties_record\",\n \"type\": \"record\",\n \"fields\": [\n {\n \"name\": \"nfName\",\n \"type\": \"string\"\n },\n {\n \"name\": \"subscriptionName\",\n \"type\": \"string\"\n },\n {\n \"name\": \"administrativeState\",\n \"type\": \"string\"\n },\n {\n \"name\": \"fileBasedGP\",\n \"type\": \"string\"\n },\n {\n \"name\": \"fileLocation\",\n \"type\": \"string\"\n },\n {\n \"name\": \"measurementGroups\",\n \"type\": {\n \"type\": \"array\",\n \"items\": {\n \"name\": \"measurementGroups_record\",\n \"type\": \"record\",\n \"fields\": [\n {\n \"name\": \"measurementGroup\",\n \"type\": {\n \"name\": \"measurementGroup\",\n \"type\": \"record\",\n \"fields\": [\n {\n \"name\": \"measurementTypes\",\n \"type\": {\n \"type\": \"array\",\n \"items\": {\n \"name\": \"measurementTypes_record\",\n \"type\": \"record\",\n \"fields\": [\n {\n \"name\": \"measurementType\",\n \"type\": \"string\"\n }\n ]\n }\n }\n },\n {\n \"name\": \"managedObjectDNsBasic\",\n \"type\": {\n \"type\": \"array\",\n \"items\": {\n \"name\": \"managedObjectDNsBasic_record\",\n \"type\": \"record\",\n \"fields\": [\n {\n \"name\": \"DN\",\n \"type\": \"string\"\n }\n ]\n }\n }\n }\n ]\n }\n }\n ]\n }\n }\n }\n ]\n }\n }\n ]\n }\n}"
+ }
+ }, {
+ "key" : {
+ "name" : "CDSRequestCommonHeaderType",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "CDSRequestCommonHeaderType",
+ "version" : "0.0.1"
+ },
+ "schemaFlavour" : "Avro",
+ "schemaDefinition" : "{\n \"type\": \"record\",\n \"name\": \"CDSRequestCommonHeader_Type\",\n \"namespace\": \"org.onap.policy.apex.onap.helloworld\",\n \"fields\": [\n {\n \"name\": \"originatorId\",\n \"type\": \"string\"\n },\n {\n \"name\": \"requestId\",\n \"type\": \"string\"\n },\n {\n \"name\": \"subRequestId\",\n \"type\": \"string\"\n }\n ]\n}"
+ }
+ }, {
+ "key" : {
+ "name" : "CDSResponseCommonHeaderType",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "CDSResponseCommonHeaderType",
+ "version" : "0.0.1"
+ },
+ "schemaFlavour" : "Avro",
+ "schemaDefinition" : "{\n \"type\": \"record\",\n \"name\": \"CDSResponseCommonHeader_Type\",\n \"namespace\": \"org.onap.policy.apex.onap.helloworld\",\n \"fields\": [\n {\n \"name\": \"originatorId\",\n \"type\": \"string\"\n },\n {\n \"name\": \"requestId\",\n \"type\": \"string\"\n },\n {\n \"name\": \"subRequestId\",\n \"type\": \"string\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"string\"\n }\n ]\n}"
+ }
+ }, {
+ "key" : {
+ "name" : "CDSResponsePayloadType",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "CDSResponsePayloadType",
+ "version" : "0.0.1"
+ },
+ "schemaFlavour" : "Avro",
+ "schemaDefinition" : "{\n \"name\": \"CDSResponsePayloadEntry\",\n \"type\": \"record\",\n \"namespace\": \"com.acme.avro\",\n \"fields\": [\n {\n \"name\": \"create_DasH_subscription_DasH_response\",\n \"type\": {\n \"name\": \"create_DasH_subscription_DasH_response\",\n \"type\": \"record\",\n \"fields\": [\n {\n \"name\": \"odl_DasH_response\",\n \"type\": {\n \"name\": \"odl_DasH_response\",\n \"type\": \"record\",\n \"fields\": [\n {\n \"name\": \"status\",\n \"type\": \"string\"\n }\n ]\n }\n }\n ]\n }\n }\n ]\n}"
+ }
+ }, {
+ "key" : {
+ "name" : "CDSResponseStatusType",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "CDSResponseStatusType",
+ "version" : "0.0.1"
+ },
+ "schemaFlavour" : "Avro",
+ "schemaDefinition" : "{\n \"type\": \"record\",\n \"name\": \"CDSResponseStatus_Type\",\n \"namespace\": \"org.onap.policy.apex.onap.helloworld\",\n \"fields\": [\n {\n \"name\": \"code\",\n \"type\": \"int\"\n },\n {\n \"name\": \"eventType\",\n \"type\": \"string\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"string\"\n },\n {\n \"name\": \"message\",\n \"type\": \"string\"\n }\n ]\n}"
+ }
+ }, {
+ "key" : {
+ "name" : "PMSubscriptionType",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "PMSubscriptionType",
+ "version" : "0.0.1"
+ },
+ "schemaFlavour" : "Avro",
+ "schemaDefinition" : "{\n \"name\": \"PMSubscription\",\n \"type\": \"record\",\n \"namespace\": \"org.onap.policy.apex.onap.pmcontrol\",\n \"fields\": [\n {\n \"name\": \"nfName\",\n \"type\": \"string\"\n },\n {\n \"name\": \"changeType\",\n \"type\": \"string\"\n },\n {\n \"name\": \"closedLoopControlName\",\n \"type\": \"string\"\n },\n {\n \"name\": \"policyName\",\n \"type\": \"string\"\n },\n {\n \"name\": \"subscription\",\n \"type\": {\n \"name\": \"subscription\",\n \"type\": \"record\",\n \"fields\": [\n {\n \"name\": \"subscriptionName\",\n \"type\": \"string\"\n },\n {\n \"name\": \"administrativeState\",\n \"type\": \"string\"\n },\n {\n \"name\": \"fileBasedGP\",\n \"type\": \"int\"\n },\n {\n \"name\": \"fileLocation\",\n \"type\": \"string\"\n },\n {\n \"name\": \"measurementGroups\",\n \"type\": {\n \"type\": \"array\",\n \"items\": {\n \"name\": \"Measurement_Groups_Type\",\n \"type\": \"record\",\n \"fields\": [\n {\n \"name\": \"measurementGroup\",\n \"type\": {\n \"name\": \"Measurement_Group_Type\",\n \"type\": \"record\",\n \"fields\": [\n {\n \"name\": \"measurementTypes\",\n \"type\": {\n \"type\": \"array\",\n \"items\": {\n \"name\": \"Measurement_Types_Type\",\n \"type\": \"record\",\n \"fields\": [\n {\n \"name\": \"measurementType\",\n \"type\": \"string\"\n }\n ]\n }\n }\n },\n {\n \"name\": \"managedObjectDNsBasic\",\n \"type\": {\n \"type\": \"array\",\n \"items\": {\n \"name\": \"Managed_Object_Dns_Basic_Type\",\n \"type\": \"record\",\n \"fields\": [\n {\n \"name\": \"DN\",\n \"type\": \"string\"\n }\n ]\n }\n }\n }\n ]\n }\n }\n ]\n }\n }\n }\n ]\n }\n }\n ]\n}"
+ }
+ }, {
+ "key" : {
+ "name" : "SimpleIntType",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "SimpleIntType",
+ "version" : "0.0.1"
+ },
+ "schemaFlavour" : "Java",
+ "schemaDefinition" : "java.lang.Integer"
+ }
+ }, {
+ "key" : {
+ "name" : "SimpleStringType",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "SimpleStringType",
+ "version" : "0.0.1"
+ },
+ "schemaFlavour" : "Java",
+ "schemaDefinition" : "java.lang.String"
+ }
+ }, {
+ "key" : {
+ "name" : "SubscriptionStatusType",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "SubscriptionStatusType",
+ "version" : "0.0.1"
+ },
+ "schemaFlavour" : "Avro",
+ "schemaDefinition" : "{\n \"type\": \"record\",\n \"name\": \"ActivateSubscriptionStatus_Type\",\n \"namespace\": \"org.onap.policy.apex.onap.helloworld\",\n \"fields\": [\n {\n \"name\": \"subscriptionName\",\n \"type\": \"string\"\n },\n {\n \"name\": \"nfName\",\n \"type\": \"string\"\n },\n {\n \"name\": \"changeType\",\n \"type\": \"string\"\n },\n {\n \"name\": \"message\",\n \"type\": \"string\"\n }\n ]\n}"
+ }
+ }, {
+ "key" : {
+ "name" : "SubscriptionType",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "SubscriptionType",
+ "version" : "0.0.1"
+ },
+ "schemaFlavour" : "Avro",
+ "schemaDefinition" : "{\n \"name\": \"subscription\",\n \"type\": \"record\",\n \"fields\": [\n {\n \"name\": \"subscriptionName\",\n \"type\": \"string\"\n },\n {\n \"name\": \"administrativeState\",\n \"type\": \"string\"\n },\n {\n \"name\": \"fileBasedGP\",\n \"type\": \"int\"\n },\n {\n \"name\": \"fileLocation\",\n \"type\": \"string\"\n },\n {\n \"name\": \"measurementGroups\",\n \"type\": {\n \"type\": \"array\",\n \"items\": {\n \"name\": \"Measurement_Groups_Type\",\n \"type\": \"record\",\n \"fields\": [\n {\n \"name\": \"measurementGroup\",\n \"type\": {\n \"name\": \"Measurement_Group_Type\",\n \"type\": \"record\",\n \"fields\": [\n {\n \"name\": \"measurementTypes\",\n \"type\": {\n \"type\": \"array\",\n \"items\": {\n \"name\": \"Measurement_Types_Type\",\n \"type\": \"record\",\n \"fields\": [\n {\n \"name\": \"measurementType\",\n \"type\": \"string\"\n }\n ]\n }\n }\n },\n {\n \"name\": \"managedObjectDNsBasic\",\n \"type\": {\n \"type\": \"array\",\n \"items\": {\n \"name\": \"Managed_Object_Dns_Basic_Type\",\n \"type\": \"record\",\n \"fields\": [\n {\n \"name\": \"DN\",\n \"type\": \"string\"\n }\n ]\n }\n }\n }\n ]\n }\n }\n ]\n }\n }\n }\n ]\n}"
+ }
+ }, {
+ "key" : {
+ "name" : "UUIDType",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "UUIDType",
+ "version" : "0.0.1"
+ },
+ "schemaFlavour" : "Java",
+ "schemaDefinition" : "java.util.UUID"
+ }
+ } ]
+ }
+ }
+ }
+}
diff --git a/gui-editors/gui-editor-apex/src/test/resources/converter/ApexConfig-engineServiceParameters-notAnObject.json b/gui-editors/gui-editor-apex/src/test/resources/converter/ApexConfig-engineServiceParameters-notAnObject.json
new file mode 100644
index 0000000..cbad28f
--- /dev/null
+++ b/gui-editors/gui-editor-apex/src/test/resources/converter/ApexConfig-engineServiceParameters-notAnObject.json
@@ -0,0 +1,7 @@
+{
+ "engineServiceParameters": [],
+ "eventInputParameters": {
+ },
+ "eventOutputParameters": {
+ }
+} \ No newline at end of file
diff --git a/gui-editors/gui-editor-apex/src/test/resources/converter/ApexConfig.json b/gui-editors/gui-editor-apex/src/test/resources/converter/ApexConfig.json
new file mode 100644
index 0000000..34ec305
--- /dev/null
+++ b/gui-editors/gui-editor-apex/src/test/resources/converter/ApexConfig.json
@@ -0,0 +1,112 @@
+{
+ "engineServiceParameters": {
+ "name": "MyApexEngine",
+ "version": "0.0.1",
+ "id": 45,
+ "instanceCount": 2,
+ "deploymentPort": 12561,
+ "engineParameters": {
+ "executorParameters": {
+ "JAVASCRIPT": {
+ "parameterClassName": "org.onap.policy.apex.plugins.executor.javascript.JavascriptExecutorParameters"
+ }
+ },
+ "contextParameters": {
+ "parameterClassName": "org.onap.policy.apex.context.parameters.ContextParameters",
+ "schemaParameters": {
+ "Avro": {
+ "parameterClassName": "org.onap.policy.apex.plugins.context.schema.avro.AvroSchemaHelperParameters"
+ },
+ "Java": {
+ "parameterClassName": "org.onap.policy.apex.context.impl.schema.java.JavaSchemaHelperParameters",
+ "jsonAdapters": {
+ "Instant": {
+ "adaptedClass": "java.time.Instant",
+ "adaptorClass": "org.onap.policy.controlloop.util.Serialization$GsonInstantAdapter"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "eventInputParameters": {
+ "DCAEConsumer": {
+ "carrierTechnologyParameters": {
+ "carrierTechnology": "RESTCLIENT",
+ "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters",
+ "parameters": {
+ "url": "http://localhost:54321/GrpcTestRestSim/sim/events/unauthenticated.DCAE_CL_OUTPUT/APEX/1?timeout=30000"
+ }
+ },
+ "eventProtocolParameters": {
+ "eventProtocol": "JSON",
+ "parameters": {
+ "nameAlias": "testPolicyB"
+ }
+ },
+ "eventName": "testPolicyB",
+ "eventNameFilter": "testPolicyB"
+ },
+ "CDSRequestConsumer": {
+ "carrierTechnologyParameters": {
+ "carrierTechnology": "GRPC",
+ "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.grpc.GrpcCarrierTechnologyParameters"
+ },
+ "eventProtocolParameters": {
+ "eventProtocol": "JSON"
+ },
+ "eventName": "CDSResponseEvent",
+ "eventNameFilter": "CDSResponseEvent",
+ "requestorMode": true,
+ "requestorPeer": "CDSRequestProducer",
+ "requestorTimeout": 500
+ }
+ },
+ "eventOutputParameters": {
+ "logOutputter": {
+ "carrierTechnologyParameters": {
+ "carrierTechnology": "FILE",
+ "parameters": {
+ "fileName": "outputevents.log"
+ }
+ },
+ "eventProtocolParameters": {
+ "eventProtocol": "JSON"
+ }
+ },
+ "CDSRequestProducer": {
+ "carrierTechnologyParameters": {
+ "carrierTechnology": "GRPC",
+ "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.grpc.GrpcCarrierTechnologyParameters",
+ "parameters": {
+ "host": "localhost",
+ "port": 54322,
+ "username": "ccsdkapps",
+ "password": "ccsdkapps",
+ "timeout": 10
+ }
+ },
+ "eventProtocolParameters": {
+ "eventProtocol": "JSON"
+ },
+ "eventNameFilter": "(Create|Delete)SubscriptionRequestEvent",
+ "requestorMode": true,
+ "requestorPeer": "CDSRequestConsumer",
+ "requestorTimeout": 500
+ },
+ "CDSReplyProducer": {
+ "carrierTechnologyParameters": {
+ "carrierTechnology": "RESTCLIENT",
+ "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters",
+ "parameters": {
+ "url": "http://localhost:54321/GrpcTestRestSim/sim/events/POLICY_CL_MGT"
+ }
+ },
+ "eventProtocolParameters": {
+ "eventProtocol": "JSON"
+ },
+ "eventNameFilter": "CDSResponseStatusEvent"
+ }
+ }
+} \ No newline at end of file
diff --git a/gui-editors/gui-editor-apex/src/test/resources/converter/ToscaTemplate.json b/gui-editors/gui-editor-apex/src/test/resources/converter/ToscaTemplate.json
new file mode 100644
index 0000000..140205c
--- /dev/null
+++ b/gui-editors/gui-editor-apex/src/test/resources/converter/ToscaTemplate.json
@@ -0,0 +1,17 @@
+{
+ "tosca_definitions_version": "tosca_simple_yaml_1_1_0",
+ "topology_template": {
+ "policies": [
+ {
+ "onap.policies.native.apex.Grpc": {
+ "type": "onap.policies.native.Apex",
+ "type_version": "1.0.0",
+ "name": "onap.policies.native.apex.Grpc",
+ "version": "1.0.0",
+ "properties": {
+ }
+ }
+ }
+ ]
+ }
+}
diff --git a/gui-editors/gui-editor-apex/src/test/resources/processor/ApexConfig-invalid-engineServiceParameters.json b/gui-editors/gui-editor-apex/src/test/resources/processor/ApexConfig-invalid-engineServiceParameters.json
new file mode 100644
index 0000000..2f23055
--- /dev/null
+++ b/gui-editors/gui-editor-apex/src/test/resources/processor/ApexConfig-invalid-engineServiceParameters.json
@@ -0,0 +1,3 @@
+{
+ "engineServiceParameters": ""
+} \ No newline at end of file
diff --git a/gui-editors/gui-editor-apex/src/test/resources/processor/ApexConfig-invalid.json b/gui-editors/gui-editor-apex/src/test/resources/processor/ApexConfig-invalid.json
new file mode 100644
index 0000000..2517d8b
--- /dev/null
+++ b/gui-editors/gui-editor-apex/src/test/resources/processor/ApexConfig-invalid.json
@@ -0,0 +1 @@
+- this is an invalid JSON \ No newline at end of file
diff --git a/gui-editors/gui-editor-apex/src/test/resources/processor/ApexConfig-missing-engineServiceParameters.json b/gui-editors/gui-editor-apex/src/test/resources/processor/ApexConfig-missing-engineServiceParameters.json
new file mode 100644
index 0000000..3fe89d0
--- /dev/null
+++ b/gui-editors/gui-editor-apex/src/test/resources/processor/ApexConfig-missing-engineServiceParameters.json
@@ -0,0 +1,6 @@
+{
+ "eventInputParameters": {
+ },
+ "eventOutputParameters": {
+ }
+} \ No newline at end of file
diff --git a/gui-editors/gui-editor-apex/src/test/resources/processor/ApexConfig.json b/gui-editors/gui-editor-apex/src/test/resources/processor/ApexConfig.json
new file mode 100644
index 0000000..5cd1a46
--- /dev/null
+++ b/gui-editors/gui-editor-apex/src/test/resources/processor/ApexConfig.json
@@ -0,0 +1,37 @@
+{
+ "engineServiceParameters": {
+ "name": "MyApexEngine",
+ "version": "0.0.1",
+ "id": 45,
+ "instanceCount": 2,
+ "deploymentPort": 12561,
+ "engineParameters": {
+ "executorParameters": {
+ "JAVASCRIPT": {
+ "parameterClassName": "org.onap.policy.apex.plugins.executor.javascript.JavascriptExecutorParameters"
+ }
+ },
+ "contextParameters": {
+ "parameterClassName": "org.onap.policy.apex.context.parameters.ContextParameters",
+ "schemaParameters": {
+ "Avro": {
+ "parameterClassName": "org.onap.policy.apex.plugins.context.schema.avro.AvroSchemaHelperParameters"
+ },
+ "Java": {
+ "parameterClassName": "org.onap.policy.apex.context.impl.schema.java.JavaSchemaHelperParameters",
+ "jsonAdapters": {
+ "Instant": {
+ "adaptedClass": "java.time.Instant",
+ "adaptorClass": "org.onap.policy.controlloop.util.Serialization$GsonInstantAdapter"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "eventInputParameters": {
+ },
+ "eventOutputParameters": {
+ }
+} \ No newline at end of file
diff --git a/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-invalid-toscaDefinitions.json b/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-invalid-toscaDefinitions.json
new file mode 100644
index 0000000..e0323b8
--- /dev/null
+++ b/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-invalid-toscaDefinitions.json
@@ -0,0 +1,4 @@
+{
+ "tosca_definitions_version": {
+ }
+} \ No newline at end of file
diff --git a/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-invalid.json b/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-invalid.json
new file mode 100644
index 0000000..0705d6b
--- /dev/null
+++ b/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-invalid.json
@@ -0,0 +1 @@
+- this is a invalid json \ No newline at end of file
diff --git a/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-invalidEntry-policies.json b/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-invalidEntry-policies.json
new file mode 100644
index 0000000..a9bb4e7
--- /dev/null
+++ b/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-invalidEntry-policies.json
@@ -0,0 +1,6 @@
+{
+ "tosca_definitions_version": "tosca_simple_yaml_1_1_0",
+ "topology_template": {
+ "policies": {}
+ }
+} \ No newline at end of file
diff --git a/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-invalidEntry-properties.json b/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-invalidEntry-properties.json
new file mode 100644
index 0000000..fd06d2a
--- /dev/null
+++ b/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-invalidEntry-properties.json
@@ -0,0 +1,12 @@
+{
+ "tosca_definitions_version": "tosca_simple_yaml_1_1_0",
+ "topology_template": {
+ "policies": [
+ {
+ "onap.policies.native.apex.Grpc": {
+ "properties": []
+ }
+ }
+ ]
+ }
+} \ No newline at end of file
diff --git a/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-invalidEntry-topologyTemplate.json b/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-invalidEntry-topologyTemplate.json
new file mode 100644
index 0000000..94a8148
--- /dev/null
+++ b/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-invalidEntry-topologyTemplate.json
@@ -0,0 +1,4 @@
+{
+ "tosca_definitions_version": "tosca_simple_yaml_1_1_0",
+ "topology_template": ""
+} \ No newline at end of file
diff --git a/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-invalidPolicy1.json b/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-invalidPolicy1.json
new file mode 100644
index 0000000..194b2fd
--- /dev/null
+++ b/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-invalidPolicy1.json
@@ -0,0 +1,10 @@
+{
+ "tosca_definitions_version": "tosca_simple_yaml_1_1_0",
+ "topology_template": {
+ "policies": [
+ {
+ "onap.policies.native.apex.Grpc": ""
+ }
+ ]
+ }
+} \ No newline at end of file
diff --git a/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-invalidPolicy2.json b/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-invalidPolicy2.json
new file mode 100644
index 0000000..a8741fd
--- /dev/null
+++ b/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-invalidPolicy2.json
@@ -0,0 +1,8 @@
+{
+ "tosca_definitions_version": "tosca_simple_yaml_1_1_0",
+ "topology_template": {
+ "policies": [
+ {}
+ ]
+ }
+} \ No newline at end of file
diff --git a/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-missing-policies.json b/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-missing-policies.json
new file mode 100644
index 0000000..0d95fab
--- /dev/null
+++ b/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-missing-policies.json
@@ -0,0 +1,5 @@
+{
+ "tosca_definitions_version": "tosca_simple_yaml_1_1_0",
+ "topology_template": {
+ }
+} \ No newline at end of file
diff --git a/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-missing-policy.json b/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-missing-policy.json
new file mode 100644
index 0000000..88bbb6c
--- /dev/null
+++ b/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-missing-policy.json
@@ -0,0 +1,6 @@
+{
+ "tosca_definitions_version": "tosca_simple_yaml_1_1_0",
+ "topology_template": {
+ "policies": []
+ }
+} \ No newline at end of file
diff --git a/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-missing-properties.json b/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-missing-properties.json
new file mode 100644
index 0000000..7bcac74
--- /dev/null
+++ b/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-missing-properties.json
@@ -0,0 +1,15 @@
+{
+ "tosca_definitions_version": "tosca_simple_yaml_1_1_0",
+ "topology_template": {
+ "policies": [
+ {
+ "onap.policies.native.apex.Grpc": {
+ "type": "onap.policies.native.Apex",
+ "type_version": "1.0.0",
+ "name": "onap.policies.native.apex.Grpc",
+ "version": "1.0.0"
+ }
+ }
+ ]
+ }
+} \ No newline at end of file
diff --git a/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-missing-topology-template.json b/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-missing-topology-template.json
new file mode 100644
index 0000000..bf8e032
--- /dev/null
+++ b/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-missing-topology-template.json
@@ -0,0 +1,3 @@
+{
+ "tosca_definitions_version": "tosca_simple_yaml_1_1_0"
+} \ No newline at end of file
diff --git a/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-missing-tosca-definitions-version.json b/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-missing-tosca-definitions-version.json
new file mode 100644
index 0000000..1e0d5b8
--- /dev/null
+++ b/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-missing-tosca-definitions-version.json
@@ -0,0 +1,16 @@
+{
+ "topology_template": {
+ "policies": [
+ {
+ "onap.policies.native.apex.Grpc": {
+ "type": "onap.policies.native.Apex",
+ "type_version": "1.0.0",
+ "name": "onap.policies.native.apex.Grpc",
+ "version": "1.0.0",
+ "properties": {
+ }
+ }
+ }
+ ]
+ }
+} \ No newline at end of file
diff --git a/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-more-than-one-policy.json b/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-more-than-one-policy.json
new file mode 100644
index 0000000..d5801b9
--- /dev/null
+++ b/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate-more-than-one-policy.json
@@ -0,0 +1,20 @@
+{
+ "tosca_definitions_version": "tosca_simple_yaml_1_1_0",
+ "topology_template": {
+ "policies": [
+ {
+ "onap.policies.native.apex.Grpc": {
+ "type": "onap.policies.native.Apex",
+ "type_version": "1.0.0",
+ "name": "onap.policies.native.apex.Grpc",
+ "version": "1.0.0",
+ "properties": {
+ }
+ }
+ },
+ {
+ "onap.policies.native.apex.AnotherPolicy": {}
+ }
+ ]
+ }
+} \ No newline at end of file
diff --git a/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate.json b/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate.json
new file mode 100644
index 0000000..86ea2cf
--- /dev/null
+++ b/gui-editors/gui-editor-apex/src/test/resources/processor/ToscaTemplate.json
@@ -0,0 +1,17 @@
+{
+ "tosca_definitions_version": "tosca_simple_yaml_1_1_0",
+ "topology_template": {
+ "policies": [
+ {
+ "onap.policies.native.apex.Grpc": {
+ "type": "onap.policies.native.Apex",
+ "type_version": "1.0.0",
+ "name": "onap.policies.native.apex.Grpc",
+ "version": "1.0.0",
+ "properties": {
+ }
+ }
+ }
+ ]
+ }
+} \ No newline at end of file