From 5f0ec1c2d95c377fbec428f11464e93fe442b5ef Mon Sep 17 00:00:00 2001 From: "a.sreekumar" Date: Tue, 29 Jun 2021 13:57:14 +0100 Subject: Cleanup input & outputFields from Task definition 1) Remove the usage of inputField and outputField from Task definition. 2) Fix issues around populating events to task in case of State Finalizer Logic. Change-Id: Ief17f400729410b83c6b7c665980d443e0cf6f28 Issue-ID: POLICY-3336 Signed-off-by: a.sreekumar --- .../policy/apex/model/modelapi/ApexEditorApi.java | 61 +---- .../apex/model/modelapi/impl/ApexModelImpl.java | 48 +--- .../apex/model/modelapi/impl/PolicyFacade.java | 17 +- .../apex/model/modelapi/impl/TaskFacade.java | 276 +-------------------- .../apex/model/modelapi/ApexEditorApiTaskTest.java | 122 +-------- .../src/test/resources/models/PolicyModel.xml | 64 ----- .../model/policymodel/concepts/AxPolicyModel.java | 39 --- .../apex/model/policymodel/concepts/AxTask.java | 165 +----------- .../model/policymodel/handling/PolicyAnalyser.java | 10 - .../policymodel/concepts/PolicyModelTest.java | 38 --- .../apex/model/policymodel/concepts/TasksTest.java | 61 +---- .../policymodel/handling/ApexPolicyModelTest.java | 15 +- .../policymodel/handling/PolicyAnalyserTest.java | 5 +- .../handling/SupportApexPolicyModelCreator.java | 58 ----- ...PolicyModelComparisonDifferentVerboseValues.txt | 2 +- ...PolicyModelComparisonIdenticalVerboseValues.txt | 3 +- 16 files changed, 57 insertions(+), 927 deletions(-) (limited to 'model') diff --git a/model/model-api/src/main/java/org/onap/policy/apex/model/modelapi/ApexEditorApi.java b/model/model-api/src/main/java/org/onap/policy/apex/model/modelapi/ApexEditorApi.java index 741fbdc90..fab6ba163 100644 --- a/model/model-api/src/main/java/org/onap/policy/apex/model/modelapi/ApexEditorApi.java +++ b/model/model-api/src/main/java/org/onap/policy/apex/model/modelapi/ApexEditorApi.java @@ -1,19 +1,20 @@ /*- * ============LICENSE_START======================================================= * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * Modifications Copyright (C) 2021 Bell Canada. All rights reserved. * ================================================================================ * 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========================================================= */ @@ -456,7 +457,7 @@ public interface ApexEditorApi { ApexApiResult deleteTaskLogic(final String name, final String version); /** - * Create a task input field. + * Create a task field. * * @param name name of the task * @param version version of the task, set to null to use the latest version @@ -467,11 +468,11 @@ public interface ApexEditorApi { * @param optional true if the task field is optional, false otherwise * @return result of the operation */ - ApexApiResult createTaskInputField(final String name, final String version, final String fieldName, + ApexApiResult createTaskField(final String name, final String version, final String fieldName, final String contextSchemaName, final String contextSchemaVersion, boolean optional); /** - * List task input fields. + * Handle a task field. * * @param name name of the task * @param version version of the task, set to null to use the latest version @@ -479,53 +480,7 @@ public interface ApexEditorApi { * task * @return result of the operation */ - ApexApiResult listTaskInputField(final String name, final String version, final String fieldName); - - /** - * Delete a task input field. - * - * @param name name of the task - * @param version version of the task, set to null to use the latest version - * @param fieldName of the input field, set to null to delete all input fields - * @return result of the operation - */ - ApexApiResult deleteTaskInputField(final String name, final String version, final String fieldName); - - /** - * Create a task output field. - * - * @param name name of the task - * @param version version of the task, set to null to use the latest version - * @param fieldName of the output field - * @param contextSchemaName name of the output field context schema - * @param contextSchemaVersion version of the output field context schema, set to null to use - * the latest version - * @param optional true if the task field is optional, false otherwise - * @return result of the operation - */ - ApexApiResult createTaskOutputField(final String name, final String version, final String fieldName, - final String contextSchemaName, final String contextSchemaVersion, boolean optional); - - /** - * List task output fields. - * - * @param name name of the task - * @param version version of the task, set to null to use the latest version - * @param fieldName field name of the output field, set to null to list all output fields of the - * task - * @return result of the operation - */ - ApexApiResult listTaskOutputField(final String name, final String version, final String fieldName); - - /** - * Delete a task output field. - * - * @param name name of the task - * @param version version of the task, set to null to use the latest version - * @param fieldName of the output field, set to null to delete all output fields - * @return result of the operation - */ - ApexApiResult deleteTaskOutputField(final String name, final String version, final String fieldName); + ApexApiResult handleTaskField(final String name, final String version, final String fieldName); /** * Create a task parameter. diff --git a/model/model-api/src/main/java/org/onap/policy/apex/model/modelapi/impl/ApexModelImpl.java b/model/model-api/src/main/java/org/onap/policy/apex/model/modelapi/impl/ApexModelImpl.java index 5e8d1a5c7..67083bfe8 100644 --- a/model/model-api/src/main/java/org/onap/policy/apex/model/modelapi/impl/ApexModelImpl.java +++ b/model/model-api/src/main/java/org/onap/policy/apex/model/modelapi/impl/ApexModelImpl.java @@ -26,6 +26,7 @@ package org.onap.policy.apex.model.modelapi.impl; import java.util.Properties; import org.onap.policy.apex.model.basicmodel.dao.DaoParameters; import org.onap.policy.apex.model.modelapi.ApexApiResult; +import org.onap.policy.apex.model.modelapi.ApexApiResult.Result; import org.onap.policy.apex.model.modelapi.ApexModel; import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel; import org.slf4j.Logger; @@ -38,7 +39,7 @@ import org.slf4j.LoggerFactory; */ public final class ApexModelImpl implements ApexModel { - private static final String FIELDS_DEPRECATED_WARN_MSG = + public static final String FIELDS_DEPRECATED_WARN_MSG = "inputFields and outputFields are deprecated from Task definition and will be removed. " + "Instead, inputEvent and outputEvents are automatically populated to Tasks based on State definition"; @@ -444,56 +445,19 @@ public final class ApexModelImpl implements ApexModel { * {@inheritDoc}. */ @Override - public ApexApiResult createTaskInputField(final String name, final String version, final String fieldName, + public ApexApiResult createTaskField(final String name, final String version, final String fieldName, final String dataTypeName, final String dataTypeVersion, final boolean optional) { LOGGER.warn(FIELDS_DEPRECATED_WARN_MSG); - return taskFacade.createTaskInputField(name, version, fieldName, dataTypeName, dataTypeVersion, optional); + return new ApexApiResult(Result.SUCCESS, FIELDS_DEPRECATED_WARN_MSG); } /** * {@inheritDoc}. */ @Override - public ApexApiResult listTaskInputField(final String name, final String version, final String fieldName) { + public ApexApiResult handleTaskField(final String name, final String version, final String fieldName) { LOGGER.warn(FIELDS_DEPRECATED_WARN_MSG); - return taskFacade.listTaskInputField(name, version, fieldName); - } - - /** - * {@inheritDoc}. - */ - @Override - public ApexApiResult deleteTaskInputField(final String name, final String version, final String fieldName) { - LOGGER.warn(FIELDS_DEPRECATED_WARN_MSG); - return taskFacade.deleteTaskInputField(name, version, fieldName); - } - - /** - * {@inheritDoc}. - */ - @Override - public ApexApiResult createTaskOutputField(final String name, final String version, final String fieldName, - final String dataTypeName, final String dataTypeVersion, final boolean optional) { - LOGGER.warn(FIELDS_DEPRECATED_WARN_MSG); - return taskFacade.createTaskOutputField(name, version, fieldName, dataTypeName, dataTypeVersion, optional); - } - - /** - * {@inheritDoc}. - */ - @Override - public ApexApiResult listTaskOutputField(final String name, final String version, final String fieldName) { - LOGGER.warn(FIELDS_DEPRECATED_WARN_MSG); - return taskFacade.listTaskOutputField(name, version, fieldName); - } - - /** - * {@inheritDoc}. - */ - @Override - public ApexApiResult deleteTaskOutputField(final String name, final String version, final String fieldName) { - LOGGER.warn(FIELDS_DEPRECATED_WARN_MSG); - return taskFacade.deleteTaskOutputField(name, version, fieldName); + return new ApexApiResult(Result.SUCCESS, FIELDS_DEPRECATED_WARN_MSG); } /** diff --git a/model/model-api/src/main/java/org/onap/policy/apex/model/modelapi/impl/PolicyFacade.java b/model/model-api/src/main/java/org/onap/policy/apex/model/modelapi/impl/PolicyFacade.java index 9480702ac..c36e7e8a5 100644 --- a/model/model-api/src/main/java/org/onap/policy/apex/model/modelapi/impl/PolicyFacade.java +++ b/model/model-api/src/main/java/org/onap/policy/apex/model/modelapi/impl/PolicyFacade.java @@ -1112,10 +1112,17 @@ public class PolicyFacade { ApexApiResult.Result.FAILED, "output type " + builder.getOutputType() + " invalid"); } + String outputRefName = outputRefKey.getLocalName(); + // in case of SFL, outgoing event will be same for all state outputs that are part of SFL.So, take any entry + if (AxStateTaskOutputType.LOGIC.equals(stateTaskOutputType)) { + outputRefName = state.getStateOutputs().keySet().iterator().next(); + } + // add input and output events to the task based on state definition - if (state.getStateOutputs().containsKey(outputRefKey.getLocalName())) { - populateIoEventsToTask(state, task, outputRefKey); + if (state.getStateOutputs().containsKey(outputRefName)) { + populateIoEventsToTask(state, task, outputRefName); } + state.getTaskReferences().put(task.getKey(), new AxStateTaskReference(refKey, stateTaskOutputType, outputRefKey)); return new ApexApiResult(); @@ -1124,18 +1131,18 @@ public class PolicyFacade { } } - private void populateIoEventsToTask(final AxState state, final AxTask task, final AxReferenceKey outputRefKey) { + private void populateIoEventsToTask(final AxState state, final AxTask task, final String outputRefName) { AxEvent triggerEvent = apexModel.getPolicyModel().getEvents().get(state.getTrigger()); task.setInputEvent(triggerEvent); Map outputEvents = new TreeMap<>(); if (state.getNextStateSet().isEmpty() || state.getNextStateSet().contains(AxReferenceKey.getNullKey().getLocalName())) { - state.getStateOutputs().get(outputRefKey.getLocalName()).getOutgoingEventSet() + state.getStateOutputs().get(outputRefName).getOutgoingEventSet() .forEach(outgoingEventKey -> outputEvents.put(outgoingEventKey.getName(), apexModel.getPolicyModel().getEvents().get(outgoingEventKey))); } else { AxArtifactKey outgoingEventKey = - state.getStateOutputs().get(outputRefKey.getLocalName()).getOutgoingEvent(); + state.getStateOutputs().get(outputRefName).getOutgoingEvent(); outputEvents.put(outgoingEventKey.getName(), apexModel.getPolicyModel().getEvents().get(outgoingEventKey)); } diff --git a/model/model-api/src/main/java/org/onap/policy/apex/model/modelapi/impl/TaskFacade.java b/model/model-api/src/main/java/org/onap/policy/apex/model/modelapi/impl/TaskFacade.java index a6f4a87cb..ad1edd72e 100644 --- a/model/model-api/src/main/java/org/onap/policy/apex/model/modelapi/impl/TaskFacade.java +++ b/model/model-api/src/main/java/org/onap/policy/apex/model/modelapi/impl/TaskFacade.java @@ -2,6 +2,7 @@ * ============LICENSE_START======================================================= * Copyright (C) 2016-2018 Ericsson. All rights reserved. * Modifications Copyright (C) 2019 Nordix Foundation. + * Modifications Copyright (C) 2021 Bell Canada. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,9 +31,6 @@ import org.onap.policy.apex.model.basicmodel.concepts.AxReferenceKey; import org.onap.policy.apex.model.basicmodel.concepts.AxValidationResult; import org.onap.policy.apex.model.basicmodel.handling.ApexModelStringWriter; import org.onap.policy.apex.model.contextmodel.concepts.AxContextAlbum; -import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchema; -import org.onap.policy.apex.model.eventmodel.concepts.AxInputField; -import org.onap.policy.apex.model.eventmodel.concepts.AxOutputField; import org.onap.policy.apex.model.modelapi.ApexApiResult; import org.onap.policy.apex.model.modelapi.ApexModel; import org.onap.policy.apex.model.policymodel.concepts.AxTask; @@ -355,278 +353,6 @@ public class TaskFacade { } } - /** - * Create a task input field. - * - * @param name name of the task - * @param version version of the task, set to null to use the latest version - * @param fieldName of the input field - * @param contextSchemaName name of the input field context schema - * @param contextSchemaVersion version of the input field context schema, set to null to use the - * latest version - * @param optional true if the task field is optional, false otherwise - * @return result of the operation - */ - public ApexApiResult createTaskInputField(final String name, final String version, final String fieldName, - final String contextSchemaName, final String contextSchemaVersion, final boolean optional) { - try { - Assertions.argumentNotNull(fieldName, "fieldName may not be null"); - - final AxTask task = apexModel.getPolicyModel().getTasks().get(name, version); - if (task == null) { - return new ApexApiResult(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, - CONCEPT + name + ':' + version + DOES_NOT_EXIST); - } - - final AxReferenceKey refKey = - new AxReferenceKey(task.getKey().getName(), task.getKey().getVersion(), "inputFields", fieldName); - - if (task.getInputFields().containsKey(refKey.getLocalName())) { - return new ApexApiResult(ApexApiResult.Result.CONCEPT_EXISTS, - CONCEPT + refKey.getId() + ALREADY_EXISTS); - } - - final AxContextSchema schema = - apexModel.getPolicyModel().getSchemas().get(contextSchemaName, contextSchemaVersion); - if (schema == null) { - return new ApexApiResult(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, - CONCEPT + contextSchemaName + ':' + contextSchemaVersion + DOES_NOT_EXIST); - } - - task.getInputFields().put(refKey.getLocalName(), new AxInputField(refKey, schema.getKey(), optional)); - return new ApexApiResult(); - } catch (final Exception e) { - return new ApexApiResult(ApexApiResult.Result.FAILED, e); - } - } - - /** - * List task input fields. - * - * @param name name of the task - * @param version version of the task, set to null to use the latest version - * @param fieldName field name of the input field, set to null to list all input fields of the - * task - * @return result of the operation - */ - public ApexApiResult listTaskInputField(final String name, final String version, final String fieldName) { - try { - final AxTask task = apexModel.getPolicyModel().getTasks().get(name, version); - if (task == null) { - return new ApexApiResult(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, - CONCEPT + name + ':' + version + DOES_NOT_EXIST); - } - - if (fieldName != null) { - final AxInputField inputField = task.getInputFields().get(fieldName); - if (inputField != null) { - return new ApexApiResult(ApexApiResult.Result.SUCCESS, - new ApexModelStringWriter(false).writeString(inputField, AxInputField.class, - jsonMode)); - } else { - return new ApexApiResult(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, - CONCEPT + name + ':' + version + ':' + inputField + DOES_NOT_EXIST); - } - } else { - if (task.getInputFields().size() == 0) { - return new ApexApiResult(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, - "no input fields defined on task " + task.getKey().getId()); - } - - final ApexApiResult result = new ApexApiResult(); - for (final AxInputField field : task.getInputFields().values()) { - result.addMessage(new ApexModelStringWriter(false).writeString(field, - AxInputField.class, jsonMode)); - } - return result; - } - } catch (final Exception e) { - return new ApexApiResult(ApexApiResult.Result.FAILED, e); - } - - } - - /** - * Delete a task input field. - * - * @param name name of the task - * @param version version of the task, set to null to use the latest version - * @param fieldName of the input field, set to null to delete all input fields - * @return result of the operation - */ - public ApexApiResult deleteTaskInputField(final String name, final String version, final String fieldName) { - try { - final AxTask task = apexModel.getPolicyModel().getTasks().get(name, version); - if (task == null) { - return new ApexApiResult(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, - CONCEPT + name + ':' + version + DOES_NOT_EXIST); - } - - final ApexApiResult result = new ApexApiResult(); - if (fieldName != null) { - if (task.getInputFields().containsKey(fieldName)) { - result.addMessage(new ApexModelStringWriter(false) - .writeString(task.getInputFields().get(fieldName), AxInputField.class, jsonMode)); - task.getInputFields().remove(fieldName); - return result; - } else { - return new ApexApiResult(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, - CONCEPT + name + ':' + version + ':' + fieldName + DOES_NOT_EXIST); - } - } else { - if (task.getInputFields().size() == 0) { - return new ApexApiResult(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, - "no input fields defined on task " + task.getKey().getId()); - } - - for (final AxInputField field : task.getInputFields().values()) { - result.addMessage(new ApexModelStringWriter(false).writeString(field, - AxInputField.class, jsonMode)); - } - task.getInputFields().clear(); - return result; - } - } catch (final Exception e) { - return new ApexApiResult(ApexApiResult.Result.FAILED, e); - } - - } - - /** - * Create a task output field. - * - * @param name name of the task - * @param version version of the task, set to null to use the latest version - * @param fieldName of the output field - * @param contextSchemaName name of the output field context schema - * @param contextSchemaVersion version of the output field context schema, set to null to use - * the latest version - * @param optional true if the task field is optional, false otherwise - * @return result of the operation - */ - public ApexApiResult createTaskOutputField(final String name, final String version, final String fieldName, - final String contextSchemaName, final String contextSchemaVersion, final boolean optional) { - try { - Assertions.argumentNotNull(fieldName, "fieldName may not be null"); - - final AxTask task = apexModel.getPolicyModel().getTasks().get(name, version); - if (task == null) { - return new ApexApiResult(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, - CONCEPT + name + ':' + version + DOES_NOT_EXIST); - } - - final AxReferenceKey refKey = - new AxReferenceKey(task.getKey().getName(), task.getKey().getVersion(), "outputFields", fieldName); - - if (task.getOutputFields().containsKey(refKey.getLocalName())) { - return new ApexApiResult(ApexApiResult.Result.CONCEPT_EXISTS, - CONCEPT + refKey.getId() + ALREADY_EXISTS); - } - - final AxContextSchema schema = - apexModel.getPolicyModel().getSchemas().get(contextSchemaName, contextSchemaVersion); - if (schema == null) { - return new ApexApiResult(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, - CONCEPT + contextSchemaName + ':' + contextSchemaVersion + DOES_NOT_EXIST); - } - - task.getOutputFields().put(refKey.getLocalName(), new AxOutputField(refKey, schema.getKey(), optional)); - return new ApexApiResult(); - } catch (final Exception e) { - return new ApexApiResult(ApexApiResult.Result.FAILED, e); - } - } - - /** - * List task output fields. - * - * @param name name of the task - * @param version version of the task, set to null to use the latest version - * @param fieldName field name of the output field, set to null to list all output fields of the - * task - * @return result of the operation - */ - public ApexApiResult listTaskOutputField(final String name, final String version, final String fieldName) { - try { - final AxTask task = apexModel.getPolicyModel().getTasks().get(name, version); - if (task == null) { - return new ApexApiResult(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, - CONCEPT + name + ':' + version + DOES_NOT_EXIST); - } - - if (fieldName != null) { - final AxOutputField outputField = task.getOutputFields().get(fieldName); - if (outputField != null) { - return new ApexApiResult(ApexApiResult.Result.SUCCESS, - new ApexModelStringWriter(false).writeString(outputField, - AxOutputField.class, jsonMode)); - } else { - return new ApexApiResult(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, - CONCEPT + name + ':' + version + ':' + outputField + DOES_NOT_EXIST); - } - } else { - if (task.getOutputFields().size() == 0) { - return new ApexApiResult(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, - "no output fields defined on task " + task.getKey().getId()); - } - - final ApexApiResult result = new ApexApiResult(); - for (final AxOutputField field : task.getOutputFields().values()) { - result.addMessage(new ApexModelStringWriter(false).writeString(field, - AxOutputField.class, jsonMode)); - } - return result; - } - } catch (final Exception e) { - return new ApexApiResult(ApexApiResult.Result.FAILED, e); - } - } - - /** - * Delete a task output field. - * - * @param name name of the task - * @param version version of the task, set to null to use the latest version - * @param fieldName of the output field, set to null to delete all output fields - * @return result of the operation - */ - public ApexApiResult deleteTaskOutputField(final String name, final String version, final String fieldName) { - try { - final AxTask task = apexModel.getPolicyModel().getTasks().get(name, version); - if (task == null) { - return new ApexApiResult(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, - CONCEPT + name + ':' + version + DOES_NOT_EXIST); - } - - final ApexApiResult result = new ApexApiResult(); - if (fieldName != null) { - if (task.getOutputFields().containsKey(fieldName)) { - result.addMessage(new ApexModelStringWriter(false) - .writeString(task.getOutputFields().get(fieldName), AxOutputField.class, jsonMode)); - task.getOutputFields().remove(fieldName); - return result; - } else { - return new ApexApiResult(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, - CONCEPT + name + ':' + version + ':' + fieldName + DOES_NOT_EXIST); - } - } else { - if (task.getOutputFields().size() == 0) { - return new ApexApiResult(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, - "no output fields defined on task " + task.getKey().getId()); - } - - for (final AxOutputField field : task.getOutputFields().values()) { - result.addMessage(new ApexModelStringWriter(false).writeString(field, - AxOutputField.class, jsonMode)); - } - task.getOutputFields().clear(); - return result; - } - } catch (final Exception e) { - return new ApexApiResult(ApexApiResult.Result.FAILED, e); - } - } - /** * Create a task parameter. * diff --git a/model/model-api/src/test/java/org/onap/policy/apex/model/modelapi/ApexEditorApiTaskTest.java b/model/model-api/src/test/java/org/onap/policy/apex/model/modelapi/ApexEditorApiTaskTest.java index f2c41318c..026f67c29 100644 --- a/model/model-api/src/test/java/org/onap/policy/apex/model/modelapi/ApexEditorApiTaskTest.java +++ b/model/model-api/src/test/java/org/onap/policy/apex/model/modelapi/ApexEditorApiTaskTest.java @@ -2,6 +2,7 @@ * ============LICENSE_START======================================================= * Copyright (C) 2016-2018 Ericsson. All rights reserved. * Modifications Copyright (C) 2020 Nordix Foundation. + * Modifications Copyright (C) 2021 Bell Canada. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,6 +25,7 @@ package org.onap.policy.apex.model.modelapi; import static org.junit.Assert.assertEquals; import org.junit.Test; +import org.onap.policy.apex.model.modelapi.impl.ApexModelImpl; /** * Test tasks for API tests. @@ -214,124 +216,12 @@ public class ApexEditorApiTaskTest { result = apexModel.deleteTaskLogic("MyTask002", "0.0.2"); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - result = apexModel.createTaskInputField("MyTask123", null, "NewField00", null, null, false); - assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - - result = apexModel.createTaskInputField("MyTask002", "4.5.6", "NewField00", null, null, true); - assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - - result = apexModel.createTaskInputField("MyTask002", "0.1.4", "NewField00", null, null, false); - assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - - result = apexModel.createTaskInputField("MyTask002", "0.0.2", "NewField00", null, null, true); - assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - - result = apexModel.createTaskInputField("MyTask002", "0.0.2", "NewField00", "eventContextItem0", null, false); - assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = apexModel.createTaskInputField("MyTask002", "0.0.2", "NewField00", "eventContextItem0", null, true); - assertEquals(ApexApiResult.Result.CONCEPT_EXISTS, result.getResult()); - result = apexModel.createTaskInputField("MyTask002", "0.0.2", "NewField01", "eventContextItem0", "0.0.1", - false); - assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = apexModel.createTaskInputField("MyTask002", "0.0.2", "NewField02", "eventContextItem0", "0.0.2", true); - assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - result = apexModel.createTaskInputField("MyTask002", null, "NewField02", "eventContextItem0", null, false); - assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = apexModel.createTaskInputField("MyTask002", null, "NewField03", "eventContextItem0", null, true); - assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - - result = apexModel.listTaskInputField("@£$%", null, null); - assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = apexModel.listTaskInputField("MyTask002", null, null); - assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = apexModel.listTaskInputField("MyTask002", "0.0.1", null); - assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - result = apexModel.listTaskInputField("MyTask002", "0.0.2", null); - assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = apexModel.listTaskInputField("MyTask002", "0.0.2", "NewField01"); + result = apexModel.createTaskField("MyTask002", "0.0.2", "NewField00", "eventContextItem0", null, false); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = apexModel.listTaskInputField("MyTask002", "0.0.2", "NewField02"); + assertEquals(ApexModelImpl.FIELDS_DEPRECATED_WARN_MSG, result.getMessage().trim()); + result = apexModel.handleTaskField("MyTask002", "0.0.2", "NewField01"); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = apexModel.listTaskInputField("MyTask002", "0.0.2", "NewField04"); - assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - - result = apexModel.deleteTaskInputField("@£$%", "0.0.2", "NewField04"); - assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = apexModel.deleteTaskInputField("NonExistantTask", "0.0.2", "NewField04"); - assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - assertEquals(4, apexModel.listTaskInputField("MyTask002", null, null).getMessages().size()); - result = apexModel.deleteTaskInputField("MyTask002", "0.0.2", "NewField04"); - assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - assertEquals(4, apexModel.listTaskInputField("MyTask002", null, null).getMessages().size()); - result = apexModel.deleteTaskInputField("MyTask002", null, "NewField02"); - assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - assertEquals(3, apexModel.listTaskInputField("MyTask002", null, null).getMessages().size()); - result = apexModel.deleteTaskInputField("MyTask002", null, null); - assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = apexModel.listTaskInputField("MyTask002", null, null); - assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - result = apexModel.deleteTaskInputField("MyTask002", null, null); - assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - - result = apexModel.createTaskOutputField("MyTask123", null, "NewField00", null, null, false); - assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - - result = apexModel.createTaskOutputField("MyTask002", "4.5.6", "NewField00", null, null, false); - assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - - result = apexModel.createTaskOutputField("MyTask002", "0.1.4", "NewField00", null, null, false); - assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - - result = apexModel.createTaskOutputField("MyTask002", "0.0.2", "NewField00", null, null, false); - assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - - result = apexModel.createTaskOutputField("MyTask002", "0.0.2", "NewField00", "eventContextItem0", null, false); - assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = apexModel.createTaskOutputField("MyTask002", "0.0.2", "NewField00", "eventContextItem0", null, false); - assertEquals(ApexApiResult.Result.CONCEPT_EXISTS, result.getResult()); - result = apexModel.createTaskOutputField("MyTask002", "0.0.2", "NewField01", "eventContextItem0", "0.0.1", - false); - assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = apexModel.createTaskOutputField("MyTask002", "0.0.2", "NewField02", "eventContextItem0", "0.0.2", - false); - assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - result = apexModel.createTaskOutputField("MyTask002", null, "NewField02", "eventContextItem0", null, false); - assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = apexModel.createTaskOutputField("MyTask002", null, "NewField03", "eventContextItem0", null, false); - assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - - result = apexModel.listTaskOutputField("@£$%", null, null); - assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = apexModel.listTaskOutputField("MyTask002", null, null); - assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = apexModel.listTaskOutputField("MyTask002", "0.0.1", null); - assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - result = apexModel.listTaskOutputField("MyTask002", "0.0.2", null); - assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = apexModel.listTaskOutputField("MyTask002", "0.0.2", "NewField01"); - assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = apexModel.listTaskOutputField("MyTask002", "0.0.2", "NewField02"); - assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = apexModel.listTaskOutputField("MyTask002", "0.0.2", "NewField04"); - assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - - result = apexModel.deleteTaskOutputField("@£$%", "0.0.2", "NewField04"); - assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = apexModel.deleteTaskOutputField("NonExistantTask", "0.0.2", "NewField04"); - assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - assertEquals(4, apexModel.listTaskOutputField("MyTask002", null, null).getMessages().size()); - result = apexModel.deleteTaskOutputField("MyTask002", "0.0.2", "NewField04"); - assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - assertEquals(4, apexModel.listTaskOutputField("MyTask002", null, null).getMessages().size()); - result = apexModel.deleteTaskOutputField("MyTask002", null, "NewField02"); - assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - assertEquals(3, apexModel.listTaskOutputField("MyTask002", null, null).getMessages().size()); - result = apexModel.deleteTaskOutputField("MyTask002", null, null); - assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = apexModel.listTaskOutputField("MyTask002", null, null); - assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - result = apexModel.deleteTaskOutputField("MyTask002", null, null); - assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); + assertEquals(ApexModelImpl.FIELDS_DEPRECATED_WARN_MSG, result.getMessage().trim()); result = apexModel.createTaskParameter("MyTask123", null, "NewPar00", null); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); diff --git a/model/model-api/src/test/resources/models/PolicyModel.xml b/model/model-api/src/test/resources/models/PolicyModel.xml index e3bf59f29..e47e21afc 100644 --- a/model/model-api/src/test/resources/models/PolicyModel.xml +++ b/model/model-api/src/test/resources/models/PolicyModel.xml @@ -402,70 +402,6 @@ task 0.0.1 - - - IEPAR0 - - IEPAR0 - - eventContextItem0 - 0.0.1 - - - - - IEPAR1 - - IEPAR1 - - eventContextItem1 - 0.0.1 - - - - - - - OE0PAR0 - - OE0PAR0 - - eventContextItem0 - 0.0.1 - - - - - OE0PAR1 - - OE0PAR1 - - eventContextItem1 - 0.0.1 - - - - - OE1PAR0 - - OE1PAR0 - - eventContextItem0 - 0.0.1 - - - - - OE1PAR1 - - OE1PAR1 - - eventContextItem1 - 0.0.1 - - - - taskParameter0 diff --git a/model/policy-model/src/main/java/org/onap/policy/apex/model/policymodel/concepts/AxPolicyModel.java b/model/policy-model/src/main/java/org/onap/policy/apex/model/policymodel/concepts/AxPolicyModel.java index 4ee176d97..aec144a46 100644 --- a/model/policy-model/src/main/java/org/onap/policy/apex/model/policymodel/concepts/AxPolicyModel.java +++ b/model/policy-model/src/main/java/org/onap/policy/apex/model/policymodel/concepts/AxPolicyModel.java @@ -25,8 +25,6 @@ package org.onap.policy.apex.model.policymodel.concepts; import java.util.List; import java.util.Map.Entry; -import java.util.Set; -import java.util.TreeSet; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.JoinColumn; @@ -45,7 +43,6 @@ import org.onap.policy.apex.model.basicmodel.concepts.AxConcept; import org.onap.policy.apex.model.basicmodel.concepts.AxKey; import org.onap.policy.apex.model.basicmodel.concepts.AxKeyInformation; import org.onap.policy.apex.model.basicmodel.concepts.AxModel; -import org.onap.policy.apex.model.basicmodel.concepts.AxReferenceKey; import org.onap.policy.apex.model.basicmodel.concepts.AxValidationMessage; import org.onap.policy.apex.model.basicmodel.concepts.AxValidationResult; import org.onap.policy.apex.model.basicmodel.concepts.AxValidationResult.ValidationResult; @@ -425,19 +422,6 @@ public class AxPolicyModel extends AxModel { * @return the result */ private AxValidationResult validateTaskKeys(final AxTask task, AxValidationResult result) { - for (final AxField field : task.getInputFieldSet()) { - if (getSchemas().get(field.getSchema()) == null) { - result.addValidationMessage(new AxValidationMessage(task.getKey(), this.getClass(), - ValidationResult.INVALID, "task input field schema " + field.getSchema().getId() + DOES_NOT_EXIST)); - } - } - for (final AxField field : task.getOutputFieldSet()) { - if (getSchemas().get(field.getSchema()) == null) { - result.addValidationMessage( - new AxValidationMessage(task.getKey(), this.getClass(), ValidationResult.INVALID, - "task output field schema " + field.getSchema().getId() + DOES_NOT_EXIST)); - } - } for (final AxArtifactKey contextAlbumKey : task.getContextAlbumReferences()) { if (albums.get(contextAlbumKey) == null) { result.addValidationMessage(new AxValidationMessage(task.getKey(), this.getClass(), @@ -489,19 +473,6 @@ public class AxPolicyModel extends AxModel { ValidationResult.INVALID, "state default task " + state.getDefaultTask().getId() + DOES_NOT_EXIST)); } - // Check task input fields and event fields are compatible for default tasks with no task - // selection logic - if (state.getTaskSelectionLogic().getKey().equals(AxReferenceKey.getNullKey()) - && triggerEvent != null && defaultTask != null) { - final Set unhandledTaskInputFields = new TreeSet<>(defaultTask.getInputFieldSet()); - unhandledTaskInputFields.removeAll(triggerEvent.getFields()); - for (final AxField unhandledTaskInputField : unhandledTaskInputFields) { - result.addValidationMessage(new AxValidationMessage(state.getKey(), this.getClass(), - ValidationResult.INVALID, "task input field " + unhandledTaskInputField + " for task " - + defaultTask.getId() + " not in trigger event " + triggerEvent.getId())); - } - } - for (final AxStateOutput stateOutput : state.getStateOutputs().values()) { if (events.getEventMap().get(stateOutput.getOutgoingEvent()) == null) { result.addValidationMessage(new AxValidationMessage(stateOutput.getKey(), this.getClass(), @@ -562,16 +533,6 @@ public class AxPolicyModel extends AxModel { ValidationResult.INVALID, "output event " + stateOutput.getOutgoingEvent().getId() + " for state output " + stateOutput.getId() + DOES_NOT_EXIST)); } - - if (task != null && usedEvent != null) { - final Set unhandledTaskOutputFields = new TreeSet<>(task.getOutputFieldSet()); - unhandledTaskOutputFields.removeAll(usedEvent.getFields()); - for (final AxField unhandledTaskOutputField : unhandledTaskOutputFields) { - result.addValidationMessage(new AxValidationMessage(state.getKey(), this.getClass(), - ValidationResult.INVALID, "task output field " + unhandledTaskOutputField + " for task " - + task.getId() + " not in output event " + usedEvent.getId())); - } - } } } diff --git a/model/policy-model/src/main/java/org/onap/policy/apex/model/policymodel/concepts/AxTask.java b/model/policy-model/src/main/java/org/onap/policy/apex/model/policymodel/concepts/AxTask.java index a30a80acc..7eba99af0 100644 --- a/model/policy-model/src/main/java/org/onap/policy/apex/model/policymodel/concepts/AxTask.java +++ b/model/policy-model/src/main/java/org/onap/policy/apex/model/policymodel/concepts/AxTask.java @@ -56,9 +56,6 @@ import org.onap.policy.apex.model.basicmodel.concepts.AxValidationMessage; import org.onap.policy.apex.model.basicmodel.concepts.AxValidationResult; import org.onap.policy.apex.model.basicmodel.concepts.AxValidationResult.ValidationResult; import org.onap.policy.apex.model.eventmodel.concepts.AxEvent; -import org.onap.policy.apex.model.eventmodel.concepts.AxField; -import org.onap.policy.apex.model.eventmodel.concepts.AxInputField; -import org.onap.policy.apex.model.eventmodel.concepts.AxOutputField; import org.onap.policy.common.utils.validation.Assertions; /** @@ -78,12 +75,6 @@ import org.onap.policy.common.utils.validation.Assertions; *
    *
  1. The task key must not be a null key and must be valid, see validation in * {@link AxArtifactKey} - *
  2. The task must have at least one input field - *
  3. The parent of each input field of a task must be that task - *
  4. Each input field must be valid, see validation in {@link AxInputField} - *
  5. The task must have at least one output field - *
  6. The parent of each output field of a task must be that task - *
  7. Each output field must be valid, see validation in {@link AxOutputField} *
  8. The parent of each task parameter of a task must be that task *
  9. Each task parameter must be valid, see validation in {@link AxTaskParameter} *
  10. The parent of the task logic in a task must be that task @@ -99,7 +90,7 @@ import org.onap.policy.common.utils.validation.Assertions; @XmlType( name = "AxTask", namespace = "http://www.onap.org/policy/apex-pdp", - propOrder = {"key", "inputEvent", "outputEvents", "inputFields", "outputFields", "taskParameters", + propOrder = {"key", "inputEvent", "outputEvents", "taskParameters", "contextAlbumReferenceSet", "taskLogic"}) @Getter @Setter @@ -129,14 +120,6 @@ public class AxTask extends AxConcept { @XmlElement(name = "outputEvents", required = false) private Map outputEvents; - @OneToMany(cascade = CascadeType.ALL) - @XmlElement(name = "inputFields", required = true) - private Map inputFields; - - @OneToMany(cascade = CascadeType.ALL) - @XmlElement(name = "outputFields", required = true) - private Map outputFields; - @OneToMany(cascade = CascadeType.ALL) @XmlElement(name = "taskParameters", required = true) private Map taskParameters; @@ -181,8 +164,6 @@ public class AxTask extends AxConcept { */ public AxTask(final AxArtifactKey key) { this(key, // Task Key - new TreeMap<>(), // Input fields - new TreeMap<>(), // Output Fields new TreeMap<>(), // Task Parameters new TreeSet<>(), // Context Album References new AxTaskLogic(new AxReferenceKey(key)) // Task Logic @@ -193,27 +174,20 @@ public class AxTask extends AxConcept { * This Constructor defines all the fields of the task. * * @param key the key of the task - * @param inputFields the input fields that the task expects - * @param outputFields the output fields that the task emits * @param taskParameters the task parameters that are used to initialize tasks of this type * @param contextAlbumReferenceSet the context album reference set defines the context that may * be used by Task Logic in the state * @param taskLogic the task logic that performs the domain specific work of the task */ - public AxTask(final AxArtifactKey key, final Map inputFields, - final Map outputFields, final Map taskParameters, - final Set contextAlbumReferenceSet, final AxTaskLogic taskLogic) { + public AxTask(final AxArtifactKey key, final Map taskParameters, + final Set contextAlbumReferenceSet, final AxTaskLogic taskLogic) { super(); Assertions.argumentNotNull(key, "key may not be null"); - Assertions.argumentNotNull(inputFields, "inputFields may not be null"); - Assertions.argumentNotNull(outputFields, "outputFields may not be null"); Assertions.argumentNotNull(taskParameters, "taskParameters may not be null"); Assertions.argumentNotNull(contextAlbumReferenceSet, "contextAlbumReferenceSet may not be null"); Assertions.argumentNotNull(taskLogic, "taskLogic may not be null"); this.key = key; - this.inputFields = inputFields; - this.outputFields = outputFields; this.taskParameters = taskParameters; this.contextAlbumReferenceSet = contextAlbumReferenceSet; this.taskLogic = taskLogic; @@ -222,23 +196,13 @@ public class AxTask extends AxConcept { /** * When a task is unmarshalled from disk or from the database, the parent of contained objects * is not defined. This method is called by JAXB after unmarshaling and is used to set the - * parent keys of all {@link AxInputField}, {@link AxOutputField}, and {@link AxTaskParameter} - * instance in the task. + * parent keys of all {@link AxTaskParameter} instance in the task. * * @param unmarshaler the unmarshaler that is unmarshaling the model * @param parent the parent object of this object in the unmarshaler */ public void afterUnmarshal(final Unmarshaller unmarshaler, final Object parent) { taskLogic.getKey().setParentArtifactKey(key); - - for (final AxInputField inputField : inputFields.values()) { - inputField.getKey().setParentArtifactKey(key); - inputField.getKey().setParentLocalName("InField"); - } - for (final AxOutputField outputField : outputFields.values()) { - outputField.getKey().setParentArtifactKey(key); - outputField.getKey().setParentLocalName("OutField"); - } for (final AxTaskParameter parameter : taskParameters.values()) { parameter.getKey().setParentArtifactKey(key); } @@ -250,12 +214,6 @@ public class AxTask extends AxConcept { @Override public List getKeys() { final List keyList = key.getKeys(); - for (final AxInputField inputField : inputFields.values()) { - keyList.addAll(inputField.getKeys()); - } - for (final AxOutputField outputField : outputFields.values()) { - keyList.addAll(outputField.getKeys()); - } for (final AxTaskParameter taskParameter : taskParameters.values()) { keyList.addAll(taskParameter.getKeys()); } @@ -266,85 +224,6 @@ public class AxTask extends AxConcept { return keyList; } - /** - * Gets the raw input fields that the task expects as a tree map. - * - * @return the raw input fields that the task expects - */ - public Map getRawInputFields() { - return new TreeMap<>(inputFields); - } - - /** - * Convenience method to get the input fields as a set. - * - * @return the input fields as a set - */ - public Set getInputFieldSet() { - final Set inputFieldSet = new TreeSet<>(); - for (final AxInputField field : inputFields.values()) { - inputFieldSet.add(field); - } - return inputFieldSet; - } - - /** - * Copy the input fields from the given map into the task. This method is used to get a copy of - * the input fields, which can be useful for unit testing of policies and tasks. - * - * @param fields the fields to copy into the task - */ - public void duplicateInputFields(final Map fields) { - Assertions.argumentNotNull(fields, "fields may not be null"); - - for (final AxField field : fields.values()) { - final AxReferenceKey fieldKey = new AxReferenceKey(this.getKey().getName(), this.getKey().getVersion(), - "inputFields", field.getKey().getLocalName()); - final AxInputField inputField = new AxInputField(fieldKey, field.getSchema()); - inputFields.put(inputField.getKey().getLocalName(), inputField); - } - } - - /** - * Gets the raw output fields that the task emits as a tree map. - * - * @return the raw output fields as a tree map - */ - public Map getRawOutputFields() { - return new TreeMap<>(outputFields); - } - - /** - * Gets the output fields that the task emits as a set. - * - * @return the output fields as a set - */ - public Set getOutputFieldSet() { - final Set outputFieldSet = new TreeSet<>(); - for (final AxOutputField field : outputFields.values()) { - outputFieldSet.add(field); - } - return outputFieldSet; - } - - /** - * Copy the output fields from the given map into the task. This method is used to get a copy of - * the output fields, which can be useful for unit testing of policies and tasks. - * - * @param fields the fields to copy into the task - */ - public void duplicateOutputFields(final Map fields) { - Assertions.argumentNotNull(fields, "fields may not be null"); - - for (final AxField field : fields.values()) { - final AxReferenceKey fieldKey = new AxReferenceKey(this.getKey().getName(), this.getKey().getVersion(), - "outputFields", field.getKey().getLocalName()); - final AxOutputField outputField = new AxOutputField(fieldKey, field.getSchema()); - outputFields.put(outputField.getKey().getLocalName(), outputField); - } - } - - /** * Gets the context album reference set defines the context that may be used by Task Logic in * the state. @@ -446,12 +325,6 @@ public class AxTask extends AxConcept { @Override public void clean() { key.clean(); - for (final AxInputField inputField : inputFields.values()) { - inputField.clean(); - } - for (final AxOutputField outputField : outputFields.values()) { - outputField.clean(); - } for (final AxTaskParameter parameter : taskParameters.values()) { parameter.clean(); } @@ -471,10 +344,6 @@ public class AxTask extends AxConcept { builder.append(":("); builder.append("key="); builder.append(key); - builder.append(",inputFields="); - builder.append(inputFields); - builder.append(",outputFields="); - builder.append(outputFields); builder.append(",taskParameters="); builder.append(taskParameters); builder.append(",contextAlbumReferenceSet="); @@ -498,18 +367,6 @@ public class AxTask extends AxConcept { final AxTask copy = ((AxTask) copyObject); copy.setKey(key); - final Map newInputFields = new TreeMap<>(); - for (final Entry inputFieldEntry : inputFields.entrySet()) { - newInputFields.put(inputFieldEntry.getKey(), new AxInputField(inputFieldEntry.getValue())); - } - copy.setInputFields(newInputFields); - - final Map newOutputFields = new TreeMap<>(); - for (final Entry outputFieldEntry : outputFields.entrySet()) { - newOutputFields.put(outputFieldEntry.getKey(), new AxOutputField(outputFieldEntry.getValue())); - } - copy.setOutputFields(newOutputFields); - final Map newTaskParameter = new TreeMap<>(); for (final Entry taskParameterEntry : taskParameters.entrySet()) { newTaskParameter.put(taskParameterEntry.getKey(), new AxTaskParameter(taskParameterEntry.getValue())); @@ -535,8 +392,6 @@ public class AxTask extends AxConcept { final int prime = 31; int result = 1; result = prime * result + key.hashCode(); - result = prime * result + inputFields.hashCode(); - result = prime * result + outputFields.hashCode(); result = prime * result + taskParameters.hashCode(); result = prime * result + contextAlbumReferenceSet.hashCode(); result = prime * result + taskLogic.hashCode(); @@ -563,12 +418,6 @@ public class AxTask extends AxConcept { if (!key.equals(other.key)) { return false; } - if (!inputFields.equals(other.inputFields)) { - return false; - } - if (!outputFields.equals(other.outputFields)) { - return false; - } if (!taskParameters.equals(other.taskParameters)) { return false; } @@ -597,12 +446,6 @@ public class AxTask extends AxConcept { if (!key.equals(other.key)) { return key.compareTo(other.key); } - if (!inputFields.equals(other.inputFields)) { - return (inputFields.hashCode() - other.inputFields.hashCode()); - } - if (!outputFields.equals(other.outputFields)) { - return (outputFields.hashCode() - other.outputFields.hashCode()); - } if (!taskParameters.equals(other.taskParameters)) { return (taskParameters.hashCode() - other.taskParameters.hashCode()); } diff --git a/model/policy-model/src/main/java/org/onap/policy/apex/model/policymodel/handling/PolicyAnalyser.java b/model/policy-model/src/main/java/org/onap/policy/apex/model/policymodel/handling/PolicyAnalyser.java index 3a4c36bc5..6731caf30 100644 --- a/model/policy-model/src/main/java/org/onap/policy/apex/model/policymodel/handling/PolicyAnalyser.java +++ b/model/policy-model/src/main/java/org/onap/policy/apex/model/policymodel/handling/PolicyAnalyser.java @@ -29,8 +29,6 @@ import org.onap.policy.apex.model.basicmodel.concepts.AxKey; import org.onap.policy.apex.model.contextmodel.concepts.AxContextAlbum; import org.onap.policy.apex.model.eventmodel.concepts.AxEvent; import org.onap.policy.apex.model.eventmodel.concepts.AxField; -import org.onap.policy.apex.model.eventmodel.concepts.AxInputField; -import org.onap.policy.apex.model.eventmodel.concepts.AxOutputField; import org.onap.policy.apex.model.policymodel.concepts.AxPolicy; import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel; import org.onap.policy.apex.model.policymodel.concepts.AxState; @@ -163,14 +161,6 @@ public class PolicyAnalyser { for (final AxArtifactKey contextAlbumKey : task.getContextAlbumReferences()) { result.getContextAlbumUsage().get(contextAlbumKey).add(task.getKey()); } - - // Task data type usage - for (final AxInputField inputField : task.getInputFields().values()) { - result.getContextSchemaUsage().get(inputField.getSchema()).add(task.getKey()); - } - for (final AxOutputField outputField : task.getOutputFields().values()) { - result.getContextSchemaUsage().get(outputField.getSchema()).add(task.getKey()); - } } /** diff --git a/model/policy-model/src/test/java/org/onap/policy/apex/model/policymodel/concepts/PolicyModelTest.java b/model/policy-model/src/test/java/org/onap/policy/apex/model/policymodel/concepts/PolicyModelTest.java index 48022e878..b699b5d48 100644 --- a/model/policy-model/src/test/java/org/onap/policy/apex/model/policymodel/concepts/PolicyModelTest.java +++ b/model/policy-model/src/test/java/org/onap/policy/apex/model/policymodel/concepts/PolicyModelTest.java @@ -37,8 +37,6 @@ import org.onap.policy.apex.model.contextmodel.concepts.AxContextAlbums; import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchemas; import org.onap.policy.apex.model.eventmodel.concepts.AxEvents; import org.onap.policy.apex.model.eventmodel.concepts.AxField; -import org.onap.policy.apex.model.eventmodel.concepts.AxInputField; -import org.onap.policy.apex.model.eventmodel.concepts.AxOutputField; import org.onap.policy.apex.model.policymodel.handling.SupportApexPolicyModelCreator; /** @@ -183,32 +181,6 @@ public class PolicyModelTest { result = model.validate(result); assertEquals(ValidationResult.VALID, result.getValidationResult()); - final AxInputField badInField = new AxInputField( - new AxReferenceKey(model.getTasks().get("task").getKey(), "BadInField"), - new AxArtifactKey("NonExistantSchema", "0.0.1")); - model.getTasks().get("task").getInputFields().put(badInField.getKey().getLocalName(), badInField); - result = new AxValidationResult(); - result = model.validate(result); - assertEquals(ValidationResult.INVALID, result.getValidationResult()); - - model.getTasks().get("task").getInputFields().remove(badInField.getKey().getLocalName()); - result = new AxValidationResult(); - result = model.validate(result); - assertEquals(ValidationResult.VALID, result.getValidationResult()); - - final AxOutputField badOutField = new AxOutputField( - new AxReferenceKey(model.getTasks().get("task").getKey(), "BadOutField"), - new AxArtifactKey("NonExistantSchema", "0.0.1")); - model.getTasks().get("task").getOutputFields().put(badOutField.getKey().getLocalName(), badOutField); - result = new AxValidationResult(); - result = model.validate(result); - assertEquals(ValidationResult.INVALID, result.getValidationResult()); - - model.getTasks().get("task").getOutputFields().remove(badOutField.getKey().getLocalName()); - result = new AxValidationResult(); - result = model.validate(result); - assertEquals(ValidationResult.VALID, result.getValidationResult()); - model.getTasks().get("task").getContextAlbumReferences() .add(new AxArtifactKey("NonExistantContextAlbum", "0.0.1")); result = new AxValidationResult(); @@ -267,16 +239,6 @@ public class PolicyModelTest { result = model.validate(result); assertEquals(ValidationResult.VALID, result.getValidationResult()); - model.getTasks().get("task").getInputFields().put(badInField.getKey().getLocalName(), badInField); - result = new AxValidationResult(); - result = model.validate(result); - assertEquals(ValidationResult.INVALID, result.getValidationResult()); - - model.getTasks().get("task").getInputFields().remove(badInField.getKey().getLocalName()); - result = new AxValidationResult(); - result = model.validate(result); - assertEquals(ValidationResult.VALID, result.getValidationResult()); - model.getPolicies().get("policy").getStateMap().get("state").setTaskSelectionLogic(savedTaskSelectionLogic); result = new AxValidationResult(); result = model.validate(result); diff --git a/model/policy-model/src/test/java/org/onap/policy/apex/model/policymodel/concepts/TasksTest.java b/model/policy-model/src/test/java/org/onap/policy/apex/model/policymodel/concepts/TasksTest.java index 95266acc8..89dc9a048 100644 --- a/model/policy-model/src/test/java/org/onap/policy/apex/model/policymodel/concepts/TasksTest.java +++ b/model/policy-model/src/test/java/org/onap/policy/apex/model/policymodel/concepts/TasksTest.java @@ -25,7 +25,6 @@ package org.onap.policy.apex.model.policymodel.concepts; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; import java.util.Map; import java.util.TreeMap; @@ -36,9 +35,6 @@ import org.onap.policy.apex.model.basicmodel.concepts.AxReferenceKey; import org.onap.policy.apex.model.basicmodel.concepts.AxValidationResult; import org.onap.policy.apex.model.basicmodel.concepts.AxValidationResult.ValidationResult; import org.onap.policy.apex.model.eventmodel.concepts.AxEvent; -import org.onap.policy.apex.model.eventmodel.concepts.AxField; -import org.onap.policy.apex.model.eventmodel.concepts.AxInputField; -import org.onap.policy.apex.model.eventmodel.concepts.AxOutputField; /** * Test policy tasks. @@ -49,19 +45,15 @@ public class TasksTest { @Test public void testTasks() { - final TreeMap ifEmptyMap = new TreeMap<>(); - final TreeMap ofEmptyMap = new TreeMap<>(); final TreeMap tpEmptyMap = new TreeMap<>(); final TreeSet ctxtEmptySet = new TreeSet<>(); - final TreeMap ifMap = new TreeMap<>(); - final TreeMap ofMap = new TreeMap<>(); final TreeMap tpMap = new TreeMap<>(); final TreeSet ctxtSet = new TreeSet<>(); assertNotNull(new AxTask()); assertNotNull(new AxTask(new AxArtifactKey())); - assertNotNull(new AxTask(new AxArtifactKey(), ifMap, ofMap, tpMap, ctxtSet, new AxTaskLogic())); + assertNotNull(new AxTask(new AxArtifactKey(), tpMap, ctxtSet, new AxTaskLogic())); final AxTask task = new AxTask(); @@ -70,40 +62,15 @@ public class TasksTest { assertEquals("TaskName:0.0.1", task.getKey().getId()); assertEquals("TaskName:0.0.1", task.getKeys().get(0).getId()); - final AxArtifactKey f0SchemaKey = new AxArtifactKey("FS0", "0.0.1"); - - final AxInputField if0 = new AxInputField(new AxReferenceKey(taskKey, "IF0"), f0SchemaKey, false); - final AxInputField if1 = new AxInputField(new AxReferenceKey(taskKey, "IF1"), f0SchemaKey, false); - final AxOutputField of0 = new AxOutputField(new AxReferenceKey(taskKey, "OF0"), f0SchemaKey, false); - final AxOutputField of1 = new AxOutputField(new AxReferenceKey(taskKey, "OF1"), f0SchemaKey, false); final AxTaskParameter tp0 = new AxTaskParameter(new AxReferenceKey(taskKey, "TP0"), "DefaultValue"); final AxArtifactKey cr0 = new AxArtifactKey("ContextReference", "0.0.1"); final AxTaskLogic tl = new AxTaskLogic(taskKey, "LogicName", "LogicFlavour", "Logic"); - ifMap.put(if0.getKey().getLocalName(), if0); - ofMap.put(of0.getKey().getLocalName(), of0); tpMap.put(tp0.getKey().getLocalName(), tp0); ctxtSet.add(cr0); - task.setInputFields(ifMap); - assertEquals(ifMap, task.getInputFields()); - assertTrue(task.getInputFieldSet().contains(if0)); - assertTrue(task.getRawInputFields().keySet().contains(if0.getKey().getLocalName())); - - task.setOutputFields(ofMap); - assertEquals(ofMap, task.getOutputFields()); - assertTrue(task.getOutputFieldSet().contains(of0)); - assertTrue(task.getRawOutputFields().keySet().contains(of0.getKey().getLocalName())); task.setInputEvent(new AxEvent()); task.setOutputEvents(Map.of("Event", new AxEvent())); - final TreeMap ifDupMap = new TreeMap<>(); - final TreeMap ofDupMap = new TreeMap<>(); - ifDupMap.put(if1.getKey().getLocalName(), if1); - ofDupMap.put(of1.getKey().getLocalName(), of1); - task.duplicateInputFields(ifDupMap); - task.duplicateOutputFields(ofDupMap); - assertTrue(ifMap.containsKey("IF1")); - assertTrue(ofMap.containsKey("OF1")); task.setTaskParameters(tpMap); assertEquals(tpMap, task.getTaskParameters()); @@ -188,25 +155,23 @@ public class TasksTest { assertEquals(task, clonedTask); assertNotNull(task); assertNotEquals(task, (Object) "Hello"); - assertNotEquals(task, new AxTask(new AxArtifactKey(), ifMap, ofMap, tpMap, ctxtSet, tl)); - assertNotEquals(task, new AxTask(taskKey, ifEmptyMap, ofMap, tpMap, ctxtSet, tl)); - assertNotEquals(task, new AxTask(taskKey, ifMap, ofEmptyMap, tpMap, ctxtSet, tl)); - assertNotEquals(task, new AxTask(taskKey, ifMap, ofMap, tpEmptyMap, ctxtSet, tl)); - assertNotEquals(task, new AxTask(taskKey, ifMap, ofMap, tpMap, ctxtEmptySet, tl)); - assertNotEquals(task, new AxTask(taskKey, ifMap, ofMap, tpMap, ctxtSet, new AxTaskLogic())); - assertEquals(task, new AxTask(taskKey, ifMap, ofMap, tpMap, ctxtSet, tl)); + assertNotEquals(task, new AxTask(new AxArtifactKey(), tpMap, ctxtSet, tl)); + assertEquals(task, new AxTask(taskKey, tpMap, ctxtSet, tl)); + assertNotEquals(task, new AxTask(taskKey, tpEmptyMap, ctxtSet, tl)); + assertNotEquals(task, new AxTask(taskKey, tpMap, ctxtEmptySet, tl)); + assertNotEquals(task, new AxTask(taskKey, tpMap, ctxtSet, new AxTaskLogic())); + assertEquals(task, new AxTask(taskKey, tpMap, ctxtSet, tl)); assertEquals(0, task.compareTo(task)); assertEquals(0, task.compareTo(clonedTask)); assertNotEquals(0, task.compareTo(new AxArtifactKey())); assertNotEquals(0, task.compareTo(null)); - assertNotEquals(0, task.compareTo(new AxTask(new AxArtifactKey(), ifMap, ofMap, tpMap, ctxtSet, tl))); - assertNotEquals(0, task.compareTo(new AxTask(taskKey, ifEmptyMap, ofMap, tpMap, ctxtSet, tl))); - assertNotEquals(0, task.compareTo(new AxTask(taskKey, ifMap, ofEmptyMap, tpMap, ctxtSet, tl))); - assertNotEquals(0, task.compareTo(new AxTask(taskKey, ifMap, ofMap, tpEmptyMap, ctxtSet, tl))); - assertNotEquals(0, task.compareTo(new AxTask(taskKey, ifMap, ofMap, tpMap, ctxtEmptySet, tl))); - assertNotEquals(0, task.compareTo(new AxTask(taskKey, ifMap, ofMap, tpMap, ctxtSet, new AxTaskLogic()))); - assertEquals(0, task.compareTo(new AxTask(taskKey, ifMap, ofMap, tpMap, ctxtSet, tl))); + assertNotEquals(0, task.compareTo(new AxTask(new AxArtifactKey(), tpMap, ctxtSet, tl))); + assertEquals(0, task.compareTo(new AxTask(taskKey, tpMap, ctxtSet, tl))); + assertNotEquals(0, task.compareTo(new AxTask(taskKey, tpEmptyMap, ctxtSet, tl))); + assertNotEquals(0, task.compareTo(new AxTask(taskKey, tpMap, ctxtEmptySet, tl))); + assertNotEquals(0, task.compareTo(new AxTask(taskKey, tpMap, ctxtSet, new AxTaskLogic()))); + assertEquals(0, task.compareTo(new AxTask(taskKey, tpMap, ctxtSet, tl))); assertNotNull(task.getKeys()); diff --git a/model/policy-model/src/test/java/org/onap/policy/apex/model/policymodel/handling/ApexPolicyModelTest.java b/model/policy-model/src/test/java/org/onap/policy/apex/model/policymodel/handling/ApexPolicyModelTest.java index 3192079d7..3e3051021 100644 --- a/model/policy-model/src/test/java/org/onap/policy/apex/model/policymodel/handling/ApexPolicyModelTest.java +++ b/model/policy-model/src/test/java/org/onap/policy/apex/model/policymodel/handling/ApexPolicyModelTest.java @@ -2,6 +2,7 @@ * ============LICENSE_START======================================================= * Copyright (C) 2016-2018 Ericsson. All rights reserved. * Modifications Copyright (C) 2020 Nordix Foundation. + * Modifications Copyright (C) 2021 Bell Canada. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -112,19 +113,7 @@ public class ApexPolicyModelTest { + "org.onap.policy.apex.model.contextmodel.concepts.AxContextAlbum:INVALID:scope is not defined\n" + "AxArtifactKey:(name=contextAlbum1,version=0.0.1):" + "org.onap.policy.apex.model.contextmodel.concepts.AxContextAlbum:INVALID:scope is not defined\n" - + "AxReferenceKey:" - + "(parentKeyName=policy,parentKeyVersion=0.0.1,parentLocalName=NULL,localName=state):" - + "org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel:INVALID:" - + "task output field AxOutputField:(key=AxReferenceKey:" - + "(parentKeyName=task,parentKeyVersion=0.0.1,parentLocalName=outputFields,localName=OE1PAR0)," - + "fieldSchemaKey=AxArtifactKey:(name=eventContextItem0,version=0.0.1),optional=false) for task " - + "task:0.0.1 not in output event outEvent0:0.0.1\n" + "AxReferenceKey:" - + "(parentKeyName=policy,parentKeyVersion=0.0.1,parentLocalName=NULL,localName=state):" - + "org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel:INVALID:" - + "task output field AxOutputField:(key=AxReferenceKey:" - + "(parentKeyName=task,parentKeyVersion=0.0.1,parentLocalName=outputFields,localName=OE1PAR1)," - + "fieldSchemaKey=AxArtifactKey:(name=eventContextItem1,version=0.0.1),optional=false) for task " - + "task:0.0.1 not in output event outEvent0:0.0.1\n" + "********************************"; + + "********************************"; private static final String INVALID_MODEL_MALSTRUCTURED_STRING = "\n" + "***validation of model failed***\n" + "AxArtifactKey:(name=policyModel_KeyInfo,version=0.0.1):" diff --git a/model/policy-model/src/test/java/org/onap/policy/apex/model/policymodel/handling/PolicyAnalyserTest.java b/model/policy-model/src/test/java/org/onap/policy/apex/model/policymodel/handling/PolicyAnalyserTest.java index 3ff85c898..b1e2d5cbd 100644 --- a/model/policy-model/src/test/java/org/onap/policy/apex/model/policymodel/handling/PolicyAnalyserTest.java +++ b/model/policy-model/src/test/java/org/onap/policy/apex/model/policymodel/handling/PolicyAnalyserTest.java @@ -2,6 +2,7 @@ * ============LICENSE_START======================================================= * Copyright (C) 2016-2018 Ericsson. All rights reserved. * Modifications Copyright (C) 2020 Nordix Foundation. + * Modifications Copyright (C) 2021 Bell Canada. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -50,8 +51,8 @@ public class PolicyAnalyserTest { private static final String EXPECTED_ANALYSIS_RESULT = "" + "Context Schema usage\n" + " MapType:0.0.1\n" + " contextAlbum0:0.0.1\n" + " StringType:0.0.1\n" + " contextAlbum1:0.0.1\n" + " eventContextItem0:0.0.1\n" + " inEvent:0.0.1\n" + " outEvent0:0.0.1\n" + " outEvent1:0.0.1\n" - + " task:0.0.1\n" + " eventContextItem1:0.0.1\n" + " inEvent:0.0.1\n" + " outEvent0:0.0.1\n" - + " outEvent1:0.0.1\n" + " task:0.0.1\n" + "Context Album usage\n" + " contextAlbum0:0.0.1\n" + + " eventContextItem1:0.0.1\n" + " inEvent:0.0.1\n" + " outEvent0:0.0.1\n" + + " outEvent1:0.0.1\n" + "Context Album usage\n" + " contextAlbum0:0.0.1\n" + " task:0.0.1\n" + " policy:0.0.1:NULL:state\n" + " contextAlbum1:0.0.1\n" + " task:0.0.1\n" + " policy:0.0.1:NULL:state\n" + "Event usage\n" + " inEvent:0.0.1\n" + " policy:0.0.1:NULL:state\n" + " outEvent0:0.0.1\n" + " policy:0.0.1:NULL:state\n" + " outEvent1:0.0.1 (unused)\n" + "Task usage\n" diff --git a/model/policy-model/src/test/java/org/onap/policy/apex/model/policymodel/handling/SupportApexPolicyModelCreator.java b/model/policy-model/src/test/java/org/onap/policy/apex/model/policymodel/handling/SupportApexPolicyModelCreator.java index ea2de8603..85040221a 100644 --- a/model/policy-model/src/test/java/org/onap/policy/apex/model/policymodel/handling/SupportApexPolicyModelCreator.java +++ b/model/policy-model/src/test/java/org/onap/policy/apex/model/policymodel/handling/SupportApexPolicyModelCreator.java @@ -36,8 +36,6 @@ import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchemas; import org.onap.policy.apex.model.eventmodel.concepts.AxEvent; import org.onap.policy.apex.model.eventmodel.concepts.AxEvents; import org.onap.policy.apex.model.eventmodel.concepts.AxField; -import org.onap.policy.apex.model.eventmodel.concepts.AxInputField; -import org.onap.policy.apex.model.eventmodel.concepts.AxOutputField; import org.onap.policy.apex.model.policymodel.concepts.AxPolicies; import org.onap.policy.apex.model.policymodel.concepts.AxPolicy; import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel; @@ -117,27 +115,6 @@ public class SupportApexPolicyModelCreator implements TestApexModelCreator