diff options
author | 2021-06-29 13:57:14 +0100 | |
---|---|---|
committer | 2021-07-02 16:03:51 +0100 | |
commit | 5f0ec1c2d95c377fbec428f11464e93fe442b5ef (patch) | |
tree | 4aef07097fa4d64550db116a1b1b4acd1aa42590 /model/model-api/src/main | |
parent | ba55109db1e5eea013dcffd1be29cf06fe2bbcb1 (diff) |
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 <ajith.sreekumar@bell.ca>
Diffstat (limited to 'model/model-api/src/main')
4 files changed, 27 insertions, 375 deletions
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<String, AxEvent> 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; @@ -356,278 +354,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<AxInputField>(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<AxInputField>(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<AxInputField>(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<AxInputField>(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<AxOutputField>(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<AxOutputField>(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<AxOutputField>(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<AxOutputField>(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. * * @param name name of the task |