From 8f8df7ee1ddb20b03cedb17dccdc79fc291cc678 Mon Sep 17 00:00:00 2001 From: "a.sreekumar" Date: Thu, 13 Feb 2020 11:17:54 +0000 Subject: Passing taskParameters from ApexConfig to policy logic TaskParameters can be used to pass parameters from ApexConfig to the policy logic. In the config, these are optional. Usage as below: { "engineParameters": { "taskParameters": [ { "key": "ParameterKey1", "value": "ParameterValue1" }, { "taskId": "TaskIdVal", "key": "ParameterKey2", "value": "ParameterValue2" } ] } } In the taskLogic, taskParameters can be accessed as below: eg: executor.parameters.get("ParameterKey1")) If taskId is provided in ApexConfig for an entry, then that parameter is updated only for that particular task. Otherwise, the task parameter is added to all tasks. Change-Id: I9e1b3d3697428309e7d86db40b63ffe822935b69 Issue-ID: POLICY-2364 Signed-off-by: a.sreekumar --- .../EngineServiceParametersJsonAdapter.java | 39 ++++++++++++++++++++-- 1 file changed, 36 insertions(+), 3 deletions(-) (limited to 'services') diff --git a/services/services-engine/src/main/java/org/onap/policy/apex/service/parameters/engineservice/EngineServiceParametersJsonAdapter.java b/services/services-engine/src/main/java/org/onap/policy/apex/service/parameters/engineservice/EngineServiceParametersJsonAdapter.java index 1b8dacad4..5319d763e 100644 --- a/services/services-engine/src/main/java/org/onap/policy/apex/service/parameters/engineservice/EngineServiceParametersJsonAdapter.java +++ b/services/services-engine/src/main/java/org/onap/policy/apex/service/parameters/engineservice/EngineServiceParametersJsonAdapter.java @@ -1,7 +1,7 @@ /*- * ============LICENSE_START======================================================= * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2019 Nordix Foundation. + * Modifications Copyright (C) 2019-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. @@ -28,10 +28,10 @@ import com.google.gson.JsonObject; import com.google.gson.JsonParseException; import com.google.gson.JsonSerializationContext; import com.google.gson.JsonSerializer; - import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.List; import java.util.Map.Entry; - import org.onap.policy.apex.context.impl.schema.java.JavaSchemaHelperParameters; import org.onap.policy.apex.context.parameters.ContextParameters; import org.onap.policy.apex.context.parameters.DistributorParameters; @@ -41,8 +41,11 @@ import org.onap.policy.apex.context.parameters.SchemaHelperParameters; import org.onap.policy.apex.context.parameters.SchemaParameters; import org.onap.policy.apex.core.engine.EngineParameters; import org.onap.policy.apex.core.engine.ExecutorParameters; +import org.onap.policy.apex.core.engine.TaskParameters; import org.onap.policy.common.parameters.ParameterGroup; import org.onap.policy.common.parameters.ParameterRuntimeException; +import org.onap.policy.common.utils.coder.CoderException; +import org.onap.policy.common.utils.coder.StandardCoder; import org.slf4j.ext.XLogger; import org.slf4j.ext.XLoggerFactory; @@ -67,6 +70,8 @@ public class EngineServiceParametersJsonAdapter private static final String EXECUTOR_PARAMETERS = "executorParameters"; // @formatter:on + private static StandardCoder standardCoder = new StandardCoder(); + /** * {@inheritDoc}. */ @@ -98,9 +103,37 @@ public class EngineServiceParametersJsonAdapter // Executor parameter wrangling getExecutorParameters(engineParametersJsonObject, engineParameters, context); + // Task parameter wrangling + getTaskParametersList(engineParametersJsonObject, engineParameters); return engineParameters; } + /** + * Method to get the task parameters list for Apex. + * + * @param engineParametersJsonObject The input JSON + * @param engineParameters The output parameters + */ + private void getTaskParametersList(JsonObject engineParametersJsonObject, EngineParameters engineParameters) { + final JsonElement parametersElement = engineParametersJsonObject.get("taskParameters"); + + // configurable parameters are optional so if the element does not exist, just return + if (parametersElement == null) { + return; + } + List parametersList = new ArrayList<>(); + parametersElement.getAsJsonArray().forEach(taskParam -> { + TaskParameters parameters = null; + try { + parameters = standardCoder.decode(standardCoder.encode(taskParam), TaskParameters.class); + } catch (CoderException e) { + throw new ParameterRuntimeException("Error reading taskParameters from the config json provided."); + } + parametersList.add(parameters); + }); + engineParameters.setTaskParameters(parametersList); + } + /** * Get the context parameters for Apex. * -- cgit 1.2.3-korg