Changed to unmaintained
[appc.git] / appc-config / appc-config-params / provider / src / main / java / org / onap / sdnc / config / params / parser / PropertyDefinitionNode.java
index 4916c46..f82ebe1 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * ONAP : APPC
  * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Copyright (C) 2017 Amdocs
  * =============================================================================
  * See the License for the specific language governing permissions and
  * limitations under the License.
  * 
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
  * ============LICENSE_END=========================================================
  */
 
-package org.openecomp.sdnc.config.params.parser;
+package org.onap.sdnc.config.params.parser;
 
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-
+import java.util.Map.Entry;
 import org.apache.commons.lang3.StringUtils;
-import org.openecomp.sdnc.config.params.ParamsHandlerConstant;
-import org.openecomp.sdnc.config.params.data.Parameter;
-import org.openecomp.sdnc.config.params.data.PropertyDefinition;
 import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
 import org.onap.ccsdk.sli.core.sli.SvcLogicException;
 import org.onap.ccsdk.sli.core.sli.SvcLogicJavaPlugin;
+import org.onap.sdnc.config.params.ParamsHandlerConstant;
+import org.onap.sdnc.config.params.data.Parameter;
+import org.onap.sdnc.config.params.data.PropertyDefinition;
 
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.databind.JsonMappingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
-
-public class PropertyDefinitionNode implements SvcLogicJavaPlugin{
+public class PropertyDefinitionNode implements SvcLogicJavaPlugin {
 
 
-    private static final  EELFLogger log = EELFManager.getInstance().getLogger(PropertyDefinitionNode.class);
+    private static final EELFLogger log = EELFManager.getInstance().getLogger(PropertyDefinitionNode.class);
+    private static final String STR_PD_CONTENT_MISSING = "Request Param (pdContent) is Missing ..";
+    private static final String STR_JSON_DATA_MISSING = "Request Param (jsonData) is Missing ..";
+    private static final String STR_SYSTEM_NAME_MISSING = "Request Param (systemName) is Missing ..";
+    private static final String STR_MERGE_JSON_DATA_MISSING = "Request Param (mergeJsonData) is Missing ..";
+    private static final String STR_MERGING_DATA_FAILED = "Failed in merging data to template";
 
-    public void processMissingParamKeys(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException {
+    public void processMissingParamKeys(Map<String, String> inParams, SvcLogicContext ctx)
+        throws SvcLogicException {
         log.info("Received processParamKeys call with params : " + inParams);
-        String responsePrefix = inParams.get(ParamsHandlerConstant.INPUT_PARAM_RESPONSE_PRIFIX);        
-        try{
-            responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : "";
+        String responsePrefix = inParams.get(ParamsHandlerConstant.INPUT_PARAM_RESPONSE_PRIFIX);
+        try {
+            responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix + ".") : "";
 
-            String requestParamJson = inParams.get(ParamsHandlerConstant.INPUT_PARAM_JSON_DATA);    
-            String pdContent = inParams.get(ParamsHandlerConstant.INPUT_PARAM_PD_CONTENT);    
+            String requestParamJson = inParams.get(ParamsHandlerConstant.INPUT_PARAM_JSON_DATA);
+            String pdContent = inParams.get(ParamsHandlerConstant.INPUT_PARAM_PD_CONTENT);
 
-            if(StringUtils.isBlank(pdContent)){
-                throw new Exception("Request Param (pdContent) is Missing ..");
+            if (StringUtils.isBlank(pdContent)) {
+                throw new MissingParameterException(STR_PD_CONTENT_MISSING);
             }
 
-            if(StringUtils.isBlank(requestParamJson)){
-                throw new Exception("Request Param (jsonData) is Missing ..");
+            if (StringUtils.isBlank(requestParamJson)) {
+                throw new MissingParameterException(STR_JSON_DATA_MISSING);
             }
 
             PropertyDefinition propertyDefinition = parsePDContent(pdContent);
-            if(propertyDefinition != null){
-                requestParamJson = mergeMissingRequestParamFromPD(propertyDefinition, requestParamJson);
-                ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_CONFIGURATION_PARAMETER, requestParamJson);
+            if (propertyDefinition != null) {
+                requestParamJson =
+                    mergeMissingRequestParamFromPD(propertyDefinition, requestParamJson);
+                ctx.setAttribute(
+                    responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_CONFIGURATION_PARAMETER,
+                    requestParamJson);
             }
-            
-            ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_STATUS, ParamsHandlerConstant.OUTPUT_STATUS_SUCCESS);
+
+            ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_STATUS,
+                ParamsHandlerConstant.OUTPUT_STATUS_SUCCESS);
         } catch (Exception e) {
-            ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_STATUS, ParamsHandlerConstant.OUTPUT_STATUS_FAILURE);
-            ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_ERROR_MESSAGE,e.getMessage());
-            log.error("Failed in merging data to template " + e.getMessage());
+            ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_STATUS,
+                ParamsHandlerConstant.OUTPUT_STATUS_FAILURE);
+            ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_ERROR_MESSAGE,
+                e.getMessage());
+            log.error(STR_MERGING_DATA_FAILED, e);
             throw new SvcLogicException(e.getMessage());
         }
     }
 
-    public void processExternalSystemParamKeys(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException {
+    public void processExternalSystemParamKeys(Map<String, String> inParams, SvcLogicContext ctx)
+        throws SvcLogicException {
         log.info("Received processExternalSystemParamKeys call with params : " + inParams);
-        String responsePrefix = inParams.get(ParamsHandlerConstant.INPUT_PARAM_RESPONSE_PRIFIX);        
-        try{
-            responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : "";
-
-            String requestParamJson = inParams.get(ParamsHandlerConstant.INPUT_PARAM_JSON_DATA);    
-            String pdContent = inParams.get(ParamsHandlerConstant.INPUT_PARAM_PD_CONTENT);    
-            String systemName = inParams.get(ParamsHandlerConstant.INPUT_PARAM_SYSTEM_NAME);    
-
-
-            if(StringUtils.isBlank(pdContent)){
-                throw new Exception("Request Param (pdContent) is Missing ..");
+        log.debug(
+            "Source sytem name passed in inParams will be ignored!!Source will be obtained from PD block!");
+        String responsePrefix = inParams.get(ParamsHandlerConstant.INPUT_PARAM_RESPONSE_PRIFIX);
+        try {
+            responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix + ".") : "";
+
+            String requestParamJson = inParams.get(ParamsHandlerConstant.INPUT_PARAM_JSON_DATA);
+            String pdContent = inParams.get(ParamsHandlerConstant.INPUT_PARAM_PD_CONTENT);
+            String systemName = inParams.get(ParamsHandlerConstant.INPUT_PARAM_SYSTEM_NAME);
+
+            if (StringUtils.isBlank(pdContent)) {
+                throw new MissingParameterException(STR_PD_CONTENT_MISSING);
             }
 
-            if(StringUtils.isBlank(requestParamJson)){
-                throw new Exception("Request Param (jsonData) is Missing ..");
+            if (StringUtils.isBlank(requestParamJson)) {
+                //throw new MissingParameterException(STR_JSON_DATA_MISSING);
+                log.info("processExternalSystemParamKeys:: "+ STR_JSON_DATA_MISSING);
             }
 
-            if(StringUtils.isBlank(systemName)){
-                throw new Exception("Request Param (systemName) is Missing ..");
+            if (StringUtils.isBlank(systemName)) {
+                throw new MissingParameterException(STR_SYSTEM_NAME_MISSING);
             }
 
-            PropertyDefinition propertyDefinition = parsePDContent(pdContent);
-            if(propertyDefinition != null){
-                getSystemRequestParamInfoFromPD(propertyDefinition, requestParamJson, systemName, ctx);
-            }
+            tryGetSystemRequestParam(ctx, requestParamJson, pdContent);
 
-            ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_STATUS, ParamsHandlerConstant.OUTPUT_STATUS_SUCCESS);
+            ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_STATUS,
+                ParamsHandlerConstant.OUTPUT_STATUS_SUCCESS);
         } catch (Exception e) {
-            ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_STATUS, ParamsHandlerConstant.OUTPUT_STATUS_FAILURE);
-            ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_ERROR_MESSAGE,e.getMessage());
-            log.error("Failed in merging data to template " + e.getMessage());
+            ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_STATUS,
+                ParamsHandlerConstant.OUTPUT_STATUS_FAILURE);
+            ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_ERROR_MESSAGE,
+                e.getMessage());
+            log.error(STR_MERGING_DATA_FAILED, e);
             throw new SvcLogicException(e.getMessage());
         }
     }
 
+    private void tryGetSystemRequestParam(SvcLogicContext ctx, String requestParamJson, String pdContent)
+        throws IOException, MissingParameterException {
+        PropertyDefinition propertyDefinition = parsePDContent(pdContent);
+        if (propertyDefinition != null) {
+            getSystemRequestParamInfoFromPD(propertyDefinition, requestParamJson, ctx);
+        }
+    }
 
-    public void mergeJsonData(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException {
-        log.info("Received mergeJsonData call with params : " + inParams);
-        String responsePrefix = inParams.get(ParamsHandlerConstant.INPUT_PARAM_RESPONSE_PRIFIX);        
-        try{
-            responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : "";
-
-            String requestParamJson = inParams.get(ParamsHandlerConstant.INPUT_PARAM_JSON_DATA);    
-            String mergeJsonData = inParams.get(ParamsHandlerConstant.INPUT_PARAM_MERGE__JSON_DATA);            
 
-            if(StringUtils.isBlank(requestParamJson)){
-                throw new Exception("Request Param (jsonData) is Missing ..");
+    public void mergeJsonData(Map<String, String> inParams, SvcLogicContext ctx)
+        throws SvcLogicException {
+        log.info("Received mergeJsonData call with params : " + inParams);
+        String responsePrefix = inParams.get(ParamsHandlerConstant.INPUT_PARAM_RESPONSE_PRIFIX);
+        try {
+            responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix + ".") : "";
+
+            String requestParamJson = inParams.get(ParamsHandlerConstant.INPUT_PARAM_JSON_DATA);
+            String mergeJsonData = inParams.get(ParamsHandlerConstant.INPUT_PARAM_MERGE__JSON_DATA);
+
+            if (StringUtils.isBlank(requestParamJson)) {
+                //throw new MissingParameterException(STR_JSON_DATA_MISSING);
+                Map <String,String> tempMap=new HashMap<> ();
+                requestParamJson = tempMap.toString();
+                log.info("mergeJsonData()::"+STR_JSON_DATA_MISSING);
             }
 
-            if(StringUtils.isBlank(mergeJsonData)){
-                throw new Exception("Request Param (mergeJsonData) is Missing ..");
+            if (StringUtils.isBlank(mergeJsonData)) {
+                throw new MissingParameterException(STR_MERGE_JSON_DATA_MISSING);
             }
 
             requestParamJson = mergeJson(requestParamJson, mergeJsonData);
-            ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_CONFIGURATION_PARAMETER, requestParamJson);
-            ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_STATUS, ParamsHandlerConstant.OUTPUT_STATUS_SUCCESS);
+            ctx.setAttribute(
+                responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_CONFIGURATION_PARAMETER,
+                requestParamJson);
+            ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_STATUS,
+                ParamsHandlerConstant.OUTPUT_STATUS_SUCCESS);
         } catch (Exception e) {
-            ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_STATUS, ParamsHandlerConstant.OUTPUT_STATUS_FAILURE);
-            ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_ERROR_MESSAGE,e.getMessage());
-            log.error("Failed in merging data to template " + e.getMessage());
+            ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_STATUS,
+                ParamsHandlerConstant.OUTPUT_STATUS_FAILURE);
+            ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_ERROR_MESSAGE,
+                e.getMessage());
+            log.error(STR_MERGING_DATA_FAILED, e);
             throw new SvcLogicException(e.getMessage());
         }
     }
 
-
-    /* */
-
-    private PropertyDefinition parsePDContent(String pdContent) throws JsonParseException, JsonMappingException, IOException{
+    private PropertyDefinition parsePDContent(String pdContent) throws IOException {
         PropertyDefinition propertyDefinition = null;
-        if(StringUtils.isNotBlank(pdContent)){
+        if (StringUtils.isNotBlank(pdContent)) {
             ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
             propertyDefinition = mapper.readValue(pdContent, PropertyDefinition.class);
         }
         return propertyDefinition;
     }
 
+    private String mergeMissingRequestParamFromPD(PropertyDefinition propertyDefinition,
+        String requestParamJson) throws MissingParameterException, IOException {
 
-    private String mergeMissingRequestParamFromPD(PropertyDefinition propertyDefinition, String requestParamJson) throws Exception{
-
-        if(propertyDefinition == null){
-            throw new Exception("PropertyDefinition is Missing ..");
+        if (propertyDefinition == null) {
+            throw new MissingParameterException("PropertyDefinition is Missing ..");
         }
 
-        if(StringUtils.isBlank(requestParamJson)){
-            throw new Exception("Request Param is Missing ..");
+        if (StringUtils.isBlank(requestParamJson)) {
+            throw new MissingParameterException("Request Param is Missing ..");
         }
 
         ObjectMapper mapper = new ObjectMapper();
         Map<String, String> requestParamMap = mapper.readValue(requestParamJson, HashMap.class);
-        if(requestParamMap != null){
+        if (requestParamMap != null) {
             List<Parameter> parameters = propertyDefinition.getParameters();
             for (Parameter parameter : parameters) {
-                if(parameter != null){
-                    
-                    log.info("Checking Key " + parameter.getName() + ":: Source :" +parameter.getSource());    
+                if (parameter != null) {
+
+                    log.info("Checking Key " + parameter.getName() + ":: Source :"
+                        + parameter.getSource());
                     // Add Only non external system keys,If it is not present in request Params
-                    if( !requestParamMap.containsKey(parameter.getName()) 
-                            && StringUtils.isBlank(parameter.getSource())
-                            ){
-                        log.info("Adding New Key " + parameter.getName());    
-                        requestParamMap.put(parameter.getName(), parameter.getDefaultValue());
-                    }                    
-                }                
-            }            
-            requestParamJson = mapper.writeValueAsString(requestParamMap);
-            log.info("Processed Request Param " + requestParamJson);    
+                    tryAddParam(requestParamMap, parameter);
+                }
+            }
+            log.info("Processed Request Param " + requestParamJson);
+            return mapper.writeValueAsString(requestParamMap);
         }
-
         return requestParamJson;
     }
 
-    private void getSystemRequestParamInfoFromPD(PropertyDefinition propertyDefinition, String requestParamJson, String systemName, SvcLogicContext ctx) throws Exception{
+    private void tryAddParam(Map<String, String> requestParamMap, Parameter parameter) {
+        if (!requestParamMap.containsKey(parameter.getName())
+            && StringUtils.isBlank(parameter.getSource())) {
+            log.info("Adding New Key " + parameter.getName());
+            requestParamMap.put(parameter.getName(), parameter.getDefaultValue());
+        }
+    }
+
+    private void getSystemRequestParamInfoFromPD(PropertyDefinition propertyDefinition,
+        String requestParamJson, SvcLogicContext ctx) throws MissingParameterException, IOException {
 
-        if(propertyDefinition == null){
-            throw new Exception("PropertyDefinition is Missing ..");
+        if (propertyDefinition == null) {
+            throw new MissingParameterException("PropertyDefinition is Missing ..");
         }
 
-        if(StringUtils.isBlank(requestParamJson)){
-            throw new Exception("Request Param is Missing ..");
+        if (StringUtils.isBlank(requestParamJson)) {
+            //throw new MissingParameterException("Request Param is Missing ..");
+            log.info("getSystemRequestParamInfoFromPD() ::: requestParamJson is blank!!!");
+            HashMap paramMap = new HashMap <String, String> ();
+            requestParamJson = paramMap.toString();
         }
 
         ObjectMapper mapper = new ObjectMapper();
         Map<String, String> requestParamMap = mapper.readValue(requestParamJson, HashMap.class);
-        if(requestParamMap != null){
+        Map<String, List<String>> systemKeysMap = new HashMap<>();
+        if (requestParamMap != null) {
             List<Parameter> parameters = propertyDefinition.getParameters();
 
-            List<String> externalSystemKeys = new ArrayList<String>();
+            List<String> externalSystemKeys = new ArrayList<>();
             for (Parameter parameter : parameters) {
-                if(parameter != null){
-                    if( !requestParamMap.containsKey(parameter.getName()) && StringUtils.isNotBlank(parameter.getSource())  && !StringUtils.equalsIgnoreCase(parameter.getSource(),"Manual") ){
-                        log.info("Adding New System Key " + parameter.getName() + ":"+ mapper.writeValueAsString(parameter));
-                        externalSystemKeys.add(parameter.getName());
-                        ctx.setAttribute(systemName +"."+parameter.getName(), mapper.writeValueAsString(parameter));
-                    }                    
-                }                
-            }    
-
-            String systemKeys = systemName+".keys";
-            ctx.setAttribute(systemKeys, mapper.writeValueAsString(externalSystemKeys));
+                if (validateParameter(requestParamMap, parameter)) {
+
+                    String source = resolveSourceStr(parameter);
+                    resolveSourceParamValue(mapper, systemKeysMap, parameter, source);
+                    externalSystemKeys.add(parameter.getName());
+                    ctx.setAttribute(source + "." + parameter.getName(),
+                        mapper.writeValueAsString(parameter));
+                }
+            }
+
+            for (Entry<String, List<String>> entry : systemKeysMap.entrySet()) {
+                String systemKeys = entry.getKey() + ".keys";
+                ctx.setAttribute(systemKeys, mapper.writeValueAsString(entry.getValue()));
+            }
+        }
+    }
+
+    private void resolveSourceParamValue(ObjectMapper mapper, Map<String, List<String>> systemKeysMap,
+        Parameter parameter, String source) throws JsonProcessingException {
+        if (systemKeysMap.containsKey(source)) {
+            log.info("Adding New System Key " + parameter.getName() + ":"
+                + mapper.writeValueAsString(parameter));
+            List<String> l = systemKeysMap.get(source);
+            if (null != l) {
+                l.add(parameter.getName());
+                systemKeysMap.put(source, l);
+            }
+        } else {
+            log.info("Creating/Adding New System Key " + parameter.getName() + ":"
+                + mapper.writeValueAsString(parameter));
+            List<String> l = new ArrayList<>();
+            l.add(parameter.getName());
+            systemKeysMap.put(source, l);
         }
     }
 
+    private String resolveSourceStr(Parameter parameter) {
+        String source = parameter.getSource();
+        if (StringUtils.equalsIgnoreCase(source, "A&AI")) {
+            source = "AAI";
+        }
+        source = StringUtils.upperCase(source);
+        return source;
+    }
 
-    private String mergeJson(String requestParamJson, String systemParamJson) throws Exception {
+    private boolean validateParameter(Map<String, String> requestParamMap, Parameter parameter) {
+        return parameter != null && !requestParamMap.containsKey(parameter.getName())
+            && StringUtils.isNotBlank(parameter.getSource())
+            && !StringUtils.equalsIgnoreCase(parameter.getSource(), "Manual");
+    }
+
+    private String mergeJson(String requestParamJson, String systemParamJson) throws IOException {
         ObjectMapper mapper = new ObjectMapper();
         Map<String, String> requestParamMap = mapper.readValue(requestParamJson, HashMap.class);
-        if(requestParamMap != null){
+        if (requestParamMap != null) {
             Map<String, String> systemParamMap = mapper.readValue(systemParamJson, HashMap.class);
-            if(systemParamMap != null){
-                for (String systemParamKey : systemParamMap.keySet()) {
-                    log.trace("Megging System Key Values " + systemParamKey);    
-                    requestParamMap.put( systemParamKey , systemParamMap.get(systemParamKey));        
-                }    
+            if (systemParamMap != null) {
+                for (Entry<String, String> entry : systemParamMap.entrySet()) {
+                    log.trace("Megging System Key Values " + entry.getKey());
+                    requestParamMap.put(entry.getKey(), entry.getValue());
+                }
             }
-            requestParamJson = mapper.writeValueAsString(requestParamMap);
-            log.info("Processed Request Param " + requestParamJson);    
+            log.info("Processed Request Param " + requestParamJson);
+            return mapper.writeValueAsString(requestParamMap);
         }
-
         return requestParamJson;
     }
 
+    public void validateParams(Map<String, String> inParams, SvcLogicContext ctx)
+        throws SvcLogicException {
+        String responsePrefix = inParams.get(ParamsHandlerConstant.INPUT_PARAM_RESPONSE_PRIFIX);
+        String pdContent = inParams.get(ParamsHandlerConstant.INPUT_PARAM_PD_CONTENT);
+        String configParams =
+            inParams.get(ParamsHandlerConstant.OUTPUT_PARAM_CONFIGURATION_PARAMETER);
+        responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix + ".") : "";
+        log.info("Processed pdContent Param " + pdContent);
+        log.info("Processed config Param " + configParams);
+
+        try {
+            if (StringUtils.isBlank(pdContent)) {
+                throw new MissingParameterException(STR_PD_CONTENT_MISSING);
+            }
 
+            if (StringUtils.isBlank(configParams)) {
+                //throw new MissingParameterException("Request Param (configParams) is Missing ..");
+                Map <String,String> tempMap=new HashMap<> ();
+                configParams = tempMap.toString();
+                log.info("validateParams():: Request Param (configParams) is Missing ..");
+                
+            }
+            PropertyDefinition propertyDefinition = parsePDContent(pdContent);
+            ObjectMapper mapper = new ObjectMapper();
+            Map<String, String> requestParamMap = mapper.readValue(configParams, HashMap.class);
+            List<Parameter> parameters = propertyDefinition.getParameters();
+            Map<String, String> missingKeys = new HashMap<>();
+            for (Parameter parameter : parameters) {
+                if (parameter != null && parameter.isRequired()) {
+                    resolveParameterValue(requestParamMap, missingKeys, parameter);
+                }
+            }
+            if (missingKeys.size() > 0) {
+
+                String requiredFields = mapper.writeValueAsString(missingKeys);
+                log.info(" Below mentioned keys and respective  source type are mandatory");
+                log.info(requiredFields);
+
+                ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_STATUS,
+                    ParamsHandlerConstant.OUTPUT_STATUS_FAILURE);
+                ctx.setAttribute(ParamsHandlerConstant.OUTPUT_PARAM_STATUS,
+                    ParamsHandlerConstant.OUTPUT_STATUS_FAILURE);
+                ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_ERROR_MESSAGE,
+                    "Missing Mandatory Keys and source are" + requiredFields);
+                throw new SvcLogicException(
+                    " Missing  Mandatory Keys and source are" + requiredFields);
+            } else {
+                log.info("success ");
+                ctx.setAttribute(ParamsHandlerConstant.OUTPUT_PARAM_STATUS,
+                    ParamsHandlerConstant.OUTPUT_STATUS_SUCCESS);
+            }
 
+        } catch (Exception e) {
+            ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_STATUS,
+                ParamsHandlerConstant.OUTPUT_STATUS_FAILURE);
+            ctx.setAttribute(ParamsHandlerConstant.OUTPUT_PARAM_STATUS,
+                ParamsHandlerConstant.OUTPUT_STATUS_FAILURE);
+            ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_ERROR_MESSAGE,
+                e.getMessage());
+            log.error("Failed to validate params", e);
+            throw new SvcLogicException(e.getMessage());
+        }
+    }
 
+    private void resolveParameterValue(Map<String, String> requestParamMap, Map<String, String> missingKeys,
+        Parameter parameter) {
+        if (!requestParamMap.containsKey(parameter.getName())) {
+            missingKeys.put(parameter.getName(), parameter.getSource());
+        } else {
+            if ((requestParamMap.get(parameter.getName()) == null)
+                || (requestParamMap.get(parameter.getName()).isEmpty())) {
+                missingKeys.put(parameter.getName(), parameter.getSource());
+            }
+        }
+    }
 }