diff options
62 files changed, 6697 insertions, 4774 deletions
diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/ConfigPolicy.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/ConfigPolicy.java index 0cd263800..d6b09086a 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/ConfigPolicy.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/ConfigPolicy.java @@ -4,6 +4,7 @@ * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. * Modified Copyright (C) 2018 Samsung Electronics Co., Ltd. + * Modified Copyright (C) 2019 Bell Canada. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -96,26 +97,33 @@ public class ConfigPolicy extends Policy { // Here we are adding the extension for the configurations file based on the // config type selection for saving. private String getConfigFile(String filename) { + filename = removeExtentsion(filename); + String id = policyAdapter.getConfigType(); + + if (id == null) { + return filename; + } + switch (id.toUpperCase()) + { + case JSON_CONFIG: + return filename + ".json"; + case XML_CONFIG: + return filename + ".xml"; + case PROPERTIES_CONFIG: + return filename + ".properties"; + case OTHER_CONFIG: + return filename + ".txt"; + default: + return filename; + + } + } + + private String removeExtentsion(String filename) { filename = FilenameUtils.removeExtension(filename); if (filename.endsWith(".xml")) { filename = filename.substring(0, filename.length() - 4); } - String id = policyAdapter.getConfigType(); - - if (id != null) { - if (id.equalsIgnoreCase(JSON_CONFIG)) { - filename = filename + ".json"; - } - if (id.equalsIgnoreCase(XML_CONFIG)) { - filename = filename + ".xml"; - } - if (id.equalsIgnoreCase(PROPERTIES_CONFIG)) { - filename = filename + ".properties"; - } - if (id.equalsIgnoreCase(OTHER_CONFIG)) { - filename = filename + ".txt"; - } - } return filename; } @@ -134,24 +142,30 @@ public class ConfigPolicy extends Policy { */ configBodyData = policyAdapter.getConfigBodyData(); String id = policyAdapter.getConfigType(); - if (id != null) { - if (id.equals(JSON_CONFIG)) { + if (id == null) { + return isValidForm; + } + switch (id) { + case JSON_CONFIG: if (!PolicyUtils.isJSONValid(configBodyData)) { isValidForm = false; } - } else if (id.equals(XML_CONFIG)) { + break; + case XML_CONFIG: if (!PolicyUtils.isXMLValid(configBodyData)) { isValidForm = false; } - } else if (id.equals(PROPERTIES_CONFIG)) { + break; + case PROPERTIES_CONFIG: if (!PolicyUtils.isPropValid(configBodyData) || configBodyData.equals("")) { isValidForm = false; } - } else if (id.equals(OTHER_CONFIG)) { + break; + case OTHER_CONFIG: if (configBodyData.equals("")) { isValidForm = false; } - } + break; } return isValidForm; diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateNewMicroServiceModel.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateNewMicroServiceModel.java index 86455aa30..103928cbc 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateNewMicroServiceModel.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateNewMicroServiceModel.java @@ -8,9 +8,9 @@ * 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. @@ -21,6 +21,7 @@ package org.onap.policy.pap.xacml.rest.components; +import com.google.gson.Gson; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; @@ -35,7 +36,6 @@ import java.util.List; import java.util.Map; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; - import org.apache.commons.io.FileUtils; import org.apache.commons.lang.StringUtils; import org.onap.policy.common.logging.eelf.MessageCodes; @@ -50,12 +50,10 @@ import org.onap.policy.rest.util.MSAttributeObject; import org.onap.policy.rest.util.MSModelUtils; import org.onap.policy.rest.util.MSModelUtils.MODEL_TYPE; -import com.google.gson.Gson; - public class CreateNewMicroServiceModel { private static final Logger logger = FlexLogger.getLogger(CreateNewMicroServiceModel.class); private MicroServiceModels newModel = null; - private HashMap<String,MSAttributeObject > classMap = new HashMap<>(); + private HashMap<String, MSAttributeObject> classMap = new HashMap<>(); private MSModelUtils utils = new MSModelUtils(XACMLPapServlet.getMsOnapName(), XACMLPapServlet.getMsPolicyName()); @@ -64,7 +62,17 @@ public class CreateNewMicroServiceModel { super(); } - public CreateNewMicroServiceModel(String importFile, String modelName, String description, String version, String randomID) { + /** + * Instantiates a new creates the new micro service model. + * + * @param importFile the import file + * @param modelName the model name + * @param description the description + * @param version the version + * @param randomID the random ID + */ + public CreateNewMicroServiceModel(String importFile, String modelName, String description, String version, + String randomID) { this.newModel = new MicroServiceModels(); this.newModel.setVersion(version); @@ -75,24 +83,24 @@ public class CreateNewMicroServiceModel { String cleanUpFile = null; Map<String, MSAttributeObject> tempMap = new HashMap<>(); - //Need to delete the file - if (importFile.contains(".zip")){ + // Need to delete the file + if (importFile.contains(".zip")) { extractFolder(randomID + ".zip"); File directory = new File("ExtractDir" + File.separator + randomID); List<File> fileList = listModelFiles(directory.toString()); - //get all the files from a director + // get all the files from a director processFiles(modelName, fileList); doCleanUpFiles(randomID); - }else { - if(importFile.contains(".yml")){ + } else { + if (importFile.contains(".yml")) { - processYmlModel("ExtractDir" + File.separator + randomID+".yml", modelName); - cleanUpFile = "ExtractDir" + File.separator + randomID+".yml"; + processYmlModel("ExtractDir" + File.separator + randomID + ".yml", modelName); + cleanUpFile = "ExtractDir" + File.separator + randomID + ".yml"; - }else{ - tempMap = utils.processEpackage("ExtractDir" + File.separator + randomID+".xmi", MODEL_TYPE.XMI); + } else { + tempMap = utils.processEpackage("ExtractDir" + File.separator + randomID + ".xmi", MODEL_TYPE.XMI); classMap.putAll(tempMap); - cleanUpFile = "ExtractDir" + File.separator + randomID+".xmi"; + cleanUpFile = "ExtractDir" + File.separator + randomID + ".xmi"; } File deleteFile = new File(cleanUpFile); @@ -102,16 +110,16 @@ public class CreateNewMicroServiceModel { private void processFiles(String modelName, List<File> fileList) { Map<String, MSAttributeObject> tempMap; - for (File file : fileList){ - if (file.isFile()){ - int i = file.getName().lastIndexOf('.'); - String type = file.getName().substring(i+1); + for (File file : fileList) { + if (file.isFile()) { + int indx = file.getName().lastIndexOf('.'); + String type = file.getName().substring(indx + 1); - if("yml".equalsIgnoreCase(type)){ + if ("yml".equalsIgnoreCase(type)) { processYmlModel(file.toString(), modelName); - }else{ + } else { tempMap = utils.processEpackage(file.getAbsolutePath(), MODEL_TYPE.XMI); classMap.putAll(tempMap); @@ -133,17 +141,17 @@ public class CreateNewMicroServiceModel { } } - private void processYmlModel(String fileName, String modelName){ + private void processYmlModel(String fileName, String modelName) { try { utils.parseTosca(fileName); - MSAttributeObject msAttributes= new MSAttributeObject(); + MSAttributeObject msAttributes = new MSAttributeObject(); msAttributes.setClassName(modelName); - LinkedHashMap<String, String> returnAttributeList =new LinkedHashMap<>(); + LinkedHashMap<String, String> returnAttributeList = new LinkedHashMap<>(); returnAttributeList.put(modelName, utils.getAttributeString()); msAttributes.setAttribute(returnAttributeList); @@ -151,24 +159,31 @@ public class CreateNewMicroServiceModel { msAttributes.setMatchingSet(utils.getMatchableValues()); - LinkedHashMap<String, String> returnReferenceList =new LinkedHashMap<>(); + LinkedHashMap<String, String> returnReferenceList = new LinkedHashMap<>(); returnReferenceList.put(modelName, utils.getReferenceAttributes()); msAttributes.setRefAttribute(returnReferenceList); - if(!PolicyDBDao.isNullOrEmpty(utils.getListConstraints())){ - LinkedHashMap<String, String> enumList =new LinkedHashMap<>(); - String[] listArray=utils.getListConstraints().split("#"); - for(String str:listArray){ - String[] strArr= str.split("="); - if(strArr.length>1){ + if (!PolicyDBDao.isNullOrEmpty(utils.getListConstraints())) { + LinkedHashMap<String, String> enumList = new LinkedHashMap<>(); + String[] listArray = utils.getListConstraints().split("#"); + for (String str : listArray) { + String[] strArr = str.split("="); + if (strArr.length > 1) { enumList.put(strArr[0], strArr[1]); } } msAttributes.setEnumType(enumList); } + if (utils.getJsonRuleFormation() != null) { + msAttributes.setRuleFormation(utils.getJsonRuleFormation()); + } - classMap=new LinkedHashMap<>(); + if (utils.getDataOrderInfo() != null) { + msAttributes.setDataOrderInfo(utils.getDataOrderInfo()); + } + + classMap = new LinkedHashMap<>(); classMap.put(modelName, msAttributes); } catch (Exception e) { @@ -196,14 +211,14 @@ public class CreateNewMicroServiceModel { int BUFFER = 2048; File file = new File(zipFile); - try(ZipFile zip = new ZipFile("ExtractDir" + File.separator +file)) { + try (ZipFile zip = new ZipFile("ExtractDir" + File.separator + file)) { - String newPath = zipFile.substring(0, zipFile.length() - 4); + String newPath = zipFile.substring(0, zipFile.length() - 4); new File(newPath).mkdir(); Enumeration zipFileEntries = zip.entries(); // Process each entry - while (zipFileEntries.hasMoreElements()){ + while (zipFileEntries.hasMoreElements()) { // grab a zip file entry ZipEntry entry = (ZipEntry) zipFileEntries.nextElement(); String currentEntry = entry.getName(); @@ -212,14 +227,13 @@ public class CreateNewMicroServiceModel { destinationParent.mkdirs(); - if (!entry.isDirectory()){ - BufferedInputStream is = new BufferedInputStream(zip - .getInputStream(entry)); + if (!entry.isDirectory()) { + BufferedInputStream is = new BufferedInputStream(zip.getInputStream(entry)); int currentByte; byte data[] = new byte[BUFFER]; - try(FileOutputStream fos = new FileOutputStream(destFile); - BufferedOutputStream dest = new BufferedOutputStream(fos, BUFFER)) { + try (FileOutputStream fos = new FileOutputStream(destFile); + BufferedOutputStream dest = new BufferedOutputStream(fos, BUFFER)) { while ((currentByte = is.read(data, 0, BUFFER)) != -1) { dest.write(data, 0, currentByte); @@ -229,7 +243,7 @@ public class CreateNewMicroServiceModel { is.close(); } - if (currentEntry.endsWith(".zip")){ + if (currentEntry.endsWith(".zip")) { extractFolder(destFile.getAbsolutePath()); } } @@ -241,60 +255,70 @@ public class CreateNewMicroServiceModel { public Map<String, String> addValuesToNewModel(String type) { Map<String, String> successMap = new HashMap<>(); - MSAttributeObject mainClass = null; + MSAttributeObject mainClass = null; List<String> dependency = null; String subAttribute = null; - if (!classMap.containsKey(this.newModel.getModelName())){ - logger.error("Model Provided does not contain the service name provided in request. Unable to import new model"); - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, "AddValuesToNewModel", "Unable to pull out required values, file missing service name provided in request"); + if (!classMap.containsKey(this.newModel.getModelName())) { + logger.error( + "Model Provided does not contain the service name provided in request. Unable to import new model"); + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, "AddValuesToNewModel", + "Unable to pull out required values, file missing service name provided in request"); successMap.put("error", "MISSING"); return successMap; } mainClass = classMap.get(this.newModel.getModelName()); - if(".yml".equalsIgnoreCase(type)){ + if (".yml".equalsIgnoreCase(type)) { newModel.setDependency("[]"); - if(mainClass.getSubClass() != null){ - String value = new Gson().toJson(mainClass.getSubClass()); - newModel.setSub_attributes(value); + if (mainClass.getSubClass() != null) { + String value = new Gson().toJson(mainClass.getSubClass()); + newModel.setSub_attributes(value); } - if(mainClass.getAttribute() != null){ - String attributes= mainClass.getAttribute().toString().replace("{", "").replace("}", ""); - int equalsIndexForAttributes= attributes.indexOf("="); - String atttributesAfterFirstEquals= attributes.substring(equalsIndexForAttributes+1); + if (mainClass.getAttribute() != null) { + String attributes = mainClass.getAttribute().toString().replace("{", "").replace("}", ""); + int equalsIndexForAttributes = attributes.indexOf("="); + String atttributesAfterFirstEquals = attributes.substring(equalsIndexForAttributes + 1); this.newModel.setAttributes(atttributesAfterFirstEquals); } - if(mainClass.getRefAttribute() != null){ - String refAttributes= mainClass.getRefAttribute().toString().replace("{", "").replace("}", ""); - int equalsIndex= refAttributes.indexOf("="); - String refAttributesAfterFirstEquals= refAttributes.substring(equalsIndex+1); + if (mainClass.getRefAttribute() != null) { + String refAttributes = mainClass.getRefAttribute().toString().replace("{", "").replace("}", ""); + int equalsIndex = refAttributes.indexOf("="); + String refAttributesAfterFirstEquals = refAttributes.substring(equalsIndex + 1); this.newModel.setRef_attributes(refAttributesAfterFirstEquals); } - if(mainClass.getEnumType() != null){ + if (mainClass.getEnumType() != null) { this.newModel.setEnumValues(mainClass.getEnumType().toString().replace("{", "").replace("}", "")); } - if(mainClass.getMatchingSet() != null){ + if (mainClass.getMatchingSet() != null) { this.newModel.setAnnotation(mainClass.getMatchingSet().toString().replace("{", "").replace("}", "")); } + if (mainClass.getRuleFormation() != null) { + this.newModel.setRuleFormation(mainClass.getRuleFormation()); + } + + if (mainClass.getDataOrderInfo() != null) { + this.newModel.setDataOrderInfo(mainClass.getDataOrderInfo()); + } - }else{ + } else { - String dependTemp = StringUtils.replaceEach(mainClass.getDependency(), new String[]{"[", "]", " "}, new String[]{"", "", ""}); + String dependTemp = StringUtils.replaceEach(mainClass.getDependency(), new String[] {"[", "]", " "}, + new String[] {"", "", ""}); this.newModel.setDependency(dependTemp); - if (this.newModel.getDependency() != null && !this.newModel.getDependency().isEmpty()){ + if (this.newModel.getDependency() != null && !this.newModel.getDependency().isEmpty()) { dependency = new ArrayList<String>(Arrays.asList(dependTemp.split(","))); dependency = utils.getFullDependencyList(dependency, classMap); - if (!dependency.isEmpty()){ - for (String element : dependency){ + if (!dependency.isEmpty()) { + for (String element : dependency) { MSAttributeObject temp = new MSAttributeObject(); - if (classMap.containsKey(element)){ + if (classMap.containsKey(element)) { temp = classMap.get(element); mainClass.addAllRefAttribute(temp.getRefAttribute()); mainClass.addAllAttribute(temp.getAttribute()); @@ -305,19 +329,20 @@ public class CreateNewMicroServiceModel { subAttribute = utils.createSubAttributes(dependency, classMap, this.newModel.getModelName()); this.newModel.setSub_attributes(subAttribute); - if(mainClass.getAttribute() != null && !mainClass.getAttribute().isEmpty()){ + if (mainClass.getAttribute() != null && !mainClass.getAttribute().isEmpty()) { this.newModel.setAttributes(mainClass.getAttribute().toString().replace("{", "").replace("}", "")); } - if(mainClass.getRefAttribute() != null && !mainClass.getRefAttribute().isEmpty()){ - this.newModel.setRef_attributes(mainClass.getRefAttribute().toString().replace("{", "").replace("}", "")); + if (mainClass.getRefAttribute() != null && !mainClass.getRefAttribute().isEmpty()) { + this.newModel + .setRef_attributes(mainClass.getRefAttribute().toString().replace("{", "").replace("}", "")); } - if(mainClass.getEnumType() != null && !mainClass.getEnumType().isEmpty()){ + if (mainClass.getEnumType() != null && !mainClass.getEnumType().isEmpty()) { this.newModel.setEnumValues(mainClass.getEnumType().toString().replace("{", "").replace("}", "")); } - if(mainClass.getMatchingSet() != null && !mainClass.getMatchingSet().isEmpty()){ + if (mainClass.getMatchingSet() != null && !mainClass.getMatchingSet().isEmpty()) { this.newModel.setAnnotation(mainClass.getMatchingSet().toString().replace("{", "").replace("}", "")); } } @@ -326,14 +351,15 @@ public class CreateNewMicroServiceModel { } - public Map<String, String> saveImportService(){ + public Map<String, String> saveImportService() { String modelName = this.newModel.getModelName(); String imported_by = "API"; String version = this.newModel.getVersion(); Map<String, String> successMap = new HashMap<>(); CommonClassDaoImpl dbConnection = new CommonClassDaoImpl(); - List<Object> result = dbConnection.getDataById(MicroServiceModels.class, "modelName:version", modelName+":"+version); - if(result == null || result.isEmpty()){ + List<Object> result = + dbConnection.getDataById(MicroServiceModels.class, "modelName:version", modelName + ":" + version); + if (result == null || result.isEmpty()) { MicroServiceModels model = new MicroServiceModels(); model.setModelName(modelName); model.setVersion(version); @@ -345,13 +371,15 @@ public class CreateNewMicroServiceModel { model.setRef_attributes(this.newModel.getRef_attributes()); model.setSub_attributes(this.newModel.getSub_attributes()); model.setDataOrderInfo(this.newModel.getDataOrderInfo()); + model.setDecisionModel(this.newModel.isDecisionModel()); + model.setRuleFormation(this.newModel.getRuleFormation()); UserInfo userInfo = new UserInfo(); userInfo.setUserLoginId(imported_by); userInfo.setUserName(imported_by); model.setUserCreatedBy(userInfo); dbConnection.save(model); successMap.put("success", "success"); - }else{ + } else { successMap.put("DBError", "EXISTS"); logger.error("Import new service failed. Service already exists"); } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/DecisionPolicy.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/DecisionPolicy.java index 3a18504d0..5e2bb58ff 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/DecisionPolicy.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/DecisionPolicy.java @@ -26,7 +26,6 @@ import com.att.research.xacml.std.IdentifierImpl; import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; -import java.io.PrintWriter; import java.net.URI; import java.net.URISyntaxException; import java.nio.charset.StandardCharsets; @@ -40,9 +39,8 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.UUID; -import javax.script.SimpleBindings; + import org.apache.commons.lang3.StringEscapeUtils; -import org.apache.commons.lang3.StringUtils; import org.onap.policy.common.logging.eelf.MessageCodes; import org.onap.policy.common.logging.eelf.PolicyLogger; import org.onap.policy.common.logging.flexlogger.FlexLogger; @@ -457,7 +455,7 @@ public class DecisionPolicy extends Policy { } private DecisionSettings findDecisionSettingsBySettingId(String settingId) { - return (DecisionSettings) commonClassDao.getEntityItem(DecisionSettings.class, "xacmlId", settingId); + return (DecisionSettings) commonClassDao.getEntityItem(DecisionSettings.class, "xacml_id", settingId); } private void createRule(PolicyType decisionPolicy, boolean permitRule) { @@ -700,76 +698,29 @@ public class DecisionPolicy extends Policy { // check the index for the label. for (String labelAttr : dynamicLabelRuleAlgorithms) { if (labelAttr.equals(value1Label)) { - String value1 = dynamicFieldOneRuleAlgorithms.get(index); - populateDataTypeList(value1); + String attributeId = dynamicFieldOneRuleAlgorithms.get(index); + populateDataTypeList(attributeId); // check if the row contains label again for (String labelValue : dynamicLabelRuleAlgorithms) { - if (labelValue.equals(value1)) { + if (labelValue.equals(attributeId)) { return getCompoundDecisionApply(index); } } // Getting the values from the form. String functionKey = dynamicFieldComboRuleAlgorithms.get(index); - String value2 = dynamicFieldTwoRuleAlgorithms.get(index); + String attributeValue = dynamicFieldTwoRuleAlgorithms.get(index); decisionApply.setFunctionId(getFunctionDefinitionId(functionKey)); // if two text field are rule attributes. - if ((value1.contains(RULE_VARIABLE)) && (value2.contains(RULE_VARIABLE))) { - ApplyType innerDecisionApply1 = new ApplyType(); - ApplyType innerDecisionApply2 = new ApplyType(); - AttributeDesignatorType attributeDesignator1 = new AttributeDesignatorType(); - AttributeDesignatorType attributeDesignator2 = new AttributeDesignatorType(); - // If selected function is Integer function set integer functionID - if (functionKey.toLowerCase().contains("integer")) { - innerDecisionApply1.setFunctionId(FUNTION_INTEGER_ONE_AND_ONLY); - innerDecisionApply2.setFunctionId(FUNTION_INTEGER_ONE_AND_ONLY); - attributeDesignator1.setDataType(INTEGER_DATATYPE); - attributeDesignator2.setDataType(INTEGER_DATATYPE); - } else { - // If selected function is not a Integer function set String functionID - innerDecisionApply1.setFunctionId(FUNCTION_STRING_ONE_AND_ONLY); - innerDecisionApply2.setFunctionId(FUNCTION_STRING_ONE_AND_ONLY); - attributeDesignator1.setDataType(STRING_DATATYPE); - attributeDesignator2.setDataType(STRING_DATATYPE); - } - attributeDesignator1.setCategory(CATEGORY_RESOURCE); - attributeDesignator2.setCategory(CATEGORY_RESOURCE); - // Here set actual field values - attributeDesignator1 - .setAttributeId(value1.contains("resource:") ? value1.substring(9) : value1.substring(8)); - attributeDesignator2 - .setAttributeId(value1.contains("resource:") ? value1.substring(9) : value1.substring(8)); - innerDecisionApply1.getExpression() - .add(new ObjectFactory().createAttributeDesignator(attributeDesignator1)); - innerDecisionApply2.getExpression() - .add(new ObjectFactory().createAttributeDesignator(attributeDesignator2)); - decisionApply.getExpression().add(new ObjectFactory().createApply(innerDecisionApply1)); - decisionApply.getExpression().add(new ObjectFactory().createApply(innerDecisionApply2)); + if ((attributeId.contains(RULE_VARIABLE)) && (attributeValue.contains(RULE_VARIABLE))) { + applyTwoTextFieldRuleAttribute(decisionApply, attributeId, functionKey); } else { // if either of one text field is rule attribute. - if (!value1.startsWith("S_")) { - ApplyType innerDecisionApply = new ApplyType(); - AttributeDesignatorType attributeDesignator = new AttributeDesignatorType(); - AttributeValueType decisionConditionAttributeValue = new AttributeValueType(); - - if (functionKey.toLowerCase().contains("integer")) { - innerDecisionApply.setFunctionId(FUNTION_INTEGER_ONE_AND_ONLY); - decisionConditionAttributeValue.setDataType(INTEGER_DATATYPE); - attributeDesignator.setDataType(INTEGER_DATATYPE); - } else { - innerDecisionApply.setFunctionId(FUNCTION_STRING_ONE_AND_ONLY); - decisionConditionAttributeValue.setDataType(STRING_DATATYPE); - attributeDesignator.setDataType(STRING_DATATYPE); - } - - String attributeId = null; - String attributeValue = null; - - // Find which textField has rule attribute and set it as - // attributeId and the other as attributeValue. - attributeId = value1; - attributeValue = value2; + if (!attributeId.startsWith("S_")) { + ApplyType innerDecisionApply = generateApplyTypeDataType(functionKey); + AttributeDesignatorType attributeDesignator = generateAttributeDesignatorDataType(functionKey); + AttributeValueType decisionConditionAttributeValue = generateAttributeValueTypeDataType(functionKey); if (attributeId != null) { attributeDesignator.setCategory(CATEGORY_RESOURCE); @@ -782,15 +733,15 @@ public class DecisionPolicy extends Policy { .add(new ObjectFactory().createAttributeValue(decisionConditionAttributeValue)); decisionApply.getExpression().add(new ObjectFactory().createApply(innerDecisionApply)); } else { - value1 = value1.substring(2, value1.length()); + attributeId = attributeId.substring(2, attributeId.length()); VariableReferenceType variableReferenceType = new VariableReferenceType(); - variableReferenceType.setVariableId(value1); + variableReferenceType.setVariableId(attributeId); String dataType = dataTypeList.get(index); AttributeValueType decisionConditionAttributeValue = new AttributeValueType(); decisionConditionAttributeValue.setDataType(dataType); - decisionConditionAttributeValue.getContent().add(value2); + decisionConditionAttributeValue.getContent().add(attributeValue); decisionApply.getExpression() .add(new ObjectFactory().createVariableReference(variableReferenceType)); decisionApply.getExpression() @@ -873,11 +824,68 @@ public class DecisionPolicy extends Policy { public String getFunctionDefinitionId(String key) { FunctionDefinition object = - (FunctionDefinition) commonClassDao.getEntityItem(FunctionDefinition.class, "shortname", key); + (FunctionDefinition) commonClassDao.getEntityItem(FunctionDefinition.class, "short_name", key); if (object != null) { return object.getXacmlid(); } return null; } + private AttributeDesignatorType generateAttributeDesignatorDataType(String functionKey) { + AttributeDesignatorType attributeDesignator = new AttributeDesignatorType(); + switch(functionKey.toLowerCase()) + { + case "integer": + attributeDesignator.setDataType(INTEGER_DATATYPE); + break; + default: + attributeDesignator.setDataType(STRING_DATATYPE); + } + return attributeDesignator; + } + + private ApplyType generateApplyTypeDataType(String functionKey) { + ApplyType applyType = new ApplyType(); + switch(functionKey.toLowerCase()) + { + case "integer": + applyType.setFunctionId(FUNTION_INTEGER_ONE_AND_ONLY); + break; + default: + applyType.setFunctionId(FUNCTION_STRING_ONE_AND_ONLY); + } + return applyType; + } + + private AttributeValueType generateAttributeValueTypeDataType(String functionKey) { + AttributeValueType applyType = new AttributeValueType(); + switch(functionKey.toLowerCase()) + { + case "integer": + applyType.setDataType(INTEGER_DATATYPE); + break; + default: + applyType.setDataType(STRING_DATATYPE); + } + return applyType; + } + + private void applyTwoTextFieldRuleAttribute(ApplyType decisionApply, String value1, String functionKey) { + decisionApply.getExpression().add(new ObjectFactory().createApply(generateApplyTypeDataType(value1, functionKey))); + decisionApply.getExpression().add(new ObjectFactory().createApply(generateApplyTypeDataType(value1, functionKey))); + } + + private ApplyType generateApplyTypeDataType(String value1, String functionKey) { + ApplyType innerApply = generateApplyTypeDataType(functionKey); + AttributeDesignatorType attributeDesignator = generateAttributeDesignatorDataType(functionKey); + + attributeDesignator.setCategory(CATEGORY_RESOURCE); + // Here set actual field values + attributeDesignator + .setAttributeId(value1.contains("resource:") ? value1.substring(9) : value1.substring(8)); + innerApply.getExpression() + .add(new ObjectFactory().createAttributeDesignator(attributeDesignator)); + return innerApply; + } + } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/FirewallConfigPolicy.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/FirewallConfigPolicy.java index db7bbd4be..eca473f41 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/FirewallConfigPolicy.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/FirewallConfigPolicy.java @@ -3,6 +3,7 @@ * ONAP-PAP-REST * ================================================================================ * Copyright (C) 2017,2019 AT&T Intellectual Property. All rights reserved. + * Modified Copyright (C) 2019 Bell Canada. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -548,16 +549,7 @@ public class FirewallConfigPolicy extends Policy { value = srcListObj.get("value").toString(); } - if (value!=null){ - value = value.replace("\"", ""); - } - - if (srcListString != null) { - srcListString = srcListString.concat(",").concat(value); - - } else { - srcListString = value; - } + srcListString = getLeftOrRight(srcListString, value); } String srcListInsert = "'"+srcListString+"'"; @@ -578,15 +570,7 @@ public class FirewallConfigPolicy extends Policy { value = destListObj.get("value").toString(); } - if (value!=null){ - value = value.replace("\"", ""); - } - - if (destListString != null) { - destListString = destListString.concat(",").concat(value); - } else { - destListString = value; - } + destListString = getLeftOrRight(destListString, value); } String destListInsert = "'"+destListString+"'"; @@ -606,15 +590,7 @@ public class FirewallConfigPolicy extends Policy { value = destServicesObj.get("value").toString(); } - if (value!=null){ - value = value.replace("\"", ""); - } - - if (destPortListString != null) { - destPortListString = destPortListString.concat(",").concat(value); - } else { - destPortListString = value; - } + destPortListString = getLeftOrRight(destPortListString, value); } String destPortListInsert = "'"+destPortListString+"'"; @@ -640,10 +616,7 @@ public class FirewallConfigPolicy extends Policy { termEntry.setUserCreatedBy(userInfo); dbConnection.save(termEntry); - ActionList actionEntry = new ActionList(); - actionEntry.setActionName(action); - actionEntry.setDescription(action); - dbConnection.save(actionEntry); + saveActionListToDb(dbConnection, action); } } @@ -678,36 +651,7 @@ public class FirewallConfigPolicy extends Policy { //Insert values into GROUPSERVICELIST table if name begins with Group if (isServiceGroup) { - String name = null; - for (int membersIndex = 0; membersIndex< membersArray.size(); membersIndex++) { - JsonObject membersObj = membersArray.getJsonObject(membersIndex); - //String value = membersObj.get("name").toString(); - String type = membersObj.get("type").toString().replace("\"", ""); - - String value = null; - if(type.equals("REFERENCE")||type.equals("GROUP")||type.equals("SERVICE")){ - value = membersObj.get("name").toString(); - } else if (type.equalsIgnoreCase("ANY")){ - value = null; - } else { - value = membersObj.get("value").toString(); - } - - if(value != null){ - value = value.replace("\"", ""); - } - - if (name != null) { - name = name.concat(",").concat(value); - } else { - name = value; - } - } - String nameInsert = "'"+name+"'"; - GroupServiceList groupServiceEntry = new GroupServiceList(); - groupServiceEntry.setGroupName(serviceListName); - groupServiceEntry.setServiceList(nameInsert); - dbConnection.save(groupServiceEntry); + saveGroupServiceListTableToDb(dbConnection, serviceListName, membersArray); } else { //Insert JSON data serviceList table, protollist table, and portlist table String type = svcGroupListobj.get("type").toString(); String transportProtocol = svcGroupListobj.get("transportProtocol").toString(); @@ -716,24 +660,11 @@ public class FirewallConfigPolicy extends Policy { /* * Create Queries to INSERT data into database table and execute */ - ServiceList serviceListEntry = new ServiceList(); - serviceListEntry.setServiceName(serviceListName); - serviceListEntry.setServiceDescription(description); - serviceListEntry.setServiceType(type); - serviceListEntry.setServiceTransProtocol(transportProtocol); - serviceListEntry.setServiceAppProtocol("null"); - serviceListEntry.setServicePorts(ports); - dbConnection.save(serviceListEntry); - - ProtocolList protocolEntry = new ProtocolList(); - protocolEntry.setProtocolName(transportProtocol); - protocolEntry.setDescription(transportProtocol); - dbConnection.save(protocolEntry); - - PortList portListEntry = new PortList(); - portListEntry.setPortName(ports); - portListEntry.setDescription(ports); - dbConnection.save(portListEntry); + saveServiceListToDb(dbConnection, serviceListName, description, type, transportProtocol, ports); + + saveProtocolListToDb(dbConnection, transportProtocol); + + savePortListToDb(dbConnection, ports); } } } @@ -766,68 +697,20 @@ public class FirewallConfigPolicy extends Policy { type = membersObj.get("type").toString().replace("\"", ""); String value = null; - if(type.equals("REFERENCE")||type.equals("GROUP")||type.equals("SERVICE")){ - value = membersObj.get("name").toString(); - } else if (type.equalsIgnoreCase("ANY")){ - value = null; - } else { - value = membersObj.get("value").toString(); - } - - if(value != null){ - value = value.replace("\"", ""); - } - - if (prefixIP != null) { - prefixIP = prefixIP.concat(",").concat(value); - } else { - prefixIP = value; - } + prefixIP = getName(prefixIP, membersObj, type); } String prefixList = "'"+prefixIP+"'"; Boolean isAddressGroup = type.contains("REFERENCE"); if (isAddressGroup) { - AddressGroup addressGroupEntry = new AddressGroup(); - addressGroupEntry.setGroupName(addressGroupName); - addressGroupEntry.setDescription(description); - addressGroupEntry.setServiceList(prefixList); - dbConnection.save(addressGroupEntry); + saveAddressGroupToDb(dbConnection, addressGroupName, description, prefixList); } else { - PrefixList prefixListEntry = new PrefixList(); - prefixListEntry.setPrefixListName(addressGroupName); - prefixListEntry.setDescription(description); - prefixListEntry.setPrefixListValue(prefixList); - dbConnection.save(prefixListEntry); + savePrefixListToDb(dbConnection, addressGroupName, description, prefixList); } } } - - /* - * Remove duplicate values from 'lookup' dictionary tables - */ - //ProtocolList Table - String protoDelete = "DELETE FROM protocollist USING protocollist, protocollist p1 " - + "WHERE protocollist.id > p1.id AND protocollist.protocolname = p1.protocolname;"; - dbConnection.updateQuery(protoDelete); - - //PortList Table - String portListDelete = "DELETE FROM portlist USING portlist, portlist p1 " - + "WHERE portlist.id > p1.id AND portlist.portname = p1.portname; "; - dbConnection.updateQuery(portListDelete); - - //PrefixList Table - String prefixListDelete = "DELETE FROM prefixlist USING prefixlist, prefixlist p1 " - + "WHERE prefixlist.id > p1.id AND prefixlist.pl_name = p1.pl_name AND " - + "prefixlist.pl_value = p1.pl_value AND prefixlist.description = p1.description; "; - dbConnection.updateQuery(prefixListDelete); - - //GroupServiceList - String groupServiceDelete = "DELETE FROM groupservicelist USING groupservicelist, groupservicelist g1 " - + "WHERE groupservicelist.id > g1.id AND groupservicelist.name = g1.name AND " - + "groupservicelist.serviceList = g1.serviceList; "; - dbConnection.updateQuery(groupServiceDelete); + removeDuplicateValuesFromLookup(dbConnection); }catch (Exception e) { PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "FirewallConfigPolicy", "Exception getting Json values"); return false; @@ -840,6 +723,74 @@ public class FirewallConfigPolicy extends Policy { } + /* + * Remove duplicate values from 'lookup' dictionary tables + */ + private void removeDuplicateValuesFromLookup(CommonClassDaoImpl dbConnection) { + String protoDelete = "DELETE FROM protocollist USING protocollist, protocollist p1 " + + "WHERE protocollist.id > p1.id AND protocollist.protocolname = p1.protocolname;"; + dbConnection.updateQuery(protoDelete); + + //PortList Table + String portListDelete = "DELETE FROM portlist USING portlist, portlist p1 " + + "WHERE portlist.id > p1.id AND portlist.portname = p1.portname; "; + dbConnection.updateQuery(portListDelete); + + //PrefixList Table + String prefixListDelete = "DELETE FROM prefixlist USING prefixlist, prefixlist p1 " + + "WHERE prefixlist.id > p1.id AND prefixlist.pl_name = p1.pl_name AND " + + "prefixlist.pl_value = p1.pl_value AND prefixlist.description = p1.description; "; + dbConnection.updateQuery(prefixListDelete); + + //GroupServiceList + String groupServiceDelete = "DELETE FROM groupservicelist USING groupservicelist, groupservicelist g1 " + + "WHERE groupservicelist.id > g1.id AND groupservicelist.name = g1.name AND " + + "groupservicelist.serviceList = g1.serviceList; "; + dbConnection.updateQuery(groupServiceDelete); + } + + private void saveGroupServiceListTableToDb(CommonClassDaoImpl dbConnection, String serviceListName, JsonArray membersArray) { + String name = null; + for (int membersIndex = 0; membersIndex< membersArray.size(); membersIndex++) { + JsonObject membersObj = membersArray.getJsonObject(membersIndex); + String type = membersObj.get("type").toString().replace("\"", ""); + + name = getName(name, membersObj, type); + } + String nameInsert = "'"+name+"'"; + GroupServiceList groupServiceEntry = new GroupServiceList(); + groupServiceEntry.setGroupName(serviceListName); + groupServiceEntry.setServiceList(nameInsert); + dbConnection.save(groupServiceEntry); + } + + private String getName(String name, JsonObject membersObj, String type) { + String value; + if(type.equals("REFERENCE")||type.equals("GROUP")||type.equals("SERVICE")){ + value = membersObj.get("name").toString(); + } else if (type.equalsIgnoreCase("ANY")){ + value = null; + } else { + value = membersObj.get("value").toString(); + } + + name = getLeftOrRight(name, value); + return name; + } + + private String getLeftOrRight(String name, String value) { + if (value != null) { + value = value.replace("\"", ""); + } + + if (name != null) { + name = name.concat(",").concat(value); + } else { + name = value.replace("\"", "");; + } + return name; + } + private Boolean updateFirewallDictionaryData(String jsonBody, String prevJsonBody) { CommonClassDaoImpl dbConnection = new CommonClassDaoImpl(); @@ -950,16 +901,7 @@ public class FirewallConfigPolicy extends Policy { value = srcListObj.get("value").toString(); } - if(value != null){ - value = value.replace("\"", ""); - } - - if (srcListString != null) { - srcListString = srcListString.concat(",").concat(value); - - } else { - srcListString = value; - } + srcListString = getLeftOrRight(srcListString, value); } String srcListInsert = "'"+srcListString+"'"; @@ -980,15 +922,7 @@ public class FirewallConfigPolicy extends Policy { value = destListObj.get("value").toString(); } - if(value != null){ - value = value.replace("\"", ""); - } - - if (destListString != null) { - destListString = destListString.concat(",").concat(value); - } else { - destListString = value; - } + destListString = getLeftOrRight(destListString, value); } String destListInsert = "'"+destListString+"'"; @@ -1008,15 +942,7 @@ public class FirewallConfigPolicy extends Policy { value = destServicesObj.get("value").toString(); } - if(value != null){ - value = value.replace("\"", ""); - } - - if (destPortListString != null) { - destPortListString = destPortListString.concat(",").concat(value); - } else { - destPortListString = value; - } + destPortListString = getLeftOrRight(destPortListString, value); } String destPortListInsert = "'"+destPortListString+"'"; @@ -1044,10 +970,7 @@ public class FirewallConfigPolicy extends Policy { List<Object> actionResult = dbConnection.getDataById(ActionList.class, "actionName", action); if(actionResult == null || actionResult.isEmpty()){ - ActionList actionEntry = new ActionList(); - actionEntry.setActionName(action); - actionEntry.setDescription(action); - dbConnection.save(actionEntry); + saveActionListToDb(dbConnection, action); } } } @@ -1088,35 +1011,7 @@ public class FirewallConfigPolicy extends Policy { dbConnection.delete(groupEntry); } - String name = null; - for (int membersIndex = 0; membersIndex < membersArray.size(); membersIndex++) { - JsonObject membersObj = membersArray.getJsonObject(membersIndex); - String type = membersObj.get("type").toString().replace("\"", ""); - - String value = null; - if(type.equals("REFERENCE")||type.equals("GROUP")||type.equals("SERVICE")){ - value = membersObj.get("name").toString(); - } else if (type.equalsIgnoreCase("ANY")){ - value = null; - } else { - value = membersObj.get("value").toString(); - } - - if(value != null){ - value = value.replace("\"", ""); - } - - if (name != null) { - name = name.concat(",").concat(value); - } else { - name = value; - } - } - String nameInsert = "'"+name+"'"; - GroupServiceList groupServiceEntry = new GroupServiceList(); - groupServiceEntry.setGroupName(groupName); - groupServiceEntry.setServiceList(nameInsert); - dbConnection.save(groupServiceEntry); + saveGroupServiceListTableToDb(dbConnection, groupName, membersArray); } else { //Insert JSON data serviceGroup table, protocollist table, and portlist table String type = svcGroupListobj.get("type").toString().replace('"', '\''); String transportProtocol = svcGroupListobj.get("transportProtocol").toString().replace('"', '\''); @@ -1128,29 +1023,16 @@ public class FirewallConfigPolicy extends Policy { dbConnection.delete(serviceEntry); } - ServiceList serviceListEntry = new ServiceList(); - serviceListEntry.setServiceName(groupName); - serviceListEntry.setServiceDescription(description); - serviceListEntry.setServiceType(type); - serviceListEntry.setServiceTransProtocol(transportProtocol); - serviceListEntry.setServiceAppProtocol("null"); - serviceListEntry.setServicePorts(ports); - dbConnection.save(serviceListEntry); + saveServiceListToDb(dbConnection, groupName, description, type, transportProtocol, ports); List<Object> protocolResult = dbConnection.getDataById(ProtocolList.class, "protocolName", transportProtocol); if(protocolResult == null || protocolResult.isEmpty()){ - ProtocolList protocolEntry = new ProtocolList(); - protocolEntry.setProtocolName(transportProtocol); - protocolEntry.setDescription(transportProtocol); - dbConnection.save(protocolEntry); + saveProtocolListToDb(dbConnection, transportProtocol); } List<Object> portResult = dbConnection.getDataById(PortList.class, "portName", ports); if(portResult == null || portResult.isEmpty()){ - PortList portEntry = new PortList(); - portEntry.setPortName(ports); - portEntry.setDescription(ports); - dbConnection.save(portEntry); + savePortListToDb(dbConnection, ports); } } } @@ -1184,23 +1066,7 @@ public class FirewallConfigPolicy extends Policy { type = membersObj.get("type").toString().replace("\"", ""); String value = null; - if(type.equals("REFERENCE")||type.equals("GROUP")||type.equals("SERVICE")){ - value = membersObj.get("name").toString(); - } else if (type.equalsIgnoreCase("ANY")){ - value = null; - } else { - value = membersObj.get("value").toString(); - } - - if(value != null){ - value = value.replace("\"", ""); - } - - if (prefixIP != null) { - prefixIP = prefixIP.concat(",").concat(value); - } else { - prefixIP = value; - } + prefixIP = getName(prefixIP, membersObj, type); } String prefixList = "'"+prefixIP+"'"; @@ -1212,51 +1078,19 @@ public class FirewallConfigPolicy extends Policy { AddressGroup addressGroupEntry = (AddressGroup) result.get(0); dbConnection.delete(addressGroupEntry); } - AddressGroup newAddressGroup = new AddressGroup(); - newAddressGroup.setGroupName(addressGroupName); - newAddressGroup.setDescription(description); - newAddressGroup.setServiceList(prefixList); - dbConnection.save(newAddressGroup); + saveAddressGroupToDb(dbConnection, addressGroupName, description, prefixList); } else { List<Object> result = dbConnection.getDataById(PrefixList.class, "prefixListName", addressGroupName); if(result != null && !result.isEmpty()){ PrefixList prefixListEntry = (PrefixList) result.get(0); dbConnection.delete(prefixListEntry); } - PrefixList newPrefixList = new PrefixList(); - newPrefixList.setPrefixListName(addressGroupName); - newPrefixList.setDescription(description); - newPrefixList.setPrefixListValue(prefixList); - dbConnection.save(newPrefixList); + savePrefixListToDb(dbConnection, addressGroupName, description, prefixList); } } } } - - /* - * Remove duplicate values from 'lookup' dictionary tables - */ - //ProtocolList Table - String protoDelete = "DELETE FROM protocollist USING protocollist, protocollist p1 " - + "WHERE protocollist.id > p1.id AND protocollist.protocolname = p1.protocolname;"; - dbConnection.updateQuery(protoDelete); - - //PortList Table - String portListDelete = "DELETE FROM portlist USING portlist, portlist p1 " - + "WHERE portlist.id > p1.id AND portlist.portname = p1.portname; "; - dbConnection.updateQuery(portListDelete); - - //PrefixList Table - String prefixListDelete = "DELETE FROM prefixlist USING prefixlist, prefixlist p1 " - + "WHERE prefixlist.id > p1.id AND prefixlist.pl_name = p1.pl_name AND " - + "prefixlist.pl_value = p1.pl_value AND prefixlist.description = p1.description; "; - dbConnection.updateQuery(prefixListDelete); - - //GroupServiceList - String groupServiceDelete = "DELETE FROM groupservicelist USING groupservicelist, groupservicelist g1 " - + "WHERE groupservicelist.id > g1.id AND groupservicelist.name = g1.name AND " - + "groupservicelist.serviceList = g1.serviceList; "; - dbConnection.updateQuery(groupServiceDelete); + removeDuplicateValuesFromLookup(dbConnection); }catch (Exception e) { PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "FirewallConfigPolicy", "Exception executing Firewall queries"); return false; @@ -1268,6 +1102,54 @@ public class FirewallConfigPolicy extends Policy { } + private void saveActionListToDb(CommonClassDaoImpl dbConnection, String action) { + ActionList actionEntry = new ActionList(); + actionEntry.setActionName(action); + actionEntry.setDescription(action); + dbConnection.save(actionEntry); + } + + private void savePortListToDb(CommonClassDaoImpl dbConnection, String ports) { + PortList portEntry = new PortList(); + portEntry.setPortName(ports); + portEntry.setDescription(ports); + dbConnection.save(portEntry); + } + + private void saveProtocolListToDb(CommonClassDaoImpl dbConnection, String transportProtocol) { + ProtocolList protocolEntry = new ProtocolList(); + protocolEntry.setProtocolName(transportProtocol); + protocolEntry.setDescription(transportProtocol); + dbConnection.save(protocolEntry); + } + + private void saveServiceListToDb(CommonClassDaoImpl dbConnection, String groupName, String description, String type, String transportProtocol, String ports) { + ServiceList serviceListEntry = new ServiceList(); + serviceListEntry.setServiceName(groupName); + serviceListEntry.setServiceDescription(description); + serviceListEntry.setServiceType(type); + serviceListEntry.setServiceTransProtocol(transportProtocol); + serviceListEntry.setServiceAppProtocol("null"); + serviceListEntry.setServicePorts(ports); + dbConnection.save(serviceListEntry); + } + + private void savePrefixListToDb(CommonClassDaoImpl dbConnection, String addressGroupName, String description, String prefixList) { + PrefixList newPrefixList = new PrefixList(); + newPrefixList.setPrefixListName(addressGroupName); + newPrefixList.setDescription(description); + newPrefixList.setPrefixListValue(prefixList); + dbConnection.save(newPrefixList); + } + + private void saveAddressGroupToDb(CommonClassDaoImpl dbConnection, String addressGroupName, String description, String prefixList) { + AddressGroup newAddressGroup = new AddressGroup(); + newAddressGroup.setGroupName(addressGroupName); + newAddressGroup.setDescription(description); + newAddressGroup.setServiceList(prefixList); + dbConnection.save(newAddressGroup); + } + private JsonObject stringToJson(String jsonString) { //Read jsonBody to JsonObject StringReader in = new StringReader(jsonString); diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/MicroServiceDictionaryController.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/MicroServiceDictionaryController.java index 1f1eca5bd..ee274d2a7 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/MicroServiceDictionaryController.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/MicroServiceDictionaryController.java @@ -2,14 +2,14 @@ * ============LICENSE_START======================================================= * ONAP-PAP-REST * ================================================================================ - * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-2019 AT&T Intellectual Property. 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. @@ -20,6 +20,10 @@ package org.onap.policy.pap.xacml.rest.controller; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.gson.Gson; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; @@ -28,10 +32,8 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; - import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; - import org.apache.commons.lang.StringUtils; import org.json.JSONObject; import org.onap.policy.common.logging.flexlogger.FlexLogger; @@ -41,6 +43,7 @@ import org.onap.policy.pap.xacml.rest.util.DictionaryUtils; import org.onap.policy.pap.xacml.rest.util.JsonMessage; import org.onap.policy.rest.dao.CommonClassDao; import org.onap.policy.rest.jpa.DCAEuuid; +import org.onap.policy.rest.jpa.DictionaryData; import org.onap.policy.rest.jpa.MicroServiceAttribute; import org.onap.policy.rest.jpa.MicroServiceConfigName; import org.onap.policy.rest.jpa.MicroServiceLocation; @@ -57,27 +60,22 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.ModelAndView; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.gson.Gson; - @Controller public class MicroServiceDictionaryController { - private static final Logger LOGGER = FlexLogger.getLogger(MicroServiceDictionaryController.class); + private static final Logger LOGGER = FlexLogger.getLogger(MicroServiceDictionaryController.class); private static CommonClassDao commonClassDao; - private static String successMapKey= "successMapKey"; + private static String successMapKey = "successMapKey"; private static String successMsg = "success"; private static String operation = "operation"; private static String getDictionary = "getDictionary"; private static String errorMsg = "error"; private static String dictionaryDBQuery = "dictionaryDBQuery"; - private LinkedHashMap<String,MSAttributeObject > classMap; + private LinkedHashMap<String, MSAttributeObject> classMap; private List<String> modelList = new ArrayList<>(); private static String apiflag = "apiflag"; - private static String dictionaryFields ="dictionaryFields"; + private static String dictionaryFields = "dictionaryFields"; private static String update = "update"; private static String duplicateResponseString = "Duplicate"; private static String microServiceModelsDictionaryDatas = "microServiceModelsDictionaryDatas"; @@ -91,19 +89,21 @@ public class MicroServiceDictionaryController { private static String microServiceLocationDatas = "microServiceLocationDictionaryDatas"; private static String microServiceAttributeDatas = "microServiceAttributeDictionaryDatas"; private static String microServiceHeaderDefaultDatas = "microServiceHeaderDefaultDatas"; + private static final String MICROSERVICEDICTNAMEDATAS = "microServiceDictionaryDatas"; - public MicroServiceDictionaryController(){ + public MicroServiceDictionaryController() { super(); - } + } - private DictionaryUtils getDictionaryUtilsInstance(){ + private DictionaryUtils getDictionaryUtilsInstance() { return DictionaryUtils.getDictionaryUtils(); } - + @Autowired - public MicroServiceDictionaryController(CommonClassDao commonClassDao){ + public MicroServiceDictionaryController(CommonClassDao commonClassDao) { MicroServiceDictionaryController.commonClassDao = commonClassDao; } + public static void setCommonClassDao(CommonClassDao commonClassDao) { MicroServiceDictionaryController.commonClassDao = commonClassDao; } @@ -112,20 +112,23 @@ public class MicroServiceDictionaryController { private MicroServiceModels newModel; - @RequestMapping(value={"/get_DCAEUUIDDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getDCAEUUIDDictionaryByNameEntityData(HttpServletResponse response){ + @RequestMapping(value = {"/get_DCAEUUIDDataByName"}, method = {RequestMethod.GET}, + produces = MediaType.APPLICATION_JSON_VALUE) + public void getDCAEUUIDDictionaryByNameEntityData(HttpServletResponse response) { DictionaryUtils utils = getDictionaryUtilsInstance(); utils.getDataByEntity(response, dcaeUUIDDatas, "name", DCAEuuid.class); } - @RequestMapping(value={"/get_DCAEUUIDData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getDCAEUUIDDictionaryEntityData(HttpServletResponse response){ + @RequestMapping(value = {"/get_DCAEUUIDData"}, method = {RequestMethod.GET}, + produces = MediaType.APPLICATION_JSON_VALUE) + public void getDCAEUUIDDictionaryEntityData(HttpServletResponse response) { DictionaryUtils utils = getDictionaryUtilsInstance(); utils.getData(response, dcaeUUIDDatas, DCAEuuid.class); } - @RequestMapping(value={"/ms_dictionary/save_dcaeUUID"}, method={RequestMethod.POST}) - public ModelAndView saveDCAEUUIDDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + @RequestMapping(value = {"/ms_dictionary/save_dcaeUUID"}, method = {RequestMethod.POST}) + public ModelAndView saveDCAEUUIDDictionary(HttpServletRequest request, HttpServletResponse response) + throws IOException { DictionaryUtils utils = getDictionaryUtilsInstance(); try { boolean fromAPI = utils.isRequestFromAPI(request); @@ -133,65 +136,143 @@ public class MicroServiceDictionaryController { mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); JsonNode root = mapper.readTree(request.getReader()); DCAEuuid dCAEuuid; - if(fromAPI){ + if (fromAPI) { dCAEuuid = mapper.readValue(root.get(dictionaryFields).toString(), DCAEuuid.class); - }else{ + } else { dCAEuuid = mapper.readValue(root.get("dcaeUUIDDictionaryData").toString(), DCAEuuid.class); } - - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(dCAEuuid.getName(), "name", DCAEuuid.class); + + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(dCAEuuid.getName(), "name", DCAEuuid.class); boolean duplicateflag = false; - if(duplicateData != null && !duplicateData.isEmpty()){ + if (duplicateData != null && !duplicateData.isEmpty()) { DCAEuuid data = (DCAEuuid) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + if (request.getParameter(operation) != null && "update".equals(request.getParameter(operation))) { dCAEuuid.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != dCAEuuid.getId()))){ + } else if ((request.getParameter(operation) != null + && !"update".equals(request.getParameter(operation))) + || (request.getParameter(operation) == null && (data.getId() != dCAEuuid.getId()))) { duplicateflag = true; } } String responseString = null; - if(!duplicateflag){ - if(dCAEuuid.getId() == 0){ + if (!duplicateflag) { + if (dCAEuuid.getId() == 0) { commonClassDao.save(dCAEuuid); - }else{ + } else { commonClassDao.update(dCAEuuid); } responseString = mapper.writeValueAsString(commonClassDao.getData(DCAEuuid.class)); - }else{ + } else { responseString = duplicateResponseString; } - if(fromAPI){ + if (fromAPI) { return utils.getResultForApi(responseString); - }else{ + } else { utils.setResponseData(response, dcaeUUIDDatas, responseString); } - }catch (Exception e){ + } catch (Exception e) { utils.setErrorResponseData(response, e); } return null; } - @RequestMapping(value={"/ms_dictionary/remove_dcaeuuid"}, method={RequestMethod.POST}) + @RequestMapping(value = {"/ms_dictionary/remove_dcaeuuid"}, method = {RequestMethod.POST}) public void removeDCAEUUIDDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { DictionaryUtils utils = getDictionaryUtilsInstance(); utils.removeData(request, response, dcaeUUIDDatas, DCAEuuid.class); } - @RequestMapping(value={"/get_MicroServiceConfigNameDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getMicroServiceConfigNameByNameDictionaryEntityData(HttpServletResponse response){ + @RequestMapping(value = {"/get_MicroServiceConfigNameDataByName"}, method = {RequestMethod.GET}, + produces = MediaType.APPLICATION_JSON_VALUE) + public void getMicroServiceConfigNameByNameDictionaryEntityData(HttpServletResponse response) { DictionaryUtils utils = getDictionaryUtilsInstance(); utils.getDataByEntity(response, microServiceConfigNameDatas, "name", MicroServiceConfigName.class); } - @RequestMapping(value={"/get_MicroServiceConfigNameData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getMicroServiceConfigNameDictionaryEntityData(HttpServletResponse response){ + @RequestMapping(value = {"/get_MicroServiceConfigNameData"}, method = {RequestMethod.GET}, + produces = MediaType.APPLICATION_JSON_VALUE) + public void getMicroServiceConfigNameDictionaryEntityData(HttpServletResponse response) { DictionaryUtils utils = getDictionaryUtilsInstance(); utils.getData(response, microServiceConfigNameDatas, MicroServiceConfigName.class); } - @RequestMapping(value={"/ms_dictionary/save_configName"}, method={RequestMethod.POST}) - public ModelAndView saveMicroServiceConfigNameDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + @RequestMapping(value = {"/get_MicroServiceDictData"}, method = {RequestMethod.GET}, + produces = MediaType.APPLICATION_JSON_VALUE) + public void getMicroServiceDictNameDictionaryEntityData(HttpServletResponse response) { + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, MICROSERVICEDICTNAMEDATAS, DictionaryData.class); + } + + /** + * Save dictionary data. + * + * @param request the request + * @param response the response + * @return the model and view + * @throws IOException Signals that an I/O exception has occurred. + */ + // save_DictionaryData + @RequestMapping(value = {"/ms_dictionary/save_DictionaryData"}, method = {RequestMethod.POST}) + public ModelAndView saveDictionaryData(HttpServletRequest request, HttpServletResponse response) + throws IOException { + DictionaryUtils dictUtil = getDictionaryUtilsInstance(); + try { + boolean fromApi = dictUtil.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + DictionaryData dictionaryData; + if (fromApi) { + dictionaryData = mapper.readValue(root.get(dictionaryFields).toString(), DictionaryData.class); + } else { + dictionaryData = mapper.readValue(root.get(MICROSERVICEDICTNAMEDATAS).toString(), DictionaryData.class); + } + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(dictionaryData.getDictionaryName(), + "dictionaryName", DictionaryData.class); + boolean duplicateflag = false; + if (duplicateData != null && !duplicateData.isEmpty()) { + DictionaryData data = (DictionaryData) duplicateData.get(0); + if (request.getParameter(operation) != null && "update".equals(request.getParameter(operation))) { + dictionaryData.setId(data.getId()); + } else if ((request.getParameter(operation) != null + && !"update".equals(request.getParameter(operation))) + || (request.getParameter(operation) == null && (data.getId() != dictionaryData.getId()))) { + duplicateflag = true; + } + } + String responseString = null; + if (!duplicateflag) { + if (dictionaryData.getId() == 0) { + commonClassDao.save(dictionaryData); + } else { + commonClassDao.update(dictionaryData); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(DictionaryData.class)); + } else { + responseString = duplicateResponseString; + } + if (fromApi) { + return dictUtil.getResultForApi(responseString); + } else { + dictUtil.setResponseData(response, MICROSERVICEDICTNAMEDATAS, responseString); + } + } catch (Exception e) { + dictUtil.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value = {"/ms_dictionary/remove_msDictionaryData"}, method = {RequestMethod.POST}) + public void removeMicroServiceDictionaryData(HttpServletRequest request, HttpServletResponse response) + throws IOException { + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, MICROSERVICEDICTNAMEDATAS, DictionaryData.class); + } + + // + @RequestMapping(value = {"/ms_dictionary/save_configName"}, method = {RequestMethod.POST}) + public ModelAndView saveMicroServiceConfigNameDictionary(HttpServletRequest request, HttpServletResponse response) + throws IOException { DictionaryUtils utils = getDictionaryUtilsInstance(); try { boolean fromAPI = utils.isRequestFromAPI(request); @@ -199,64 +280,73 @@ public class MicroServiceDictionaryController { mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); JsonNode root = mapper.readTree(request.getReader()); MicroServiceConfigName microServiceConfigName; - if(fromAPI){ - microServiceConfigName = mapper.readValue(root.get(dictionaryFields).toString(), MicroServiceConfigName.class); - }else{ - microServiceConfigName = mapper.readValue(root.get("microServiceConfigNameDictionaryData").toString(), MicroServiceConfigName.class); + if (fromAPI) { + microServiceConfigName = + mapper.readValue(root.get(dictionaryFields).toString(), MicroServiceConfigName.class); + } else { + microServiceConfigName = mapper.readValue(root.get("microServiceConfigNameDictionaryData").toString(), + MicroServiceConfigName.class); } - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(microServiceConfigName.getName(), "name", MicroServiceConfigName.class); + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(microServiceConfigName.getName(), "name", + MicroServiceConfigName.class); boolean duplicateflag = false; - if(duplicateData != null && !duplicateData.isEmpty()){ + if (duplicateData != null && !duplicateData.isEmpty()) { MicroServiceConfigName data = (MicroServiceConfigName) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + if (request.getParameter(operation) != null && "update".equals(request.getParameter(operation))) { microServiceConfigName.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != microServiceConfigName.getId()))){ + } else if ((request.getParameter(operation) != null + && !"update".equals(request.getParameter(operation))) + || (request.getParameter(operation) == null + && (data.getId() != microServiceConfigName.getId()))) { duplicateflag = true; } } String responseString = null; - if(!duplicateflag){ - if(microServiceConfigName.getId() == 0){ + if (!duplicateflag) { + if (microServiceConfigName.getId() == 0) { commonClassDao.save(microServiceConfigName); - }else{ + } else { commonClassDao.update(microServiceConfigName); } responseString = mapper.writeValueAsString(commonClassDao.getData(MicroServiceConfigName.class)); - }else{ + } else { responseString = duplicateResponseString; } - if(fromAPI){ + if (fromAPI) { return utils.getResultForApi(responseString); - }else{ + } else { utils.setResponseData(response, microServiceConfigNameDatas, responseString); } - }catch (Exception e){ + } catch (Exception e) { utils.setErrorResponseData(response, e); } return null; } - @RequestMapping(value={"/ms_dictionary/remove_msConfigName"}, method={RequestMethod.POST}) - public void removeMicroServiceConfigNameDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { + @RequestMapping(value = {"/ms_dictionary/remove_msConfigName"}, method = {RequestMethod.POST}) + public void removeMicroServiceConfigNameDictionary(HttpServletRequest request, HttpServletResponse response) + throws IOException { DictionaryUtils utils = getDictionaryUtilsInstance(); utils.removeData(request, response, microServiceConfigNameDatas, MicroServiceConfigName.class); } - @RequestMapping(value={"/get_MicroServiceLocationDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getMicroServiceLocationByNameDictionaryEntityData(HttpServletResponse response){ + @RequestMapping(value = {"/get_MicroServiceLocationDataByName"}, method = {RequestMethod.GET}, + produces = MediaType.APPLICATION_JSON_VALUE) + public void getMicroServiceLocationByNameDictionaryEntityData(HttpServletResponse response) { DictionaryUtils utils = getDictionaryUtilsInstance(); utils.getDataByEntity(response, microServiceLocationDatas, "name", MicroServiceLocation.class); } - @RequestMapping(value={"/get_MicroServiceLocationData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getMicroServiceLocationDictionaryEntityData(HttpServletResponse response){ + @RequestMapping(value = {"/get_MicroServiceLocationData"}, method = {RequestMethod.GET}, + produces = MediaType.APPLICATION_JSON_VALUE) + public void getMicroServiceLocationDictionaryEntityData(HttpServletResponse response) { DictionaryUtils utils = getDictionaryUtilsInstance(); utils.getData(response, microServiceLocationDatas, MicroServiceLocation.class); } - @RequestMapping(value={"/ms_dictionary/save_location"}, method={RequestMethod.POST}) - public ModelAndView saveMicroServiceLocationDictionary(HttpServletRequest request, HttpServletResponse response)throws IOException{ + @RequestMapping(value = {"/ms_dictionary/save_location"}, method = {RequestMethod.POST}) + public ModelAndView saveMicroServiceLocationDictionary(HttpServletRequest request, HttpServletResponse response) + throws IOException { DictionaryUtils utils = getDictionaryUtilsInstance(); try { boolean fromAPI = utils.isRequestFromAPI(request); @@ -264,207 +354,227 @@ public class MicroServiceDictionaryController { mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); JsonNode root = mapper.readTree(request.getReader()); MicroServiceLocation microServiceLocation; - if(fromAPI){ - microServiceLocation = mapper.readValue(root.get(dictionaryFields).toString(), MicroServiceLocation.class); - }else{ - microServiceLocation = mapper.readValue(root.get("microServiceLocationDictionaryData").toString(), MicroServiceLocation.class); + if (fromAPI) { + microServiceLocation = + mapper.readValue(root.get(dictionaryFields).toString(), MicroServiceLocation.class); + } else { + microServiceLocation = mapper.readValue(root.get("microServiceLocationDictionaryData").toString(), + MicroServiceLocation.class); } - - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(microServiceLocation.getName(), "name", MicroServiceLocation.class); + + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(microServiceLocation.getName(), "name", + MicroServiceLocation.class); boolean duplicateflag = false; - if(duplicateData != null && !duplicateData.isEmpty()){ + if (duplicateData != null && !duplicateData.isEmpty()) { MicroServiceLocation data = (MicroServiceLocation) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + if (request.getParameter(operation) != null && "update".equals(request.getParameter(operation))) { microServiceLocation.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != microServiceLocation.getId()))){ + } else if ((request.getParameter(operation) != null + && !"update".equals(request.getParameter(operation))) + || (request.getParameter(operation) == null + && (data.getId() != microServiceLocation.getId()))) { duplicateflag = true; } } String responseString = null; - if(!duplicateflag){ - if(microServiceLocation.getId() == 0){ + if (!duplicateflag) { + if (microServiceLocation.getId() == 0) { commonClassDao.save(microServiceLocation); - }else{ + } else { commonClassDao.update(microServiceLocation); } responseString = mapper.writeValueAsString(commonClassDao.getData(MicroServiceLocation.class)); - }else{ + } else { responseString = duplicateResponseString; } - if(fromAPI){ + if (fromAPI) { return utils.getResultForApi(responseString); - }else{ + } else { utils.setResponseData(response, microServiceLocationDatas, responseString); } - }catch (Exception e){ + } catch (Exception e) { utils.setErrorResponseData(response, e); } return null; } - @RequestMapping(value={"/ms_dictionary/remove_msLocation"}, method={RequestMethod.POST}) - public void removeMicroServiceLocationDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { + @RequestMapping(value = {"/ms_dictionary/remove_msLocation"}, method = {RequestMethod.POST}) + public void removeMicroServiceLocationDictionary(HttpServletRequest request, HttpServletResponse response) + throws IOException { DictionaryUtils utils = getDictionaryUtilsInstance(); utils.removeData(request, response, microServiceLocationDatas, MicroServiceLocation.class); } - @RequestMapping(value={"/get_MicroServiceAttributeDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getMicroServiceAttributeByNameDictionaryEntityData(HttpServletResponse response){ + @RequestMapping(value = {"/get_MicroServiceAttributeDataByName"}, method = {RequestMethod.GET}, + produces = MediaType.APPLICATION_JSON_VALUE) + public void getMicroServiceAttributeByNameDictionaryEntityData(HttpServletResponse response) { DictionaryUtils utils = getDictionaryUtilsInstance(); utils.getDataByEntity(response, microServiceAttributeDatas, "name", MicroServiceAttribute.class); } - - @RequestMapping(value={"/get_MicroServiceAttributeData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getMicroServiceAttributeDictionaryEntityData(HttpServletResponse response){ + + @RequestMapping(value = {"/get_MicroServiceAttributeData"}, method = {RequestMethod.GET}, + produces = MediaType.APPLICATION_JSON_VALUE) + public void getMicroServiceAttributeDictionaryEntityData(HttpServletResponse response) { DictionaryUtils utils = getDictionaryUtilsInstance(); utils.getData(response, microServiceAttributeDatas, MicroServiceAttribute.class); } - - @RequestMapping(value={"/ms_dictionary/save_modelAttribute"}, method={RequestMethod.POST}) - public ModelAndView saveMicroServiceAttributeDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + @RequestMapping(value = {"/ms_dictionary/save_modelAttribute"}, method = {RequestMethod.POST}) + public ModelAndView saveMicroServiceAttributeDictionary(HttpServletRequest request, HttpServletResponse response) + throws IOException { DictionaryUtils utils = getDictionaryUtilsInstance(); try { boolean fromAPI = utils.isRequestFromAPI(request); ObjectMapper mapper = new ObjectMapper(); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); JsonNode root = mapper.readTree(request.getReader()); - + MicroServiceAttribute microServiceAttribute; String checkValue; if (fromAPI) { - microServiceAttribute = mapper.readValue(root.get(dictionaryFields).toString(), MicroServiceAttribute.class); + microServiceAttribute = + mapper.readValue(root.get(dictionaryFields).toString(), MicroServiceAttribute.class); } else { - microServiceAttribute = mapper.readValue(root.get("modelAttributeDictionaryData").toString(), MicroServiceAttribute.class); + microServiceAttribute = mapper.readValue(root.get("modelAttributeDictionaryData").toString(), + MicroServiceAttribute.class); } - checkValue = microServiceAttribute.getName() + ":" + microServiceAttribute.getValue() + ":" + microServiceAttribute.getModelName(); - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(checkValue, "name:value:modelName", MicroServiceAttribute.class); + checkValue = microServiceAttribute.getName() + ":" + microServiceAttribute.getValue() + ":" + + microServiceAttribute.getModelName(); + List<Object> duplicateData = + commonClassDao.checkDuplicateEntry(checkValue, "name:value:modelName", MicroServiceAttribute.class); boolean duplicateflag = false; - if(duplicateData != null && !duplicateData.isEmpty()){ + if (duplicateData != null && !duplicateData.isEmpty()) { MicroServiceAttribute data = (MicroServiceAttribute) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + if (request.getParameter(operation) != null && "update".equals(request.getParameter(operation))) { microServiceAttribute.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != microServiceAttribute.getId()))){ + } else if ((request.getParameter(operation) != null + && !"update".equals(request.getParameter(operation))) + || (request.getParameter(operation) == null + && (data.getId() != microServiceAttribute.getId()))) { duplicateflag = true; } } String responseString = null; - if(!duplicateflag){ - if(microServiceAttribute.getId() == 0){ + if (!duplicateflag) { + if (microServiceAttribute.getId() == 0) { commonClassDao.save(microServiceAttribute); - }else{ + } else { commonClassDao.update(microServiceAttribute); } responseString = mapper.writeValueAsString(commonClassDao.getData(MicroServiceAttribute.class)); - }else{ + } else { responseString = duplicateResponseString; } - if(fromAPI){ + if (fromAPI) { return utils.getResultForApi(responseString); - }else{ + } else { utils.setResponseData(response, microServiceAttributeDatas, responseString); } - } - catch (Exception e){ + } catch (Exception e) { utils.setErrorResponseData(response, e); } return null; } - - @RequestMapping(value={"/ms_dictionary/remove_modelAttribute"}, method={RequestMethod.POST}) - public void removeMicroServiceAttributeDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + @RequestMapping(value = {"/ms_dictionary/remove_modelAttribute"}, method = {RequestMethod.POST}) + public void removeMicroServiceAttributeDictionary(HttpServletRequest request, HttpServletResponse response) + throws IOException { DictionaryUtils utils = getDictionaryUtilsInstance(); utils.removeData(request, response, microServiceAttributeDatas, MicroServiceAttribute.class); } - - @RequestMapping(value={"/get_MicroServiceModelsDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getMicroServiceModelsDictionaryByNameEntityData(HttpServletResponse response){ + + @RequestMapping(value = {"/get_MicroServiceModelsDataByName"}, method = {RequestMethod.GET}, + produces = MediaType.APPLICATION_JSON_VALUE) + public void getMicroServiceModelsDictionaryByNameEntityData(HttpServletResponse response) { DictionaryUtils utils = getDictionaryUtilsInstance(); utils.getDataByEntity(response, microServiceModelsDictionaryDatas, modelName, MicroServiceModels.class); } - @RequestMapping(value={"/get_MicroServiceModelsDataByVersion"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getMicroServiceModelsDictionaryByVersionEntityData(HttpServletRequest request, HttpServletResponse response){ - try{ + @RequestMapping(value = {"/get_MicroServiceModelsDataByVersion"}, method = {RequestMethod.GET}, + produces = MediaType.APPLICATION_JSON_VALUE) + public void getMicroServiceModelsDictionaryByVersionEntityData(HttpServletRequest request, + HttpServletResponse response) { + try { Map<String, Object> model = new HashMap<>(); ObjectMapper mapper = new ObjectMapper(); JsonNode root = mapper.readTree(request.getReader()); String modelName = null; - if (root.get(microServiceModelsDictionaryData).has(modelName)){ + if (root.get(microServiceModelsDictionaryData).has(modelName)) { modelName = root.get(microServiceModelsDictionaryData).get(modelName).asText().replace("\"", ""); } - if (modelName!=null){ - model.put(microServiceModelsDictionaryDatas, mapper.writeValueAsString(commonClassDao.getDataById(MicroServiceModels.class, modelName, modelName))); - } else{ - model.put(errorMsg, "No model name given"); - } + if (modelName != null) { + model.put(microServiceModelsDictionaryDatas, mapper.writeValueAsString( + commonClassDao.getDataById(MicroServiceModels.class, modelName, modelName))); + } else { + model.put(errorMsg, "No model name given"); + } JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model)); JSONObject j = new JSONObject(msg); response.getWriter().write(j.toString()); - } - catch (Exception e){ + } catch (Exception e) { LOGGER.error(e); } } - - @RequestMapping(value={"/get_MicroServiceModelsData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getMicroServiceModelsDictionaryEntityData(HttpServletResponse response){ + + @RequestMapping(value = {"/get_MicroServiceModelsData"}, method = {RequestMethod.GET}, + produces = MediaType.APPLICATION_JSON_VALUE) + public void getMicroServiceModelsDictionaryEntityData(HttpServletResponse response) { DictionaryUtils utils = getDictionaryUtilsInstance(); utils.getData(response, microServiceModelsDictionaryDatas, MicroServiceModels.class); } - @RequestMapping(value={"/get_MicroServiceModelsDataServiceVersion"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getMicroServiceModelsDictionaryEntityDataServiceVersion(HttpServletResponse response){ - try{ + @RequestMapping(value = {"/get_MicroServiceModelsDataServiceVersion"}, method = {RequestMethod.GET}, + produces = MediaType.APPLICATION_JSON_VALUE) + public void getMicroServiceModelsDictionaryEntityDataServiceVersion(HttpServletResponse response) { + try { Map<String, Object> model = new HashMap<>(); ObjectMapper mapper = new ObjectMapper(); List<String> data = new ArrayList<>(); List<Object> datas = commonClassDao.getData(MicroServiceModels.class); - for(int i = 0; i < datas.size(); i++){ + for (int i = 0; i < datas.size(); i++) { MicroServiceModels msmodel = (MicroServiceModels) datas.get(i); - if (!data.contains(msmodel.getModelName())){ + if (!data.contains(msmodel.getModelName())) { data.add(msmodel.getModelName() + "-v" + msmodel.getVersion()); } } model.put(microServiceModelsDictionaryDatas, mapper.writeValueAsString(data)); JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model)); JSONObject j = new JSONObject(msg); - response.addHeader("successMapKey", "success"); + response.addHeader("successMapKey", "success"); response.addHeader("operation", "getDictionary"); response.getWriter().write(j.toString()); - - } - catch (Exception e){ - response.setStatus(HttpServletResponse.SC_BAD_REQUEST); + + } catch (Exception e) { + response.setStatus(HttpServletResponse.SC_BAD_REQUEST); response.addHeader("error", "dictionaryDBQuery"); LOGGER.error(e); } } - - @RequestMapping(value={"/get_MicroServiceModelsDataByClass"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getMicroServiceModelsDictionaryClassEntityData(HttpServletResponse response){ - try{ + + @RequestMapping(value = {"/get_MicroServiceModelsDataByClass"}, method = {RequestMethod.GET}, + produces = MediaType.APPLICATION_JSON_VALUE) + public void getMicroServiceModelsDictionaryClassEntityData(HttpServletResponse response) { + try { Map<String, Object> model = new HashMap<>(); ObjectMapper mapper = new ObjectMapper(); model.put("microServiceModelsDictionaryClassDatas", mapper.writeValueAsString(modelList)); JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model)); JSONObject j = new JSONObject(msg); - response.addHeader(successMapKey, successMsg); + response.addHeader(successMapKey, successMsg); response.addHeader(operation, getDictionary); response.getWriter().write(j.toString()); - - } - catch (Exception e){ - response.setStatus(HttpServletResponse.SC_BAD_REQUEST); + + } catch (Exception e) { + response.setStatus(HttpServletResponse.SC_BAD_REQUEST); response.addHeader(errorMsg, dictionaryDBQuery); LOGGER.error(e); } } - - @RequestMapping(value={"/ms_dictionary/save_model"}, method={RequestMethod.POST}) - public ModelAndView saveMicroServiceModelsDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + @RequestMapping(value = {"/ms_dictionary/save_model"}, method = {RequestMethod.POST}) + public ModelAndView saveMicroServiceModelsDictionary(HttpServletRequest request, HttpServletResponse response) + throws IOException { DictionaryUtils utils = getDictionaryUtilsInstance(); try { this.newModel = new MicroServiceModels(); @@ -476,24 +586,27 @@ public class MicroServiceDictionaryController { String userId = null; String dataOrderInfo = null; - if(root.has("dataOrderInfo")){ + if (root.has("dataOrderInfo")) { dataOrderInfo = root.get("dataOrderInfo").toString(); } - if(root.has("modelType")){ + if (root.has("modelType")) { JsonNode dataType = root.get("modelType"); - String modelType= dataType.toString(); - if(modelType.contains("yml")){ - if (root.has(microServiceModelsDictionaryData)){ - if (root.get(microServiceModelsDictionaryData).has(description)){ - microServiceModels.setDescription(root.get(microServiceModelsDictionaryData).get(description).asText().replace("\"", "")); + String modelType = dataType.toString(); + if (modelType.contains("yml")) { + if (root.has(microServiceModelsDictionaryData)) { + if (root.get(microServiceModelsDictionaryData).has(description)) { + microServiceModels.setDescription(root.get(microServiceModelsDictionaryData) + .get(description).asText().replace("\"", "")); } - if (root.get(microServiceModelsDictionaryData).has(modelName)){ - microServiceModels.setModelName(root.get(microServiceModelsDictionaryData).get(modelName).asText().replace("\"", "")); + if (root.get(microServiceModelsDictionaryData).has(modelName)) { + microServiceModels.setModelName(root.get(microServiceModelsDictionaryData).get(modelName) + .asText().replace("\"", "")); this.newModel.setModelName(microServiceModels.getModelName()); } - if (root.get(microServiceModelsDictionaryData).has(version)){ - microServiceModels.setVersion(root.get(microServiceModelsDictionaryData).get(version).asText().replace("\"", "")); + if (root.get(microServiceModelsDictionaryData).has(version)) { + microServiceModels.setVersion( + root.get(microServiceModelsDictionaryData).get(version).asText().replace("\"", "")); this.newModel.setVersion(microServiceModels.getVersion()); } } @@ -501,13 +614,13 @@ public class MicroServiceDictionaryController { classMap = new LinkedHashMap<>(); JsonNode data = root.get(classMapData); ObjectMapper mapper1 = new ObjectMapper(); - String data1 = data.toString().substring(1, data.toString().length()-1); + String data1 = data.toString().substring(1, data.toString().length() - 1); data1 = data1.replace("\\", ""); - data1=data1.replace("\"{","{"); - data1=data1.replace("}\"","}"); + data1 = data1.replace("\"{", "{"); + data1 = data1.replace("}\"", "}"); JSONObject jsonObject = new JSONObject(data1); Set<String> keys = jsonObject.keySet(); - for(String key : keys){ + for (String key : keys) { String value = jsonObject.get(key).toString(); MSAttributeObject msAttributeObject = mapper1.readValue(value, MSAttributeObject.class); classMap.put(key, msAttributeObject); @@ -518,44 +631,49 @@ public class MicroServiceDictionaryController { this.newModel.setDependency("[]"); String value = new Gson().toJson(mainClass.getSubClass()); this.newModel.setSub_attributes(value); - String attributes= mainClass.getAttribute().toString().replace("{", "").replace("}", ""); - int equalsIndexForAttributes= attributes.indexOf('='); - String atttributesAfterFirstEquals= attributes.substring(equalsIndexForAttributes+1); + String attributes = mainClass.getAttribute().toString().replace("{", "").replace("}", ""); + int equalsIndexForAttributes = attributes.indexOf('='); + String atttributesAfterFirstEquals = attributes.substring(equalsIndexForAttributes + 1); this.newModel.setAttributes(atttributesAfterFirstEquals); - String refAttributes= mainClass.getRefAttribute().toString().replace("{", "").replace("}", ""); - int equalsIndex= refAttributes.indexOf("="); - String refAttributesAfterFirstEquals= refAttributes.substring(equalsIndex+1); + String refAttributes = mainClass.getRefAttribute().toString().replace("{", "").replace("}", ""); + int equalsIndex = refAttributes.indexOf("="); + String refAttributesAfterFirstEquals = refAttributes.substring(equalsIndex + 1); this.newModel.setRef_attributes(refAttributesAfterFirstEquals); this.newModel.setEnumValues(mainClass.getEnumType().toString().replace("{", "").replace("}", "")); - this.newModel.setAnnotation(mainClass.getMatchingSet().toString().replace("{", "").replace("}", "")); + this.newModel + .setAnnotation(mainClass.getMatchingSet().toString().replace("{", "").replace("}", "")); - }else{ + } else { if (fromAPI) { - microServiceModels = mapper.readValue(root.get(dictionaryFields).toString(), MicroServiceModels.class); + microServiceModels = + mapper.readValue(root.get(dictionaryFields).toString(), MicroServiceModels.class); userId = "API"; } else { - if (root.has(microServiceModelsDictionaryData)){ - if (root.get(microServiceModelsDictionaryData).has(description)){ - microServiceModels.setDescription(root.get(microServiceModelsDictionaryData).get(description).asText().replace("\"", "")); + if (root.has(microServiceModelsDictionaryData)) { + if (root.get(microServiceModelsDictionaryData).has(description)) { + microServiceModels.setDescription(root.get(microServiceModelsDictionaryData) + .get(description).asText().replace("\"", "")); } - if (root.get(microServiceModelsDictionaryData).has(modelName)){ - microServiceModels.setModelName(root.get(microServiceModelsDictionaryData).get(modelName).asText().replace("\"", "")); + if (root.get(microServiceModelsDictionaryData).has(modelName)) { + microServiceModels.setModelName(root.get(microServiceModelsDictionaryData) + .get(modelName).asText().replace("\"", "")); this.newModel.setModelName(microServiceModels.getModelName()); } - if (root.get(microServiceModelsDictionaryData).has(version)){ - microServiceModels.setVersion(root.get(microServiceModelsDictionaryData).get(version).asText().replace("\"", "")); + if (root.get(microServiceModelsDictionaryData).has(version)) { + microServiceModels.setVersion(root.get(microServiceModelsDictionaryData).get(version) + .asText().replace("\"", "")); this.newModel.setVersion(microServiceModels.getVersion()); } } - if(root.has(classMapData)){ + if (root.has(classMapData)) { classMap = new LinkedHashMap<>(); JsonNode data = root.get(classMapData); ObjectMapper mapper1 = new ObjectMapper(); - String data1 = data.toString().substring(1, data.toString().length()-1); + String data1 = data.toString().substring(1, data.toString().length() - 1); data1 = data1.replace("\\", ""); JSONObject jsonObject = new JSONObject(data1); Set<String> keys = jsonObject.keySet(); - for(String key : keys){ + for (String key : keys) { String value = jsonObject.get(key).toString(); MSAttributeObject msAttributeObject = mapper1.readValue(value, MSAttributeObject.class); classMap.put(key, msAttributeObject); @@ -574,79 +692,83 @@ public class MicroServiceDictionaryController { microServiceModels.setVersion(this.newModel.getVersion()); microServiceModels.setEnumValues(this.newModel.getEnumValues()); microServiceModels.setAnnotation(this.newModel.getAnnotation()); - if(dataOrderInfo != null){ - microServiceModels.setDataOrderInfo(dataOrderInfo); + if (dataOrderInfo != null) { + microServiceModels.setDataOrderInfo(dataOrderInfo); } String checkName = microServiceModels.getModelName() + ":" + microServiceModels.getVersion(); - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(checkName, "modelName:version", MicroServiceModels.class); + List<Object> duplicateData = + commonClassDao.checkDuplicateEntry(checkName, "modelName:version", MicroServiceModels.class); boolean duplicateflag = false; - if(duplicateData != null && !duplicateData.isEmpty()){ + if (duplicateData != null && !duplicateData.isEmpty()) { MicroServiceModels data = (MicroServiceModels) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + if (request.getParameter(operation) != null && "update".equals(request.getParameter(operation))) { microServiceModels.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != microServiceModels.getId()))){ + } else if ((request.getParameter(operation) != null + && !"update".equals(request.getParameter(operation))) + || (request.getParameter(operation) == null && (data.getId() != microServiceModels.getId()))) { duplicateflag = true; } } UserInfo userInfo = utils.getUserInfo(userId); String responseString = null; - if(!duplicateflag){ + if (!duplicateflag) { microServiceModels.setUserCreatedBy(userInfo); - if(microServiceModels.getId() == 0){ + if (microServiceModels.getId() == 0) { commonClassDao.save(microServiceModels); - }else{ + } else { commonClassDao.update(microServiceModels); } responseString = mapper.writeValueAsString(commonClassDao.getData(PrefixList.class)); - }else{ + } else { responseString = duplicateResponseString; } - if(fromAPI){ + if (fromAPI) { return utils.getResultForApi(responseString); - }else{ + } else { utils.setResponseData(response, microServiceModelsDictionaryDatas, responseString); } - }catch (Exception e){ + } catch (Exception e) { utils.setErrorResponseData(response, e); } return null; } - @RequestMapping(value={"/ms_dictionary/remove_msModel"}, method={RequestMethod.POST}) - public void removeMicroServiceModelsDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { + @RequestMapping(value = {"/ms_dictionary/remove_msModel"}, method = {RequestMethod.POST}) + public void removeMicroServiceModelsDictionary(HttpServletRequest request, HttpServletResponse response) + throws IOException { DictionaryUtils utils = getDictionaryUtilsInstance(); utils.removeData(request, response, microServiceModelsDictionaryDatas, MicroServiceModels.class); } - private void addValuesToNewModel(HashMap<String,MSAttributeObject > classMap) { - //Loop through the classmap and pull out the required info for the new file. + private void addValuesToNewModel(HashMap<String, MSAttributeObject> classMap) { + // Loop through the classmap and pull out the required info for the new file. String subAttribute = null; MSAttributeObject mainClass = classMap.get(this.newModel.getModelName()); - if (mainClass !=null){ - String dependTemp = StringUtils.replaceEach(mainClass.getDependency(), new String[]{"[", "]", " "}, new String[]{"", "", ""}); + if (mainClass != null) { + String dependTemp = StringUtils.replaceEach(mainClass.getDependency(), new String[] {"[", "]", " "}, + new String[] {"", "", ""}); ArrayList<String> dependency = new ArrayList<>(Arrays.asList(dependTemp.split(","))); dependency = getFullDependencyList(dependency); - for (String element : dependency){ + for (String element : dependency) { MSAttributeObject temp = classMap.get(element); - if (temp!=null){ + if (temp != null) { mainClass.addAllRefAttribute(temp.getRefAttribute()); mainClass.addAllAttribute(temp.getAttribute()); } } subAttribute = utils.createSubAttributes(dependency, classMap, this.newModel.getModelName()); - }else{ + } else { subAttribute = "{}"; this.newModel.setDependency(""); } - if (mainClass != null && mainClass.getDependency()==null){ + if (mainClass != null && mainClass.getDependency() == null) { mainClass.setDependency(""); } - if(mainClass != null){ + if (mainClass != null) { this.newModel.setDependency(mainClass.getDependency()); this.newModel.setSub_attributes(subAttribute); this.newModel.setAttributes(mainClass.getAttribute().toString().replace("{", "").replace("}", "")); @@ -660,15 +782,16 @@ public class MicroServiceDictionaryController { ArrayList<String> returnList = new ArrayList<>(); ArrayList<String> workingList = new ArrayList<>(); returnList.addAll(dependency); - for (String element : dependency ){ - if (classMap.containsKey(element)){ + for (String element : dependency) { + if (classMap.containsKey(element)) { MSAttributeObject value = classMap.get(element); - String rawValue = StringUtils.replaceEach(value.getDependency(), new String[]{"[", "]"}, new String[]{"", ""}); + String rawValue = + StringUtils.replaceEach(value.getDependency(), new String[] {"[", "]"}, new String[] {"", ""}); workingList = new ArrayList<>(Arrays.asList(rawValue.split(","))); - for(String depend : workingList){ - if (!returnList.contains(depend) && !depend.isEmpty()){ + for (String depend : workingList) { + if (!returnList.contains(depend) && !depend.isEmpty()) { returnList.add(depend.trim()); - //getFullDepedency(workingList) + // getFullDepedency(workingList) } } } @@ -677,73 +800,80 @@ public class MicroServiceDictionaryController { return returnList; } - @RequestMapping(value={"/get_MicroServiceHeaderDefaultsDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getMicroServiceHeaderDefaultsEntityDataByName(HttpServletResponse response){ + @RequestMapping(value = {"/get_MicroServiceHeaderDefaultsDataByName"}, method = {RequestMethod.GET}, + produces = MediaType.APPLICATION_JSON_VALUE) + public void getMicroServiceHeaderDefaultsEntityDataByName(HttpServletResponse response) { DictionaryUtils utils = getDictionaryUtilsInstance(); utils.getDataByEntity(response, microServiceHeaderDefaultDatas, "modelName", MicroserviceHeaderdeFaults.class); } - @RequestMapping(value={"/get_MicroServiceHeaderDefaultsData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getMicroServiceHeaderDefaultsEntityData(HttpServletResponse response){ + @RequestMapping(value = {"/get_MicroServiceHeaderDefaultsData"}, method = {RequestMethod.GET}, + produces = MediaType.APPLICATION_JSON_VALUE) + public void getMicroServiceHeaderDefaultsEntityData(HttpServletResponse response) { DictionaryUtils utils = getDictionaryUtilsInstance(); utils.getData(response, microServiceHeaderDefaultDatas, MicroserviceHeaderdeFaults.class); } - - - @RequestMapping(value={"/ms_dictionary/save_headerDefaults"}, method={RequestMethod.POST}) - public ModelAndView saveMicroServiceHeaderDefaultValues(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + + @RequestMapping(value = {"/ms_dictionary/save_headerDefaults"}, method = {RequestMethod.POST}) + public ModelAndView saveMicroServiceHeaderDefaultValues(HttpServletRequest request, HttpServletResponse response) + throws IOException { DictionaryUtils utils = getDictionaryUtilsInstance(); try { boolean fromAPI = utils.isRequestFromAPI(request); ObjectMapper mapper = new ObjectMapper(); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); JsonNode root = mapper.readTree(request.getReader()); - + MicroserviceHeaderdeFaults msHeaderdeFaults; - if(fromAPI){ - msHeaderdeFaults = mapper.readValue(root.get(dictionaryFields).toString(), MicroserviceHeaderdeFaults.class); - }else{ - msHeaderdeFaults = mapper.readValue(root.get("modelAttributeDictionaryData").toString(), MicroserviceHeaderdeFaults.class); + if (fromAPI) { + msHeaderdeFaults = + mapper.readValue(root.get(dictionaryFields).toString(), MicroserviceHeaderdeFaults.class); + } else { + msHeaderdeFaults = mapper.readValue(root.get("modelAttributeDictionaryData").toString(), + MicroserviceHeaderdeFaults.class); } - - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(msHeaderdeFaults.getModelName(), "modelName", MicroserviceHeaderdeFaults.class); + + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(msHeaderdeFaults.getModelName(), + "modelName", MicroserviceHeaderdeFaults.class); boolean duplicateflag = false; - if(duplicateData != null && !duplicateData.isEmpty()){ + if (duplicateData != null && !duplicateData.isEmpty()) { MicroserviceHeaderdeFaults data = (MicroserviceHeaderdeFaults) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + if (request.getParameter(operation) != null && "update".equals(request.getParameter(operation))) { msHeaderdeFaults.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != msHeaderdeFaults.getId()))){ + } else if ((request.getParameter(operation) != null + && !"update".equals(request.getParameter(operation))) + || (request.getParameter(operation) == null && (data.getId() != msHeaderdeFaults.getId()))) { duplicateflag = true; } } - + String responseString = null; - if(!duplicateflag){ - if(msHeaderdeFaults.getId() == 0){ + if (!duplicateflag) { + if (msHeaderdeFaults.getId() == 0) { commonClassDao.save(msHeaderdeFaults); - }else{ + } else { commonClassDao.update(msHeaderdeFaults); } responseString = mapper.writeValueAsString(commonClassDao.getData(MicroserviceHeaderdeFaults.class)); - }else{ + } else { responseString = duplicateResponseString; } - if(fromAPI){ + if (fromAPI) { return utils.getResultForApi(responseString); - }else{ + } else { utils.setResponseData(response, microServiceHeaderDefaultDatas, responseString); } - } - catch (Exception e){ + } catch (Exception e) { utils.setErrorResponseData(response, e); } return null; } - - @RequestMapping(value={"/ms_dictionary/remove_headerDefaults"}, method={RequestMethod.POST}) - public void removeMicroServiceHeaderDefaults(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + @RequestMapping(value = {"/ms_dictionary/remove_headerDefaults"}, method = {RequestMethod.POST}) + public void removeMicroServiceHeaderDefaults(HttpServletRequest request, HttpServletResponse response) + throws IOException { DictionaryUtils utils = getDictionaryUtilsInstance(); utils.removeData(request, response, microServiceHeaderDefaultDatas, MicroserviceHeaderdeFaults.class); } -}
\ No newline at end of file +} diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/DictionaryHandlerImpl.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/DictionaryHandlerImpl.java index ef6092d72..5fc737887 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/DictionaryHandlerImpl.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/DictionaryHandlerImpl.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP-PAP-REST * ================================================================================ - * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-2019 AT&T Intellectual Property. 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. @@ -17,11 +17,11 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.policy.pap.xacml.rest.handler; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; - import org.onap.policy.common.logging.eelf.MessageCodes; import org.onap.policy.common.logging.eelf.PolicyLogger; import org.onap.policy.pap.xacml.rest.service.DictionaryService; @@ -31,6 +31,7 @@ public class DictionaryHandlerImpl implements DictionaryHandler { /* * Get Equivalent for Dictionary Services. */ + @Override public void doDictionaryAPIGet(HttpServletRequest request, HttpServletResponse response) { String dictionaryType = request.getParameter("dictionaryType"); try { @@ -111,6 +112,9 @@ public class DictionaryHandlerImpl implements DictionaryHandler { case "MicroServiceConfigName": dictionary.getMicroServiceConfigNameDictionary(response); break; + case "MicroServiceDictionaryData": + dictionary.getMicroServiceDictionaryData(response); + break; case "DCAEUUID": dictionary.getDCAEUUIDDictionary(response); break; @@ -159,13 +163,13 @@ public class DictionaryHandlerImpl implements DictionaryHandler { /** * Can be used to extend the services. * <p> - * getflag=true indicates Get Request. - * getflag=false indicates Put Request. + * getflag=true indicates Get Request. getflag=false indicates Put Request. * * @return */ + @Override public String extendedOptions(String dictionaryType, HttpServletRequest request, HttpServletResponse response, - boolean getflag) { + boolean getflag) { // Default code String message = XACMLErrorConstants.ERROR_DATA_ISSUE + " Invalid Dictionary in Request."; PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, "DictionaryHandler", " Invalid Dictionary in Request."); @@ -175,6 +179,7 @@ public class DictionaryHandlerImpl implements DictionaryHandler { return null; } + @Override public void doDictionaryAPIPut(HttpServletRequest request, HttpServletResponse response) { String result = null; String dictionaryType = request.getParameter("dictionaryType"); @@ -257,6 +262,9 @@ public class DictionaryHandlerImpl implements DictionaryHandler { case "MicroServiceConfigName": result = dictionary.saveMicroServiceConfigNameDictionary(request, response); break; + case "MicroServiceDictionaryData": + dictionary.saveMicroServiceDictionaryData(request, response); + break; case "DCAEUUID": result = dictionary.saveDCAEUUIDDictionary(request, response); break; @@ -305,7 +313,7 @@ public class DictionaryHandlerImpl implements DictionaryHandler { response.addHeader("error", message); return; } - if (result.equalsIgnoreCase("Success")) { + if(("Success").equalsIgnoreCase(result)) { response.setStatus(HttpServletResponse.SC_OK); response.addHeader("successMapKey", "success"); if (operation.equalsIgnoreCase("update")) { @@ -313,10 +321,10 @@ public class DictionaryHandlerImpl implements DictionaryHandler { } else { response.addHeader("operation", "createDictionary"); } - } else if (result.equalsIgnoreCase("Duplicate")) { + } else if (("Duplicate").equalsIgnoreCase(result)) { response.setStatus(HttpServletResponse.SC_CONFLICT); response.addHeader("error", "dictionaryItemExists"); - } else if (result.equalsIgnoreCase("DuplicateGroup")) { + } else if (("DuplicateGroup").equalsIgnoreCase(result)) { response.setStatus(HttpServletResponse.SC_CONFLICT); response.addHeader("error", "duplicateGroup"); } else { diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/service/DictionaryService.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/service/DictionaryService.java index dd24aafc9..2dea96517 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/service/DictionaryService.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/service/DictionaryService.java @@ -38,116 +38,221 @@ import org.springframework.stereotype.Service; import org.springframework.web.servlet.ModelAndView; +// TODO: Auto-generated Javadoc +/** + * The Class DictionaryService. + */ @Service("DictionaryService") public class DictionaryService { + /** + * Save onap dictionary. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ /* * Methods that call the controller method directly to Save and Update dictionary data */ - public String saveOnapDictionary(HttpServletRequest request, HttpServletResponse response) - throws IOException { + public String saveOnapDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { DictionaryController dictionary = new DictionaryController(); ModelAndView result = dictionary.saveOnapDictionary(request, response); return result.getViewName(); } - public String saveAttributeDictionary(HttpServletRequest request, HttpServletResponse response) - throws IOException { + /** + * Save attribute dictionary. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ + public String saveAttributeDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { DictionaryController dictionary = new DictionaryController(); ModelAndView result = dictionary.saveAttributeDictionary(request, response); return result.getViewName(); } - public String saveActionPolicyDictionary(HttpServletRequest request, - HttpServletResponse response) throws IOException { + /** + * Save action policy dictionary. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ + public String saveActionPolicyDictionary(HttpServletRequest request, HttpServletResponse response) + throws IOException { ActionPolicyDictionaryController action = new ActionPolicyDictionaryController(); ModelAndView result = action.saveActionPolicyDictionary(request, response); return result.getViewName(); } - public String saveBRMSParamDictionary(HttpServletRequest request, HttpServletResponse response) - throws IOException { + /** + * Save BRMS param dictionary. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ + public String saveBRMSParamDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { BRMSDictionaryController dictionary = new BRMSDictionaryController(); ModelAndView result = dictionary.saveBRMSParamDictionary(request, response); return result.getViewName(); } - public String saveVSCLAction(HttpServletRequest request, HttpServletResponse response) - throws IOException { + /** + * Save VSCL action. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ + public String saveVSCLAction(HttpServletRequest request, HttpServletResponse response) throws IOException { ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); ModelAndView result = dictionary.saveVSCLAction(request, response); return result.getViewName(); } - public String saveVnfType(HttpServletRequest request, HttpServletResponse response) - throws IOException { + /** + * Save vnf type. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ + public String saveVnfType(HttpServletRequest request, HttpServletResponse response) throws IOException { ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); ModelAndView result = dictionary.saveVnfType(request, response); return result.getViewName(); } - public String savePEPOptions(HttpServletRequest request, HttpServletResponse response) - throws IOException { + /** + * Save PEP options. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ + public String savePEPOptions(HttpServletRequest request, HttpServletResponse response) throws IOException { ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); ModelAndView result = dictionary.savePEPOptions(request, response); return result.getViewName(); } - public String saveVarbind(HttpServletRequest request, HttpServletResponse response) - throws IOException { + /** + * Save varbind. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ + public String saveVarbind(HttpServletRequest request, HttpServletResponse response) throws IOException { ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); ModelAndView result = dictionary.saveVarbind(request, response); return result.getViewName(); } - public String saveServiceType(HttpServletRequest request, HttpServletResponse response) - throws IOException { + /** + * Save service type. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ + public String saveServiceType(HttpServletRequest request, HttpServletResponse response) throws IOException { ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); ModelAndView result = dictionary.saveServiceType(request, response); return result.getViewName(); } - public String saveSiteType(HttpServletRequest request, HttpServletResponse response) - throws IOException { + /** + * Save site type. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ + public String saveSiteType(HttpServletRequest request, HttpServletResponse response) throws IOException { ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); ModelAndView result = dictionary.saveSiteType(request, response); return result.getViewName(); } - public String saveSettingsDictionary(HttpServletRequest request, HttpServletResponse response) - throws IOException { + /** + * Save settings dictionary. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ + public String saveSettingsDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { DecisionPolicyDictionaryController dictionary = new DecisionPolicyDictionaryController(); ModelAndView result = dictionary.saveSettingsDictionary(request, response); return result.getViewName(); } - public String saveRainyDayDictionary(HttpServletRequest request, HttpServletResponse response) - throws IOException { + /** + * Save rainy day dictionary. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ + public String saveRainyDayDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { DecisionPolicyDictionaryController dictionary = new DecisionPolicyDictionaryController(); ModelAndView result = dictionary.saveRainyDayDictionary(request, response); return result.getViewName(); } - public String saveDescriptiveDictionary(HttpServletRequest request, - HttpServletResponse response) throws IOException { + /** + * Save descriptive dictionary. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ + public String saveDescriptiveDictionary(HttpServletRequest request, HttpServletResponse response) + throws IOException { DescriptiveDictionaryController dictionary = new DescriptiveDictionaryController(); ModelAndView result = dictionary.saveDescriptiveDictionary(request, response); return result.getViewName(); } + /** + * Save action list dictionary. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ public String saveActionListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { @@ -156,30 +261,61 @@ public class DictionaryService { return result.getViewName(); } - public String saveProtocolListDictionary(HttpServletRequest request, - HttpServletResponse response) throws IOException { + /** + * Save protocol list dictionary. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ + public String saveProtocolListDictionary(HttpServletRequest request, HttpServletResponse response) + throws IOException { FirewallDictionaryController dictionary = new FirewallDictionaryController(); ModelAndView result = dictionary.saveProtocolListDictionary(request, response); return result.getViewName(); } - public String saveZoneDictionary(HttpServletRequest request, HttpServletResponse response) - throws IOException { + /** + * Save zone dictionary. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ + public String saveZoneDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { FirewallDictionaryController dictionary = new FirewallDictionaryController(); ModelAndView result = dictionary.saveZoneDictionary(request, response); return result.getViewName(); } - public String saveSecurityZoneDictionary(HttpServletRequest request, - HttpServletResponse response) throws IOException { + /** + * Save security zone dictionary. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ + public String saveSecurityZoneDictionary(HttpServletRequest request, HttpServletResponse response) + throws IOException { FirewallDictionaryController dictionary = new FirewallDictionaryController(); ModelAndView result = dictionary.saveSecurityZoneDictionary(request, response); return result.getViewName(); } + /** + * Save prefix list dictionary. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ public String savePrefixListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { @@ -188,32 +324,63 @@ public class DictionaryService { return result.getViewName(); } - public String saveAddressGroupDictionary(HttpServletRequest request, - HttpServletResponse response) throws IOException { + /** + * Save address group dictionary. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ + public String saveAddressGroupDictionary(HttpServletRequest request, HttpServletResponse response) + throws IOException { FirewallDictionaryController dictionary = new FirewallDictionaryController(); ModelAndView result = dictionary.saveAddressGroupDictionary(request, response); return result.getViewName(); } - public String saveServiceGroupDictionary(HttpServletRequest request, - HttpServletResponse response) throws IOException { + /** + * Save service group dictionary. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ + public String saveServiceGroupDictionary(HttpServletRequest request, HttpServletResponse response) + throws IOException { FirewallDictionaryController dictionary = new FirewallDictionaryController(); ModelAndView result = dictionary.saveServiceGroupDictionary(request, response); return result.getViewName(); } - public String saveServiceListDictionary(HttpServletRequest request, - HttpServletResponse response) throws IOException { + /** + * Save service list dictionary. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ + public String saveServiceListDictionary(HttpServletRequest request, HttpServletResponse response) + throws IOException { FirewallDictionaryController dictionary = new FirewallDictionaryController(); ModelAndView result = dictionary.saveServiceListDictionary(request, response); return result.getViewName(); } - public String saveTermListDictionary(HttpServletRequest request, HttpServletResponse response) - throws IOException { + /** + * Save term list dictionary. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ + public String saveTermListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { FirewallDictionaryController dictionary = new FirewallDictionaryController(); ModelAndView result = dictionary.saveTermListDictionary(request, response); @@ -222,62 +389,140 @@ public class DictionaryService { - public String saveMicroServiceLocationDictionary(HttpServletRequest request, - HttpServletResponse response) throws IOException { + /** + * Save micro service location dictionary. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ + public String saveMicroServiceLocationDictionary(HttpServletRequest request, HttpServletResponse response) + throws IOException { MicroServiceDictionaryController dictionary = new MicroServiceDictionaryController(); ModelAndView result = dictionary.saveMicroServiceLocationDictionary(request, response); return result.getViewName(); } - public String saveMicroServiceConfigNameDictionary(HttpServletRequest request, - HttpServletResponse response) throws IOException { + /** + * Save micro service config name dictionary. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ + public String saveMicroServiceConfigNameDictionary(HttpServletRequest request, HttpServletResponse response) + throws IOException { MicroServiceDictionaryController dictionary = new MicroServiceDictionaryController(); ModelAndView result = dictionary.saveMicroServiceConfigNameDictionary(request, response); return result.getViewName(); } - public String saveDCAEUUIDDictionary(HttpServletRequest request, HttpServletResponse response) + /** + * Save micro service dictionary data. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ + public String saveMicroServiceDictionaryData(HttpServletRequest request, HttpServletResponse response) throws IOException { MicroServiceDictionaryController dictionary = new MicroServiceDictionaryController(); + ModelAndView result = dictionary.saveDictionaryData(request, response); + return result.getViewName(); + } + + /** + * Save DCAEUUID dictionary. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ + public String saveDCAEUUIDDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { + + MicroServiceDictionaryController dictionary = new MicroServiceDictionaryController(); ModelAndView result = dictionary.saveDCAEUUIDDictionary(request, response); return result.getViewName(); } - public String saveMicroServiceModelsDictionary(HttpServletRequest request, - HttpServletResponse response) throws IOException { + /** + * Save micro service models dictionary. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ + public String saveMicroServiceModelsDictionary(HttpServletRequest request, HttpServletResponse response) + throws IOException { MicroServiceDictionaryController dictionary = new MicroServiceDictionaryController(); ModelAndView result = dictionary.saveMicroServiceModelsDictionary(request, response); return result.getViewName(); } - public String saveMicroServiceDictionary(HttpServletRequest request, - HttpServletResponse response) throws IOException { + /** + * Save micro service dictionary. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ + public String saveMicroServiceDictionary(HttpServletRequest request, HttpServletResponse response) + throws IOException { MicroServiceDictionaryController dictionary = new MicroServiceDictionaryController(); ModelAndView result = dictionary.saveMicroServiceAttributeDictionary(request, response); return result.getViewName(); } - public String saveOptimizationModelsDictionary(HttpServletRequest request, - HttpServletResponse response) throws IOException { + /** + * Save optimization models dictionary. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ + public String saveOptimizationModelsDictionary(HttpServletRequest request, HttpServletResponse response) + throws IOException { OptimizationDictionaryController dictionary = new OptimizationDictionaryController(); ModelAndView result = dictionary.saveOptimizationModelsDictionary(request, response); return result.getViewName(); } - public String savePSServiceDictionary(HttpServletRequest request, HttpServletResponse response) - throws IOException { + /** + * Save PS service dictionary. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ + public String savePSServiceDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { PolicyScopeDictionaryController dictionary = new PolicyScopeDictionaryController(); ModelAndView result = dictionary.savePSServiceDictionary(request, response); return result.getViewName(); } + /** + * Save PS resource dictionary. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ public String savePSResourceDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { @@ -286,46 +531,90 @@ public class DictionaryService { return result.getViewName(); } - public String savePSTypeDictionary(HttpServletRequest request, HttpServletResponse response) - throws IOException { + /** + * Save PS type dictionary. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ + public String savePSTypeDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { PolicyScopeDictionaryController dictionary = new PolicyScopeDictionaryController(); ModelAndView result = dictionary.savePSTypeDictionary(request, response); return result.getViewName(); } - public String savePSClosedLoopDictionary(HttpServletRequest request, - HttpServletResponse response) throws IOException { + /** + * Save PS closed loop dictionary. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ + public String savePSClosedLoopDictionary(HttpServletRequest request, HttpServletResponse response) + throws IOException { PolicyScopeDictionaryController dictionary = new PolicyScopeDictionaryController(); ModelAndView result = dictionary.savePSClosedLoopDictionary(request, response); return result.getViewName(); } - public String savePSGroupScopeDictionary(HttpServletRequest request, - HttpServletResponse response) throws IOException { + /** + * Save PS group scope dictionary. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ + public String savePSGroupScopeDictionary(HttpServletRequest request, HttpServletResponse response) + throws IOException { PolicyScopeDictionaryController dictionary = new PolicyScopeDictionaryController(); ModelAndView result = dictionary.savePSGroupScopeDictionary(request, response); return result.getViewName(); } - public String saveRiskTypeDictionary(HttpServletRequest request, HttpServletResponse response) - throws IOException { + /** + * Save risk type dictionary. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ + public String saveRiskTypeDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { SafePolicyController dictionary = new SafePolicyController(); ModelAndView result = dictionary.saveRiskTypeDictionary(request, response); return result.getViewName(); } - public String saveSafePolicyWarningDictionary(HttpServletRequest request, - HttpServletResponse response) throws IOException { + /** + * Save safe policy warning dictionary. + * + * @param request the request + * @param response the response + * @return the string + * @throws IOException Signals that an I/O exception has occurred. + */ + public String saveSafePolicyWarningDictionary(HttpServletRequest request, HttpServletResponse response) + throws IOException { SafePolicyController dictionary = new SafePolicyController(); ModelAndView result = dictionary.saveSafePolicyWarningDictionary(request, response); return result.getViewName(); } + /** + * Gets the onap dictionary. + * + * @param response the response + * @return the onap dictionary + */ /* * Methods that call the controller get methods directly to get dictionary data */ @@ -334,172 +623,387 @@ public class DictionaryService { dictionary.getOnapNameDictionaryEntityData(response); } + /** + * Gets the attribute dictionary. + * + * @param response the response + * @return the attribute dictionary + */ public void getAttributeDictionary(HttpServletResponse response) { DictionaryController dictionary = new DictionaryController(); dictionary.getAttributeDictionaryEntityData(response); } + /** + * Gets the action policy dictionary. + * + * @param response the response + * @return the action policy dictionary + */ public void getActionPolicyDictionary(HttpServletResponse response) { ActionPolicyDictionaryController action = new ActionPolicyDictionaryController(); action.getActionPolicyDictionaryEntityData(response); } + /** + * Gets the BRMS param dictionary. + * + * @param response the response + * @return the BRMS param dictionary + */ public void getBRMSParamDictionary(HttpServletResponse response) { BRMSDictionaryController dictionary = new BRMSDictionaryController(); dictionary.getBRMSParamDictionaryEntityData(response); } + /** + * Gets the VSCL action. + * + * @param response the response + * @return the VSCL action + */ public void getVSCLAction(HttpServletResponse response) { ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); dictionary.getVSCLActionDictionaryEntityData(response); } + /** + * Gets the vnf type. + * + * @param response the response + * @return the vnf type + */ public void getVnfType(HttpServletResponse response) { ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); dictionary.getVNFTypeDictionaryEntityData(response); } + /** + * Gets the PEP options. + * + * @param response the response + * @return the PEP options + */ public void getPEPOptions(HttpServletResponse response) { ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); dictionary.getPEPOptionsDictionaryEntityData(response); } + /** + * Gets the varbind. + * + * @param response the response + * @return the varbind + */ public void getVarbind(HttpServletResponse response) { ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); dictionary.getVarbindDictionaryEntityData(response); } + /** + * Gets the service type. + * + * @param response the response + * @return the service type + */ public void getServiceType(HttpServletResponse response) { ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); dictionary.getClosedLoopServiceDictionaryEntityData(response); } + /** + * Gets the site type. + * + * @param response the response + * @return the site type + */ public void getSiteType(HttpServletResponse response) { ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); dictionary.getClosedLoopSiteDictionaryEntityData(response); } + /** + * Gets the settings dictionary. + * + * @param response the response + * @return the settings dictionary + */ public void getSettingsDictionary(HttpServletResponse response) { DecisionPolicyDictionaryController dictionary = new DecisionPolicyDictionaryController(); dictionary.getSettingsDictionaryEntityData(response); } + /** + * Gets the rainy day dictionary. + * + * @param response the response + * @return the rainy day dictionary + */ public void getRainyDayDictionary(HttpServletResponse response) { DecisionPolicyDictionaryController dictionary = new DecisionPolicyDictionaryController(); dictionary.getRainyDayDictionaryEntityData(response); } + /** + * Gets the descriptive dictionary. + * + * @param response the response + * @return the descriptive dictionary + */ public void getDescriptiveDictionary(HttpServletResponse response) { DescriptiveDictionaryController dictionary = new DescriptiveDictionaryController(); dictionary.getDescriptiveDictionaryEntityData(response); } + /** + * Gets the action list dictionary. + * + * @param response the response + * @return the action list dictionary + */ public void getActionListDictionary(HttpServletResponse response) { FirewallDictionaryController dictionary = new FirewallDictionaryController(); dictionary.getActionListDictionaryEntityData(response); } + /** + * Gets the protocol list dictionary. + * + * @param response the response + * @return the protocol list dictionary + */ public void getProtocolListDictionary(HttpServletResponse response) { FirewallDictionaryController dictionary = new FirewallDictionaryController(); dictionary.getProtocolListDictionaryEntityData(response); } + /** + * Gets the zone dictionary. + * + * @param response the response + * @return the zone dictionary + */ public void getZoneDictionary(HttpServletResponse response) { FirewallDictionaryController dictionary = new FirewallDictionaryController(); dictionary.getZoneDictionaryEntityData(response); } + /** + * Gets the security zone dictionary. + * + * @param response the response + * @return the security zone dictionary + */ public void getSecurityZoneDictionary(HttpServletResponse response) { FirewallDictionaryController dictionary = new FirewallDictionaryController(); dictionary.getSecurityZoneDictionaryEntityData(response); } + /** + * Gets the prefix list dictionary. + * + * @param response the response + * @return the prefix list dictionary + */ public void getPrefixListDictionary(HttpServletResponse response) { FirewallDictionaryController dictionary = new FirewallDictionaryController(); dictionary.getPrefixListDictionaryEntityData(response); } + /** + * Gets the address group dictionary. + * + * @param response the response + * @return the address group dictionary + */ public void getAddressGroupDictionary(HttpServletResponse response) { FirewallDictionaryController dictionary = new FirewallDictionaryController(); dictionary.getAddressGroupDictionaryEntityData(response); } + /** + * Gets the service group dictionary. + * + * @param response the response + * @return the service group dictionary + */ public void getServiceGroupDictionary(HttpServletResponse response) { FirewallDictionaryController dictionary = new FirewallDictionaryController(); dictionary.getServiceGroupDictionaryEntityData(response); } + /** + * Gets the service list dictionary. + * + * @param response the response + * @return the service list dictionary + */ public void getServiceListDictionary(HttpServletResponse response) { FirewallDictionaryController dictionary = new FirewallDictionaryController(); dictionary.getServiceListDictionaryEntityData(response); } + /** + * Gets the term list dictionary. + * + * @param response the response + * @return the term list dictionary + */ public void getTermListDictionary(HttpServletResponse response) { FirewallDictionaryController dictionary = new FirewallDictionaryController(); dictionary.getTermListDictionaryEntityData(response); } + /** + * Gets the micro service location dictionary. + * + * @param response the response + * @return the micro service location dictionary + */ public void getMicroServiceLocationDictionary(HttpServletResponse response) { MicroServiceDictionaryController dictionary = new MicroServiceDictionaryController(); dictionary.getMicroServiceLocationDictionaryEntityData(response); } + /** + * Gets the micro service config name dictionary. + * + * @param response the response + * @return the micro service config name dictionary + */ public void getMicroServiceConfigNameDictionary(HttpServletResponse response) { MicroServiceDictionaryController dictionary = new MicroServiceDictionaryController(); dictionary.getMicroServiceConfigNameDictionaryEntityData(response); } + /** + * Gets the micro service dictionary data. + * + * @param response the response + * @return the micro service dictionary data + */ + public void getMicroServiceDictionaryData(HttpServletResponse response) { + MicroServiceDictionaryController dictionary = new MicroServiceDictionaryController(); + dictionary.getMicroServiceDictNameDictionaryEntityData(response); + } + + /** + * Gets the DCAEUUID dictionary. + * + * @param response the response + * @return the DCAEUUID dictionary + */ public void getDCAEUUIDDictionary(HttpServletResponse response) { MicroServiceDictionaryController dictionary = new MicroServiceDictionaryController(); dictionary.getDCAEUUIDDictionaryEntityData(response); } + /** + * Gets the micro service models dictionary. + * + * @param response the response + * @return the micro service models dictionary + */ public void getMicroServiceModelsDictionary(HttpServletResponse response) { MicroServiceDictionaryController dictionary = new MicroServiceDictionaryController(); dictionary.getMicroServiceModelsDictionaryEntityData(response); } + /** + * Gets the micro service dictionary. + * + * @param response the response + * @return the micro service dictionary + */ public void getMicroServiceDictionary(HttpServletResponse response) { MicroServiceDictionaryController dictionary = new MicroServiceDictionaryController(); dictionary.getMicroServiceModelsDictionaryEntityData(response); } + /** + * Gets the optimization models dictionary. + * + * @param response the response + * @return the optimization models dictionary + */ public void getOptimizationModelsDictionary(HttpServletResponse response) { OptimizationDictionaryController dictionary = new OptimizationDictionaryController(); dictionary.getOptimizationModelsDictionaryEntityData(response); } + /** + * Gets the PS service dictionary. + * + * @param response the response + * @return the PS service dictionary + */ public void getPSServiceDictionary(HttpServletResponse response) { PolicyScopeDictionaryController dictionary = new PolicyScopeDictionaryController(); dictionary.getPSServiceEntityData(response); } + /** + * Gets the PS resource dictionary. + * + * @param response the response + * @return the PS resource dictionary + */ public void getPSResourceDictionary(HttpServletResponse response) { PolicyScopeDictionaryController dictionary = new PolicyScopeDictionaryController(); dictionary.getPSResourceEntityData(response); } + /** + * Gets the PS type dictionary. + * + * @param response the response + * @return the PS type dictionary + */ public void getPSTypeDictionary(HttpServletResponse response) { PolicyScopeDictionaryController dictionary = new PolicyScopeDictionaryController(); dictionary.getPSTypeEntityData(response); } + /** + * Gets the PS closed loop dictionary. + * + * @param response the response + * @return the PS closed loop dictionary + */ public void getPSClosedLoopDictionary(HttpServletResponse response) { PolicyScopeDictionaryController dictionary = new PolicyScopeDictionaryController(); dictionary.getPSClosedLoopEntityData(response); } + /** + * Gets the PS group scope dictionary. + * + * @param response the response + * @return the PS group scope dictionary + */ public void getPSGroupScopeDictionary(HttpServletResponse response) { PolicyScopeDictionaryController dictionary = new PolicyScopeDictionaryController(); dictionary.getGroupPolicyScopeEntityData(response); } + /** + * Gets the risk type dictionary. + * + * @param response the response + * @return the risk type dictionary + */ public void getRiskTypeDictionary(HttpServletResponse response) { SafePolicyController dictionary = new SafePolicyController(); dictionary.getRiskTypeDictionaryEntityData(response); } + /** + * Gets the safe policy warning dictionary. + * + * @param response the response + * @return the safe policy warning dictionary + */ public void getSafePolicyWarningDictionary(HttpServletResponse response) { SafePolicyController dictionary = new SafePolicyController(); dictionary.getSafePolicyWarningeEntityData(response); diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/MicroServiceDictionaryControllerTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/MicroServiceDictionaryControllerTest.java index 213d774bd..e561a65b2 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/MicroServiceDictionaryControllerTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/MicroServiceDictionaryControllerTest.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP-PAP-REST * ================================================================================ - * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Modifications Copyright (C) 2019 Samsung * ================================================================================ @@ -51,8 +51,8 @@ import org.springframework.mock.web.MockHttpServletResponse; * The class <code>MicroServiceDictionaryControllerTest</code> contains tests for the class * {@link <code>MicroServiceDictionaryController</code>}* * - * All JUnits are designed to run in the local development environment where they have write - * privileges and can execute time-sensitive tasks. + * All JUnits are designed to run in the local development environment where they have write privileges and can execute + * time-sensitive tasks. */ public class MicroServiceDictionaryControllerTest { @@ -71,8 +71,7 @@ public class MicroServiceDictionaryControllerTest { UserInfo userInfo = new UserInfo(); userInfo.setUserLoginId("testUserId"); userInfo.setUserName("John"); - when(commonClassDao.getEntityItem(UserInfo.class, "userLoginId", "testing")) - .thenReturn(userInfo); + when(commonClassDao.getEntityItem(UserInfo.class, "userLoginId", "testing")).thenReturn(userInfo); List<String> listIds = new ArrayList<String>(); listIds.add("Jack"); @@ -80,8 +79,7 @@ public class MicroServiceDictionaryControllerTest { List<String> microList = new ArrayList<String>(); microList.add("MC-Model"); - when(commonClassDao.getDataByColumn(MicroServiceLocation.class, "name")) - .thenReturn(microList); + when(commonClassDao.getDataByColumn(MicroServiceLocation.class, "name")).thenReturn(microList); List<Object> listId = new ArrayList<Object>(); listId.add("smith"); @@ -96,18 +94,17 @@ public class MicroServiceDictionaryControllerTest { HttpServletRequest request = Mockito.mock(HttpServletRequest.class); - jsonString = - "{\"microServiceModelsDictionaryData\": {\"modelName\": \"test\",\"inprocess\": false," - + "\"model\": {\"name\": \"testingdata\",\"subScopename\": \"\",\"path\": []," - + "\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\",\"version\": \"\"," - + "\"createdBy\": \"someone\",\"modifiedBy\": \"someone\",\"content\": \"\"," - + "\"recursive\": false},\"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\"}," - + "\"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\"," - + "\"policyName\": \"may1501\",\"policyDescription\": \"testing input\"," - + "\"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\"," - + "\"riskLevel\": \"2\",\"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\"," - + "\"version\": \"1707.41.02\",\"ruleGridData\": [[\"fileId\"]],\"ttlDate\": null}}," - + "\"policyJSON\": {\"pmTableName\": \"test\",\"dmdTopic\": \"1\",\"fileId\": \"56\"}}"; + jsonString = "{\"microServiceModelsDictionaryData\": {\"modelName\": \"test\",\"inprocess\": false," + + "\"model\": {\"name\": \"testingdata\",\"subScopename\": \"\",\"path\": []," + + "\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\",\"version\": \"\"," + + "\"createdBy\": \"someone\",\"modifiedBy\": \"someone\",\"content\": \"\"," + + "\"recursive\": false},\"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\"}," + + "\"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\"," + + "\"policyName\": \"may1501\",\"policyDescription\": \"testing input\"," + + "\"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\"," + + "\"riskLevel\": \"2\",\"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\"," + + "\"version\": \"1707.41.02\",\"ruleGridData\": [[\"fileId\"]],\"ttlDate\": null}}," + + "\"policyJSON\": {\"pmTableName\": \"test\",\"dmdTopic\": \"1\",\"fileId\": \"56\"}}"; br = new BufferedReader(new StringReader(jsonString)); // --- mock the getReader() call @@ -268,19 +265,18 @@ public class MicroServiceDictionaryControllerTest { try { // mock the getReader() call - jsonString = - "{\"dcaeUUIDDictionaryData\": {\"modelName\": \"test\",\"inprocess\": false," - + "\"model\": {\"name\": \"testingdata\",\"subScopename\": \"\",\"path\": []," - + "\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\", " - + " \"version\": \"\",\"createdBy\": \"someone\",\"modifiedBy\": \"someone\"," - + "\"content\": \"\",\"recursive\": false},\"tempModel\": " - + "{\"name\": \"testingdata\",\"subScopename\": \"\"}," - + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\"," - + "\"policyName\": \"may1501\",\"policyDescription\": \"testing input\"," - + "\"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\"," - + "\"riskLevel\": \"2\",\"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\"," - + "\"version\": \"1707.41.02\",\"ruleGridData\": [[\"fileId\"]],\"ttlDate\": null}}," - + "\"policyJSON\": {\"pmTableName\": \"test\",\"dmdTopic\": \"1\",\"fileId\": \"56\"}}"; + jsonString = "{\"dcaeUUIDDictionaryData\": {\"modelName\": \"test\",\"inprocess\": false," + + "\"model\": {\"name\": \"testingdata\",\"subScopename\": \"\",\"path\": []," + + "\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\", " + + " \"version\": \"\",\"createdBy\": \"someone\",\"modifiedBy\": \"someone\"," + + "\"content\": \"\",\"recursive\": false},\"tempModel\": " + + "{\"name\": \"testingdata\",\"subScopename\": \"\"}," + + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\"," + + "\"policyName\": \"may1501\",\"policyDescription\": \"testing input\"," + + "\"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\"," + + "\"riskLevel\": \"2\",\"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\"," + + "\"version\": \"1707.41.02\",\"ruleGridData\": [[\"fileId\"]],\"ttlDate\": null}}," + + "\"policyJSON\": {\"pmTableName\": \"test\",\"dmdTopic\": \"1\",\"fileId\": \"56\"}}"; BufferedReader br = new BufferedReader(new StringReader(jsonString)); when(request.getReader()).thenReturn(br); controller.saveDCAEUUIDDictionary(request, response); @@ -318,8 +314,8 @@ public class MicroServiceDictionaryControllerTest { when(request.getReader()).thenReturn(br); controller.removeMicroServiceConfigNameDictionary(request, response); logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue(response.getContentAsString() != null && response.getContentAsString() - .contains("microServiceConfigNameDictionaryDatas")); + assertTrue(response.getContentAsString() != null + && response.getContentAsString().contains("microServiceConfigNameDictionaryDatas")); } catch (Exception e) { fail("Exception: " + e); } @@ -335,8 +331,8 @@ public class MicroServiceDictionaryControllerTest { controller.getMicroServiceConfigNameByNameDictionaryEntityData(response); try { - assertTrue(response.getContentAsString() != null && response.getContentAsString() - .contains("microServiceConfigNameDictionaryDatas")); + assertTrue(response.getContentAsString() != null + && response.getContentAsString().contains("microServiceConfigNameDictionaryDatas")); logger.info("response.getContentAsString(): " + response.getContentAsString()); } catch (UnsupportedEncodingException e) { fail("Exception: " + e); @@ -354,8 +350,8 @@ public class MicroServiceDictionaryControllerTest { controller.getMicroServiceConfigNameDictionaryEntityData(response); try { - assertTrue(response.getContentAsString() != null && response.getContentAsString() - .contains("microServiceConfigNameDictionaryDatas")); + assertTrue(response.getContentAsString() != null + && response.getContentAsString().contains("microServiceConfigNameDictionaryDatas")); logger.info("response.getContentAsString(): " + response.getContentAsString()); } catch (UnsupportedEncodingException e) { fail("Exception: " + e); @@ -373,25 +369,24 @@ public class MicroServiceDictionaryControllerTest { try { // mock the getReader() call - jsonString = - "{\"microServiceConfigNameDictionaryData\": {\"modelName\": \"test\",\"inprocess\": false," - + "\"model\": {\"name\": \"testingdata\",\"subScopename\": \"\",\"path\": []," - + "\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\",\"version\": \"\"," - + "\"createdBy\": \"someone\",\"modifiedBy\": \"someone\",\"content\": \"\"," - + "\"recursive\": false},\"tempModel\": {\"name\": \"testingdata\"," - + "\"subScopename\": \"\"},\"policy\": " - + "{\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\"," - + "\"policyName\": \"may1501\",\"policyDescription\": \"testing input\"," - + "\"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\"," - + "\"riskLevel\": \"2\",\"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\"," - + "\"version\": \"1707.41.02\",\"ruleGridData\": [[\"fileId\"]],\"ttlDate\": null}}," - + "\"policyJSON\": {\"pmTableName\": \"test\",\"dmdTopic\": \"1\",\"fileId\": \"56\"}}"; + jsonString = "{\"microServiceConfigNameDictionaryData\": {\"modelName\": \"test\",\"inprocess\": false," + + "\"model\": {\"name\": \"testingdata\",\"subScopename\": \"\",\"path\": []," + + "\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\",\"version\": \"\"," + + "\"createdBy\": \"someone\",\"modifiedBy\": \"someone\",\"content\": \"\"," + + "\"recursive\": false},\"tempModel\": {\"name\": \"testingdata\"," + + "\"subScopename\": \"\"},\"policy\": " + + "{\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\"," + + "\"policyName\": \"may1501\",\"policyDescription\": \"testing input\"," + + "\"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\"," + + "\"riskLevel\": \"2\",\"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\"," + + "\"version\": \"1707.41.02\",\"ruleGridData\": [[\"fileId\"]],\"ttlDate\": null}}," + + "\"policyJSON\": {\"pmTableName\": \"test\",\"dmdTopic\": \"1\",\"fileId\": \"56\"}}"; BufferedReader br = new BufferedReader(new StringReader(jsonString)); when(request.getReader()).thenReturn(br); controller.saveMicroServiceConfigNameDictionary(request, response); logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue(response.getContentAsString() != null && response.getContentAsString() - .contains("microServiceConfigNameDictionaryDatas")); + assertTrue(response.getContentAsString() != null + && response.getContentAsString().contains("microServiceConfigNameDictionaryDatas")); } catch (Exception e) { fail("Exception: " + e); } @@ -423,8 +418,8 @@ public class MicroServiceDictionaryControllerTest { when(request.getReader()).thenReturn(br); controller.removeMicroServiceConfigNameDictionary(request, response); logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue(response.getContentAsString() != null && response.getContentAsString() - .contains("microServiceConfigNameDictionaryDatas")); + assertTrue(response.getContentAsString() != null + && response.getContentAsString().contains("microServiceConfigNameDictionaryDatas")); } catch (Exception e) { fail("Exception: " + e); } @@ -441,8 +436,8 @@ public class MicroServiceDictionaryControllerTest { controller.getMicroServiceLocationByNameDictionaryEntityData(response); try { - assertTrue(response.getContentAsString() != null && response.getContentAsString() - .contains("microServiceLocationDictionaryDatas")); + assertTrue(response.getContentAsString() != null + && response.getContentAsString().contains("microServiceLocationDictionaryDatas")); logger.info("response.getContentAsString(): " + response.getContentAsString()); } catch (UnsupportedEncodingException e) { fail("Exception: " + e); @@ -460,8 +455,8 @@ public class MicroServiceDictionaryControllerTest { controller.getMicroServiceLocationDictionaryEntityData(response); try { - assertTrue(response.getContentAsString() != null && response.getContentAsString() - .contains("microServiceLocationDictionaryDatas")); + assertTrue(response.getContentAsString() != null + && response.getContentAsString().contains("microServiceLocationDictionaryDatas")); logger.info("response.getContentAsString(): " + response.getContentAsString()); } catch (UnsupportedEncodingException e) { fail("Exception: " + e); @@ -479,25 +474,24 @@ public class MicroServiceDictionaryControllerTest { try { // mock the getReader() call - jsonString = - "{\"microServiceLocationDictionaryData\": {\"modelName\": \"test\",\"inprocess\": false," - + "\"model\": {\"name\": \"testingdata\",\"subScopename\": \"\",\"path\": []," - + "\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\"," - + "\"version\": \"\",\"createdBy\": \"someone\",\"modifiedBy\": \"someone\"," - + "\"content\": \"\",\"recursive\": false},\"tempModel\": " - + "{\"name\": \"testingdata\",\"subScopename\": \"\"}," - + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\"," - + "\"policyName\": \"may1501\",\"policyDescription\": \"testing input\"," - + "\"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\"," - + "\"riskLevel\": \"2\",\"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\"," - + "\"version\": \"1707.41.02\",\"ruleGridData\": [[\"fileId\"]],\"ttlDate\": null}}," - + "\"policyJSON\": {\"pmTableName\": \"test\",\"dmdTopic\": \"1\",\"fileId\": \"56\"}}"; + jsonString = "{\"microServiceLocationDictionaryData\": {\"modelName\": \"test\",\"inprocess\": false," + + "\"model\": {\"name\": \"testingdata\",\"subScopename\": \"\",\"path\": []," + + "\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\"," + + "\"version\": \"\",\"createdBy\": \"someone\",\"modifiedBy\": \"someone\"," + + "\"content\": \"\",\"recursive\": false},\"tempModel\": " + + "{\"name\": \"testingdata\",\"subScopename\": \"\"}," + + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\"," + + "\"policyName\": \"may1501\",\"policyDescription\": \"testing input\"," + + "\"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\"," + + "\"riskLevel\": \"2\",\"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\"," + + "\"version\": \"1707.41.02\",\"ruleGridData\": [[\"fileId\"]],\"ttlDate\": null}}," + + "\"policyJSON\": {\"pmTableName\": \"test\",\"dmdTopic\": \"1\",\"fileId\": \"56\"}}"; BufferedReader br = new BufferedReader(new StringReader(jsonString)); when(request.getReader()).thenReturn(br); controller.saveMicroServiceLocationDictionary(request, response); logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue(response.getContentAsString() != null && response.getContentAsString() - .contains("microServiceLocationDictionaryDatas")); + assertTrue(response.getContentAsString() != null + && response.getContentAsString().contains("microServiceLocationDictionaryDatas")); } catch (Exception e) { fail("Exception: " + e); @@ -531,8 +525,8 @@ public class MicroServiceDictionaryControllerTest { when(request.getReader()).thenReturn(br); controller.removeMicroServiceLocationDictionary(request, response); logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue(response.getContentAsString() != null && response.getContentAsString() - .contains("microServiceLocationDictionaryDatas")); + assertTrue(response.getContentAsString() != null + && response.getContentAsString().contains("microServiceLocationDictionaryDatas")); } catch (Exception e) { fail("Exception: " + e); } @@ -548,8 +542,8 @@ public class MicroServiceDictionaryControllerTest { controller.getMicroServiceAttributeByNameDictionaryEntityData(response); try { - assertTrue(response.getContentAsString() != null && response.getContentAsString() - .contains("microServiceAttributeDictionaryDatas")); + assertTrue(response.getContentAsString() != null + && response.getContentAsString().contains("microServiceAttributeDictionaryDatas")); logger.info("response.getContentAsString(): " + response.getContentAsString()); } catch (UnsupportedEncodingException e) { fail("Exception: " + e); @@ -567,8 +561,8 @@ public class MicroServiceDictionaryControllerTest { controller.getMicroServiceAttributeDictionaryEntityData(response); try { - assertTrue(response.getContentAsString() != null && response.getContentAsString() - .contains("microServiceAttributeDictionaryDatas")); + assertTrue(response.getContentAsString() != null + && response.getContentAsString().contains("microServiceAttributeDictionaryDatas")); logger.info("response.getContentAsString(): " + response.getContentAsString()); } catch (UnsupportedEncodingException e) { fail("Exception: " + e); @@ -586,25 +580,23 @@ public class MicroServiceDictionaryControllerTest { try { // mock the getReader() call - jsonString = - "{\"modelAttributeDictionaryData\": {\"modelName\": \"test\",\"inprocess\": false," - + "\"model\": {\"name\": \"testingdata\",\"subScopename\": \"\",\"path\": []," - + "\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\",\"version\": \"\"," - + "\"createdBy\": \"someone\",\"modifiedBy\": \"someone\",\"content\": \"\"," - + "\"recursive\": false},\"tempModel\": " - + "{\"name\": \"testingdata\",\"subScopename\": \"\"}," - + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\"," - + "\"policyName\": \"may1501\",\"policyDescription\": \"testing input\"," - + "\"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\"," - + "\"riskLevel\": \"2\",\"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\"," - + "\"version\": \"1707.41.02\",\"ruleGridData\": [[\"fileId\"]],\"ttlDate\": null}}," - + "\"policyJSON\": {\"pmTableName\": \"test\",\"dmdTopic\": \"1\",\"fileId\": \"56\"}}"; + jsonString = "{\"modelAttributeDictionaryData\": {\"modelName\": \"test\",\"inprocess\": false," + + "\"model\": {\"name\": \"testingdata\",\"subScopename\": \"\",\"path\": []," + + "\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\",\"version\": \"\"," + + "\"createdBy\": \"someone\",\"modifiedBy\": \"someone\",\"content\": \"\"," + + "\"recursive\": false},\"tempModel\": " + "{\"name\": \"testingdata\",\"subScopename\": \"\"}," + + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\"," + + "\"policyName\": \"may1501\",\"policyDescription\": \"testing input\"," + + "\"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\"," + + "\"riskLevel\": \"2\",\"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\"," + + "\"version\": \"1707.41.02\",\"ruleGridData\": [[\"fileId\"]],\"ttlDate\": null}}," + + "\"policyJSON\": {\"pmTableName\": \"test\",\"dmdTopic\": \"1\",\"fileId\": \"56\"}}"; BufferedReader br = new BufferedReader(new StringReader(jsonString)); when(request.getReader()).thenReturn(br); controller.saveMicroServiceAttributeDictionary(request, response); logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue(response.getContentAsString() != null && response.getContentAsString() - .contains("microServiceAttributeDictionaryDatas")); + assertTrue(response.getContentAsString() != null + && response.getContentAsString().contains("microServiceAttributeDictionaryDatas")); } catch (Exception e) { fail("Exception: " + e); } @@ -636,8 +628,8 @@ public class MicroServiceDictionaryControllerTest { when(request.getReader()).thenReturn(br); controller.removeMicroServiceAttributeDictionary(request, response); logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue(response.getContentAsString() != null && response.getContentAsString() - .contains("microServiceAttributeDictionaryDatas")); + assertTrue(response.getContentAsString() != null + && response.getContentAsString().contains("microServiceAttributeDictionaryDatas")); } catch (Exception e) { fail("Exception: " + e); @@ -755,8 +747,8 @@ public class MicroServiceDictionaryControllerTest { when(request.getReader()).thenReturn(br); controller.getMicroServiceModelsDictionaryClassEntityData(response); logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue(response.getContentAsString() != null && response.getContentAsString() - .contains("microServiceModelsDictionaryClassDatas")); + assertTrue(response.getContentAsString() != null + && response.getContentAsString().contains("microServiceModelsDictionaryClassDatas")); } catch (Exception e) { fail("Exception: " + e); @@ -820,4 +812,83 @@ public class MicroServiceDictionaryControllerTest { } logger.info("testRemoveMicroServiceModelsDictionary: exit"); } + + @Test + public void testRemoveMicroServiceDictionaryData() { + logger.info("testRemoveMicroServiceModelsDictionary: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + request = mock(HttpServletRequest.class); + + try { + jsonString = + "{\"data\": {\"modelName\": \"test\",\"inprocess\": false,\"model\": {\"name\": \"testingdata\", " + + "\"subScopename\": \"\",\"path\": [],\"type\": \"dir\",\"size\": 0," + + "\"date\": \"2017-04-12T21:26:57.000Z\",\"version\": \"\",\"createdBy\": \"someone\"," + + "\"modifiedBy\": \"someone\",\"content\": \"\",\"recursive\": false}," + + "\"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\"}," + + "\"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\"," + + "\"policyName\": \"may1501\",\"policyDescription\": \"testing input\"," + + "\"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\"," + + "\"riskLevel\": \"2\",\"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\"," + + "\"version\": \"1707.41.02\",\"ruleGridData\": [[\"fileId\"]],\"ttlDate\": null}}," + + "\"policyJSON\": {\"pmTableName\": \"test\",\"dmdTopic\": \"1\",\"fileId\": \"56\"}}"; + + BufferedReader br = new BufferedReader(new StringReader(jsonString)); + when(request.getReader()).thenReturn(br); + controller.removeMicroServiceDictionaryData(request, response); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + assertTrue(response.getContentAsString() != null + && response.getContentAsString().contains("microServiceDictionaryData")); + } catch (Exception e) { + fail("Exception: " + e); + } + logger.info("testRemoveMicroServiceModelsDictionary: exit"); + } + + @Test + public void getMicroServiceDictNameDictionaryEntityData() { + logger.info("getMicroServiceDictNameDictionaryEntityData: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + String msModelJson = "{\"microServiceDictionaryData\":[\"modelName\"]}"; + + BufferedReader br = new BufferedReader(new StringReader(msModelJson)); + request = mock(HttpServletRequest.class); + + try { + when(request.getReader()).thenReturn(br); + controller.getMicroServiceDictNameDictionaryEntityData(response); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + assertTrue(response.getContentAsString() != null + && response.getContentAsString().contains("microServiceDictionaryData")); + + } catch (Exception e) { + fail("Exception: " + e); + } + + logger.info("getMicroServiceDictNameDictionaryEntityData: exit"); + } + + @Test + public void testSaveDictionaryData() { + logger.info("testSaveDictionaryData: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + request = mock(HttpServletRequest.class); + + try { + jsonString = "{\"microServiceDictionaryDatas\": {\"id\": 1,\"dictionaryName\": \"tes1t\"," + + "\"dictionaryUrl\": \"tes1t\",\"dictionaryDataByName\": \"test\"}}"; + BufferedReader br = new BufferedReader(new StringReader(jsonString)); + when(request.getReader()).thenReturn(br); + controller.saveDictionaryData(request, response); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + assertTrue(response.getContentAsString() != null + && response.getContentAsString().contains("microServiceDictionaryDatas")); + } catch (Exception e) { + fail("Exception: " + e); + } + logger.info("testSaveDictionaryData: exit"); + } } diff --git a/ONAP-PAP-REST/test.properties b/ONAP-PAP-REST/test.properties index 65a9363ee..3bc35dfaf 100644 --- a/ONAP-PAP-REST/test.properties +++ b/ONAP-PAP-REST/test.properties @@ -2,7 +2,7 @@ # ============LICENSE_START======================================================= # ONAP-PAP-REST # ================================================================================ -# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. +# Copyright (C) 2017,2019 AT&T Intellectual Property. 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. @@ -18,5 +18,4 @@ # ============LICENSE_END========================================================= ### -PDP_URL=http://localhost:8082/pdp/, testpdp, alpha456 -#PAP_URL=http://localhost:8070/pap/, testpap, alpha123 +PDP_URL=http://localhost:8082/pdp/, testpdp, alpha123 diff --git a/ONAP-PAP-REST/xacml.pap.properties b/ONAP-PAP-REST/xacml.pap.properties index 6ce51473d..b0661426f 100644 --- a/ONAP-PAP-REST/xacml.pap.properties +++ b/ONAP-PAP-REST/xacml.pap.properties @@ -152,7 +152,7 @@ ENVIRONMENT=DEVL # #Turn safetyChecker on/off xacml.rest.pap.safetychecker=on -PDP_URL1 = http://localhost:8082/pdp/, testpdp, alpha456 +PDP_URL1 = http://localhost:8082/pdp/, testpdp, alpha123 CLIENT_ID= CLIENT_KEY= diff --git a/ONAP-PDP-REST/client.properties b/ONAP-PDP-REST/client.properties index e97bbedb6..ede12c2e9 100644 --- a/ONAP-PDP-REST/client.properties +++ b/ONAP-PDP-REST/client.properties @@ -2,7 +2,7 @@ #============LICENSE_START================================================== # ONAP Policy Engine #=========================================================================== -# Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. +# Copyright (C) 2017,2019 AT&T Intellectual Property. 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. @@ -18,4 +18,5 @@ #============LICENSE_END================================================== # -python=test,MASTER
\ No newline at end of file +python=test,MASTER +testpdp=alpha123,MASTER
\ No newline at end of file diff --git a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/controller/PolicyEngineServices.java b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/controller/PolicyEngineServices.java index 4296c058c..fd4f25529 100644 --- a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/controller/PolicyEngineServices.java +++ b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/controller/PolicyEngineServices.java @@ -20,6 +20,10 @@ package org.onap.policy.pdp.rest.api.controller; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; import java.lang.reflect.InvocationTargetException; import java.util.Collection; import java.util.concurrent.atomic.AtomicLong; @@ -58,24 +62,22 @@ import org.onap.policy.pdp.rest.api.services.NotificationService.NotificationSer import org.onap.policy.pdp.rest.api.services.PolicyEngineImportService; import org.onap.policy.pdp.rest.api.services.PushPolicyService; import org.onap.policy.pdp.rest.api.services.SendEventService; -import org.onap.policy.pdp.rest.config.PDPApiAuth; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.http.converter.HttpMessageNotReadableException; +import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestAttribute; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiImplicitParam; -import io.swagger.annotations.ApiImplicitParams; -import io.swagger.annotations.ApiOperation; import springfox.documentation.annotations.ApiIgnore; @RestController @@ -83,7 +85,6 @@ import springfox.documentation.annotations.ApiIgnore; @RequestMapping("/") public class PolicyEngineServices { private static Logger logger = FlexLogger.getLogger(PolicyEngineServices.class.getName()); - private static final String NOTIFICATIONPERM = "notification"; private final AtomicLong configCounter = new AtomicLong(); private final AtomicLong configNameCounter = new AtomicLong(); @@ -112,64 +113,72 @@ public class PolicyEngineServices { @ApiImplicitParams({@ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), @ApiImplicitParam(name = "Environment", required = true, paramType = "Header")}) @ApiOperation(value = "Gets the configuration from the PolicyDecisionPoint(PDP)") - @RequestMapping(value = "/getConfig", method = RequestMethod.POST) + @PostMapping(value = "/getConfig") @ResponseBody public ResponseEntity<Collection<PolicyConfig>> getConfig( @RequestBody ConfigRequestParameters configRequestParameters, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { + @RequestHeader(value = "ClientAuth", required = false) String clientEncoding, + @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestId) { Collection<PolicyConfig> policyConfig = null; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, "getConfig")) { - GetConfigService getConfigService = new GetConfigService(configRequestParameters, requestID); - policyConfig = getConfigService.getResult(); - status = getConfigService.getResponseCode(); - } + GetConfigService getConfigService = new GetConfigService(configRequestParameters, requestId); + policyConfig = getConfigService.getResult(); + HttpStatus status = getConfigService.getResponseCode(); configCounter.incrementAndGet(); return new ResponseEntity<>(policyConfig, status); } + /** + * Gets the config by policy name. + * + * @param configNameRequest the config name request + * @param clientEncoding the client encoding + * @param requestId the request id + * @return the config by policy name + */ @ApiImplicitParams({@ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), @ApiImplicitParam(name = "Environment", required = true, paramType = "Header")}) @ApiOperation(value = "Gets the configuration from the PolicyDecisionPoint(PDP) using PolicyName") - @RequestMapping(value = "/getConfigByPolicyName", method = RequestMethod.POST) + @PostMapping(value = "/getConfigByPolicyName") @ResponseBody @Deprecated public ResponseEntity<Collection<PolicyConfig>> getConfigByPolicyName( @RequestBody ConfigNameRequest configNameRequest, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { + @RequestHeader(value = "ClientAuth", required = false) String clientEncoding, + @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestId) { Collection<PolicyConfig> policyConfig = null; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, "getConfigByPolicyName")) { - ConfigRequestParameters configRequestParameters = new ConfigRequestParameters(); - configRequestParameters.setPolicyName(configNameRequest.getPolicyName()); - GetConfigService getConfigService = new GetConfigService(configRequestParameters, requestID); - policyConfig = getConfigService.getResult(); - status = getConfigService.getResponseCode(); - } + logger.info("Operation: getConfigByPolicyName - " + configNameRequest.getPolicyName()); + ConfigRequestParameters configRequestParameters = new ConfigRequestParameters(); + configRequestParameters.setPolicyName(configNameRequest.getPolicyName()); + + GetConfigService getConfigService = new GetConfigService(configRequestParameters, requestId); + policyConfig = getConfigService.getResult(); + HttpStatus status = getConfigService.getResponseCode(); configNameCounter.incrementAndGet(); return new ResponseEntity<>(policyConfig, status); } + + /** + * List config. + * + * @param configRequestParameters the config request parameters + * @param clientEncoding the client encoding + * @param requestId the request ID + * @return the response entity + */ @ApiImplicitParams({@ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), @ApiImplicitParam(name = "Environment", required = true, paramType = "Header")}) @ApiOperation(value = "Gets the list of configuration policies from the PDP") - @RequestMapping(value = "/listConfig", method = RequestMethod.POST) + @PostMapping(value = "/listConfig") @ResponseBody public ResponseEntity<Collection<String>> listConfig(@RequestBody ConfigRequestParameters configRequestParameters, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { + @RequestHeader(value = "ClientAuth", required = false) String clientEncoding, + @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestId) { Collection<String> results = null; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, "listConfig")) { - ListConfigService listConfigService = new ListConfigService(configRequestParameters, requestID); - results = listConfigService.getResult(); - status = listConfigService.getResponseCode(); - } + logger.info("Operation: listConfig - " + configRequestParameters); + ListConfigService listConfigService = new ListConfigService(configRequestParameters, requestId); + results = listConfigService.getResult(); + HttpStatus status = listConfigService.getResponseCode(); configCounter.incrementAndGet(); return new ResponseEntity<>(results, status); } @@ -188,422 +197,524 @@ public class PolicyEngineServices { @PostMapping(value = "/listPolicy") @ResponseBody public ResponseEntity<Collection<String>> listPolicy(@RequestBody ConfigNameRequest configNameRequest, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, + @RequestHeader(value = "ClientAuth", required = false) String clientEncoding, @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestId) { Collection<String> results = null; - HttpStatus status = HttpStatus.UNAUTHORIZED; logger.info("Operation: listPolicy - " + configNameRequest); - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestId, "listPolicy")) { - ListPolicyService listPolicyService = new ListPolicyService(configNameRequest); - results = listPolicyService.getResult(); - status = listPolicyService.getResponseCode(); - } + ListPolicyService listPolicyService = new ListPolicyService(configNameRequest); + results = listPolicyService.getResult(); + HttpStatus status = listPolicyService.getResponseCode(); configCounter.incrementAndGet(); return new ResponseEntity<>(results, status); } + /** + * Gets the metrics. + * + * @param clientEncoding the client encoding + * @param requestId the request ID + * @return the metrics + */ @ApiImplicitParams({@ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), @ApiImplicitParam(name = "Environment", required = true, paramType = "Header")}) @ApiOperation(value = "Gets the policy metrics from the PolicyAccessPoint(PAP)") - @RequestMapping(value = "/getMetrics", method = RequestMethod.GET) + @GetMapping(value = "/getMetrics") @ResponseBody public ResponseEntity<MetricsResponse> getMetrics( - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { + @RequestHeader(value = "ClientAuth", required = false) String clientEncoding, + @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestId) { MetricsResponse response = null; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, "getMetrics")) { - GetMetricsService getMetricsService = new GetMetricsService(requestID); - response = getMetricsService.getResult(); - status = getMetricsService.getResponseCode(); - } + logger.info("Operation: getMetrics"); + + GetMetricsService getMetricsService = new GetMetricsService(requestId); + response = getMetricsService.getResult(); + HttpStatus status = getMetricsService.getResponseCode(); metricCounter.incrementAndGet(); return new ResponseEntity<>(response, status); } + /** + * Gets the notification. + * + * @param notificationTopic the notification topic + * @param clientEncoding the client encoding + * @param requestId the request ID + * @return the notification + */ @ApiImplicitParams({@ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), @ApiImplicitParam(name = "Environment", required = true, paramType = "Header")}) @ApiOperation(value = "Registers DMaaP Topic to recieve notification from Policy Engine") - @RequestMapping(value = "/getNotification", method = RequestMethod.POST) + @PostMapping(value = "/getNotification") @ResponseBody public ResponseEntity<String> getNotification(@RequestBody String notificationTopic, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { - String policyResponse = "Error Unauthorized to use Notification Service."; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, NOTIFICATIONPERM)) { - NotificationService notificationService = - new NotificationService(notificationTopic, requestID, NotificationServiceType.ADD); - policyResponse = notificationService.getResult(); - status = notificationService.getResponseCode(); - } + @RequestHeader(value = "ClientAuth", required = false) String clientEncoding, + @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestId) { + logger.info("Operation: getNotification for Topic: " + notificationTopic); + + NotificationService notificationService = + new NotificationService(notificationTopic, requestId, NotificationServiceType.ADD); + String policyResponse = notificationService.getResult(); + HttpStatus status = notificationService.getResponseCode(); notificationCounter.incrementAndGet(); return new ResponseEntity<>(policyResponse, status); } + /** + * Stop notification. + * + * @param notificationTopic the notification topic + * @param clientEncoding the client encoding + * @param requestId the request ID + * @return the response entity + */ @ApiImplicitParams({@ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), @ApiImplicitParam(name = "Environment", required = true, paramType = "Header")}) @ApiOperation(value = "De-Registers DMaaP Topic to stop recieving notifications from Policy Engine") - @RequestMapping(value = "/stopNotification", method = RequestMethod.POST) + @PostMapping(value = "/stopNotification") @ResponseBody public ResponseEntity<String> stopNotification(@RequestBody String notificationTopic, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { - String policyResponse = "Error Unauthorized to use Notification Service."; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, NOTIFICATIONPERM)) { - NotificationService notificationService = - new NotificationService(notificationTopic, requestID, NotificationServiceType.REMOVE); - policyResponse = notificationService.getResult(); - status = notificationService.getResponseCode(); - } + @RequestHeader(value = "ClientAuth", required = false) String clientEncoding, + @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestId) { + logger.info("Operation: stopNotification for Topic: " + notificationTopic); + + NotificationService notificationService = + new NotificationService(notificationTopic, requestId, NotificationServiceType.REMOVE); + String policyResponse = notificationService.getResult(); + HttpStatus status = notificationService.getResponseCode(); + notificationCounter.incrementAndGet(); return new ResponseEntity<>(policyResponse, status); } + /** + * Send heartbeat. + * + * @param notificationTopic the notification topic + * @param clientEncoding the client encoding + * @param requestId the request ID + * @return the response entity + */ @ApiImplicitParams({@ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), @ApiImplicitParam(name = "Environment", required = true, paramType = "Header")}) @ApiOperation( value = "Sends Heartbeat to DMaaP Topic Registry to continue recieving notifications from Policy Engine") - @RequestMapping(value = "/sendHeartbeat", method = RequestMethod.POST) + @PostMapping(value = "/sendHeartbeat") @ResponseBody public ResponseEntity<String> sendHeartbeat(@RequestBody String notificationTopic, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { - String policyResponse = "Error Unauthorized to use Heartbeat Service."; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, NOTIFICATIONPERM)) { - NotificationService notificationService = - new NotificationService(notificationTopic, requestID, NotificationServiceType.HB); - policyResponse = notificationService.getResult(); - status = notificationService.getResponseCode(); - } + @RequestHeader(value = "ClientAuth", required = false) String clientEncoding, + @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestId) { + logger.info("Operation: sendHeartbeat for topic - " + notificationTopic); + + NotificationService notificationService = + new NotificationService(notificationTopic, requestId, NotificationServiceType.HB); + String policyResponse = notificationService.getResult(); + HttpStatus status = notificationService.getResponseCode(); + return new ResponseEntity<>(policyResponse, status); } + /** + * Send event. + * + * @param eventRequestParameters the event request parameters + * @param clientEncoding the client encoding + * @param requestId the request ID + * @return the response entity + */ @ApiImplicitParams({@ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), @ApiImplicitParam(name = "Environment", required = true, paramType = "Header")}) @ApiOperation(value = "Sends the Events specified to the Policy Engine") - @RequestMapping(value = "/sendEvent", method = RequestMethod.POST) + @PostMapping(value = "/sendEvent") @ResponseBody public ResponseEntity<Collection<PolicyResponse>> sendEvent( @RequestBody EventRequestParameters eventRequestParameters, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { + @RequestHeader(value = "ClientAuth", required = false) String clientEncoding, + @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestId) { Collection<PolicyResponse> policyResponse = null; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, "sendEvent")) { - SendEventService sendEventService = new SendEventService(eventRequestParameters, requestID); - policyResponse = sendEventService.getResult(); - status = sendEventService.getResponseCode(); - } + logger.info("Operation: sendEvent with EventAttributes - " + eventRequestParameters.getEventAttributes()); + + SendEventService sendEventService = new SendEventService(eventRequestParameters, requestId); + policyResponse = sendEventService.getResult(); + HttpStatus status = sendEventService.getResponseCode(); eventCounter.incrementAndGet(); return new ResponseEntity<>(policyResponse, status); } + /** + * Gets the decision. + * + * @param decisionRequestParameters the decision request parameters + * @param clientEncoding the client encoding + * @param requestId the request ID + * @return the decision + */ @ApiImplicitParams({@ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), @ApiImplicitParam(name = "Environment", required = true, paramType = "Header")}) @ApiOperation(value = "Gets the Decision using specified decision parameters") - @RequestMapping(value = "/getDecision", method = RequestMethod.POST) + @PostMapping(value = "/getDecision") @ResponseBody public ResponseEntity<DecisionResponse> getDecision( @RequestBody DecisionRequestParameters decisionRequestParameters, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { + @RequestHeader(value = "ClientAuth", required = false) String clientEncoding, + @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestId) { DecisionResponse decisionResponse = null; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, "getDecision")) { - GetDecisionService getDecisionService = new GetDecisionService(decisionRequestParameters, requestID); - decisionResponse = getDecisionService.getResult(); - status = getDecisionService.getResponseCode(); - } + + GetDecisionService getDecisionService = new GetDecisionService(decisionRequestParameters, requestId); + decisionResponse = getDecisionService.getResult(); + HttpStatus status = getDecisionService.getResponseCode(); decisionCounter.incrementAndGet(); return new ResponseEntity<>(decisionResponse, status); } + /** + * Push policy. + * + * @param pushPolicyParameters the push policy parameters + * @param clientEncoding the client encoding + * @param requestId the request ID + * @return the response entity + */ @ApiImplicitParams({@ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), @ApiImplicitParam(name = "Environment", required = true, paramType = "Header")}) @ApiOperation(value = "Pushes the specified policy to the PDP Group.") - @RequestMapping(value = "/pushPolicy", method = RequestMethod.PUT) + @PutMapping(value = "/pushPolicy") @ResponseBody public ResponseEntity<String> pushPolicy(@RequestBody PushPolicyParameters pushPolicyParameters, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { + @RequestHeader(value = "ClientAuth", required = false) String clientEncoding, + @RequestAttribute(name = "Mechid") String mechId, + @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestId) { String response = null; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, "pushPolicy")) { - PushPolicyService pushPolicyService = new PushPolicyService(pushPolicyParameters, requestID); - response = pushPolicyService.getResult(); - status = pushPolicyService.getResponseCode(); - } + logger.info("Operation: pushPolicy - " + pushPolicyParameters + ", Mechid - " + mechId); + PushPolicyService pushPolicyService = new PushPolicyService(pushPolicyParameters, requestId); + response = pushPolicyService.getResult(); + HttpStatus status = pushPolicyService.getResponseCode(); pushCounter.incrementAndGet(); return new ResponseEntity<>(response, status); } + /** + * Delete policy. + * + * @param deletePolicyParameters the delete policy parameters + * @param clientEncoding the client encoding + * @param requestId the request ID + * @return the response entity + */ @ApiImplicitParams({@ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), @ApiImplicitParam(name = "Environment", required = true, paramType = "Header")}) @ApiOperation(value = "Deletes the specified policy from the PDP Group or PAP.") - @RequestMapping(value = "/deletePolicy", method = RequestMethod.DELETE) + @DeleteMapping(value = "/deletePolicy") @ResponseBody public ResponseEntity<String> deletePolicy(@RequestBody DeletePolicyParameters deletePolicyParameters, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { + @RequestHeader(value = "ClientAuth", required = false) String clientEncoding, + @RequestAttribute(name = "Mechid") String mechId, + @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestId) { String response = null; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, "deletePolicy")) { - DeletePolicyService deletePolicyService = new DeletePolicyService(deletePolicyParameters, requestID); - response = deletePolicyService.getResult(); - status = deletePolicyService.getResponseCode(); - } + logger.info("Operation: deletePolicy - " + deletePolicyParameters + ", Mechid - " + mechId); + DeletePolicyService deletePolicyService = new DeletePolicyService(deletePolicyParameters, requestId); + response = deletePolicyService.getResult(); + HttpStatus status = deletePolicyService.getResponseCode(); deleteCounter.incrementAndGet(); return new ResponseEntity<>(response, status); } + /** + * Creates the policy. + * + * @param policyParameters the policy parameters + * @param clientEncoding the client encoding + * @param requestId the request ID + * @return the response entity + */ @ApiImplicitParams({@ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), @ApiImplicitParam(name = "Environment", required = true, paramType = "Header")}) @ApiOperation(value = "Creates a Policy based on given Policy Parameters.") - @RequestMapping(value = "/createPolicy", method = RequestMethod.PUT) + @PutMapping(value = "/createPolicy") @ResponseBody public ResponseEntity<String> createPolicy(@RequestBody PolicyParameters policyParameters, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { + @RequestHeader(value = "ClientAuth", required = false) String clientEncoding, + @RequestAttribute(name = "Mechid") String mechId, + @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestId) { String response = null; HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, "createPolicy")) { - CreateUpdatePolicyService createPolicyService; - try { - createPolicyService = (CreateUpdatePolicyService) XACMLPdpServlet.getCreateUpdatePolicyConstructor() - .newInstance(policyParameters, requestID, false); - response = createPolicyService.getResult(); - status = createPolicyService.getResponseCode(); - } catch (InstantiationException | IllegalAccessException | IllegalArgumentException - | InvocationTargetException e) { - logger.error(e.getMessage(), e); - response = "Problem with CreateUpdate Policy Service. "; - status = HttpStatus.INTERNAL_SERVER_ERROR; - } + logger.info("Operation: createPolicy for " + policyParameters.toString() + ", Mechid : " + mechId); + + CreateUpdatePolicyService createPolicyService; + try { + createPolicyService = (CreateUpdatePolicyService) XACMLPdpServlet.getCreateUpdatePolicyConstructor() + .newInstance(policyParameters, requestId, false); + response = createPolicyService.getResult(); + status = createPolicyService.getResponseCode(); + } catch (InstantiationException | IllegalAccessException | IllegalArgumentException + | InvocationTargetException e) { + logger.error(e.getMessage(), e); + response = "Problem with CreateUpdate Policy Service. "; + status = HttpStatus.INTERNAL_SERVER_ERROR; } createPolicyCounter.incrementAndGet(); return new ResponseEntity<>(response, status); } + /** + * Update policy. + * + * @param policyParameters the policy parameters + * @param clientEncoding the client encoding + * @param requestId the request ID + * @return the response entity + */ @ApiImplicitParams({@ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), @ApiImplicitParam(name = "Environment", required = true, paramType = "Header")}) @ApiOperation(value = "Updates a Policy based on given Policy Parameters.") - @RequestMapping(value = "/updatePolicy", method = RequestMethod.PUT) + @PutMapping(value = "/updatePolicy") @ResponseBody public ResponseEntity<String> updatePolicy(@RequestBody PolicyParameters policyParameters, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { + @RequestHeader(value = "ClientAuth", required = false) String clientEncoding, + @RequestAttribute(name = "Mechid") String mechId, + @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestId) { String response = null; HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, "updatePolicy")) { - CreateUpdatePolicyService updatePolicyService; - try { - updatePolicyService = (CreateUpdatePolicyService) XACMLPdpServlet.getCreateUpdatePolicyConstructor() - .newInstance(policyParameters, requestID, true); - response = updatePolicyService.getResult(); - status = updatePolicyService.getResponseCode(); - } catch (InstantiationException | IllegalAccessException | IllegalArgumentException - | InvocationTargetException e) { - logger.error(e.getMessage(), e); - response = "Problem with CreateUpdate Policy Service. "; - status = HttpStatus.INTERNAL_SERVER_ERROR; - } + logger.info("Operation: updatePolicy for " + policyParameters.toString() + ", MechId - " + mechId); + + CreateUpdatePolicyService updatePolicyService; + try { + updatePolicyService = (CreateUpdatePolicyService) XACMLPdpServlet.getCreateUpdatePolicyConstructor() + .newInstance(policyParameters, requestId, true); + response = updatePolicyService.getResult(); + status = updatePolicyService.getResponseCode(); + } catch (InstantiationException | IllegalAccessException | IllegalArgumentException + | InvocationTargetException e) { + logger.error(e.getMessage(), e); + response = "Problem with CreateUpdate Policy Service. "; + status = HttpStatus.INTERNAL_SERVER_ERROR; } updatePolicyCounter.incrementAndGet(); return new ResponseEntity<>(response, status); } + /** + * Creates the dictionary item. + * + * @param dictionaryParameters the dictionary parameters + * @param clientEncoding the client encoding + * @param requestId the request ID + * @return the response entity + */ @ApiImplicitParams({@ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), @ApiImplicitParam(name = "Environment", required = true, paramType = "Header")}) @ApiOperation(value = "Creates a Dictionary Item for a specific dictionary based on given Parameters.") - @RequestMapping(value = "/createDictionaryItem", method = RequestMethod.PUT) + @PutMapping(value = "/createDictionaryItem") @ResponseBody public ResponseEntity<String> createDictionaryItem(@RequestBody DictionaryParameters dictionaryParameters, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { - String response = null; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, "createDictionary")) { - CreateUpdateDictionaryService createDictionaryService = - new CreateUpdateDictionaryService(dictionaryParameters, requestID, false); - response = createDictionaryService.getResult(); - status = createDictionaryService.getResponseCode(); - } + @RequestHeader(value = "ClientAuth", required = false) String clientEncoding, + @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestId) { + logger.info("Operation: createDictionaryItem - " + dictionaryParameters); + + CreateUpdateDictionaryService createDictionaryService = + new CreateUpdateDictionaryService(dictionaryParameters, requestId, false); + String response = createDictionaryService.getResult(); + HttpStatus status = createDictionaryService.getResponseCode(); createDictionaryCounter.incrementAndGet(); return new ResponseEntity<>(response, status); } + /** + * Update dictionary item. + * + * @param dictionaryParameters the dictionary parameters + * @param clientEncoding the client encoding + * @param requestId the request ID + * @return the response entity + */ @ApiImplicitParams({@ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), @ApiImplicitParam(name = "Environment", required = true, paramType = "Header")}) @ApiOperation(value = "Updates a Dictionary Item for a specific dictionary based on given Parameters.") - @RequestMapping(value = "/updateDictionaryItem", method = RequestMethod.PUT) + @PutMapping(value = "/updateDictionaryItem") @ResponseBody public ResponseEntity<String> updateDictionaryItem(@RequestBody DictionaryParameters dictionaryParameters, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { - String response = null; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, "updateDictionary")) { - CreateUpdateDictionaryService updateDictionaryService = - new CreateUpdateDictionaryService(dictionaryParameters, requestID, true); - response = updateDictionaryService.getResult(); - status = updateDictionaryService.getResponseCode(); - } + @RequestHeader(value = "ClientAuth", required = false) String clientEncoding, + @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestId) { + logger.info("Operation: updateDictionaryItem - " + dictionaryParameters); + + CreateUpdateDictionaryService updateDictionaryService = + new CreateUpdateDictionaryService(dictionaryParameters, requestId, true); + String response = updateDictionaryService.getResult(); + HttpStatus status = updateDictionaryService.getResponseCode(); updateDictionaryCounter.incrementAndGet(); return new ResponseEntity<>(response, status); } + /** + * Gets the dictionary items. + * + * @param dictionaryParameters the dictionary parameters + * @param clientEncoding the client encoding + * @param requestId the request ID + * @return the dictionary items + */ @ApiImplicitParams({@ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), @ApiImplicitParam(name = "Environment", required = true, paramType = "Header")}) @ApiOperation(value = "Gets the dictionary items from the PAP") - @RequestMapping(value = "/getDictionaryItems", method = RequestMethod.POST) + @PostMapping(value = "/getDictionaryItems") @ResponseBody public ResponseEntity<DictionaryResponse> getDictionaryItems(@RequestBody DictionaryParameters dictionaryParameters, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { + @RequestHeader(value = "ClientAuth", required = false) String clientEncoding, + @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestId) { DictionaryResponse dictionaryResponse = null; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, "getDictionary")) { - GetDictionaryService getDictionaryService = new GetDictionaryService(dictionaryParameters, requestID); - dictionaryResponse = getDictionaryService.getResult(); - status = getDictionaryService.getResponseCode(); - } + logger.info("Operation: getDictionaryItems - " + dictionaryParameters); + GetDictionaryService getDictionaryService = new GetDictionaryService(dictionaryParameters, requestId); + dictionaryResponse = getDictionaryService.getResult(); + HttpStatus status = getDictionaryService.getResponseCode(); getDictionaryCounter.incrementAndGet(); return new ResponseEntity<>(dictionaryResponse, status); } + /** + * Policy engine import. + * + * @param importParametersJson the import parameters json + * @param file the file + * @param clientEncoding the client encoding + * @param requestId the request ID + * @return the response entity + */ @ApiImplicitParams({@ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), @ApiImplicitParam(name = "Environment", required = true, paramType = "Header")}) - @ApiOperation( - value = "Imports Policy based on the parameters which represent the service used to create a policy Service.") - @RequestMapping(value = "/policyEngineImport", method = RequestMethod.POST) + @ApiOperation(value = "Imports models and templates which represent the service used to create a policy.") + @PostMapping(value = "/policyEngineImport") @ResponseBody public ResponseEntity<String> policyEngineImport(@RequestParam("importParametersJson") String importParametersJson, @RequestParam("file") MultipartFile file, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { - String response = null; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, "policyEngineImport")) { - PolicyEngineImportService policyEngineImportService = - new PolicyEngineImportService(importParametersJson, file, requestID); - response = policyEngineImportService.getResult(); - status = policyEngineImportService.getResponseCode(); - } + @RequestHeader(value = "ClientAuth", required = false) String clientEncoding, + @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestId) { + logger.info("Operation: policyEngineImport with importParametersJson: " + importParametersJson); + PolicyEngineImportService policyEngineImportService = + new PolicyEngineImportService(importParametersJson, file, requestId); + String response = policyEngineImportService.getResult(); + HttpStatus status = policyEngineImportService.getResponseCode(); policyEngineImportCounter.incrementAndGet(); return new ResponseEntity<>(response, status); } + /** + * Creates the config. + * + * @param configPolicyAPIRequest the config policy API request + * @param clientEncoding the client encoding + * @param requestId the request id + * @return the response entity + */ @ApiImplicitParams({@ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), @ApiImplicitParam(name = "Environment", required = true, paramType = "Header")}) @ApiOperation(value = "Creates a Config Policy based on given Policy Parameters.") - @RequestMapping(value = "/createConfig", method = RequestMethod.PUT) + @PutMapping(value = "/createConfig") @ResponseBody @Deprecated public ResponseEntity<String> createConfig(@RequestBody ConfigPolicyAPIRequest configPolicyAPIRequest, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { - String response = null; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, "createPolicy")) { - CreateUpdateConfigPolicyService createPolicyService = - new CreateUpdateConfigPolicyService(configPolicyAPIRequest, requestID, false); - response = createPolicyService.getResult(); - status = createPolicyService.getResponseCode(); - } + @RequestHeader(value = "ClientAuth", required = false) String clientEncoding, + @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestId) { + logger.info("Operation: createConfig"); + + CreateUpdateConfigPolicyService createPolicyService = + new CreateUpdateConfigPolicyService(configPolicyAPIRequest, requestId, false); + String response = createPolicyService.getResult(); + HttpStatus status = createPolicyService.getResponseCode(); deprecatedCounter.incrementAndGet(); return new ResponseEntity<>(response, status); } + /** + * Update config. + * + * @param configPolicyAPIRequest the config policy API request + * @param clientEncoding the client encoding + * @param requestId the request id + * @return the response entity + */ @ApiImplicitParams({@ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), @ApiImplicitParam(name = "Environment", required = true, paramType = "Header")}) @ApiOperation(value = "Updates a Config Policy based on given Policy Parameters.") - @RequestMapping(value = "/updateConfig", method = RequestMethod.PUT) + @PutMapping(value = "/updateConfig") @ResponseBody @Deprecated public ResponseEntity<String> updateConfig(@RequestBody ConfigPolicyAPIRequest configPolicyAPIRequest, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { - String response = null; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, "updatePolicy")) { - CreateUpdateConfigPolicyService updatePolicyService = - new CreateUpdateConfigPolicyService(configPolicyAPIRequest, requestID, true); - response = updatePolicyService.getResult(); - status = updatePolicyService.getResponseCode(); - } + @RequestHeader(value = "ClientAuth", required = false) String clientEncoding, + @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestId) { + logger.info("Operation: updateConfig"); + + CreateUpdateConfigPolicyService updatePolicyService = + new CreateUpdateConfigPolicyService(configPolicyAPIRequest, requestId, true); + String response = updatePolicyService.getResult(); + HttpStatus status = updatePolicyService.getResponseCode(); deprecatedCounter.incrementAndGet(); return new ResponseEntity<>(response, status); } + /** + * Creates the firewall config. + * + * @param configFirewallPolicyAPIRequest the config firewall policy API request + * @param clientEncoding the client encoding + * @param requestId the request id + * @return the response entity + */ + @ApiImplicitParams({@ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), @ApiImplicitParam(name = "Environment", required = true, paramType = "Header")}) @ApiOperation(value = "Creates a Config Firewall Policy") - @RequestMapping(value = "/createFirewallConfig", method = RequestMethod.PUT) + @PutMapping(value = "/createFirewallConfig") @ResponseBody @Deprecated public ResponseEntity<String> createFirewallConfig( @RequestBody ConfigFirewallPolicyAPIRequest configFirewallPolicyAPIRequest, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { - String response = null; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, "createPolicy")) { - CreateUpdateFirewallPolicyService createFirewallPolicyService = - new CreateUpdateFirewallPolicyService(configFirewallPolicyAPIRequest, requestID, false); - response = createFirewallPolicyService.getResult(); - status = createFirewallPolicyService.getResponseCode(); - } + @RequestHeader(value = "ClientAuth", required = false) String clientEncoding, + @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestId) { + logger.info("Operation: createFirewallConfig"); + + CreateUpdateFirewallPolicyService createFirewallPolicyService = + new CreateUpdateFirewallPolicyService(configFirewallPolicyAPIRequest, requestId, false); + String response = createFirewallPolicyService.getResult(); + HttpStatus status = createFirewallPolicyService.getResponseCode(); deprecatedCounter.incrementAndGet(); return new ResponseEntity<>(response, status); } + /** + * Update firewall config. + * + * @param configFirewallPolicyAPIRequest the config firewall policy API request + * @param clientEncoding the client encoding + * @param requestId the request id + * @return the response entity + */ @ApiImplicitParams({@ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), @ApiImplicitParam(name = "Environment", required = true, paramType = "Header")}) @ApiOperation(value = "Updates a Config Firewall Policy") - @RequestMapping(value = "/updateFirewallConfig", method = RequestMethod.PUT) + @PutMapping(value = "/updateFirewallConfig") @ResponseBody @Deprecated public ResponseEntity<String> updateFirewallConfig( @RequestBody ConfigFirewallPolicyAPIRequest configFirewallPolicyAPIRequest, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { - String response = null; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, "updatePolicy")) { - CreateUpdateFirewallPolicyService updateFirewallPolicyService = - new CreateUpdateFirewallPolicyService(configFirewallPolicyAPIRequest, requestID, true); - response = updateFirewallPolicyService.getResult(); - status = updateFirewallPolicyService.getResponseCode(); - } + @RequestHeader(value = "ClientAuth", required = false) String clientEncoding, + @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestId) { + logger.info("Operation: updateFirewallConfig"); + + CreateUpdateFirewallPolicyService updateFirewallPolicyService = + new CreateUpdateFirewallPolicyService(configFirewallPolicyAPIRequest, requestId, true); + String response = updateFirewallPolicyService.getResult(); + HttpStatus status = updateFirewallPolicyService.getResponseCode(); deprecatedCounter.incrementAndGet(); return new ResponseEntity<>(response, status); } + /** + * Gets the count. + * + * @return the count + */ @ApiOperation(value = "Gets the API Services usage Information") @ApiIgnore - @RequestMapping(value = "/count", method = RequestMethod.GET) + @GetMapping(value = "/count") public String getCount() { return "Total Config Calls : " + configCounter + "\n" + "Total Config calls made using Policy File Name: " + configNameCounter + "\n" + "Total Event Calls : " + eventCounter + "\nTotal Decision Calls: " @@ -616,6 +727,13 @@ public class PolicyEngineServices { + "\nTotal Metrics Calls:" + metricCounter + "\nTotal Notification Calls:" + notificationCounter; } + /** + * Message not readable exception handler. + * + * @param req the req + * @param exception the exception + * @return the response entity + */ @ExceptionHandler({HttpMessageNotReadableException.class}) public ResponseEntity<String> messageNotReadableExceptionHandler(HttpServletRequest req, HttpMessageNotReadableException exception) { diff --git a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/models/PolicyConfig.java b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/models/PolicyConfig.java index 3614bac08..33865d3e0 100644 --- a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/models/PolicyConfig.java +++ b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/models/PolicyConfig.java @@ -2,14 +2,14 @@ * ============LICENSE_START======================================================= * ONAP-PDP-REST * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017,2019 AT&T Intellectual Property. 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. @@ -19,17 +19,18 @@ */ package org.onap.policy.pdp.rest.api.models; +import com.google.gson.Gson; import io.swagger.annotations.ApiModel; import java.util.Map; - import org.onap.policy.api.PolicyConfigStatus; import org.onap.policy.api.PolicyConfigType; import org.onap.policy.api.PolicyType; import org.onap.policy.models.APIConfigResponse; @ApiModel -public class PolicyConfig implements APIConfigResponse{ +public class PolicyConfig implements APIConfigResponse { + private static final Gson GSON = new Gson(); private String policyConfigMessage; private PolicyConfigStatus policyConfigStatus; private PolicyType type; @@ -40,64 +41,98 @@ public class PolicyConfig implements APIConfigResponse{ private Map<String, String> matchingConditions; private Map<String, String> responseAttributes; private Map<String, String> property; + + @Override public String getConfig() { return config; } + public void setConfig(String config) { this.config = config; } + + @Override public PolicyType getType() { return type; } + public void setType(PolicyType type) { this.type = type; } + + @Override public PolicyConfigStatus getPolicyConfigStatus() { return policyConfigStatus; } + public void setPolicyConfigStatus(PolicyConfigStatus policyConfigStatus) { this.policyConfigStatus = policyConfigStatus; } + + @Override public String getPolicyConfigMessage() { return policyConfigMessage; } + public void setPolicyConfigMessage(String policyConfigMessage) { this.policyConfigMessage = policyConfigMessage; } + + @Override public Map<String, String> getProperty() { return property; } + public void setProperty(Map<String, String> property) { this.property = property; } - public String getPolicyName(){ + + @Override + public String getPolicyName() { return policyName; } - public void setPolicyName(String policyName){ + + public void setPolicyName(String policyName) { this.policyName = policyName; } - public String getPolicyVersion(){ + + @Override + public String getPolicyVersion() { return policyVersion; } - public void setPolicyVersion(String policyVersion){ + + public void setPolicyVersion(String policyVersion) { this.policyVersion = policyVersion; } - public Map<String, String> getMatchingConditions(){ + + @Override + public Map<String, String> getMatchingConditions() { return matchingConditions; } - public void setMatchingConditions(Map<String, String> matchingConditions){ + + public void setMatchingConditions(Map<String, String> matchingConditions) { this.matchingConditions = matchingConditions; } - public void setResponseAttributes(Map<String,String> responseAttributes){ + + public void setResponseAttributes(Map<String, String> responseAttributes) { this.responseAttributes = responseAttributes; } - public Map<String,String> getResponseAttributes(){ + + @Override + public Map<String, String> getResponseAttributes() { return responseAttributes; } + public PolicyConfigType getPolicyType() { return policyType; } + public void setPolicyType(PolicyConfigType policyType) { this.policyType = policyType; } + + @Override + public String toString() { + return GSON.toJson(this); + } } diff --git a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/DeletePolicyService.java b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/DeletePolicyService.java index 4f7384b3d..a004330f6 100644 --- a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/DeletePolicyService.java +++ b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/DeletePolicyService.java @@ -43,7 +43,6 @@ import org.springframework.http.HttpStatus; public class DeletePolicyService extends PdpApiService { private static final Logger LOGGER = FlexLogger.getLogger(DeletePolicyService.class.getName()); - private static final String PRINT_REQUESTID = " - RequestId - "; private DeletePolicyParameters deletePolicyParameters = null; private String result = null; private List<PolicyNameType> policyList = new ArrayList<>(); diff --git a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/GetDictionaryService.java b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/GetDictionaryService.java index 152e84ccf..44cc76478 100644 --- a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/GetDictionaryService.java +++ b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/GetDictionaryService.java @@ -2,14 +2,14 @@ * ============LICENSE_START======================================================= * ONAP-PDP-REST * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-2019 AT&T Intellectual Property. 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. @@ -17,13 +17,12 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.policy.pdp.rest.api.services; import java.util.UUID; - import javax.json.JsonException; import javax.json.JsonObject; - import org.onap.policy.api.DictionaryParameters; import org.onap.policy.api.DictionaryResponse; import org.onap.policy.api.PolicyException; @@ -36,16 +35,15 @@ import org.springframework.http.HttpStatus; public class GetDictionaryService { private static final Logger LOGGER = FlexLogger.getLogger(GetDictionaryService.class.getName()); - + private DictionaryResponse dictionaryResponse = null; private HttpStatus status = HttpStatus.BAD_REQUEST; private String message = null; private DictionaryParameters dictionaryParameters = null; - public GetDictionaryService(DictionaryParameters dictionaryParameters, - String requestID) { + public GetDictionaryService(DictionaryParameters dictionaryParameters, String requestID) { this.dictionaryParameters = dictionaryParameters; - if(dictionaryParameters.getRequestID()==null){ + if (dictionaryParameters.getRequestID() == null) { UUID requestUUID = null; if (requestID != null && !requestID.isEmpty()) { try { @@ -54,16 +52,16 @@ public class GetDictionaryService { requestUUID = UUID.randomUUID(); LOGGER.info("Generated Random UUID: " + requestUUID.toString(), e); } - }else{ + } else { requestUUID = UUID.randomUUID(); LOGGER.info("Generated Random UUID: " + requestUUID.toString()); } this.dictionaryParameters.setRequestID(requestUUID); } - try{ + try { run(); specialCheck(); - }catch(PolicyException e){ + } catch (PolicyException e) { StdDictionaryResponse dictionaryResponse = new StdDictionaryResponse(); dictionaryResponse.setResponseMessage(XACMLErrorConstants.ERROR_DATA_ISSUE + e); this.dictionaryResponse = dictionaryResponse; @@ -72,47 +70,51 @@ public class GetDictionaryService { } private void specialCheck() { - if(dictionaryResponse!=null && (dictionaryResponse.getResponseMessage()!=null && dictionaryResponse.getResponseMessage().contains("PE300"))){ - status = HttpStatus.BAD_REQUEST; + if (dictionaryResponse != null && (dictionaryResponse.getResponseMessage() != null + && dictionaryResponse.getResponseMessage().contains("PE300"))) { + status = HttpStatus.BAD_REQUEST; } } - private void run() throws PolicyException{ - // Check Validation. - if(!getValidation()){ + private void run() throws PolicyException { + // Check Validation. + if (!getValidation()) { LOGGER.error(message); throw new PolicyException(message); } - // Get Result. - try{ + // Get Result. + try { status = HttpStatus.OK; dictionaryResponse = processResult(); - }catch (Exception e){ + } catch (Exception e) { LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e); status = HttpStatus.BAD_REQUEST; throw new PolicyException(e); } } - private DictionaryResponse processResult() throws PolicyException{ + private DictionaryResponse processResult() throws PolicyException { StdDictionaryResponse response = new StdDictionaryResponse(); PAPServices papServices = new PAPServices(); - String result = (String) papServices.callPAP(null, new String[] {"operation=get", "apiflag=api", "dictionaryType="+dictionaryParameters.getDictionary()}, dictionaryParameters.getRequestID(), "dictionaryItem"); - - if (result!=null && result.contains("data")) { + String result = (String) papServices.callPAP(null, + new String[] {"operation=get", "apiflag=api", "dictionaryType=" + dictionaryParameters.getDictionary()}, + dictionaryParameters.getRequestID(), "dictionaryItem"); + + if (result != null && result.contains("data")) { String jsonString = formatDictionaryJson(result); String responseMessage = result.substring(0, 82); JsonObject json = null; - try{ + try { json = PolicyApiUtils.stringToJsonObject(jsonString.replace("\\\\\\", "\\")); String datas = json.getString("data").replaceFirst("\"\\[", "["); int i = datas.lastIndexOf("]"); - if( i>=0 ) { - datas = new StringBuilder(datas).replace(i, i+2,"]").toString(); + if (i >= 0) { + datas = new StringBuilder(datas).replace(i, i + 2, "]").toString(); } json = PolicyApiUtils.stringToJsonObject(datas); - } catch(JsonException| IllegalStateException e){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE+ " improper Dictionary JSON object : " + dictionaryParameters.getDictionaryJson(); + } catch (JsonException | IllegalStateException e) { + message = XACMLErrorConstants.ERROR_DATA_ISSUE + " improper Dictionary JSON object : " + + dictionaryParameters.getDictionaryJson(); LOGGER.error(message, e); response.setResponseMessage(message); response.setResponseCode(400); @@ -120,14 +122,14 @@ public class GetDictionaryService { } response.setResponseCode(papServices.getResponseCode()); response.setDictionaryJson(json); - response.setResponseMessage(responseMessage); + response.setResponseMessage(responseMessage); } else { response.setResponseCode(400); response.setResponseMessage(result); - if(result!=null && result.contains("PE200")){ - status=HttpStatus.INTERNAL_SERVER_ERROR; - }else{ - status=HttpStatus.BAD_REQUEST; + if (result != null && result.contains("PE200")) { + status = HttpStatus.INTERNAL_SERVER_ERROR; + } else { + status = HttpStatus.BAD_REQUEST; } } return response; @@ -136,135 +138,139 @@ public class GetDictionaryService { private String formatDictionaryJson(String result) { String jsonString = result.substring(82); String dictionary = dictionaryParameters.getDictionary(); - + switch (dictionary) { - case "OnapName": - jsonString = jsonString.replace("onapNameDictionaryDatas", "DictionaryDatas"); - break; - case "Attribute": - jsonString = jsonString.replace("attributeDictionaryDatas", "DictionaryDatas"); - break; + case "OnapName": + jsonString = jsonString.replace("onapNameDictionaryDatas", "DictionaryDatas"); + break; + case "Attribute": + jsonString = jsonString.replace("attributeDictionaryDatas", "DictionaryDatas"); + break; case "Action": - jsonString = jsonString.replace("actionPolicyDictionaryDatas", "DictionaryDatas"); - break; - case "BRMSParamTemplate": - jsonString = jsonString.replace("brmsParamDictionaryDatas", "DictionaryDatas"); - break; - case "VSCLAction": - jsonString = jsonString.replace("vsclActionDictionaryDatas", "DictionaryDatas"); - break; - case "VNFType": - jsonString = jsonString.replace("vnfTypeDictionaryDatas", "DictionaryDatas"); - break; - case "PEPOptions": - jsonString = jsonString.replace("pepOptionsDictionaryDatas", "DictionaryDatas"); - break; - case "Varbind": - jsonString = jsonString.replace("varbindDictionaryDatas", "DictionaryDatas"); - break; - case "Service": - jsonString = jsonString.replace("closedLoopServiceDictionaryDatas", "DictionaryDatas"); - break; - case "Site": - jsonString = jsonString.replace("closedLoopSiteDictionaryDatas", "DictionaryDatas"); - break; - case "Settings": - jsonString = jsonString.replace("settingsDictionaryDatas", "DictionaryDatas"); - break; - case "RainyDayTreatments": - jsonString = jsonString.replace("rainyDayDictionaryDatas", "DictionaryDatas"); - break; - case "DescriptiveScope": - jsonString = jsonString.replace("descriptiveScopeDictionaryDatas", "DictionaryDatas"); - break; - case "Enforcer": - jsonString = jsonString.replace("enforcerDictionaryDatas", "DictionaryDatas"); - break; - case "ActionList": - jsonString = jsonString.replace("actionListDictionaryDatas", "DictionaryDatas"); - break; - case "ProtocolList": - jsonString = jsonString.replace("protocolListDictionaryDatas", "DictionaryDatas"); - break; - case "Zone": - jsonString = jsonString.replace("zoneDictionaryDatas", "DictionaryDatas"); - break; - case "SecurityZone": - jsonString = jsonString.replace("securityZoneDictionaryDatas", "DictionaryDatas"); - break; - case "PrefixList": - jsonString = jsonString.replace("prefixListDictionaryDatas", "DictionaryDatas"); - break; - case "AddressGroup": - jsonString = jsonString.replace("addressGroupDictionaryDatas", "DictionaryDatas"); - break; - case "ServiceGroup": - jsonString = jsonString.replace("serviceGroupDictionaryDatas", "DictionaryDatas"); - break; - case "ServiceList": - jsonString = jsonString.replace("serviceListDictionaryDatas", "DictionaryDatas"); - break; - case "TermList": - case "RuleList": - case "FirewallRuleList": - case "Term": - jsonString = jsonString.replace("termListDictionaryDatas", "DictionaryDatas"); - break; - case "MicroServiceLocation": - jsonString = jsonString.replace("microServiceLocationDictionaryDatas", "DictionaryDatas"); - break; - case "MicroServiceConfigName": - jsonString = jsonString.replace("microServiceCongigNameDictionaryDatas", "DictionaryDatas"); - break; - case "DCAEUUID": - jsonString = jsonString.replace("dcaeUUIDDictionaryDatas", "DictionaryDatas"); - break; - case "MicroServiceModels": - jsonString = jsonString.replace("microServiceModelsDictionaryDatas", "DictionaryDatas"); - break; - case "OptimizationModels": - jsonString = jsonString.replace("optmizationModelsDictionaryDatas", "DictionaryDatas"); - break; - case "PolicyScopeService": - jsonString = jsonString.replace("psServiceDictionaryDatas", "DictionaryDatas"); - break; - case "PolicyScopeResource": - jsonString = jsonString.replace("psResourceDictionaryDatas", "DictionaryDatas"); - break; - case "PolicyScopeType": - jsonString = jsonString.replace("psTypeDictionaryDatas", "DictionaryDatas"); - break; - case "PolicyScopeClosedLoop": - jsonString = jsonString.replace("psClosedLoopDictionaryDatas", "DictionaryDatas"); - break; - case "GroupPolicyScopeList": - jsonString = jsonString.replace("groupPolicyScopeListDatas", "DictionaryDatas"); - break; - case "RiskType": - jsonString = jsonString.replace("riskTypeDictionaryDatas", "DictionaryDatas"); - break; - case "SafePolicyWarning": - jsonString = jsonString.replace("safePolicyWarningDatas", "DictionaryDatas"); - break; - case "MicroServiceDictionary": - jsonString = jsonString.replace("microServiceDictionaryDatas", "DictionaryDatas"); - break; - default: - break; + jsonString = jsonString.replace("actionPolicyDictionaryDatas", "DictionaryDatas"); + break; + case "BRMSParamTemplate": + jsonString = jsonString.replace("brmsParamDictionaryDatas", "DictionaryDatas"); + break; + case "VSCLAction": + jsonString = jsonString.replace("vsclActionDictionaryDatas", "DictionaryDatas"); + break; + case "VNFType": + jsonString = jsonString.replace("vnfTypeDictionaryDatas", "DictionaryDatas"); + break; + case "PEPOptions": + jsonString = jsonString.replace("pepOptionsDictionaryDatas", "DictionaryDatas"); + break; + case "Varbind": + jsonString = jsonString.replace("varbindDictionaryDatas", "DictionaryDatas"); + break; + case "Service": + jsonString = jsonString.replace("closedLoopServiceDictionaryDatas", "DictionaryDatas"); + break; + case "Site": + jsonString = jsonString.replace("closedLoopSiteDictionaryDatas", "DictionaryDatas"); + break; + case "Settings": + jsonString = jsonString.replace("settingsDictionaryDatas", "DictionaryDatas"); + break; + case "RainyDayTreatments": + jsonString = jsonString.replace("rainyDayDictionaryDatas", "DictionaryDatas"); + break; + case "DescriptiveScope": + jsonString = jsonString.replace("descriptiveScopeDictionaryDatas", "DictionaryDatas"); + break; + case "Enforcer": + jsonString = jsonString.replace("enforcerDictionaryDatas", "DictionaryDatas"); + break; + case "ActionList": + jsonString = jsonString.replace("actionListDictionaryDatas", "DictionaryDatas"); + break; + case "ProtocolList": + jsonString = jsonString.replace("protocolListDictionaryDatas", "DictionaryDatas"); + break; + case "Zone": + jsonString = jsonString.replace("zoneDictionaryDatas", "DictionaryDatas"); + break; + case "SecurityZone": + jsonString = jsonString.replace("securityZoneDictionaryDatas", "DictionaryDatas"); + break; + case "PrefixList": + jsonString = jsonString.replace("prefixListDictionaryDatas", "DictionaryDatas"); + break; + case "AddressGroup": + jsonString = jsonString.replace("addressGroupDictionaryDatas", "DictionaryDatas"); + break; + case "ServiceGroup": + jsonString = jsonString.replace("serviceGroupDictionaryDatas", "DictionaryDatas"); + break; + case "ServiceList": + jsonString = jsonString.replace("serviceListDictionaryDatas", "DictionaryDatas"); + break; + case "TermList": + case "RuleList": + case "FirewallRuleList": + case "Term": + jsonString = jsonString.replace("termListDictionaryDatas", "DictionaryDatas"); + break; + case "MicroServiceLocation": + jsonString = jsonString.replace("microServiceLocationDictionaryDatas", "DictionaryDatas"); + break; + case "MicroServiceConfigName": + jsonString = jsonString.replace("microServiceCongigNameDictionaryDatas", "DictionaryDatas"); + break; + case "MicroServiceDictionaryData": + jsonString = jsonString.replace("microServiceDictionaryDatas", "DictionaryDatas"); + break; + case "DCAEUUID": + jsonString = jsonString.replace("dcaeUUIDDictionaryDatas", "DictionaryDatas"); + break; + case "MicroServiceModels": + jsonString = jsonString.replace("microServiceModelsDictionaryDatas", "DictionaryDatas"); + break; + case "OptimizationModels": + jsonString = jsonString.replace("optmizationModelsDictionaryDatas", "DictionaryDatas"); + break; + case "PolicyScopeService": + jsonString = jsonString.replace("psServiceDictionaryDatas", "DictionaryDatas"); + break; + case "PolicyScopeResource": + jsonString = jsonString.replace("psResourceDictionaryDatas", "DictionaryDatas"); + break; + case "PolicyScopeType": + jsonString = jsonString.replace("psTypeDictionaryDatas", "DictionaryDatas"); + break; + case "PolicyScopeClosedLoop": + jsonString = jsonString.replace("psClosedLoopDictionaryDatas", "DictionaryDatas"); + break; + case "GroupPolicyScopeList": + jsonString = jsonString.replace("groupPolicyScopeListDatas", "DictionaryDatas"); + break; + case "RiskType": + jsonString = jsonString.replace("riskTypeDictionaryDatas", "DictionaryDatas"); + break; + case "SafePolicyWarning": + jsonString = jsonString.replace("safePolicyWarningDatas", "DictionaryDatas"); + break; + case "MicroServiceDictionary": + jsonString = jsonString.replace("microServiceDictionaryDatas", "DictionaryDatas"); + break; + default: + break; } return jsonString; } private boolean getValidation() { - if(dictionaryParameters==null){ + if (dictionaryParameters == null) { message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Dictionary Parameters are not given."; return false; } - if(dictionaryParameters.getDictionaryType()==null || dictionaryParameters.getDictionaryType().toString().trim().isEmpty()){ + if (dictionaryParameters.getDictionaryType() == null + || dictionaryParameters.getDictionaryType().toString().trim().isEmpty()) { message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Dictionary Type given."; return false; } - if(dictionaryParameters.getDictionary()==null || dictionaryParameters.getDictionary().trim().isEmpty()){ + if (dictionaryParameters.getDictionary() == null || dictionaryParameters.getDictionary().trim().isEmpty()) { message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Dictionary given."; return false; } diff --git a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/PAPServices.java b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/PAPServices.java index 7704a96a6..822599f13 100644 --- a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/PAPServices.java +++ b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/PAPServices.java @@ -40,7 +40,7 @@ import org.apache.commons.io.IOUtils; import org.onap.policy.api.PolicyException; import org.onap.policy.common.logging.flexlogger.FlexLogger; import org.onap.policy.common.logging.flexlogger.Logger; -import org.onap.policy.pdp.rest.config.PDPApiAuth; +import org.onap.policy.pdp.rest.restauth.AuthenticationService; import org.onap.policy.rest.XACMLRestProperties; import org.onap.policy.utils.PeCryptoUtils; import org.onap.policy.xacml.api.XACMLErrorConstants; @@ -64,7 +64,7 @@ public class PAPServices { } public PAPServices() { - environment = PDPApiAuth.getEnvironment(); + environment = AuthenticationService.getEnvironment(); if (paps == null) { synchronized (papResourceLock) { String urlList = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_URLS); @@ -331,6 +331,7 @@ public class PAPServices { private String checkResponse(final HttpURLConnection connection, final UUID requestID) throws IOException { String response = null; + LOGGER.info("PAPServices:checkResponse - RequestId: " + requestID + ", ResponseCode: " + responseCode); if (responseCode == 200 || isJunit) { // Check for successful creation of policy String isSuccess = null; diff --git a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/PdpApiService.java b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/PdpApiService.java index 4d38753bf..8a7a8e0a0 100644 --- a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/PdpApiService.java +++ b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/PdpApiService.java @@ -31,6 +31,7 @@ import org.springframework.http.HttpStatus; public abstract class PdpApiService { private static final Logger LOGGER = FlexLogger.getLogger(PdpApiService.class.getName()); + protected static final String PRINT_REQUESTID = " - RequestId - "; protected String requestId = null; protected String filePrefix = null; protected String clientScope = null; diff --git a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/restAuth/AuthenticationService.java b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/restAuth/AuthenticationService.java deleted file mode 100644 index b1b092431..000000000 --- a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/restAuth/AuthenticationService.java +++ /dev/null @@ -1,60 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP-PDP-REST - * ================================================================================ - * Copyright (C) 2017,2019 AT&T Intellectual Property. 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. - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.pdp.rest.restAuth; - -import com.att.research.xacml.util.XACMLProperties; -import java.util.Base64; -import java.util.StringTokenizer; -import org.onap.policy.common.logging.eelf.MessageCodes; -import org.onap.policy.common.logging.eelf.PolicyLogger; -import org.onap.policy.rest.XACMLRestProperties; -import org.onap.policy.utils.PeCryptoUtils; - -public class AuthenticationService { - private String pdpID = XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_USERID); - private String pdpPass = PeCryptoUtils.decrypt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_PASS)); - - public boolean authenticate(String authCredentials) { - - if (null == authCredentials) - return false; - // header value format will be "Basic encodedstring" for Basic authentication. - final String encodedUserPassword = authCredentials.replaceFirst("Basic" + " ", ""); - String usernameAndPassword = null; - try { - byte[] decodedBytes = Base64.getDecoder().decode(encodedUserPassword); - usernameAndPassword = new String(decodedBytes, "UTF-8"); - } catch (Exception e) { - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, ""); - return false; - } - try { - final StringTokenizer tokenizer = new StringTokenizer(usernameAndPassword, ":"); - final String username = tokenizer.nextToken(); - final String password = tokenizer.nextToken(); - return pdpID.equals(username) && pdpPass.equals(password); - }catch (Exception e){ - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, ""); - return false; - } - } - -} diff --git a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/restAuth/PDPAuthenticationFilter.java b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/restAuth/PDPAuthenticationFilter.java deleted file mode 100644 index 5b01ca9e5..000000000 --- a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/restAuth/PDPAuthenticationFilter.java +++ /dev/null @@ -1,117 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. 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. - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.pdp.rest.restAuth; - -import java.io.IOException; - -import javax.servlet.Filter; -import javax.servlet.FilterChain; -import javax.servlet.FilterConfig; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.annotation.WebFilter; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.onap.policy.pdp.rest.config.PDPApiAuth; - -/** - * Servlet Filter implementation class PDPAuthenticationFilter - */ -@WebFilter("/*") -public class PDPAuthenticationFilter implements Filter { - - public static final String AUTHENTICATION_HEADER = "Authorization"; - public static final String ENVIRONMENT_HEADER = "Environment"; - - @Override - public void doFilter(ServletRequest request, ServletResponse response, - FilterChain filter) throws IOException, ServletException { - if (request instanceof HttpServletRequest) { - HttpServletRequest httpServletRequest = (HttpServletRequest) request; - String environment = httpServletRequest.getHeader(ENVIRONMENT_HEADER); - String authCredentials = httpServletRequest.getHeader(AUTHENTICATION_HEADER); - String path = ((HttpServletRequest) request).getRequestURI(); - // better injected - AuthenticationService authenticationService = new AuthenticationService(); - - boolean authenticationStatus = authenticationService.authenticate(authCredentials); - - if (authenticationStatus) { - if (check(path)) { - // New API request. - path = path.substring(path.substring(1).indexOf("/") + 1); - if (environment == null) { - // Allow Old clients. - if(!path.contains("/api/")){ - request.getRequestDispatcher("/api/" + path).forward(request,response); - }else{ - request.getRequestDispatcher(path).forward(request,response); - } - } else if (environment.equalsIgnoreCase(PDPApiAuth.getEnvironment())) { - // Validated new Clients. - if(!path.contains("/api/")){ - request.getRequestDispatcher("/api/" + path).forward(request,response); - }else{ - request.getRequestDispatcher(path).forward(request,response); - } - } else if(response instanceof HttpServletResponse) { - HttpServletResponse httpServletResponse = (HttpServletResponse) response; - httpServletResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED); - } - } else { - filter.doFilter(request, response); - } - } else if (path.contains("swagger") || path.contains("api-docs") - || path.contains("configuration") || path.contains("count")) { - path = path.substring(path.substring(1).indexOf("/") + 2); - request.getRequestDispatcher("/api/" + path).forward(request,response); - } else if(path.contains("notifications")){ - filter.doFilter(request, response); - } else { - if (response instanceof HttpServletResponse) { - HttpServletResponse httpServletResponse = (HttpServletResponse) response; - httpServletResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED); - } - } - } - } - - private boolean check(String path) { - if(path.endsWith("/pdp/")|| path.endsWith("/pdp")|| path.endsWith("/test")){ - return false; - }else{ - return true; - } - } - - @Override - public void destroy() { - // Do nothing. - } - - @Override - public void init(FilterConfig arg0) throws ServletException { - // Do nothing. - } - -} diff --git a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/config/PDPApiAuth.java b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/restauth/AuthenticationService.java index 163298186..87a46aa23 100644 --- a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/config/PDPApiAuth.java +++ b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/restauth/AuthenticationService.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP-PDP-REST * ================================================================================ - * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017,2019 AT&T Intellectual Property. 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. @@ -18,12 +18,13 @@ * ============LICENSE_END========================================================= */ -package org.onap.policy.pdp.rest.config; +package org.onap.policy.pdp.rest.restauth; import com.att.research.xacml.util.XACMLProperties; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; +import java.nio.charset.StandardCharsets; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; @@ -35,6 +36,8 @@ import java.util.List; import java.util.Map; import java.util.Properties; import java.util.StringTokenizer; +import javax.servlet.ServletRequest; +import org.apache.commons.lang3.StringUtils; import org.onap.policy.api.PolicyEngineException; import org.onap.policy.common.logging.eelf.MessageCodes; import org.onap.policy.common.logging.flexlogger.FlexLogger; @@ -46,23 +49,22 @@ import org.onap.policy.utils.PeCryptoUtils; import org.onap.policy.utils.PolicyUtils; import org.onap.policy.xacml.api.XACMLErrorConstants; -public class PDPApiAuth { - private static final Logger LOGGER = FlexLogger.getLogger(PDPApiAuth.class); - +public class AuthenticationService { + private static final Logger LOGGER = FlexLogger.getLogger(AuthenticationService.class); private static String environment = null; private static Path clientPath = null; private static Map<String, ArrayList<String>> clientMap = null; private static Long oldModified = null; private static AAFPolicyClient aafClient = null; - private PDPApiAuth() { + private AuthenticationService() { // Private Constructor } /* * Set Property by reading the properties File. */ - public static void setProperty() { + private static void setProperty() { environment = XACMLProperties.getProperty("ENVIRONMENT", "DEVL"); String clientFile = XACMLProperties.getProperty(XACMLRestProperties.PROP_PEP_IDFILE); if (clientFile != null) { @@ -75,8 +77,10 @@ public class PDPApiAuth { } } - /* - * Return Environment value of the PDP servlet. + /** + * Gets the environment. + * + * @return the environment */ public static String getEnvironment() { if (environment == null) { @@ -85,54 +89,80 @@ public class PDPApiAuth { return environment; } - /* + private static String reverseNamespace(String namespace) { + final List<String> components = Arrays.asList(namespace.split("\\.")); + Collections.reverse(components); + return String.join(".", components); + } + + /** * Security check for authentication and authorizations. + * + * @param clientAuthHeader the client auth header + * @param authHeader the auth header + * @param resource the resource + * @param env the env + * @return true, if successful */ - public static boolean checkPermissions(String clientEncoding, String requestID, String resource) { + public static boolean checkPermissions(String clientAuthHeader, String authHeader, String resource, String env, + ServletRequest request) { + boolean result = false; + // check whether env matches + result = checkEnv(env); + if (!result) { + LOGGER.info(XACMLErrorConstants.ERROR_PERMISSIONS + " invalid Environment Header"); + return result; + } + // decode the user/pwd from the request header + String[] userNamePass = getUserInfo(authHeader, clientAuthHeader); + try { - String[] userNamePass = PolicyUtils.decodeBasicEncoding(clientEncoding); - if (userNamePass == null || userNamePass.length == 0) { - String usernameAndPassword = null; - byte[] decodedBytes = Base64.getDecoder().decode(clientEncoding); - usernameAndPassword = new String(decodedBytes, "UTF-8"); - StringTokenizer tokenizer = new StringTokenizer(usernameAndPassword, ":"); - String username = tokenizer.nextToken(); - String password = tokenizer.nextToken(); - userNamePass = new String[] {username, password}; - } - LOGGER.info("User " + userNamePass[0] + " is Accessing Policy Engine API."); - Boolean result = false; // Check Backward Compatibility. - try { - /* - * If AAF is NOT enabled in the properties we will allow the user to continue to use the - * client.properties file to authenticate. Note: Disabling AAF is for testing purposes and not intended - * for production. - */ - if ("false".equals(XACMLProperties.getProperty("enable_aaf"))) { - result = clientAuth(userNamePass); - } - } catch (Exception e) { - LOGGER.error(MessageCodes.ERROR_PERMISSIONS, e); + request.setAttribute("Mechid", ""); + result = false; + /* + * If AAF is NOT enabled in the properties we will allow the user to continue to use the client.properties + * file to authenticate. Note: Disabling AAF is for testing purposes and not intended for production. + */ + if ("false".equals(XACMLProperties.getProperty("enable_aaf"))) { + result = clientAuth(userNamePass); } if (!result) { - String aafPolicyNameSpace = XACMLProperties.getProperty("policy.aaf.namespace"); - String aafResource = XACMLProperties.getProperty("policy.aaf.root.permission"); - String type = null; - if (!userNamePass[0].contains("@") && aafPolicyNameSpace != null) { - userNamePass[0] = userNamePass[0] + "@" + reverseNamespace(aafPolicyNameSpace); - } else { - LOGGER.info("No AAF NameSpace specified in properties"); - } - if (aafResource != null) { - type = aafResource + "." + resource; - } else { - LOGGER.warn("No AAF Resource specified in properties"); - return false; - } - LOGGER.info("Contacting AAF in : " + environment); - result = aafClient.checkAuthPerm(userNamePass[0], userNamePass[1], type, environment, "*"); + result = aafAuth(userNamePass, resource); + request.setAttribute("Mechid", userNamePass[0]); + } + } catch (Exception e) { + LOGGER.error(MessageCodes.ERROR_PERMISSIONS, e); + result = false; + } + return result; + + } + + private static boolean checkEnv(String env) { + if (StringUtils.isBlank(env)) { + // must be old type of req + return true; + } else { + return env.trim().equalsIgnoreCase(getEnvironment()); + } + + } + + private static boolean aafAuth(String[] userNamePass, String resource) { + boolean result = false; + String permission = getPermission(resource); + try { + String aafPolicyNameSpace = XACMLProperties.getProperty("policy.aaf.namespace"); + if (!userNamePass[0].contains("@") && aafPolicyNameSpace != null) { + userNamePass[0] = userNamePass[0] + "@" + reverseNamespace(aafPolicyNameSpace); + } else { + LOGGER.info("No AAF NameSpace specified in properties"); } + + LOGGER.info("Contacting AAF in : " + environment); + result = aafClient.checkAuthPerm(userNamePass[0], userNamePass[1], permission, environment, "*"); + return result; } catch (Exception e) { LOGGER.error(MessageCodes.ERROR_PERMISSIONS, e); @@ -140,6 +170,33 @@ public class PDPApiAuth { } } + private static String getPermission(String resource) { + String aafResource = XACMLProperties.getProperty("policy.aaf.root.permission"); + String perm = resource; + if (StringUtils.containsIgnoreCase(perm, "Notification")) { + perm = "notification"; + } else if (StringUtils.containsIgnoreCase(perm, "heartbeat")) { + perm = "notification"; + } else if (StringUtils.containsIgnoreCase(perm, "createDictionary")) { + perm = "createDictionary"; + } else if (StringUtils.containsIgnoreCase(perm, "updateDictionary")) { + perm = "updateDictionary"; + } else if (StringUtils.containsIgnoreCase(perm, "getDictionary")) { + perm = "getDictionary"; + } else if (StringUtils.containsIgnoreCase(perm, "create")) { + perm = "createPolicy"; + } else if (StringUtils.containsIgnoreCase(perm, "update")) { + perm = "updatePolicy"; + } + + if (!StringUtils.isBlank(aafResource)) { + perm = aafResource + "." + perm; + } else { + LOGGER.info("No AAF Resource specified in properties"); + } + return perm; + } + private static Boolean clientAuth(String[] userNamePass) { if (clientPath == null) { setProperty(); @@ -161,23 +218,16 @@ public class PDPApiAuth { return false; } - private static String reverseNamespace(String namespace) { - final List<String> components = Arrays.asList(namespace.split("\\.")); - Collections.reverse(components); - return String.join(".", components); - } - private static Map<String, ArrayList<String>> readProps(Path clientPath) throws PolicyEngineException { if (oldModified != null) { Long newModified = clientPath.toFile().lastModified(); - if (newModified == oldModified) { + if (oldModified.equals(newModified)) { return clientMap; } } - InputStream in; + Properties clientProp = new Properties(); - try { - in = new FileInputStream(clientPath.toFile()); + try (InputStream in = new FileInputStream(clientPath.toFile())) { clientProp.load(in); } catch (IOException e) { LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR, e); @@ -188,14 +238,13 @@ public class PDPApiAuth { clientMap = new HashMap<>(); // for (Object propKey : clientProp.keySet()) { - String clientID = (String) propKey; - String clientValue = clientProp.getProperty(clientID); + String clientId = (String) propKey; + String clientValue = clientProp.getProperty(clientId); if (clientValue != null && clientValue.contains(",")) { ArrayList<String> clientValues = new ArrayList<>(Arrays.asList(clientValue.split("\\s*,\\s*"))); - if (clientValues.get(0) != null || clientValues.get(1) != null || clientValues.get(0).isEmpty() - || clientValues.get(1).isEmpty()) { + if (!StringUtils.isBlank(clientValues.get(0))) { clientValues.set(0, PeCryptoUtils.decrypt(clientValues.get(0))); - clientMap.put(clientID, clientValues); + clientMap.put(clientId, clientValues); } } } @@ -207,4 +256,32 @@ public class PDPApiAuth { oldModified = clientPath.toFile().lastModified(); return clientMap; } + + private static String[] getUserInfo(final String authHeader, final String clientAuthHeader) { + String userInfo = authHeader; + if (!StringUtils.isBlank(clientAuthHeader)) { + userInfo = clientAuthHeader; + } + + String[] userNamePass = null; + + try { + userNamePass = PolicyUtils.decodeBasicEncoding(userInfo); + if (userNamePass == null || userNamePass.length == 0) { + String usernameAndPassword = null; + byte[] decodedBytes = Base64.getDecoder().decode(userInfo); + usernameAndPassword = new String(decodedBytes, StandardCharsets.UTF_8); + StringTokenizer tokenizer = new StringTokenizer(usernameAndPassword, ":"); + String username = tokenizer.nextToken(); + String password = tokenizer.nextToken(); + userNamePass = new String[] {username, password}; + } + LOGGER.info("User " + userNamePass[0] + " is Accessing Policy Engine API - "); + } catch (Exception e) { + LOGGER.error(MessageCodes.ERROR_PERMISSIONS, e); + return new String[0]; + } + return userNamePass; + } + } diff --git a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/restauth/PdpAuthenticationFilter.java b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/restauth/PdpAuthenticationFilter.java new file mode 100644 index 000000000..b573b2e10 --- /dev/null +++ b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/restauth/PdpAuthenticationFilter.java @@ -0,0 +1,100 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP-PDP-REST + * ================================================================================ + * Copyright (C) 2017,2019 AT&T Intellectual Property. 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.pdp.rest.restauth; + +import java.io.IOException; +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.annotation.WebFilter; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * Servlet Filter implementation class PdpAuthenticationFilter. + */ +@WebFilter("/*") +public class PdpAuthenticationFilter implements Filter { + private static final String APISTR = "/api/"; + public static final String AUTHENTICATION_HEADER = "Authorization"; + public static final String ENVIRONMENT_HEADER = "Environment"; + public static final String CLIENTAUTH_HEADER = "ClientAuth"; + + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain filter) + throws IOException, ServletException { + if (!(request instanceof HttpServletRequest)) { + return; + } + HttpServletRequest httpServletRequest = (HttpServletRequest) request; + String environment = httpServletRequest.getHeader(ENVIRONMENT_HEADER); + String authHeader = httpServletRequest.getHeader(AUTHENTICATION_HEADER); + String clientAuthHeader = httpServletRequest.getHeader(CLIENTAUTH_HEADER); + String path = ((HttpServletRequest) request).getRequestURI(); + String resource = path.substring(path.lastIndexOf('/') + 1); + + boolean authenticationStatus = + AuthenticationService.checkPermissions(clientAuthHeader, authHeader, resource, environment, request); + + if (authenticationStatus) { + if (check(path)) { + path = path.substring(path.indexOf('/', 1)); + if (!path.contains(APISTR)) { + request.getRequestDispatcher(APISTR + path).forward(request, response); + } else { + request.getRequestDispatcher(path).forward(request, response); + } + + } else { + filter.doFilter(request, response); + } + } else if (path.contains("swagger") || path.contains("api-docs") || path.contains("configuration") + || path.contains("count")) { + path = path.substring(path.indexOf('/', 1) + 1); + request.getRequestDispatcher(APISTR + path).forward(request, response); + } else if (path.contains("notifications")) { + filter.doFilter(request, response); + } else { + if (response instanceof HttpServletResponse) { + HttpServletResponse httpServletResponse = (HttpServletResponse) response; + httpServletResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED); + } + } + } + + private boolean check(String path) { + return !(path.endsWith("/pdp/") || path.endsWith("/pdp") || path.endsWith("/test")); + } + + @Override + public void destroy() { + // Do nothing. + } + + @Override + public void init(FilterConfig arg0) throws ServletException { + // Do nothing. + } + +} diff --git a/ONAP-PDP-REST/src/test/java/org/onap/policy/pdp/rest/api/test/GetDictionaryServiceTest.java b/ONAP-PDP-REST/src/test/java/org/onap/policy/pdp/rest/api/test/GetDictionaryServiceTest.java index 682c9a1e0..4544b6b1c 100644 --- a/ONAP-PDP-REST/src/test/java/org/onap/policy/pdp/rest/api/test/GetDictionaryServiceTest.java +++ b/ONAP-PDP-REST/src/test/java/org/onap/policy/pdp/rest/api/test/GetDictionaryServiceTest.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP-PDP-REST * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Modifications Copyright (C) 2019 Samsung * ================================================================================ @@ -19,6 +19,7 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.policy.pdp.rest.api.test; import static org.junit.Assert.assertNotNull; @@ -31,16 +32,14 @@ public class GetDictionaryServiceTest { @Test public void dictionaryJsonTest() throws Exception { - Method formatDictionary = - GetDictionaryService.class.getDeclaredMethod("formatDictionaryJson", String.class); + Method formatDictionary = GetDictionaryService.class.getDeclaredMethod("formatDictionaryJson", String.class); formatDictionary.setAccessible(true); - String input = - "{\"key\":\"value\",\"key\":\"value\",\"key\":\"value\",\"key\":\"value\",\"key\":\"value\"," - + "\"key\":\"value\",\"key\":\"value\",\"key\":\"value\",\"key\":\"value\",\"key\":\"value\"," - + "\"key\":\"value\",\"key\":\"value\",\"key\":\"value\",\"key\":\"value\",\"key\":\"value\"," - + "\"key\":\"value\",\"key\":\"value\",\"key\":\"value\",\"key\":\"value\",\"key\":\"value\"," - + "\"key\":\"value\",\"key\":\"value\",\"key\":\"value\",\"key\":\"value\",\"key\":\"value\"," - + "\"key\":\"value\",\"key\":\"value\",\"key\":\"value\"}"; + String input = "{\"key\":\"value\",\"key\":\"value\",\"key\":\"value\",\"key\":\"value\",\"key\":\"value\"," + + "\"key\":\"value\",\"key\":\"value\",\"key\":\"value\",\"key\":\"value\",\"key\":\"value\"," + + "\"key\":\"value\",\"key\":\"value\",\"key\":\"value\",\"key\":\"value\",\"key\":\"value\"," + + "\"key\":\"value\",\"key\":\"value\",\"key\":\"value\",\"key\":\"value\",\"key\":\"value\"," + + "\"key\":\"value\",\"key\":\"value\",\"key\":\"value\",\"key\":\"value\",\"key\":\"value\"," + + "\"key\":\"value\",\"key\":\"value\",\"key\":\"value\"}"; DictionaryParameters dp = new DictionaryParameters(); dp.setDictionary("test"); GetDictionaryService gds = new GetDictionaryService(dp, null); @@ -182,6 +181,11 @@ public class GetDictionaryServiceTest { result = (String) formatDictionary.invoke(gds, input); assertNotNull(result); // + dp.setDictionary("MicroServiceDictionaryData"); + gds = new GetDictionaryService(dp, null); + result = (String) formatDictionary.invoke(gds, input); + assertNotNull(result); + // dp.setDictionary("DCAEUUID"); gds = new GetDictionaryService(dp, null); result = (String) formatDictionary.invoke(gds, input); diff --git a/ONAP-PDP-REST/src/test/java/org/onap/policy/pdp/rest/api/test/PolicyEngineServicesTest.java b/ONAP-PDP-REST/src/test/java/org/onap/policy/pdp/rest/api/test/PolicyEngineServicesTest.java index f08ef038c..85054d7f7 100644 --- a/ONAP-PDP-REST/src/test/java/org/onap/policy/pdp/rest/api/test/PolicyEngineServicesTest.java +++ b/ONAP-PDP-REST/src/test/java/org/onap/policy/pdp/rest/api/test/PolicyEngineServicesTest.java @@ -78,6 +78,8 @@ public class PolicyEngineServicesTest { // This value is as per test resource code. Don't change this. private static final String CLIENTAUTHVALUE = "Basic cHl0aG9uOnRlc3Q="; private static final String ERRORCLIENTVALUE = "Basic dGVzdDp0ZXN0MTIz"; + private static final String MECHID_ATTR = "Mechid"; + private static final String MECHID_ATTR_VAL = "junit"; private MockMvc mockMvc; private HttpHeaders headers; @@ -98,20 +100,7 @@ public class PolicyEngineServicesTest { @Test public void getConfigAPIFailureTest() throws Exception { ConfigRequestParameters pep = new ConfigRequestParameters(); - pep.setPolicyName(".*"); - mockMvc.perform( - post("/getConfig").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().is(400)); - // Authorization tests. - mockMvc.perform(post("/getConfig").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "")) - .andExpect(status().isUnauthorized()); - mockMvc.perform(post("/getConfig").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123")) - .andExpect(status().isUnauthorized()); - mockMvc.perform(post("/getConfig").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, ERRORCLIENTVALUE)) - .andExpect(status().isUnauthorized()); + // Set wrong request. pep.setPolicyName(null); pep.setConfigName("test"); @@ -145,13 +134,6 @@ public class PolicyEngineServicesTest { public void getConfigByPolicyNameTest() throws Exception { ConfigNameRequest pep = new ConfigNameRequest(); pep.setPolicyName(".*"); - mockMvc.perform( - post("/getConfig").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().is(400)); - // Authorization tests. - mockMvc.perform(post("/getConfig").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "")) - .andExpect(status().isUnauthorized()); mockMvc.perform(post("/getConfigByPolicyName").content(PolicyUtils.objectToJsonString(pep)).headers(headers) .header(UUIDHEADER, UUID.randomUUID()).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); @@ -161,12 +143,7 @@ public class PolicyEngineServicesTest { public void listConfigTest() throws Exception { ConfigRequestParameters pep = new ConfigRequestParameters(); pep.setPolicyName(".*"); - mockMvc.perform(post("/listConfig").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON)).andExpect(status().is(400)); - // Authorization tests. - mockMvc.perform(post("/listConfig").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "")) - .andExpect(status().isUnauthorized()); + mockMvc.perform(post("/listConfig").content(PolicyUtils.objectToJsonString(pep)).headers(headers) .header(UUIDHEADER, UUID.randomUUID()).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); @@ -185,7 +162,6 @@ public class PolicyEngineServicesTest { public void getMetricsTest() throws Exception { // Failure Tests. mockMvc.perform(get("/getMetrics")).andExpect(status().isBadRequest()); - mockMvc.perform(get("/getMetrics").header(CLIENTAUTHHEADER, "Basic 123")).andExpect(status().isUnauthorized()); // Service Tests. mockMvc.perform(get("/getMetrics").headers(headers).header(UUIDHEADER, "123")) .andExpect(status().isBadRequest()); @@ -195,16 +171,6 @@ public class PolicyEngineServicesTest { } @Test - public void getNotificationAuthFailureTest() throws Exception { - mockMvc.perform(post("/getNotification").header(CLIENTAUTHHEADER, "").content("test")) - .andExpect(status().isUnauthorized()); - mockMvc.perform(post("/getNotification").header(CLIENTAUTHHEADER, "Basic test123").content("test")) - .andExpect(status().isUnauthorized()); - mockMvc.perform(post("/getNotification").header(CLIENTAUTHHEADER, ERRORCLIENTVALUE).content(" ")) - .andExpect(status().isUnauthorized()); - } - - @Test public void getNotificationTopicFailureTest() throws Exception { mockMvc.perform(post("/getNotification")).andExpect(status().isBadRequest()); mockMvc.perform(post("/getNotification").headers(headers).content("")).andExpect(status().isBadRequest()); @@ -248,9 +214,7 @@ public class PolicyEngineServicesTest { pep.setEventAttributes(eventAttributes); // Failure Tests. mockMvc.perform(post("/sendEvent")).andExpect(status().isBadRequest()); - mockMvc.perform(post("/sendEvent").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123")) - .andExpect(status().isUnauthorized()); + // Service Tests. mockMvc.perform(post("/sendEvent").content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "123")) @@ -277,9 +241,7 @@ public class PolicyEngineServicesTest { pep.setDecisionAttributes(eventAttributes); // Failure Tests. mockMvc.perform(post("/getDecision")).andExpect(status().isBadRequest()); - mockMvc.perform(post("/getDecision").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123")) - .andExpect(status().isUnauthorized()); + // Service Tests. mockMvc.perform(post("/getDecision").content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "123")) @@ -302,72 +264,70 @@ public class PolicyEngineServicesTest { public void pushPolicyTest() throws Exception { PushPolicyParameters pep = new PushPolicyParameters(); // Failure Tests. - mockMvc.perform(put("/pushPolicy")).andExpect(status().isBadRequest()); - mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123")) - .andExpect(status().isUnauthorized()); + mockMvc.perform(put("/pushPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL)).andExpect(status().isBadRequest()); + // Service Tests. - mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/pushPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) .andExpect(status().isBadRequest()); pep.setPolicyName("com."); - mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/pushPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setPolicyName("com.test"); pep.setPolicyType(""); - mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/pushPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setPolicyName("scopeless"); - mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/pushPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setPolicyName("testing.test"); pep.setPolicyType("wrong"); - mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/pushPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setPolicyType("BRMS_PARAM"); - mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/pushPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setPolicyType("BRMS_RAW"); - mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/pushPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setPolicyType("MicroService"); - mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/pushPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setPolicyType("ClosedLoop_PM"); - mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/pushPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setPolicyType("ClosedLoop_Fault"); - mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/pushPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setPolicyType("Base"); - mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/pushPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setPolicyType("Decision"); - mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/pushPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setPolicyType("Action"); - mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/pushPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setPolicyType("Firewall"); - mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/pushPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setPolicyType("Optimization"); - mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/pushPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setPdpGroup("default"); - mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/pushPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "123")) .andExpect(status().isBadRequest()); pep.setRequestID(UUID.randomUUID()); - mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/pushPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setPolicyType("Base,Base"); pep.setPolicyName("com.test1,com.test2"); - mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/pushPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setPolicyType("Base,Base, "); pep.setPolicyName("com.test1,com.test2,com.test3"); - mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/pushPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); } @@ -375,140 +335,164 @@ public class PolicyEngineServicesTest { public void deletePolicyTest() throws Exception { DeletePolicyParameters pep = new DeletePolicyParameters(); // Failure Tests. - mockMvc.perform(delete("/deletePolicy")).andExpect(status().isBadRequest()); - mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123")) - .andExpect(status().isUnauthorized()); + mockMvc.perform(delete("/deletePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL)).andExpect(status().isBadRequest()); + // Service Tests. - mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + mockMvc.perform( + delete("/deletePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) .andExpect(status().isBadRequest()); pep.setPolicyName("testing"); pep.setPolicyType("Base"); pep.setPolicyComponent("PDP"); - mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "test123")) - .andExpect(status().isBadRequest()); + mockMvc.perform(delete("/deletePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL) + .content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON).headers(headers) + .requestAttr("userId", "testUserId").header(UUIDHEADER, "test123")).andExpect(status().isBadRequest()); pep.setPdpGroup("default"); - mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "test123")) + mockMvc.perform( + delete("/deletePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "test123")) .andExpect(status().isBadRequest()); pep.setPolicyName("com.Config_test.1.xml"); - mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "test123")) + mockMvc.perform( + delete("/deletePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "test123")) .andExpect(status().isBadRequest()); pep.setPolicyName("testing. "); - mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "test123")) + mockMvc.perform( + delete("/deletePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "test123")) .andExpect(status().isBadRequest()); pep.setPolicyName("testscope.name"); - mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); + mockMvc.perform(delete("/deletePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL) + .content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON).headers(headers)) + .andExpect(status().isBadRequest()); pep.setPolicyType("wrong"); pep.setRequestID(UUID.randomUUID()); - mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); + mockMvc.perform(delete("/deletePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL) + .content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON).headers(headers)) + .andExpect(status().isBadRequest()); pep.setPolicyType("BRMS_PARAM"); pep.setPolicyComponent("wrong"); pep.setRequestID(null); - mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); + mockMvc.perform(delete("/deletePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL) + .content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON).headers(headers)) + .andExpect(status().isBadRequest()); pep.setPolicyType("BRMS_PARAM"); pep.setPolicyComponent("PDP"); - mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); + mockMvc.perform(delete("/deletePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL) + .content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON).headers(headers)) + .andExpect(status().isBadRequest()); pep.setPolicyType("BRMS_RAW"); pep.setPolicyComponent("PDP"); pep.setPolicyName("testscope.name"); - mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + mockMvc.perform( + delete("/deletePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) .andExpect(status().isBadRequest()); pep.setPolicyType("MicroService"); - mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + mockMvc.perform( + delete("/deletePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) .andExpect(status().isBadRequest()); pep.setPolicyType("Optimization"); - mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + mockMvc.perform( + delete("/deletePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) .andExpect(status().isBadRequest()); pep.setPolicyType("ClosedLoop_PM"); pep.setPolicyComponent("PDP"); pep.setDeleteCondition(DeletePolicyCondition.ALL); - mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + mockMvc.perform( + delete("/deletePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) .andExpect(status().isBadRequest()); pep.setPolicyType("ClosedLoop_Fault"); pep.setDeleteCondition(DeletePolicyCondition.ONE); pep.setPolicyName("test.test"); - mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + mockMvc.perform( + delete("/deletePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) .andExpect(status().isBadRequest()); pep.setPolicyType("Base"); pep.setPolicyComponent("PAP"); - mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + mockMvc.perform( + delete("/deletePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) .andExpect(status().isBadRequest()); pep.setPolicyType("Decision"); pep.setPolicyComponent("PDP"); pep.setPolicyName("test.test"); - mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + mockMvc.perform( + delete("/deletePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) .andExpect(status().isBadRequest()); pep.setPolicyType("Action"); pep.setPolicyName("scope.test"); - mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + mockMvc.perform( + delete("/deletePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) .andExpect(status().isBadRequest()); pep.setPdpGroup("default"); - mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + mockMvc.perform( + delete("/deletePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) .andExpect(status().isBadRequest()); pep.setPolicyComponent("PAP"); pep.setPolicyType("Firewall"); pep.setDeleteCondition(null); - mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + mockMvc.perform( + delete("/deletePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) .andExpect(status().isBadRequest()); pep.setPolicyComponent("PAP"); pep.setDeleteCondition(DeletePolicyCondition.ONE); - mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + mockMvc.perform( + delete("/deletePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) .andExpect(status().isBadRequest()); pep.setPolicyComponent("fail"); - mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + mockMvc.perform( + delete("/deletePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) .andExpect(status().isBadRequest()); pep.setPolicyComponent("PDP"); pep.setPolicyName("testscope.policyName"); - mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + mockMvc.perform( + delete("/deletePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) .andExpect(status().isBadRequest()); pep.setPolicyComponent(null); - mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + mockMvc.perform( + delete("/deletePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) .andExpect(status().isBadRequest()); pep.setPolicyComponent("PDP"); pep.setPolicyName("com.test1,com.test2"); pep.setPolicyType("Base,Base"); - mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + mockMvc.perform( + delete("/deletePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) .andExpect(status().isBadRequest()); pep.setPolicyName("com.test1,com.test2"); pep.setPolicyType("Base,Base, "); - mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + mockMvc.perform( + delete("/deletePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) .andExpect(status().isBadRequest()); pep.setPolicyName("com.test1,com.test2, "); pep.setPolicyType("Base,Base, "); - mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + mockMvc.perform( + delete("/deletePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) .andExpect(status().isBadRequest()); pep.setPolicyComponent("PAP"); pep.setPolicyName("com.test1,com.test2"); pep.setPolicyType("Base,Base"); - mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + mockMvc.perform( + delete("/deletePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) .andExpect(status().isBadRequest()); } @@ -516,47 +500,42 @@ public class PolicyEngineServicesTest { public void createUpdatePolicyTest() throws Exception { PolicyParameters pep = new PolicyParameters(); // Failure Tests. - mockMvc.perform(put("/createPolicy")).andExpect(status().isBadRequest()); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123")) - .andExpect(status().isUnauthorized()); - mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123")) - .andExpect(status().isUnauthorized()); + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL)).andExpect(status().isBadRequest()); + // Service Tests. setCreateUpdateImpl(); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) .andExpect(status().isBadRequest()); pep.setPolicyName("failName"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "test 123")) .andExpect(status().isBadRequest()); pep.setPolicyName("test. name"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setPolicyName(" "); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) .andExpect(status().isBadRequest()); pep.setPolicyName("test. "); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) .andExpect(status().isBadRequest()); pep.setPolicyName("te st.name"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) .andExpect(status().isBadRequest()); pep.setPolicyName("test.name"); pep.setPolicyDescription("testá"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) .andExpect(status().isBadRequest()); pep.setPolicyName("test.name"); pep.setPolicyDescription("good"); pep.setTtlDate(new Date()); pep.setRequestID(UUID.randomUUID()); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); } @@ -570,10 +549,10 @@ public class PolicyEngineServicesTest { setCreateUpdateImpl(); // Checks for BRMS Param Policy. pep.setPolicyConfigType(PolicyConfigType.BRMS_PARAM); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setRiskLevel("test"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); Map<AttributeType, Map<String, String>> attributes = new HashMap<>(); Map<String, String> matching = new HashMap<>(); @@ -581,16 +560,16 @@ public class PolicyEngineServicesTest { attributes.put(AttributeType.MATCHING, matching); pep.setAttributes(attributes); pep.setRiskLevel("5"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); - mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/updatePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); // Checks for BRMS Raw Policy pep.setPolicyConfigType(PolicyConfigType.BRMS_RAW); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("test"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setRiskLevel(null); pep.setConfigBody("package droolsexample\n\n import com.sample.ItemCity;\nimport java.math.BigDecimal;\n" @@ -599,12 +578,12 @@ public class PolicyEngineServicesTest { + " typeofItem == ItemCity.Type.MEDICINES)\n then\n" + " BigDecimal tax = new BigDecimal(0.0);\n" + " item.setLocalTax(tax.multiply(item.getSellPrice()));\nend"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setRiskLevel("5"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); - mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/updatePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); } @@ -618,31 +597,31 @@ public class PolicyEngineServicesTest { setCreateUpdateImpl(); // Checks for Base config Policy. pep.setPolicyConfigType(PolicyConfigType.Base); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("testbody"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBodyType(PolicyType.OTHER); pep.setRiskLevel("test"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setRiskLevel("4"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setOnapName("ec nam-e"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setOnapName("onapName"); pep.setConfigName("tes config"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigName("configName"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("{'test':'test}"); pep.setConfigBodyType(PolicyType.JSON); - mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/updatePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); Map<AttributeType, Map<String, String>> attributes = new HashMap<>(); Map<String, String> matching = new HashMap<>(); @@ -650,7 +629,7 @@ public class PolicyEngineServicesTest { attributes.put(AttributeType.MATCHING, matching); pep.setAttributes(attributes); pep.setConfigBody("testBody"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); } @@ -664,30 +643,30 @@ public class PolicyEngineServicesTest { setCreateUpdateImpl(); // Checks for Closed loop Policy. pep.setPolicyConfigType(PolicyConfigType.ClosedLoop_Fault); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("te stá"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("testBody"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("{\"key\":\"value\"}"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("{\"onapname\":\"\"}"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("{\"onapname\":\"test\"}"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setRiskLevel("test"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setRiskLevel("4"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); - mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/updatePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); } @@ -701,35 +680,35 @@ public class PolicyEngineServicesTest { setCreateUpdateImpl(); // Checks for Closed loop Policy. pep.setPolicyConfigType(PolicyConfigType.ClosedLoop_PM); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("te stá"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("testBody"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("{\"key\":\"value\"}"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("{\"onapname\":\"\"}"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("{\"onapname\":\"test\"}"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("{\"onapname\":\"test\", \"serviceTypePolicyName\":\"value\"}"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setRiskLevel("test"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setRiskLevel("4"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); - mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/updatePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); } @@ -743,25 +722,25 @@ public class PolicyEngineServicesTest { setCreateUpdateImpl(); // Checks for Closed loop Policy. pep.setPolicyConfigType(PolicyConfigType.Firewall); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("te st"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("{}"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("{\"test\":\"test\"}"); pep.setRiskLevel("test"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setRiskLevel("4"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("{\"configName\":\"test\"}"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); - mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/updatePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); } @@ -775,28 +754,28 @@ public class PolicyEngineServicesTest { setCreateUpdateImpl(); // Checks for Closed loop Policy. pep.setPolicyConfigType(PolicyConfigType.MicroService); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("te st"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("{}"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("{\"test\":\"test\"}"); pep.setOnapName(" "); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setOnapName("testonap"); pep.setRiskLevel("fail"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setRiskLevel("4"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("{\"service\":\"test\",\"uuid\":\"test\",\"location\":\"test\",\"configName\":\"test\"," + "\"description\":\"test\",\"priority\":\"test\",\"version\":\"test\"}"); - mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/updatePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); } @@ -810,50 +789,50 @@ public class PolicyEngineServicesTest { setCreateUpdateImpl(); // Checks for action Policy. pep.setPolicyClass(PolicyClass.Action); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); Map<AttributeType, Map<String, String>> attributes = new HashMap<>(); pep.setAttributes(attributes); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); attributes.put(AttributeType.MATCHING, new HashMap<>()); pep.setAttributes(attributes); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); Map<String, String> matching = new HashMap<>(); matching.put("key", "value"); attributes.put(AttributeType.MATCHING, matching); pep.setAttributes(attributes); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setActionAttribute("A1"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setActionPerformer("PEX"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setActionPerformer("PEP"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); - mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/updatePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); // Checks for Decision Policy. pep.setPolicyClass(PolicyClass.Decision); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setOnapName("xyz"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); attributes.remove(AttributeType.MATCHING); attributes.put(AttributeType.SETTINGS, matching); pep.setAttributes(attributes); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); attributes.put(AttributeType.MATCHING, matching); pep.setAttributes(attributes); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/createPolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); - mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep)) + mockMvc.perform(put("/updatePolicy").requestAttr(MECHID_ATTR, MECHID_ATTR_VAL).content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); } @@ -862,12 +841,7 @@ public class PolicyEngineServicesTest { DictionaryParameters pep = new DictionaryParameters(); // Failure Tests. mockMvc.perform(put("/createDictionaryItem")).andExpect(status().isBadRequest()); - mockMvc.perform(put("/createDictionaryItem").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123")) - .andExpect(status().isUnauthorized()); - mockMvc.perform(put("/updateDictionaryItem").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123")) - .andExpect(status().isUnauthorized()); + // Service Tests. mockMvc.perform(put("/createDictionaryItem").content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "tes123")) @@ -900,9 +874,7 @@ public class PolicyEngineServicesTest { DictionaryParameters pep = new DictionaryParameters(); // Failure Tests. mockMvc.perform(post("/getDictionaryItems")).andExpect(status().isBadRequest()); - mockMvc.perform(post("/getDictionaryItems").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123")) - .andExpect(status().isUnauthorized()); + // Service Tests. mockMvc.perform(post("/getDictionaryItems").content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "tes123")) @@ -930,12 +902,7 @@ public class PolicyEngineServicesTest { ConfigPolicyAPIRequest pep = new ConfigPolicyAPIRequest(); // Failure Tests. mockMvc.perform(put("/createConfig")).andExpect(status().isBadRequest()); - mockMvc.perform(put("/createConfig").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123")) - .andExpect(status().isUnauthorized()); - mockMvc.perform(put("/updateConfig").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123")) - .andExpect(status().isUnauthorized()); + // Service Tests. mockMvc.perform(put("/createConfig").content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "tes123")) @@ -963,12 +930,7 @@ public class PolicyEngineServicesTest { ConfigFirewallPolicyAPIRequest pep = new ConfigFirewallPolicyAPIRequest(); // Failure Tests. mockMvc.perform(put("/createFirewallConfig")).andExpect(status().isBadRequest()); - mockMvc.perform(put("/createFirewallConfig").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123")) - .andExpect(status().isUnauthorized()); - mockMvc.perform(put("/updateFirewallConfig").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123")) - .andExpect(status().isUnauthorized()); + // Service Tests. mockMvc.perform(put("/createFirewallConfig").content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "tes123")) diff --git a/ONAP-PDP-REST/src/test/java/org/onap/policy/pdp/rest/auth/test/AuthenticationServiceTest.java b/ONAP-PDP-REST/src/test/java/org/onap/policy/pdp/rest/auth/test/AuthenticationServiceTest.java index 564187675..0795526fc 100644 --- a/ONAP-PDP-REST/src/test/java/org/onap/policy/pdp/rest/auth/test/AuthenticationServiceTest.java +++ b/ONAP-PDP-REST/src/test/java/org/onap/policy/pdp/rest/auth/test/AuthenticationServiceTest.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP-PDP-REST * ================================================================================ - * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2018-2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Modifications Copyright (C) 2019 Samsung * ================================================================================ @@ -22,14 +22,16 @@ package org.onap.policy.pdp.rest.auth.test; -import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.mock; import java.io.UnsupportedEncodingException; import java.util.Base64; +import javax.servlet.ServletRequest; import org.junit.Test; -import org.onap.policy.pdp.rest.restAuth.AuthenticationService; +import org.onap.policy.pdp.rest.restauth.AuthenticationService; public class AuthenticationServiceTest { - private final String testCred = "testpdp:alpha456"; + private final String testCred = "python:test"; private final String testCredEncoded = new String(Base64.getEncoder().encode(testCred.getBytes())); private final String basicCred = "Basic " + testCredEncoded; @@ -40,9 +42,9 @@ public class AuthenticationServiceTest { // Set the system property temporarily String oldProperty = System.getProperty(systemKey); System.setProperty(systemKey, "xacml.pdp.properties"); + ServletRequest request = mock(ServletRequest.class); - AuthenticationService service = new AuthenticationService(); - assertEquals(service.authenticate(basicCred), true); + assertTrue(AuthenticationService.checkPermissions(null, basicCred, "getConfig", "DEVL", request)); // Restore the original system property if (oldProperty != null) { diff --git a/ONAP-PDP-REST/src/test/java/org/onap/policy/pdp/rest/auth/test/FilterTest.java b/ONAP-PDP-REST/src/test/java/org/onap/policy/pdp/rest/auth/test/FilterTest.java index 99ecefb80..cd3db8897 100644 --- a/ONAP-PDP-REST/src/test/java/org/onap/policy/pdp/rest/auth/test/FilterTest.java +++ b/ONAP-PDP-REST/src/test/java/org/onap/policy/pdp/rest/auth/test/FilterTest.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP-PDP-REST * ================================================================================ - * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Modifications Copyright (C) 2019 Samsung * ================================================================================ @@ -25,6 +25,8 @@ package org.onap.policy.pdp.rest.auth.test; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import com.att.research.xacml.util.XACMLProperties; +import com.mockrunner.mock.web.MockRequestDispatcher; import java.io.IOException; import javax.servlet.FilterChain; import javax.servlet.ServletException; @@ -32,14 +34,11 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.junit.Before; import org.junit.Test; -import org.onap.policy.pdp.rest.restAuth.PDPAuthenticationFilter; -import com.att.research.xacml.util.XACMLProperties; -import com.mockrunner.mock.web.MockRequestDispatcher; +import org.onap.policy.pdp.rest.restauth.PdpAuthenticationFilter; public class FilterTest { - - private PDPAuthenticationFilter authenticationFilter = new PDPAuthenticationFilter(); - private final String VALIDHEADERVALUE = "Basic dGVzdHBkcDphbHBoYTQ1Ng=="; + private PdpAuthenticationFilter authenticationFilter = new PdpAuthenticationFilter(); + private final String VALIDHEADERVALUE = "Basic cHl0aG9uOnRlc3Q="; @Before public void setUp() throws Exception { @@ -103,7 +102,7 @@ public class FilterTest { FilterChain filterChain = mock(FilterChain.class); // when(httpServletRequest.getRequestURI()).thenReturn("/pdp/api/getConfig"); - when(httpServletRequest.getHeader(PDPAuthenticationFilter.AUTHENTICATION_HEADER)).thenReturn("error"); + when(httpServletRequest.getHeader(PdpAuthenticationFilter.AUTHENTICATION_HEADER)).thenReturn("error"); authenticationFilter.doFilter(httpServletRequest, httpServletResponse, filterChain); // verify if unauthorized verify(httpServletResponse).setStatus(HttpServletResponse.SC_UNAUTHORIZED); @@ -117,7 +116,7 @@ public class FilterTest { FilterChain filterChain = mock(FilterChain.class); // when(httpServletRequest.getRequestURI()).thenReturn("/pdp/api/getConfig"); - when(httpServletRequest.getHeader(PDPAuthenticationFilter.AUTHENTICATION_HEADER)).thenReturn("Basic test123"); + when(httpServletRequest.getHeader(PdpAuthenticationFilter.AUTHENTICATION_HEADER)).thenReturn("Basic test123"); authenticationFilter.doFilter(httpServletRequest, httpServletResponse, filterChain); // verify if unauthorized verify(httpServletResponse).setStatus(HttpServletResponse.SC_UNAUTHORIZED); @@ -132,7 +131,7 @@ public class FilterTest { // New request no environment header check when(httpServletRequest.getRequestURI()).thenReturn("/pdp/api/getConfig"); when(httpServletRequest.getRequestDispatcher("/api/getConfig")).thenReturn(new MockRequestDispatcher()); - when(httpServletRequest.getHeader(PDPAuthenticationFilter.AUTHENTICATION_HEADER)).thenReturn(VALIDHEADERVALUE); + when(httpServletRequest.getHeader(PdpAuthenticationFilter.AUTHENTICATION_HEADER)).thenReturn(VALIDHEADERVALUE); authenticationFilter.doFilter(httpServletRequest, httpServletResponse, filterChain); // verify if authorized verify(httpServletRequest).getRequestDispatcher("/api/getConfig"); @@ -141,7 +140,7 @@ public class FilterTest { // when(httpServletRequest.getRequestURI()).thenReturn("/pdp/getConfig"); when(httpServletRequest.getRequestDispatcher("/api//getConfig")).thenReturn(new MockRequestDispatcher()); - when(httpServletRequest.getHeader(PDPAuthenticationFilter.AUTHENTICATION_HEADER)).thenReturn(VALIDHEADERVALUE); + when(httpServletRequest.getHeader(PdpAuthenticationFilter.AUTHENTICATION_HEADER)).thenReturn(VALIDHEADERVALUE); authenticationFilter.doFilter(httpServletRequest, httpServletResponse, filterChain); // verify if authorized verify(httpServletRequest).getRequestDispatcher("/api//getConfig"); @@ -158,15 +157,17 @@ public class FilterTest { // when(httpServletRequest.getRequestURI()).thenReturn("/pdp/getConfig"); when(httpServletRequest.getRequestDispatcher("/api//getConfig")).thenReturn(new MockRequestDispatcher()); - when(httpServletRequest.getHeader(PDPAuthenticationFilter.ENVIRONMENT_HEADER)).thenReturn("DEVL"); - when(httpServletRequest.getHeader(PDPAuthenticationFilter.AUTHENTICATION_HEADER)).thenReturn(VALIDHEADERVALUE); + when(httpServletRequest.getHeader(PdpAuthenticationFilter.ENVIRONMENT_HEADER)).thenReturn("DEVL"); + when(httpServletRequest.getHeader(PdpAuthenticationFilter.AUTHENTICATION_HEADER)).thenReturn(VALIDHEADERVALUE); + when(httpServletRequest.getHeader(PdpAuthenticationFilter.CLIENTAUTH_HEADER)).thenReturn(null); authenticationFilter.doFilter(httpServletRequest, httpServletResponse, filterChain); // verify if authorized verify(httpServletRequest).getRequestDispatcher("/api//getConfig"); // New request no environment header check when(httpServletRequest.getRequestURI()).thenReturn("/pdp/api/getConfig"); when(httpServletRequest.getRequestDispatcher("/api/getConfig")).thenReturn(new MockRequestDispatcher()); - when(httpServletRequest.getHeader(PDPAuthenticationFilter.AUTHENTICATION_HEADER)).thenReturn(VALIDHEADERVALUE); + when(httpServletRequest.getHeader(PdpAuthenticationFilter.AUTHENTICATION_HEADER)).thenReturn(VALIDHEADERVALUE); + when(httpServletRequest.getHeader(PdpAuthenticationFilter.CLIENTAUTH_HEADER)).thenReturn(null); authenticationFilter.doFilter(httpServletRequest, httpServletResponse, filterChain); // verify if authorized verify(httpServletRequest).getRequestDispatcher("/api/getConfig"); @@ -175,9 +176,10 @@ public class FilterTest { // Requests with InValid Environment Header // when(httpServletRequest.getRequestURI()).thenReturn("/pdp/getConfig"); - when(httpServletRequest.getRequestDispatcher("/api//getConfig")).thenReturn(new MockRequestDispatcher()); - when(httpServletRequest.getHeader(PDPAuthenticationFilter.ENVIRONMENT_HEADER)).thenReturn("TEST"); - when(httpServletRequest.getHeader(PDPAuthenticationFilter.AUTHENTICATION_HEADER)).thenReturn(VALIDHEADERVALUE); + when(httpServletRequest.getRequestDispatcher("/api/getConfig")).thenReturn(new MockRequestDispatcher()); + when(httpServletRequest.getHeader(PdpAuthenticationFilter.ENVIRONMENT_HEADER)).thenReturn("TEST"); + when(httpServletRequest.getHeader(PdpAuthenticationFilter.AUTHENTICATION_HEADER)).thenReturn(VALIDHEADERVALUE); + when(httpServletRequest.getHeader(PdpAuthenticationFilter.CLIENTAUTH_HEADER)).thenReturn(null); authenticationFilter.doFilter(httpServletRequest, httpServletResponse, filterChain); // verify if unauthorized verify(httpServletResponse).setStatus(HttpServletResponse.SC_UNAUTHORIZED); diff --git a/ONAP-PDP-REST/xacml.pdp.properties b/ONAP-PDP-REST/xacml.pdp.properties index 51feec6f5..fc826b3e1 100644 --- a/ONAP-PDP-REST/xacml.pdp.properties +++ b/ONAP-PDP-REST/xacml.pdp.properties @@ -177,12 +177,12 @@ cadi_latitude=38.000 cadi.longitude=72.000 cadi_alias=policy@policy.onap.org cadi_loglevel=DEBUG -cadi_keyfile=/media/sf_SourceTree/gerrit-pe/engine/packages/base/src/files/etc/ssl/aaf-cadi.keyfile +cadi_keyfile=../packages/base/src/files/etc/ssl/aaf-cadi.keyfile cadi_protocols=TLSv1.1,TLSv1.2 cadi_x509_issuers=CN=intermediateCA_1, OU=OSAAF, O=ONAP, C=US:CN=intermediateCA_7, OU=OSAAF, O=ONAP, C=US -cadi_keystore=/media/sf_SourceTree/gerrit-pe/engine/packages/base/src/files/etc/ssl/policy-keystore +cadi_keystore=../packages/base/src/files/etc/ssl/policy-keystore cadi_keystore_password=Pol1cy_0nap -cadi_truststore=/media/sf_SourceTree/gerrit-pe/engine/packages/base/src/files/etc/ssl/policy-truststore +cadi_truststore=../packages/base/src/files/etc/ssl/policy-truststore cadi_truststore_password=Pol1cy_0nap aaf_env=DEV aaf_url=https://aaf-onap-test.osaaf.org:8095/AAF_NS.service:2.1 diff --git a/ONAP-REST/src/main/java/org/onap/policy/rest/adapter/PolicyRestAdapter.java b/ONAP-REST/src/main/java/org/onap/policy/rest/adapter/PolicyRestAdapter.java index e3faaff88..0a3f46c78 100644 --- a/ONAP-REST/src/main/java/org/onap/policy/rest/adapter/PolicyRestAdapter.java +++ b/ONAP-REST/src/main/java/org/onap/policy/rest/adapter/PolicyRestAdapter.java @@ -2,14 +2,14 @@ * ============LICENSE_START======================================================= * ONAP-PAP-REST * ================================================================================ - * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-2019 AT&T Intellectual Property. 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. @@ -29,10 +29,10 @@ import org.onap.policy.rest.jpa.OnapName; public class PolicyRestAdapter { /* - * + * * Note : Make Sure if any variables are added in PolicyRestAdapter.java, add them to PolicyElasticData.java file - * - * + * + * */ // Common @@ -62,6 +62,7 @@ public class PolicyRestAdapter { private String finalPolicyPath; private String version; private String jsonBody; + private String uiJsonBody; private String apiflag; private String prevJsonBody; private Integer highestVersion; @@ -1137,7 +1138,7 @@ public class PolicyRestAdapter { public void setBlackListEntryType(String blackListEntryType) { this.blackListEntryType = blackListEntryType; } - + public String getRawXacmlPolicy() { return rawXacmlPolicy; } @@ -1145,4 +1146,12 @@ public class PolicyRestAdapter { public void setRawXacmlPolicy(String rawXacmlPolicy) { this.rawXacmlPolicy = rawXacmlPolicy; } + + public String getUiJsonBody() { + return uiJsonBody; + } + + public void setUiJsonBody(String uiJsonBody) { + this.uiJsonBody = uiJsonBody; + } } diff --git a/ONAP-REST/src/main/java/org/onap/policy/rest/jpa/DictionaryData.java b/ONAP-REST/src/main/java/org/onap/policy/rest/jpa/DictionaryData.java new file mode 100644 index 000000000..85a5091e8 --- /dev/null +++ b/ONAP-REST/src/main/java/org/onap/policy/rest/jpa/DictionaryData.java @@ -0,0 +1,83 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP-REST + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.rest.jpa; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.NamedQuery; +import javax.persistence.Table; + +@Entity +@Table(name = "DictionaryData") +@NamedQuery(name = "DictionaryData.findAll", query = "SELECT v FROM DictionaryData v ") +public class DictionaryData { + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + @Column(name = "id") + private int id; + + @Column(name = "dictionaryName", nullable = false, unique = true) + private String dictionaryName; + + @Column(name = "dictionaryUrl", nullable = false, length = 2048) + private String dictionaryUrl; + + @Column(name = "dictionaryDataByName", nullable = false, length = 1024) + private String dictionaryDataByName; + + public String getDictionaryUrl() { + return dictionaryUrl; + } + + public void setDictionaryUrl(String dictionaryUrl) { + this.dictionaryUrl = dictionaryUrl; + } + + public String getDictionaryDataByName() { + return dictionaryDataByName; + } + + public void setDictionaryDataByName(String dictionaryDataByName) { + this.dictionaryDataByName = dictionaryDataByName; + } + + public String getDictionaryName() { + return dictionaryName; + } + + public void setDictionaryName(String dictionaryName) { + this.dictionaryName = dictionaryName; + } + + public int getId() { + return this.id; + } + + public void setId(int id) { + this.id = id; + } + +} diff --git a/ONAP-REST/src/main/java/org/onap/policy/rest/jpa/MicroServiceModels.java b/ONAP-REST/src/main/java/org/onap/policy/rest/jpa/MicroServiceModels.java index 955e7ffda..1c6d811e1 100644 --- a/ONAP-REST/src/main/java/org/onap/policy/rest/jpa/MicroServiceModels.java +++ b/ONAP-REST/src/main/java/org/onap/policy/rest/jpa/MicroServiceModels.java @@ -2,14 +2,14 @@ * ============LICENSE_START======================================================= * ONAP-REST * ================================================================================ - * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-2019 AT&T Intellectual Property. 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. @@ -17,10 +17,10 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.policy.rest.jpa; import java.io.Serializable; - import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; @@ -28,58 +28,75 @@ import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; +import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.OrderBy; import javax.persistence.Table; /* - * JPA for the Micro Service Models. - * + * JPA for the Micro Service Models. + * * @version: 0.1 */ @Entity -@Table(name="MicroServiceModels") -@NamedQuery(name="MicroServiceModels.findAll", query="SELECT b FROM MicroServiceModels b ") -public class MicroServiceModels implements Serializable{ +@Table(name = "MicroServiceModels") +@NamedQueries({@NamedQuery(name = "MicroServiceModels.findAll", query = "SELECT b FROM MicroServiceModels b "), + @NamedQuery(name = "MicroServiceModels.findAllDecision", + query = "SELECT b FROM MicroServiceModels b WHERE b.decisionModel=1")}) +public class MicroServiceModels implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO) - @Column(name="id") + @Column(name = "id") private int id; - @Column(name="modelName", nullable=false, unique=true) + @Column(name = "modelName", nullable = false, unique = true) @OrderBy("asc") private String modelName; - @Column(name="description", nullable=true, length=2048) + @Column(name = "description", nullable = true, length = 2048) private String description; - @Column(name="dependency", nullable=true, length=2048) + @Column(name = "dependency", nullable = true, length = 2048) private String dependency; - @Column(name="attributes", nullable=false, length=255) + @Column(name = "attributes", nullable = false, length = 255) private String attributes; - @Column(name="ref_attributes", nullable=false, length=255) + @Column(name = "ref_attributes", nullable = false, length = 255) private String ref_attributes; - @Column (name="sub_attributes", nullable=false, length=2000) + @Column(name = "sub_attributes", nullable = false, length = 2000) private String sub_attributes; - @Column (name="dataOrderInfo", nullable=true, length=2000) + @Column(name = "dataOrderInfo", nullable = true, length = 2000) private String dataOrderInfo; - @Column (name="version", nullable=false, length=2000) + @Column(name = "version", nullable = false, length = 2000) private String version; - @Column (name="enumValues", nullable=false, length=2000) + @Column(name = "enumValues", nullable = false, length = 2000) private String enumValues; - @Column (name="annotation", nullable=false, length=2000) + @Column(name = "annotation", nullable = false, length = 2000) private String annotation; + @Column(name = "decisionModel", nullable = true) + private Boolean decisionModel = false; + + @Column(name = "ruleFormation", nullable = true) + private String ruleFormation; + + public String getRuleFormation() { + return ruleFormation; + } + + public void setRuleFormation(String ruleFormation) { + this.ruleFormation = ruleFormation; + } + public String getSub_attributes() { return sub_attributes; } @@ -105,7 +122,7 @@ public class MicroServiceModels implements Serializable{ } @ManyToOne - @JoinColumn(name="imported_by") + @JoinColumn(name = "imported_by") private UserInfo userCreatedBy; public UserInfo getUserCreatedBy() { @@ -156,11 +173,11 @@ public class MicroServiceModels implements Serializable{ this.dependency = dependency; } - public String getModelName(){ + public String getModelName() { return this.modelName; } - public void setModelName(String modelName){ + public void setModelName(String modelName) { this.modelName = modelName; } @@ -179,4 +196,13 @@ public class MicroServiceModels implements Serializable{ public void setAnnotation(String annotation) { this.annotation = annotation; } -}
\ No newline at end of file + + public Boolean isDecisionModel() { + return decisionModel; + } + + public void setDecisionModel(boolean decisionModel) { + this.decisionModel = decisionModel; + } +} + diff --git a/ONAP-REST/src/main/java/org/onap/policy/rest/util/MSAttributeObject.java b/ONAP-REST/src/main/java/org/onap/policy/rest/util/MSAttributeObject.java index d9240a25c..3d27499da 100644 --- a/ONAP-REST/src/main/java/org/onap/policy/rest/util/MSAttributeObject.java +++ b/ONAP-REST/src/main/java/org/onap/policy/rest/util/MSAttributeObject.java @@ -2,14 +2,14 @@ * ============LICENSE_START======================================================= * ONAP-REST * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017,2019 AT&T Intellectual Property. 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. @@ -33,77 +33,118 @@ public class MSAttributeObject { private Map<String, String> enumType = new HashMap<>(); private Map<String, String> matchingSet = new HashMap<>(); private boolean policyTempalate; + private String ruleFormation; + private String dataOrderInfo; public Map<String, String> getRefAttribute() { return refAttribute; } + public void setRefAttribute(Map<String, String> refAttribute) { this.refAttribute = refAttribute; } + public String getClassName() { return className; } + public void setClassName(String className) { this.className = className; } + public Map<String, String> getAttribute() { return attribute; } + public void setAttribute(Map<String, String> attribute) { this.attribute = attribute; } + public Map<String, String> getEnumType() { return enumType; } + public void setEnumType(Map<String, String> enumType) { this.enumType = enumType; } - public void addAttribute(String key, String value){ + + public void addAttribute(String key, String value) { this.attribute.put(key, value); } - public void addRefAttribute(String key, String value){ + + public void addRefAttribute(String key, String value) { this.refAttribute.put(key, value); } - public void addAllAttribute(Map<String, String> map){ + + public void addAllAttribute(Map<String, String> map) { this.attribute.putAll(map); } - public void addAllRefAttribute(Map<String, String> map){ + + public void addAllRefAttribute(Map<String, String> map) { this.refAttribute.putAll(map); } + public Map<String, Object> getSubClass() { return subClass; } + public void setSubClass(Map<String, Object> subClass) { this.subClass = subClass; } - public void addAllSubClass(Map<String, Object> subClass){ + + public void addAllSubClass(Map<String, Object> subClass) { this.subClass.putAll(subClass); } + public String getDependency() { return dependency; } + public void setDependency(String dependency) { this.dependency = dependency; } - public void addSingleEnum(String key, String value){ + + public void addSingleEnum(String key, String value) { this.enumType.put(key, value); } + public Map<String, String> getMatchingSet() { return matchingSet; } + public void setMatchingSet(Map<String, String> matchingSet) { this.matchingSet = matchingSet; } - public void addMatchingSet(String key, String value){ + + public void addMatchingSet(String key, String value) { this.matchingSet.put(key, value); } - public void addMatchingSet(Map<String, String> matchingSet){ + + public void addMatchingSet(Map<String, String> matchingSet) { this.matchingSet.putAll(matchingSet); } + public boolean isPolicyTempalate() { return policyTempalate; } + public void setPolicyTempalate(boolean policyTempalate) { this.policyTempalate = policyTempalate; } -}
\ No newline at end of file + + public String getRuleFormation() { + return ruleFormation; + } + + public void setRuleFormation(String ruleFormation) { + this.ruleFormation = ruleFormation; + } + + public String getDataOrderInfo() { + return dataOrderInfo; + } + + public void setDataOrderInfo(String dataOrderInfo) { + this.dataOrderInfo = dataOrderInfo; + } +} diff --git a/ONAP-REST/src/main/java/org/onap/policy/rest/util/MSModelUtils.java b/ONAP-REST/src/main/java/org/onap/policy/rest/util/MSModelUtils.java index f145f4db1..56e110019 100644 --- a/ONAP-REST/src/main/java/org/onap/policy/rest/util/MSModelUtils.java +++ b/ONAP-REST/src/main/java/org/onap/policy/rest/util/MSModelUtils.java @@ -2,15 +2,15 @@ * ============LICENSE_START======================================================= * ONAP-REST * ================================================================================ - * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved. * Modified Copyright (C) 2018 Samsung Electronics Co., Ltd. * ================================================================================ * 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. @@ -39,7 +39,6 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; - import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -65,6 +64,8 @@ import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; import org.json.JSONObject; import org.onap.policy.rest.XACMLRestProperties; +import org.onap.policy.rest.dao.CommonClassDao; +import org.onap.policy.rest.jpa.DictionaryData; import org.yaml.snakeyaml.Yaml; @@ -92,12 +93,14 @@ public class MSModelUtils { private static final String DATATYPE = "data_types.policy.data."; private static final String TYPE = ".type"; private static final String REQUIRED = ".required"; + private static final String DICTIONARYNAME = "dictionaryName"; + private static final String DICTIONARY = "dictionary:"; private static final String MATCHABLE = ".matchable"; - public static final String STRING = "string"; - public static final String INTEGER = "integer"; + public static final String STRING = "string"; + public static final String INTEGER = "integer"; private static final String BOOLEAN = "boolean"; - public static final String LIST = "list"; - public static final String MAP = "map"; + public static final String LIST = "list"; + public static final String MAP = "map"; private static final String DEFAULT = ".default"; private static final String MANYFALSE = ":MANY-false"; private static final String DESCRIPTION = ".description"; @@ -109,19 +112,30 @@ public class MSModelUtils { private static final String REQUIREDFALSE = ":required-false"; private static final String REQUIREDTRUE = ":required-true"; private static final String MATCHINGTRUE = "matching-true"; - private static final String DESCRIPTION_KEY = "description"; - private static final String DESCRIPTION_TOKEN =":description-"; + private static final String DESCRIPTION_KEY = "description"; + private static final String DESCRIPTION_TOKEN = ":description-"; private static final String PROPERTIES_KEY = "properties"; private static final String DATA_TYPE = "data_types"; private static final String ERROR = "error"; private static final String NODE_TYPE = "node_types"; private static final String TOSCA_DEFINITION_VERSION = "tosca_definitions_version"; + private static final String TOSCA_SIMPLE_YAML_1_0_0 = "tosca_simple_yaml_1_0_0"; + private static final String JSON_MODEL = "JSON_MODEL"; private StringBuilder dataListBuffer = new StringBuilder(); private List<String> dataConstraints = new ArrayList<>(); private String attributeString = null; private boolean isDuplicatedAttributes = false; + private String jsonRuleFormation = null; + + private static CommonClassDao commonClassDao; - public MSModelUtils() {} + public MSModelUtils() { + // Default Constructor + } + + public MSModelUtils(CommonClassDao commonClassDao) { + MSModelUtils.commonClassDao = commonClassDao; + } public MSModelUtils(String onap, String policy) { this.onap = onap; @@ -136,6 +150,9 @@ public class MSModelUtils { XMI }; + public enum SearchType { + TOSCA_DEFINITION_VERSION, TOSCA_SIMPLE_YAML_1_0_0, NODE_TYPE, DATA_TYPE, JSON_MODEL + } public Map<String, MSAttributeObject> processEpackage(String file, MODEL_TYPE model) { if (model == MODEL_TYPE.XMI) { @@ -145,13 +162,13 @@ public class MSModelUtils { } - private void processXMIEpackage(String xmiFile){ + private void processXMIEpackage(String xmiFile) { EPackage root = getEpackage(xmiFile); TreeIterator<EObject> treeItr = root.eAllContents(); String className; String returnValue; - // Pulling out dependency from file + // Pulling out dependency from file while (treeItr.hasNext()) { EObject obj = treeItr.next(); if (obj instanceof EClassifier) { @@ -160,18 +177,18 @@ public class MSModelUtils { if (obj instanceof EEnum) { enumMap.putAll(getEEnum(obj)); - }else if (obj instanceof EClass) { + } else if (obj instanceof EClass) { String temp = getDependencyList(eClassifier).toString(); - returnValue = StringUtils.replaceEach(temp, new String[]{"[", "]"}, new String[]{"", ""}); + returnValue = StringUtils.replaceEach(temp, new String[] {"[", "]"}, new String[] {"", ""}); getAttributes(className, returnValue, root); } } } - if (!enumMap.isEmpty()){ + if (!enumMap.isEmpty()) { addEnumClassMap(); } - if (!matchingClass.isEmpty()){ + if (!matchingClass.isEmpty()) { checkForMatchingClass(); } } @@ -179,16 +196,16 @@ public class MSModelUtils { private void checkForMatchingClass() { HashMap<String, String> tempAttribute = new HashMap<>(); - for (Entry<String, String> set : matchingClass.entrySet()){ + for (Entry<String, String> set : matchingClass.entrySet()) { String key = set.getKey(); - if (classMap.containsKey(key)){ + if (classMap.containsKey(key)) { Map<String, String> listAttributes = classMap.get(key).getAttribute(); Map<String, String> listRef = classMap.get(key).getRefAttribute(); - for ( Entry<String, String> eSet : listAttributes.entrySet()){ + for (Entry<String, String> eSet : listAttributes.entrySet()) { String key2 = eSet.getKey(); tempAttribute.put(key2, MATCHINGTRUE); } - for ( Entry<String, String> eSet : listRef.entrySet()){ + for (Entry<String, String> eSet : listRef.entrySet()) { String key3 = eSet.getKey(); tempAttribute.put(key3, MATCHINGTRUE); } @@ -204,10 +221,10 @@ public class MSModelUtils { private void updateMatching(HashMap<String, String> tempAttribute, String key) { Map<String, MSAttributeObject> newClass = classMap; - for (Entry<String, MSAttributeObject> updateClass : newClass.entrySet()){ + for (Entry<String, MSAttributeObject> updateClass : newClass.entrySet()) { Map<String, String> valueMap = updateClass.getValue().getMatchingSet(); String keymap = updateClass.getKey(); - if (valueMap.containsKey(key)){ + if (valueMap.containsKey(key)) { Map<String, String> modifyMap = classMap.get(keymap).getMatchingSet(); modifyMap.remove(key); modifyMap.putAll(tempAttribute); @@ -218,7 +235,7 @@ public class MSModelUtils { } private void addEnumClassMap() { - for (Entry<String, MSAttributeObject> value :classMap.entrySet()){ + for (Entry<String, MSAttributeObject> value : classMap.entrySet()) { value.getValue().setEnumType(enumMap); } } @@ -241,11 +258,10 @@ public class MSModelUtils { private HashMap<String, String> getEEnum(EObject obj) { List<String> valueList = new ArrayList<>(); HashMap<String, String> returnMap = new HashMap<>(); - EEnum eenum = (EEnum)obj; + EEnum eenum = (EEnum) obj; String name = eenum.getName(); - for (EEnumLiteral eEnumLiteral : eenum.getELiterals()) - { + for (EEnumLiteral eEnumLiteral : eenum.getELiterals()) { Enumerator instance = eEnumLiteral.getInstance(); String value = instance.getLiteral(); valueList.add(value); @@ -256,7 +272,7 @@ public class MSModelUtils { public void getAttributes(String className, String dependency, EPackage root) { List<String> dpendList = new ArrayList<>(); - if (dependency!=null){ + if (dependency != null) { dpendList = new ArrayList<>(Arrays.asList(dependency.split(","))); } MSAttributeObject msAttributeObject = new MSAttributeObject(); @@ -282,15 +298,15 @@ public class MSModelUtils { boolean requiredMatchAttribute = false; HashMap<String, String> annotationSet = new HashMap<>(); - // Pulling out dependency from file + // Pulling out dependency from file while (treeItr.hasNext()) { EObject obj = treeItr.next(); if (obj instanceof EClassifier) { - requiredAttribute = isRequiredAttribute(obj, className ); - requiredMatchAttribute = isRequiredAttribute(obj, extendClass ); + requiredAttribute = isRequiredAttribute(obj, className); + requiredMatchAttribute = isRequiredAttribute(obj, extendClass); } - if (requiredAttribute){ + if (requiredAttribute) { if (obj instanceof EStructuralFeature) { checkAnnotation(annotationSet, (EStructuralFeature) obj); } @@ -306,13 +322,13 @@ public class MSModelUtils { if (eStrucClassifier.getEAnnotations().isEmpty()) { return; } - String matching = annotationValue(eStrucClassifier, ANNOTATION_TYPE.MATCHING, policy); - if (matching!=null){ - if (obj instanceof EReference){ + String matching = annotationValue(eStrucClassifier, ANNOTATION_TYPE.MATCHING, policy); + if (matching != null) { + if (obj instanceof EReference) { EClass refType = ((EReference) obj).getEReferenceType(); annotationSet.put(refType.getName(), matching); matchingClass.put(refType.getName(), matching); - }else{ + } else { annotationSet.put(eStrucClassifier.getName(), matching); } } @@ -324,37 +340,37 @@ public class MSModelUtils { if (eStrucClassifier.getEAnnotations().isEmpty()) { return; } - String matching = annotationValue(eStrucClassifier, ANNOTATION_TYPE.MATCHING, policy); - if (matching!=null){ + String matching = annotationValue(eStrucClassifier, ANNOTATION_TYPE.MATCHING, policy); + if (matching != null) { annotationSet.put(eStrucClassifier.getName(), matching); } - String range = annotationValue(eStrucClassifier, ANNOTATION_TYPE.VALIDATION, policy); - if (range!=null){ + String range = annotationValue(eStrucClassifier, ANNOTATION_TYPE.VALIDATION, policy); + if (range != null) { annotationSet.put(eStrucClassifier.getName(), range); } String annotationDict = annotationValue(eStrucClassifier, ANNOTATION_TYPE.DICTIONARY, policy); - if (annotationDict!=null){ + if (annotationDict != null) { annotationSet.put(eStrucClassifier.getName(), annotationDict); } } - private Map<String, Object> getSubAttributeList(EPackage root, String className , String superClass) { + private Map<String, Object> getSubAttributeList(EPackage root, String className, String superClass) { TreeIterator<EObject> treeItr = root.eAllContents(); boolean requiredAttribute = false; Map<String, Object> subAttribute = new HashMap<>(); int rollingCount = 0; int processClass = 0; - // Pulling out dependency from file + // Pulling out dependency from file while (treeItr.hasNext() && rollingCount < 2) { EObject obj = treeItr.next(); if (obj instanceof EClassifier) { - requiredAttribute = isRequiredAttribute(obj, className ) || isRequiredAttribute(obj, superClass ); - if (requiredAttribute){ + requiredAttribute = isRequiredAttribute(obj, className) || isRequiredAttribute(obj, superClass); + if (requiredAttribute) { processClass++; } - rollingCount = rollingCount+processClass; + rollingCount = rollingCount + processClass; } if (requiredAttribute && (obj instanceof EStructuralFeature)) { @@ -367,15 +383,16 @@ public class MSModelUtils { return subAttribute; } - private void updateSubAttributes(Map<String, Object> subAttribute, EObject obj, EStructuralFeature eStrucClassifier) { + private void updateSubAttributes(Map<String, Object> subAttribute, EObject obj, + EStructuralFeature eStrucClassifier) { if (!(obj instanceof EReference)) { return; } if (annotationTest(eStrucClassifier, configuration, onap)) { EClass refType = ((EReference) obj).getEReferenceType(); - if(!refType.toString().contains(eProxyURI)){ + if (!refType.toString().contains(eProxyURI)) { String required = REQUIREDFALSE; - if(eStrucClassifier.getLowerBound() == 1){ + if (eStrucClassifier.getLowerBound() == 1) { required = REQUIREDTRUE; } subAttribute.put(eStrucClassifier.getName(), refType.getName() + required); @@ -384,8 +401,8 @@ public class MSModelUtils { } public String checkDefultValue(String defultValue) { - if (defultValue!=null){ - return DEFAULTVALUE+ defultValue; + if (defultValue != null) { + return DEFAULTVALUE + defultValue; } return ":defaultValue-NA"; @@ -393,17 +410,18 @@ public class MSModelUtils { public String checkRequiredPattern(int upper, int lower) { String pattern = XACMLProperties.getProperty(XACMLRestProperties.PROP_XCORE_REQUIRED_PATTERN); - if (pattern!=null && upper == Integer.parseInt(pattern.split(",")[1]) && lower==Integer.parseInt(pattern.split(",")[0])){ + if (pattern != null && upper == Integer.parseInt(pattern.split(",")[1]) + && lower == Integer.parseInt(pattern.split(",")[0])) { return REQUIREDTRUE; } return REQUIREDFALSE; } - public JSONObject buildJavaObject(Map<String, String> map){ - return new JSONObject(map); + public JSONObject buildJavaObject(Map<String, String> map) { + return new JSONObject(map); } - public Map<String, String> getRefAttributeList(EPackage root, String className, String superClass){ + public Map<String, String> getRefAttributeList(EPackage root, String className, String superClass) { TreeIterator<EObject> treeItr = root.eAllContents(); boolean requiredAttribute = false; @@ -411,59 +429,63 @@ public class MSModelUtils { int rollingCount = 0; int processClass = 0; boolean annotation; - // Pulling out dependency from file + // Pulling out dependency from file while (treeItr.hasNext()) { EObject obj = treeItr.next(); if (obj instanceof EClassifier) { - requiredAttribute = isRequiredAttribute(obj, className ) || isRequiredAttribute(obj, superClass ); - if (requiredAttribute){ + requiredAttribute = isRequiredAttribute(obj, className) || isRequiredAttribute(obj, superClass); + if (requiredAttribute) { processClass++; } - rollingCount = rollingCount+processClass; + rollingCount = rollingCount + processClass; } if (requiredAttribute && (obj instanceof EStructuralFeature)) { - EStructuralFeature eStrucClassifier = (EStructuralFeature) obj; - if (!eStrucClassifier.getEAnnotations().isEmpty()) { - annotation = annotationTest(eStrucClassifier, configuration, onap); - if ( annotation && obj instanceof EReference) { - updRefAttributes(refAttribute, (EStructuralFeature) obj, eStrucClassifier); - } else if (annotation && obj instanceof EAttributeImpl) { - updEnumTypeRefAttrib(refAttribute, (EStructuralFeature) obj, eStrucClassifier); - } + EStructuralFeature eStrucClassifier = (EStructuralFeature) obj; + if (!eStrucClassifier.getEAnnotations().isEmpty()) { + annotation = annotationTest(eStrucClassifier, configuration, onap); + if (annotation && obj instanceof EReference) { + updRefAttributes(refAttribute, (EStructuralFeature) obj, eStrucClassifier); + } else if (annotation && obj instanceof EAttributeImpl) { + updEnumTypeRefAttrib(refAttribute, (EStructuralFeature) obj, eStrucClassifier); } + } } } return refAttribute; } - private void updEnumTypeRefAttrib(HashMap<String, String> refAttribute, EStructuralFeature obj, EStructuralFeature eStrucClassifier) { + private void updEnumTypeRefAttrib(HashMap<String, String> refAttribute, EStructuralFeature obj, + EStructuralFeature eStrucClassifier) { EClassifier refType = ((EAttributeImpl) obj).getEType(); - if (!(refType instanceof EEnumImpl)){ + if (!(refType instanceof EEnumImpl)) { return; } String array = arrayCheck(obj.getUpperBound()); String required = REQUIREDFALSE; - if(obj.getLowerBound() == 1){ + if (obj.getLowerBound() == 1) { required = REQUIREDTRUE; } refAttribute.put(eStrucClassifier.getName(), refType.getName() + array + required); } - private void updRefAttributes(HashMap<String, String> refAttribute, EStructuralFeature obj, EStructuralFeature eStrucClassifier) { + private void updRefAttributes(HashMap<String, String> refAttribute, EStructuralFeature obj, + EStructuralFeature eStrucClassifier) { EClass refType = ((EReference) obj).getEReferenceType(); - if(refType.toString().contains(eProxyURI)){ + if (refType.toString().contains(eProxyURI)) { String one = refType.toString().split(eProxyURI)[1]; - String refValue = StringUtils.replaceEach(one.split("#")[1], new String[]{"//", ")"}, new String[]{"", ""}); + String refValue = + StringUtils.replaceEach(one.split("#")[1], new String[] {"//", ")"}, new String[] {"", ""}); refAttribute.put(eStrucClassifier.getName(), refValue); } else { String required = REQUIREDFALSE; - if(obj.getLowerBound() == 1){ + if (obj.getLowerBound() == 1) { required = REQUIREDTRUE; } - refAttribute.put(eStrucClassifier.getName(), refType.getName() + arrayCheck(obj.getUpperBound()) + required); + refAttribute.put(eStrucClassifier.getName(), + refType.getName() + arrayCheck(obj.getUpperBound()) + required); } } @@ -475,17 +497,17 @@ public class MSModelUtils { EList<EAnnotation> value = eStrucClassifier.getEAnnotations(); - for (int i = 0; i < value.size(); i++){ + for (int i = 0; i < value.size(); i++) { annotationType = value.get(i).getSource(); eAnnotation = eStrucClassifier.getEAnnotations().get(i); onapType = eAnnotation.getDetails().get(0).getValue(); onapValue = eAnnotation.getDetails().get(0).getKey(); - if (annotationType.contains(type) && onapType.contains(annotation)){ + if (annotationType.contains(type) && onapType.contains(annotation)) { return true; } - if (annotationType.contains(type) && onapValue.contains(annotation)){ + if (annotationType.contains(type) && onapValue.contains(annotation)) { return true; } } @@ -502,13 +524,13 @@ public class MSModelUtils { EList<EAnnotation> value = eStrucClassifier.getEAnnotations(); - for (int i = 0; i < value.size(); i++){ + for (int i = 0; i < value.size(); i++) { annotationType = value.get(i).getSource(); eAnnotation = eStrucClassifier.getEAnnotations().get(i); onapType = eAnnotation.getDetails().get(0).getKey(); - if (annotationType.contains(type) && onapType.compareToIgnoreCase(annotation.toString())==0){ + if (annotationType.contains(type) && onapType.compareToIgnoreCase(annotation.toString()) == 0) { onapValue = eAnnotation.getDetails().get(0).getValue(); - if (annotation == ANNOTATION_TYPE.VALIDATION){ + if (annotation == ANNOTATION_TYPE.VALIDATION) { return onapValue; } else { return onapType + "-" + onapValue; @@ -518,21 +540,22 @@ public class MSModelUtils { return onapValue; } - public boolean isRequiredAttribute(EObject obj, String className){ + + public boolean isRequiredAttribute(EObject obj, String className) { EClassifier eClassifier = (EClassifier) obj; String workingClass = eClassifier.getName().trim(); - if (workingClass.equalsIgnoreCase(className)){ - return true; + if (workingClass.equalsIgnoreCase(className)) { + return true; } return false; } - private boolean isPolicyTemplate(EPackage root, String className){ + private boolean isPolicyTemplate(EPackage root, String className) { boolean result = false; - for (EClassifier classifier : root.getEClassifiers()){ + for (EClassifier classifier : root.getEClassifiers()) { if (classifier instanceof EClass) { - EClass eClass = (EClass)classifier; + EClass eClass = (EClass) classifier; if (eClass.getName().contentEquals(className)) { result = checkPolicyTemplate(eClass); break; @@ -544,9 +567,9 @@ public class MSModelUtils { private boolean checkPolicyTemplate(EClass eClass) { EList<EAnnotation> value = eClass.getEAnnotations(); - for (EAnnotation workingValue : value){ + for (EAnnotation workingValue : value) { EMap<String, String> keyMap = workingValue.getDetails(); - if (keyMap.containsKey("policyTemplate")){ + if (keyMap.containsKey("policyTemplate")) { return true; } } @@ -555,7 +578,7 @@ public class MSModelUtils { private String getSubTypes(EPackage root, String className) { String returnSubTypes = null; - for (EClassifier classifier : root.getEClassifiers()){ + for (EClassifier classifier : root.getEClassifiers()) { if (classifier instanceof EClass) { returnSubTypes = findSubTypes(className, returnSubTypes, (EClass) classifier); } @@ -566,26 +589,25 @@ public class MSModelUtils { private String findSubTypes(String className, String returnSubTypes, EClass classifier) { EClass eClass = classifier; - for (EClass eSuperType : eClass.getEAllSuperTypes()) - { - if (eClass.getName().contentEquals(className)){ + for (EClass eSuperType : eClass.getEAllSuperTypes()) { + if (eClass.getName().contentEquals(className)) { returnSubTypes = eSuperType.getName(); } } return returnSubTypes; } - public Map<String, String> getAttributeList(EPackage root, String className, String superClass){ + public Map<String, String> getAttributeList(EPackage root, String className, String superClass) { TreeIterator<EObject> treeItr = root.eAllContents(); boolean requiredAttribute = false; HashMap<String, String> refAttribute = new HashMap<>(); - // Pulling out dependency from file + // Pulling out dependency from file while (treeItr.hasNext()) { EObject obj = treeItr.next(); if (obj instanceof EClassifier) { - requiredAttribute = isRequiredAttribute(obj, className ) || isRequiredAttribute(obj, superClass ); + requiredAttribute = isRequiredAttribute(obj, className) || isRequiredAttribute(obj, superClass); } if (requiredAttribute && (obj instanceof EStructuralFeature)) { @@ -599,7 +621,8 @@ public class MSModelUtils { } - private void checkStrucClassifier(HashMap<String, String> refAttribute, EObject obj, EStructuralFeature eStrucClassifier) { + private void checkStrucClassifier(HashMap<String, String> refAttribute, EObject obj, + EStructuralFeature eStrucClassifier) { EClassifier refType = ((EStructuralFeature) obj).getEType(); boolean annotation = annotationTest(eStrucClassifier, configuration, onap); boolean dictionaryTest = annotationTest(eStrucClassifier, dictionary, policy); @@ -608,12 +631,13 @@ public class MSModelUtils { } } - private void updEReferenceAttrib(HashMap<String, String> refAttribute, boolean dictionaryTest, EStructuralFeature obj, EStructuralFeature eStrucClassifier) { + private void updEReferenceAttrib(HashMap<String, String> refAttribute, boolean dictionaryTest, + EStructuralFeature obj, EStructuralFeature eStrucClassifier) { String eType; String name = eStrucClassifier.getName(); - if (dictionaryTest){ + if (dictionaryTest) { eType = annotationValue(eStrucClassifier, ANNOTATION_TYPE.DICTIONARY, policy); - }else { + } else { eType = eStrucClassifier.getEType().getInstanceClassName(); } String defaultValue = checkDefultValue(obj.getDefaultValueLiteral()); @@ -624,23 +648,24 @@ public class MSModelUtils { public String arrayCheck(int upperBound) { - if (upperBound == -1){ + if (upperBound == -1) { return MANYTRUE; } return MANYFALSE; } - public List<String> getDependencyList(EClassifier eClassifier){ + public List<String> getDependencyList(EClassifier eClassifier) { List<String> returnValue = new ArrayList<>();; EList<EClass> somelist = ((EClass) eClassifier).getEAllSuperTypes(); - if (somelist.isEmpty()){ + if (somelist.isEmpty()) { return returnValue; } - for(EClass depend: somelist){ - if (depend.toString().contains(eProxyURI)){ + for (EClass depend : somelist) { + if (depend.toString().contains(eProxyURI)) { String one = depend.toString().split(eProxyURI)[1]; - String value = StringUtils.replaceEach(one.split("#")[1], new String[]{"//", ")"}, new String[]{"", ""}); + String value = + StringUtils.replaceEach(one.split("#")[1], new String[] {"//", ")"}, new String[] {"", ""}); returnValue.add(value); } } @@ -648,21 +673,22 @@ public class MSModelUtils { return returnValue; } - public Map<String, String> buildSubList(Map<String, String> subClassAttributes, Map<String, MSAttributeObject> classMap, String className){ + public Map<String, String> buildSubList(Map<String, String> subClassAttributes, + Map<String, MSAttributeObject> classMap, String className) { Map<String, String> missingValues = new HashMap<>(); Map<String, String> workingMap; boolean enumType; - for ( Entry<String, String> map : classMap.get(className).getRefAttribute().entrySet()){ + for (Entry<String, String> map : classMap.get(className).getRefAttribute().entrySet()) { String value = map.getValue().split(":")[0]; - if (value!=null){ + if (value != null) { classMap.get(className).getEnumType(); enumType = classMap.get(className).getEnumType().containsKey(value); - if (!enumType){ - workingMap = classMap.get(value).getRefAttribute(); - for ( Entry<String, String> subMab : workingMap.entrySet()){ + if (!enumType) { + workingMap = classMap.get(value).getRefAttribute(); + for (Entry<String, String> subMab : workingMap.entrySet()) { String value2 = subMab.getValue().split(":")[0]; - if (!subClassAttributes.containsValue(value2)){ + if (!subClassAttributes.containsValue(value2)) { missingValues.put(subMab.getKey(), subMab.getValue()); } } @@ -674,15 +700,16 @@ public class MSModelUtils { return missingValues; } - public Map<String, Map<String, String>> recursiveReference(Map<String, MSAttributeObject> classMap, String className){ + public Map<String, Map<String, String>> recursiveReference(Map<String, MSAttributeObject> classMap, + String className) { Map<String, Map<String, String>> returnObject = new HashMap<>(); Map<String, String> returnClass = getRefclass(classMap, className); returnObject.put(className, returnClass); - for (Entry<String, String> reAttribute :returnClass.entrySet()){ - if (reAttribute.getValue().split(":")[1].contains("MANY") && - classMap.get(reAttribute.getValue().split(":")[0]) != null){ - returnObject.putAll(recursiveReference(classMap, reAttribute.getValue().split(":")[0])); + for (Entry<String, String> reAttribute : returnClass.entrySet()) { + if (reAttribute.getValue().split(":")[1].contains("MANY") + && classMap.get(reAttribute.getValue().split(":")[0]) != null) { + returnObject.putAll(recursiveReference(classMap, reAttribute.getValue().split(":")[0])); } } @@ -694,13 +721,14 @@ public class MSModelUtils { public String createJson(Map<String, MSAttributeObject> classMap, String className) { boolean enumType; Map<String, Map<String, String>> myObject = new HashMap<>(); - for ( Entry<String, String> map : classMap.get(className).getRefAttribute().entrySet()){ + for (Entry<String, String> map : classMap.get(className).getRefAttribute().entrySet()) { String value = map.getValue().split(":")[0]; - if (value!=null){ + if (value != null) { enumType = classMap.get(className).getEnumType().containsKey(value); - if (!enumType && map.getValue().split(":")[1].contains("MANY")){ - Map<String, Map<String, String>> testRecursive = recursiveReference(classMap, map.getValue().split(":")[0] ); - myObject.putAll(testRecursive); + if (!enumType && map.getValue().split(":")[1].contains("MANY")) { + Map<String, Map<String, String>> testRecursive = + recursiveReference(classMap, map.getValue().split(":")[0]); + myObject.putAll(testRecursive); } } } @@ -709,32 +737,33 @@ public class MSModelUtils { return gson.toJson(myObject); } - public Map<String, String> getRefclass(Map<String, MSAttributeObject> classMap, String className){ + public Map<String, String> getRefclass(Map<String, MSAttributeObject> classMap, String className) { HashMap<String, String> missingValues = new HashMap<>(); - if (classMap.get(className).getAttribute()!=null || !classMap.get(className).getAttribute().isEmpty()){ + if (classMap.get(className).getAttribute() != null || !classMap.get(className).getAttribute().isEmpty()) { missingValues.putAll(classMap.get(className).getAttribute()); } - if (classMap.get(className).getRefAttribute()!=null || !classMap.get(className).getRefAttribute().isEmpty()){ + if (classMap.get(className).getRefAttribute() != null || !classMap.get(className).getRefAttribute().isEmpty()) { missingValues.putAll(classMap.get(className).getRefAttribute()); } return missingValues; } - public String createSubAttributes(List<String> dependency, Map<String, MSAttributeObject> classMap, String modelName) { + public String createSubAttributes(List<String> dependency, Map<String, MSAttributeObject> classMap, + String modelName) { - HashMap <String, Object> workingMap = new HashMap<>(); + HashMap<String, Object> workingMap = new HashMap<>(); MSAttributeObject tempObject; - if (dependency!=null){ - if (dependency.isEmpty()){ + if (dependency != null) { + if (dependency.isEmpty()) { return "{}"; } dependency.add(modelName); - for (String element: dependency){ + for (String element : dependency) { tempObject = classMap.get(element); - if (tempObject!=null){ + if (tempObject != null) { workingMap.putAll(classMap.get(element).getSubClass()); } } @@ -743,16 +772,17 @@ public class MSModelUtils { return createJson(classMap, modelName); } - public List<String> getFullDependencyList(List<String> dependency, Map<String,MSAttributeObject > classMap) { + public List<String> getFullDependencyList(List<String> dependency, Map<String, MSAttributeObject> classMap) { ArrayList<String> returnList = new ArrayList<>(); ArrayList<String> workingList; returnList.addAll(dependency); - for (String element : dependency ){ - if (classMap.containsKey(element)){ + for (String element : dependency) { + if (classMap.containsKey(element)) { MSAttributeObject value = classMap.get(element); - String rawValue = StringUtils.replaceEach(value.getDependency(), new String[]{"[", "]"}, new String[]{"", ""}); + String rawValue = + StringUtils.replaceEach(value.getDependency(), new String[] {"[", "]"}, new String[] {"", ""}); workingList = new ArrayList<>(Arrays.asList(rawValue.split(","))); - for(String depend : workingList) { + for (String depend : workingList) { updDependencyList(returnList, depend); } } @@ -762,7 +792,7 @@ public class MSModelUtils { } private void updDependencyList(ArrayList<String> returnList, String depend) { - if (!returnList.contains(depend) && !depend.isEmpty()){ + if (!returnList.contains(depend) && !depend.isEmpty()) { returnList.add(depend.trim()); } } @@ -844,7 +874,7 @@ public class MSModelUtils { } @SuppressWarnings("unchecked") - private String validations(@SuppressWarnings("rawtypes") LinkedHashMap yamlMap) { + private String validations(@SuppressWarnings("rawtypes") Map yamlMap) { boolean isNoteTypeFound = false; boolean isDataTypeFound = false; @@ -856,39 +886,39 @@ public class MSModelUtils { if (yamlMap != null) { // Get a set of the entries @SuppressWarnings("rawtypes") - Set set = yamlMap.entrySet(); - // Get an iterator - @SuppressWarnings("rawtypes") - Iterator i = set.iterator(); - // Display elements - while (i.hasNext()) { - @SuppressWarnings("rawtypes") - Map.Entry me = (Map.Entry) i.next(); - - if (TOSCA_DEFINITION_VERSION.equals(me.getKey())) { - isToscaVersionKeyFound = true; - order++; - m1.put(TOSCA_DEFINITION_VERSION, order); - } - - if ("tosca_simple_yaml_1_0_0".equals(me.getValue())) { + Set<Entry> entries = yamlMap.entrySet(); + for (@SuppressWarnings("rawtypes") + Map.Entry me : entries) { + if (TOSCA_SIMPLE_YAML_1_0_0.equals(me.getValue())) { isToscaVersionValueFound = true; } - if (NODE_TYPE.equals(me.getKey())) { - isNoteTypeFound = true; - order++; - m1.put(NODE_TYPE, order); + switch (me.getKey().toString()) { + case TOSCA_DEFINITION_VERSION: + isToscaVersionKeyFound = true; + order++; + m1.put(TOSCA_DEFINITION_VERSION, order); + break; + case NODE_TYPE: + isNoteTypeFound = true; + order++; + m1.put(NODE_TYPE, order); + break; + case DATA_TYPE: + isDataTypeFound = true; + order++; + m1.put(DATA_TYPE, order); + break; + case JSON_MODEL: + setJsonRuleFormation(me.getValue().toString()); + break; + default: + break; } - - if (DATA_TYPE.equals(me.getKey())) { - isDataTypeFound = true; - order++; - m1.put(DATA_TYPE, order); - } - } - + if (!isDataTypeFound) { + return "data_types are missing or invalid."; + } if (!isToscaVersionKeyFound || !isToscaVersionValueFound) { return "tosca_definitions_version is missing or invalid."; } @@ -1100,15 +1130,12 @@ public class MSModelUtils { dataMapForJson.put(uniqueDataKey, attributeIndividualStringBuilder.toString()); } else if (LIST.equalsIgnoreCase(typeValue) || MAP.equalsIgnoreCase(typeValue)) { logger.info("requiredValue is:" + requiredValue); - String findList = - DATATYPE + uniqueDataKeySplit[0] + PROPERTIES + uniqueDataKeySplit[1] - + ".entry_schema.type"; - String findDefaultValue = - DATATYPE + uniqueDataKeySplit[0] + PROPERTIES + uniqueDataKeySplit[1] - + ".entry_schema.default"; - String findDescription = - DATATYPE + uniqueDataKeySplit[0] + PROPERTIES + uniqueDataKeySplit[1] - + ".entry_schema.description"; + String findList = DATATYPE + uniqueDataKeySplit[0] + PROPERTIES + uniqueDataKeySplit[1] + + ".entry_schema.type"; + String findDefaultValue = DATATYPE + uniqueDataKeySplit[0] + PROPERTIES + uniqueDataKeySplit[1] + + ".entry_schema.default"; + String findDescription = DATATYPE + uniqueDataKeySplit[0] + PROPERTIES + uniqueDataKeySplit[1] + + ".entry_schema.description"; String listValue = map.get(findList); String defaultValue = map.get(findDefaultValue); String description = map.get(findDescription); @@ -1122,27 +1149,50 @@ public class MSModelUtils { referenceIndividualStringBuilder.append(requiredValue + MANYTRUE); referenceIndividualStringBuilder.append(DESCRIPTION_TOKEN + description); dataMapForJson.put(uniqueDataKey, referenceIndividualStringBuilder.toString()); - } else { // Its string + } else { // Its string StringBuilder stringListItems = new StringBuilder(); if (LIST.equalsIgnoreCase(typeValue)) { - stringListItems.append(uniqueDataKeySplit[1].toUpperCase() + DEFAULTVALUE - + defaultValue + REQUIREDVALUE + requiredValue + MANYFALSE + DESCRIPTION_TOKEN - + description); + stringListItems.append(uniqueDataKeySplit[1].toUpperCase() + DEFAULTVALUE + defaultValue + + REQUIREDVALUE + requiredValue + MANYFALSE + DESCRIPTION_TOKEN + description); } else if (MAP.equalsIgnoreCase(typeValue)) { - stringListItems.append(uniqueDataKeySplit[1].toUpperCase() + DEFAULTVALUE - + defaultValue + REQUIREDVALUE + requiredValue + MANYTRUE + DESCRIPTION_TOKEN - + description); + stringListItems.append(uniqueDataKeySplit[1].toUpperCase() + DEFAULTVALUE + defaultValue + + REQUIREDVALUE + requiredValue + MANYTRUE + DESCRIPTION_TOKEN + description); } dataMapForJson.put(uniqueDataKey, stringListItems.toString()); dataListBuffer.append(uniqueDataKeySplit[1].toUpperCase() + "=["); for (int i = 0; i < 10; i++) { - String findConstraints = - DATATYPE + uniqueDataKeySplit[0] + PROPERTIES + uniqueDataKeySplit[1] - + ".entry_schema.constraints.0.valid_values." + i; + String findConstraints = DATATYPE + uniqueDataKeySplit[0] + PROPERTIES + + uniqueDataKeySplit[1] + ".entry_schema.constraints.0.valid_values." + i; String constraintsValue = map.get(findConstraints); logger.info(constraintsValue); + boolean ruleCheck = false; if (constraintsValue == null) { break; + } else if (constraintsValue.startsWith(DICTIONARY)) { + List<Object> dictFromDB = null; + String[] dictionaryNameValRule; + String[] dictionaryName = constraintsValue.split(":"); + String dictionaryNameVal = dictionaryName[1]; + if (dictionaryNameVal.contains("#Rules")) { + ruleCheck = true; + dictionaryNameValRule = dictionaryNameVal.split("#"); + dictFromDB = commonClassDao.getDataById(DictionaryData.class, DICTIONARYNAME, + dictionaryNameValRule[0]); + } else { + dictFromDB = commonClassDao.getDataById(DictionaryData.class, DICTIONARYNAME, + dictionaryName[1]); + } + if (dictFromDB != null && !dictFromDB.isEmpty()) { + DictionaryData data = (DictionaryData) dictFromDB.get(0); + if (ruleCheck) { + constraintsValue = DICTIONARY + data.getDictionaryUrl() + "@" + + data.getDictionaryDataByName() + "&Rule"; + } else { + constraintsValue = DICTIONARY + data.getDictionaryUrl() + "@" + + data.getDictionaryDataByName(); + } + } + dataListBuffer.append(constraintsValue + ","); } else { logger.info("constraintsValue => " + constraintsValue); if (constraintsValue.contains("=")) { @@ -1157,12 +1207,10 @@ public class MSModelUtils { } } } else { - String findUserDefined = - DATATYPE + uniqueDataKeySplit[0] + "." + PROPERTIES_KEY + "." + uniqueDataKeySplit[1] - + ".type"; - String findDescription = - DATATYPE + uniqueDataKeySplit[0] + "." + PROPERTIES_KEY + "." + uniqueDataKeySplit[1] - + ".description"; + String findUserDefined = DATATYPE + uniqueDataKeySplit[0] + "." + PROPERTIES_KEY + "." + + uniqueDataKeySplit[1] + TYPE; + String findDescription = DATATYPE + uniqueDataKeySplit[0] + "." + PROPERTIES_KEY + "." + + uniqueDataKeySplit[1] + DESCRIPTION; String userDefinedValue = map.get(findUserDefined); String description = map.get(findDescription); String trimValue = userDefinedValue.substring(userDefinedValue.lastIndexOf('.') + 1); @@ -1194,11 +1242,10 @@ public class MSModelUtils { hm = mapKey.get(uniqueKey); String keyStr = key.substring(key.lastIndexOf('.') + 1); String valueStr = map.get(key); - if ("type".equalsIgnoreCase(keyStr) - && key.contains("entry_schema.0.type") || key.contains("entry_schema.type") - && valueStr.contains("policy.data.")) { + if ("type".equalsIgnoreCase(keyStr) && key.contains("entry_schema.0.type") + || key.contains("entry_schema.type") && valueStr.contains("policy.data.")) { throw new ParserException( - "For user defined object type, Please make sure no space between 'type:' and object " + "For user defined object type, Please make sure no space between 'type:' and object " + valueStr); } @@ -1230,7 +1277,7 @@ public class MSModelUtils { return mapKey; } - void createAttributes(LinkedHashMap<String, LinkedHashMap<String, String>> mapKey) { + private void createAttributes(LinkedHashMap<String, LinkedHashMap<String, String>> mapKey) { StringBuilder attributeStringBuilder = new StringBuilder(); StringBuilder referenceStringBuilder = new StringBuilder(); StringBuilder listBuffer = new StringBuilder(); @@ -1282,10 +1329,9 @@ public class MSModelUtils { } - if (!isDefinedType && LIST.equalsIgnoreCase(keyValues.get("type"))) { - if (constraints == null || constraints.isEmpty()) { - referenceStringBuilder.append(keySetString + "=MANY-true" + ","); - } + if (!isDefinedType && LIST.equalsIgnoreCase(keyValues.get("type")) + && (constraints == null || constraints.isEmpty())) { + referenceStringBuilder.append(keySetString + "=MANY-true" + ","); } } else { // User defined Datatype. @@ -1308,6 +1354,15 @@ public class MSModelUtils { // List handling. listBuffer.append(keySetString.toUpperCase() + "=["); for (String str : constraints) { + if (str.contains(DICTIONARY)) { + String[] dictionaryName = str.split(":"); + List<Object> dictFromDB = + commonClassDao.getDataById(DictionaryData.class, DICTIONARYNAME, dictionaryName[1]); + if (dictFromDB != null && !dictFromDB.isEmpty()) { + DictionaryData data = (DictionaryData) dictFromDB.get(0); + str = DICTIONARY + data.getDictionaryUrl() + "@" + data.getDictionaryDataByName(); + } + } listBuffer.append(str + ","); } listBuffer.append("]#"); @@ -1361,7 +1416,7 @@ public class MSModelUtils { for (Entry<?, ?> entry : map.entrySet()) { - if (orderedElements.indexOf((String) entry.getKey()) >= 0) { // duplicated attribute names + if (orderedElements.indexOf(entry.getKey()) >= 0) { // duplicated attribute names isDuplicatedAttributes = true; return; } else { @@ -1418,4 +1473,12 @@ public class MSModelUtils { this.dataOrderInfo = dataOrderInfo; } + public String getJsonRuleFormation() { + return jsonRuleFormation; + } + + public void setJsonRuleFormation(String jsonRuleFormation) { + this.jsonRuleFormation = jsonRuleFormation; + } + } diff --git a/ONAP-REST/src/test/java/org/onap/policy/rest/jpa/DictionaryDataTest.java b/ONAP-REST/src/test/java/org/onap/policy/rest/jpa/DictionaryDataTest.java new file mode 100644 index 000000000..486d36442 --- /dev/null +++ b/ONAP-REST/src/test/java/org/onap/policy/rest/jpa/DictionaryDataTest.java @@ -0,0 +1,49 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP Policy Engine + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Modifications Copyright (C) 2019 AT&T Intellectual Property. 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.rest.jpa; + +import static org.junit.Assert.assertEquals; +import org.junit.Test; + +public class DictionaryDataTest { + + @Test + public void test() { + DictionaryData dictData; + dictData = new DictionaryData(); + String value = "testData1"; + + // Set Data + dictData.setId(1);; + dictData.setDictionaryDataByName(value); + dictData.setDictionaryName(value); + dictData.setDictionaryUrl(value); + + // Test gets + assertEquals(1, dictData.getId()); + assertEquals(value, dictData.getDictionaryDataByName()); + assertEquals(value, dictData.getDictionaryName()); + assertEquals(value, dictData.getDictionaryUrl()); + } + +} diff --git a/ONAP-REST/src/test/java/org/onap/policy/rest/util/MSAttributeObjectTest.java b/ONAP-REST/src/test/java/org/onap/policy/rest/util/MSAttributeObjectTest.java index 1064b240d..a39eb4996 100644 --- a/ONAP-REST/src/test/java/org/onap/policy/rest/util/MSAttributeObjectTest.java +++ b/ONAP-REST/src/test/java/org/onap/policy/rest/util/MSAttributeObjectTest.java @@ -2,14 +2,14 @@ * ============LICENSE_START======================================================= * ONAP-REST * ================================================================================ - * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2018-2019 AT&T Intellectual Property. 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. @@ -17,47 +17,50 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.policy.rest.util; import static org.junit.Assert.assertTrue; - import java.util.HashMap; - import org.junit.Test; public class MSAttributeObjectTest { @Test - public void testMSAttributeObject(){ + public void testMSAttributeObject() { MSAttributeObject data = new MSAttributeObject(); data.setClassName("Test"); assertTrue("Test".equals(data.getClassName())); data.setRefAttribute(new HashMap<>()); - assertTrue(data.getRefAttribute()!=null); + assertTrue(data.getRefAttribute() != null); data.setAttribute(new HashMap<>()); - assertTrue(data.getAttribute()!=null); + assertTrue(data.getAttribute() != null); data.setEnumType(new HashMap<>()); - assertTrue(data.getEnumType()!=null); + assertTrue(data.getEnumType() != null); data.addAttribute("test", "test"); data.addRefAttribute("test", "test"); data.addAllAttribute(new HashMap<>()); data.addAllRefAttribute(new HashMap<>()); data.setSubClass(new HashMap<>()); - assertTrue(data.getSubClass()!=null); + assertTrue(data.getSubClass() != null); data.addAllSubClass(new HashMap<>()); data.setDependency("Test"); assertTrue("Test".equals(data.getDependency())); data.addSingleEnum("test", "test"); data.setMatchingSet(new HashMap<>()); - assertTrue(data.getMatchingSet()!=null); + assertTrue(data.getMatchingSet() != null); data.addMatchingSet("test", "test"); data.addMatchingSet(new HashMap<>()); data.setPolicyTempalate(true); assertTrue(data.isPolicyTempalate()); + data.setRuleFormation("ruleFormation"); + assertTrue(data.getRuleFormation() != null); + data.setDataOrderInfo("dataOrderInfo"); + assertTrue(data.getDataOrderInfo() != null); } @Test - public void testMSAttributeValue(){ + public void testMSAttributeValue() { MSAttributeValue data = new MSAttributeValue(); data.setName("Test"); assertTrue("Test".equals(data.getName())); diff --git a/ONAP-REST/src/test/java/org/onap/policy/rest/util/MSModelUtilsTest.java b/ONAP-REST/src/test/java/org/onap/policy/rest/util/MSModelUtilsTest.java index e06103fcb..34d555062 100644 --- a/ONAP-REST/src/test/java/org/onap/policy/rest/util/MSModelUtilsTest.java +++ b/ONAP-REST/src/test/java/org/onap/policy/rest/util/MSModelUtilsTest.java @@ -2,14 +2,14 @@ * ============LICENSE_START======================================================= * ONAP-REST * ================================================================================ - * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2018-2019 AT&T Intellectual Property. 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. @@ -17,10 +17,14 @@ * limitations under the License. * ============LICENSE_END========================================================= */ -package org.onap.policy.rest.util; -import static org.junit.Assert.*; +package org.onap.policy.rest.util; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; import java.io.File; import java.io.IOException; import java.util.ArrayList; @@ -28,25 +32,44 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; - import org.apache.commons.lang.StringUtils; +import org.junit.Before; import org.junit.Test; import org.onap.policy.common.logging.flexlogger.FlexLogger; import org.onap.policy.common.logging.flexlogger.Logger; +import org.onap.policy.rest.dao.CommonClassDao; +import org.onap.policy.rest.jpa.DictionaryData; import org.onap.policy.rest.util.MSModelUtils.MODEL_TYPE; public class MSModelUtilsTest { private static Logger logger = FlexLogger.getLogger(MSModelUtilsTest.class); + private static CommonClassDao commonClassDao; + + @Before + public void setUp() throws Exception { + List<Object> dictionaryData = new ArrayList<Object>(); + DictionaryData testData = new DictionaryData(); + testData.setDictionaryName("dictionaryName"); + testData.setDictionaryDataByName("dictionaryDataByName"); + dictionaryData.add(testData); + logger.info("setUp: Entering"); + commonClassDao = mock(CommonClassDao.class); + when(commonClassDao.getDataById(DictionaryData.class, "dictionaryName", "GocVNFType")) + .thenReturn(dictionaryData); + } + @Test - public void testMSModelUtils(){ + public void testMSModelUtils() { HashMap<String, MSAttributeObject> classMap = new HashMap<>(); ClassLoader classLoader = getClass().getClassLoader(); File file = new File(classLoader.getResource("DKaTVESPolicy-v1802.xmi").getFile()); MSModelUtils utils = new MSModelUtils("http://org.onap", "http://org.onap.policy"); - Map<String, MSAttributeObject> tempMap = utils.processEpackage(file.getAbsolutePath().toString(), MODEL_TYPE.XMI); + Map<String, MSAttributeObject> tempMap = + utils.processEpackage(file.getAbsolutePath().toString(), MODEL_TYPE.XMI); classMap.putAll(tempMap); MSAttributeObject mainClass = classMap.get("StandardDeviationThreshold"); - String dependTemp = StringUtils.replaceEach(mainClass.getDependency(), new String[]{"[", "]", " "}, new String[]{"", "", ""}); + String dependTemp = StringUtils.replaceEach(mainClass.getDependency(), new String[] {"[", "]", " "}, + new String[] {"", "", ""}); List<String> dependency = new ArrayList<String>(Arrays.asList(dependTemp.split(","))); dependency = utils.getFullDependencyList(dependency, classMap); String subAttribute = utils.createSubAttributes(dependency, classMap, "StandardDeviationThreshold"); @@ -55,25 +78,25 @@ public class MSModelUtilsTest { /** - * Run the void stringBetweenDots(String, String) method test + * Run the void stringBetweenDots(String, String) method test. */ - @Test + @Test public void testStringBetweenDots() { - //expect: uniqueKeys should contain a string value - MSModelUtils controllerA = new MSModelUtils(); + // expect: uniqueKeys should contain a string value + MSModelUtils controllerA = new MSModelUtils(); String str = "testing\\.byCorrectWay\\.OfDATA"; assertEquals(1, controllerA.stringBetweenDots(str)); - //expect: uniqueKeys should not contain a string value + // expect: uniqueKeys should not contain a string value str = "testing\byWrongtWay.\\OfDATA"; MSModelUtils controllerB = new MSModelUtils(); assertEquals(0, controllerB.stringBetweenDots(str)); } /** - * Run the Map<String,String> load(String) method test + * Run the Map<String,String> load(String) method test. */ @Test @@ -82,20 +105,20 @@ public class MSModelUtilsTest { boolean isLocalTesting = true; MSModelUtils controller = new MSModelUtils(); String fileName = null; - Map<String,String> result = null; + Map<String, String> result = null; try { ClassLoader classLoader = getClass().getClassLoader(); - fileName = new File(classLoader.getResource("policy_tosca_tca-v1707.yml").getFile()).getAbsolutePath(); + fileName = new File(classLoader.getResource("TESTMODEL-v1806.yml").getFile()).getAbsolutePath(); } catch (Exception e1) { - logger.error("Exception Occured while loading file"+e1); + logger.error("Exception Occured while loading file" + e1); } - if(isLocalTesting){ + if (isLocalTesting) { try { result = controller.load(fileName); } catch (IOException e) { logger.error("testLoad", e); result = null; - }catch(ParserException e){ + } catch (ParserException e) { logger.error("testLoad", e); } @@ -107,7 +130,7 @@ public class MSModelUtilsTest { } /** - * Run the void parseTosca(String) method test + * Run the void parseTosca(String) method test. */ @Test @@ -118,20 +141,20 @@ public class MSModelUtilsTest { String fileName = null; try { ClassLoader classLoader = getClass().getClassLoader(); - fileName = new File(classLoader.getResource("policy_tosca_tca-v1707.yml").getFile()).getAbsolutePath(); + fileName = new File(classLoader.getResource("TESTMODEL-v1806.yml").getFile()).getAbsolutePath(); } catch (Exception e1) { - logger.error("Exception Occured while loading file"+e1); + logger.error("Exception Occured while loading file" + e1); } - MSModelUtils controller = new MSModelUtils(); - if(isLocalTesting){ + MSModelUtils controller = new MSModelUtils(commonClassDao); + if (isLocalTesting) { try { controller.parseTosca(fileName); - }catch (Exception e) { + } catch (Exception e) { fail("parseTosca caused error: " + e); } } logger.debug("testParseTosca: exit"); } -}
\ No newline at end of file +} diff --git a/ONAP-REST/src/test/resources/TESTMODEL-v1806.yml b/ONAP-REST/src/test/resources/TESTMODEL-v1806.yml new file mode 100644 index 000000000..8f35e6fc1 --- /dev/null +++ b/ONAP-REST/src/test/resources/TESTMODEL-v1806.yml @@ -0,0 +1,107 @@ +tosca_definitions_version: tosca_simple_yaml_1_0_0 + +node_types: + + # policy root node + policy.nodes.Root: + derived_from: tosca.nodes.Root + properties: + policyName: + type: string + required: true + policyVersion: + type: string + required: true + policyScope: + type: string + required: true + policyDescription: + type: string + required: false + + # virtual policy node for naming + policy.nodes.naming-model: + derived_from: policy.nodes.Root + properties: + Correlation Priority: + type: string + required: true + Correlation Window: + type: String + required: true + Email Notification for failures: + type: String + required: true + Select Server Scope: # Need Dictionary + type: String + required: true + Parent Correlation Name: + type: String + required: true + Parent Correlation Traversal: # Need Dictionary + type: String + required: true + triggerSignature: + type: list + required: true + entry_schema: + - type:policy.data.resource-model-entity + logicalConnector: + type: list + required: true + entry_schema: + type: string + constraints: + - valid_values: ["OR", "AND"] +data_types: + # custom data type + policy.data.resource-model-entity: + derived_from: tosca.nodes.Root + properties: + signatures: + type: policy.data.element + required: false + + policy.data.element: + derived_from: tosca.nodes.Root + properties: + alarmSignatures: + type: list + required: true + entry_schema: + type: policy.data.range + + policy.data.range: + derived_from: tosca.nodes.Root + properties: + traversal: + type: string + required: true + alarmSignature: + type: list + required: true + entry_schema: + type: policy.data.alarms + + policy.data.alarms: + derived_from: tosca.nodes.Root + properties: + VnfType: + type: list + required: true + entry_schema: + type: string + constraints: + - valid_values: ["dictionary:GocVNFType#Rules"] + Contains: + type: list + required: true + entry_schema: + type: string + constraints: + - valid_values: ["OR", "AND", "CONTAINS", "EQUALS", "NOTEQUALS", "ENDSWITH", "STARTSWITH"] + FilterValue: + type: string + required: true + +JSON_MODEL: signatures.alarmSignatures.alarmSignature
\ No newline at end of file diff --git a/ONAP-REST/src/test/resources/policy_tosca_tca-v1707.yml b/ONAP-REST/src/test/resources/policy_tosca_tca-v1707.yml deleted file mode 100644 index b29ebcfa9..000000000 --- a/ONAP-REST/src/test/resources/policy_tosca_tca-v1707.yml +++ /dev/null @@ -1,85 +0,0 @@ -# -#============LICENSE_START================================================== -# ONAP Policy Engine -#=========================================================================== -# Copyright (C) 2017-2018 AT&T Intellectual Property. 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. -#============LICENSE_END================================================== -# - -tosca_definitions_version: tosca_simple_yaml_1_0_0 - -node_types: - # policy root node - policy.nodes.Root: - derived_from: tosca.nodes.Root - properties: - policyName: - type: string - required: true - policyVersion: - type: string - required: true - policyScope: - type: string - required: true - policyDescription: - type: string - required: false - - # virtual policy node for string matcher - policy.nodes.tca: - derived_from: policy.nodes.Root - properties: - functionalRole: - type: string - required: true - default: "ClosedLoop_F5-d925ed73-8231-4d02-9545-db4e101f88f8" - policyName: - type: string - required: true - default: "configuration.dcae.microservice.tca.xml" - policyVersion: - type: string - required: true - default: "v0.0.1" - threshholds: - type: list - entry_schema: - - type:policy.data.Threshold - -data_types: - policy.data.Threshold: - derived_from: tosca.nodes.Root - properties: - closedLoopControlName: - type: string - required: true - version: - type: string - required: true - default: "1.0.2" - fieldPath: - type: string - required: true - thresholdValue: - type: integer - required: true - direction: - type: string - required: true - severity: - type: string - required: true - diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateBRMSParamController.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateBRMSParamController.java index b49f1fc35..8c14048c4 100644 --- a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateBRMSParamController.java +++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateBRMSParamController.java @@ -4,13 +4,14 @@ * ================================================================================ * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. * Modified Copyright (C) 2018 Samsung Electronics Co., Ltd. + * Modifications Copyright (C) 2019 Bell Canada * ================================================================================ * 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. @@ -24,20 +25,24 @@ package org.onap.policy.controller; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.Objects; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; +import java.util.stream.Collectors; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.xml.bind.JAXBElement; +import org.apache.commons.collections.CollectionUtils; import org.json.JSONObject; import org.onap.policy.common.logging.flexlogger.FlexLogger; import org.onap.policy.common.logging.flexlogger.Logger; @@ -50,6 +55,7 @@ import org.onap.portalsdk.core.controller.RestrictedBaseController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.JsonNode; @@ -57,7 +63,6 @@ import com.fasterxml.jackson.databind.ObjectMapper; import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionsType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.AllOfType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.AnyOfType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeAssignmentExpressionType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeDesignatorType; @@ -70,6 +75,7 @@ import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType; @Controller @RequestMapping("/") public class CreateBRMSParamController extends RestrictedBaseController { + private static final Logger policyLogger = FlexLogger.getLogger(CreateBRMSParamController.class); private static CommonClassDao commonClassDao; @@ -83,13 +89,14 @@ public class CreateBRMSParamController extends RestrictedBaseController { } @Autowired - private CreateBRMSParamController(CommonClassDao commonClassDao){ + private CreateBRMSParamController(CommonClassDao commonClassDao) { CreateBRMSParamController.commonClassDao = commonClassDao; } - public CreateBRMSParamController(){ + public CreateBRMSParamController() { // Empty constructor } + protected PolicyRestAdapter policyAdapter = null; private HashMap<String, String> dynamicLayoutMap; @@ -98,9 +105,9 @@ public class CreateBRMSParamController extends RestrictedBaseController { private static String string = "String"; - @RequestMapping(value={"/policyController/getBRMSTemplateData.htm"}, method={org.springframework.web.bind.annotation.RequestMethod.POST}) - public void getBRMSParamPolicyRuleData(HttpServletRequest request, HttpServletResponse response){ - try{ + @RequestMapping(value = {"/policyController/getBRMSTemplateData.htm"}, method = { RequestMethod.POST}) + public void getBRMSParamPolicyRuleData(HttpServletRequest request, HttpServletResponse response) { + try { dynamicLayoutMap = new HashMap<>(); ObjectMapper mapper = new ObjectMapper(); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); @@ -115,22 +122,22 @@ public class CreateBRMSParamController extends RestrictedBaseController { String responseString = mapper.writeValueAsString(dynamicLayoutMap); JSONObject j = new JSONObject("{policyData: " + responseString + "}"); out.write(j.toString()); - }catch(Exception e){ - policyLogger.error("Exception Occured while getting BRMS Rule data" , e); + } catch (Exception e) { + policyLogger.error("Exception Occured while getting BRMS Rule data", e); } } - protected String findRule(String ruleTemplate) { + private String findRule(String ruleTemplate) { List<Object> datas = commonClassDao.getDataById(BRMSParamTemplate.class, "ruleName", ruleTemplate); - if(datas != null && !datas.isEmpty()){ - BRMSParamTemplate bRMSParamTemplate = (BRMSParamTemplate) datas.get(0); + if(CollectionUtils.isNotEmpty(datas)){ + BRMSParamTemplate bRMSParamTemplate = (BRMSParamTemplate) datas.get(0); return bRMSParamTemplate.getRule(); } return null; } - protected void generateUI(String rule) { - if (rule==null){ + private void generateUI(String rule) { + if (rule == null) { return; } try { @@ -142,11 +149,44 @@ public class CreateBRMSParamController extends RestrictedBaseController { } private void processRule(String rule) { - StringBuilder params = new StringBuilder(""); - Boolean flag = false; - Boolean comment = false; + StringBuilder params = getParamsBuilderFromRule(rule); + params = new StringBuilder( + params.toString().replace("declare Params", "").replace("end", "").replaceAll("\\s+", "")); + String[] components = params.toString().split(":"); + String caption = ""; + for (int i = 0; i < components.length; i++) { + String type; + if (i == 0) { + caption = components[i]; + } + if ("".equals(caption)) { + break; + } + String nextComponent; + try { + nextComponent = components[i + 1]; + } catch (Exception e) { + policyLogger.info("Error when procesing rule: " + e); + nextComponent = components[i]; + } + if (nextComponent.startsWith(string)) { + type = "String"; + createField(caption, type); + caption = nextComponent.replace(string, ""); + } else if (nextComponent.startsWith("int")) { + type = "int"; + createField(caption, type); + caption = nextComponent.replace("int", ""); + } + } + } + + private StringBuilder getParamsBuilderFromRule(final String rule) { + StringBuilder params = new StringBuilder(); + boolean flag = false; + boolean comment = false; String[] lines = rule.split("\n"); - for(String line : lines){ + for (String line : lines) { if (line.isEmpty() || line.startsWith("//")) { continue; } @@ -184,34 +224,7 @@ public class CreateBRMSParamController extends RestrictedBaseController { break; } } - params = new StringBuilder(params.toString().replace("declare Params", "").replace("end", "").replaceAll("\\s+", "")); - String[] components = params.toString().split(":"); - String caption = ""; - for (int i = 0; i < components.length; i++) { - String type; - if (i == 0) { - caption = components[i]; - } - if("".equals(caption)){ - break; - } - String nextComponent = ""; - try { - nextComponent = components[i + 1]; - } catch (Exception e) { - policyLogger.info("Just for Logging"+e); - nextComponent = components[i]; - } - if (nextComponent.startsWith(string)) { - type = "String"; - createField(caption, type); - caption = nextComponent.replace(string, ""); - } else if (nextComponent.startsWith("int")) { - type = "int"; - createField(caption, type); - caption = nextComponent.replace("int", ""); - } - } + return params; } private String splitMultiLineStartComment(String line) { @@ -241,28 +254,38 @@ public class CreateBRMSParamController extends RestrictedBaseController { policyAdapter.setOldPolicyFileName(policyAdapter.getPolicyName()); // policy name value is the policy name without any prefix and // Extensions. - String policyNameValue = policyAdapter.getPolicyName().substring(policyAdapter.getPolicyName().indexOf("BRMS_Param_") + 11); + String policyNameValue = policyAdapter.getPolicyName() + .substring(policyAdapter.getPolicyName().indexOf("BRMS_Param_") + 11); if (policyLogger.isDebugEnabled()) { - policyLogger.debug("Prepopulating form data for BRMS RAW Policy selected:" + policyAdapter.getPolicyName()); + policyLogger + .debug("Prepopulating form data for BRMS RAW Policy selected:" + policyAdapter.getPolicyName()); } policyAdapter.setPolicyName(policyNameValue); - String description = ""; - try{ + String description; + try { description = policy.getDescription().substring(0, policy.getDescription().indexOf("@CreatedBy:")); - }catch(Exception e){ - policyLogger.info("Just for Logging"+e); + } catch (Exception e) { + policyLogger.info("Error getting description: " + e); description = policy.getDescription(); } policyAdapter.setPolicyDescription(description); setDataAdapterFromAdviceExpressions(policy, policyAdapter); - paramUIGenerate(policyAdapter, entity); + + // Generate Param UI + try { + paramUIGenerate(policyAdapter, entity); + } catch (Exception e) { + policyLogger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e.getMessage() + e); + } + // Get the target data under policy. policyAdapter.setDynamicLayoutMap(dynamicLayoutMap); - if(policyAdapter.getDynamicLayoutMap().size() > 0){ - LinkedHashMap<String,String> drlRule = new LinkedHashMap<>(); - for(Object keyValue: policyAdapter.getDynamicLayoutMap().keySet()){ - drlRule.put(keyValue.toString(), policyAdapter.getDynamicLayoutMap().get(keyValue)); - } + if (policyAdapter.getDynamicLayoutMap().size() > 0) { + LinkedHashMap<String, String> drlRule = policyAdapter.getDynamicLayoutMap() + .keySet().stream() + .collect(Collectors + .toMap(String::toString, keyValue -> policyAdapter.getDynamicLayoutMap().get(keyValue), + (a, b) -> b, LinkedHashMap::new)); policyAdapter.setRuleData(drlRule); } TargetType target = policy.getTarget(); @@ -272,28 +295,30 @@ public class CreateBRMSParamController extends RestrictedBaseController { } } - private void setDataAdapterFromAdviceExpressions(PolicyType policy, PolicyRestAdapter policyAdapter){ + private void setDataAdapterFromAdviceExpressions(PolicyType policy, PolicyRestAdapter policyAdapter) { ArrayList<Object> attributeList = new ArrayList<>(); // Set Attributes. - AdviceExpressionsType expressionTypes = ((RuleType)policy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().get(0)).getAdviceExpressions(); - for( AdviceExpressionType adviceExpression: expressionTypes.getAdviceExpression()){ - for(AttributeAssignmentExpressionType attributeAssignment: adviceExpression.getAttributeAssignmentExpression()){ - if(attributeAssignment.getAttributeId().startsWith("key:")){ + AdviceExpressionsType expressionTypes = ((RuleType) policy + .getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().get(0)).getAdviceExpressions(); + for (AdviceExpressionType adviceExpression : expressionTypes.getAdviceExpression()) { + for (AttributeAssignmentExpressionType attributeAssignment : adviceExpression + .getAttributeAssignmentExpression()) { + if (attributeAssignment.getAttributeId().startsWith("key:")) { Map<String, String> attribute = new HashMap<>(); String key = attributeAssignment.getAttributeId().replace("key:", ""); attribute.put("key", key); @SuppressWarnings("unchecked") - JAXBElement<AttributeValueType> attributevalue = (JAXBElement<AttributeValueType>) attributeAssignment.getExpression(); - String value = (String) attributevalue.getValue().getContent().get(0); + JAXBElement<AttributeValueType> attributeValue = (JAXBElement<AttributeValueType>) attributeAssignment + .getExpression(); + String value = (String) attributeValue.getValue().getContent().get(0); attribute.put("value", value); attributeList.add(attribute); - }else if(attributeAssignment.getAttributeId().startsWith("dependencies:")){ - ArrayList<String> dependencies = new ArrayList<>(Arrays.asList(attributeAssignment.getAttributeId().replace("dependencies:", "").split(","))); - if(dependencies.contains("")){ - dependencies.remove(""); - } + } else if (attributeAssignment.getAttributeId().startsWith("dependencies:")) { + ArrayList<String> dependencies = new ArrayList<>( + Arrays.asList(attributeAssignment.getAttributeId().replace("dependencies:", "").split(","))); + dependencies.remove(""); policyAdapter.setBrmsDependency(dependencies); - }else if(attributeAssignment.getAttributeId().startsWith("controller:")){ + } else if (attributeAssignment.getAttributeId().startsWith("controller:")) { policyAdapter.setBrmsController(attributeAssignment.getAttributeId().replace("controller:", "")); } } @@ -301,38 +326,23 @@ public class CreateBRMSParamController extends RestrictedBaseController { } } - private void setDataToAdapterFromTarget(TargetType target, PolicyRestAdapter policyAdapter){ + private void setDataToAdapterFromTarget(TargetType target, PolicyRestAdapter policyAdapter) { // Under target we have AnyOFType List<AnyOfType> anyOfList = target.getAnyOf(); - if (anyOfList == null) { return; } - - Iterator<AnyOfType> iterAnyOf = anyOfList.iterator(); - while (iterAnyOf.hasNext()) { - AnyOfType anyOf = iterAnyOf.next(); - // Under AnyOFType we have AllOFType - List<AllOfType> allOfList = anyOf.getAllOf(); - if (allOfList == null) { - continue; - } - Iterator<AllOfType> iterAllOf = allOfList.iterator(); - while (iterAllOf.hasNext()) { - AllOfType allOf = iterAllOf.next(); - // Under AllOFType we have Match - List<MatchType> matchList = allOf.getMatch(); - if (matchList != null) { - setDataToAdapterFromMatchList(matchList, policyAdapter); - } - } - } + anyOfList.stream().map(AnyOfType::getAllOf) + .filter(Objects::nonNull) + .flatMap(Collection::stream) + .forEach(allOf -> setDataToAdapterFromMatchList(allOf.getMatch(), policyAdapter)); } - private void setDataToAdapterFromMatchList(List<MatchType> matchList, PolicyRestAdapter policyAdapter){ - Iterator<MatchType> iterMatch = matchList.iterator(); - while (iterMatch.hasNext()) { - MatchType match = iterMatch.next(); + private void setDataToAdapterFromMatchList(List<MatchType> matchList, PolicyRestAdapter policyAdapter) { + if (matchList == null) { + return; + } + for (final MatchType match : matchList) { // // Under the match we have attribute value and // attributeDesignator. So,finally down to the actual attribute. @@ -341,17 +351,16 @@ public class CreateBRMSParamController extends RestrictedBaseController { String value = (String) attributeValue.getContent().get(0); AttributeDesignatorType designator = match.getAttributeDesignator(); String attributeId = designator.getAttributeId(); - - if ("RiskType".equals(attributeId)){ + if ("RiskType".equals(attributeId)) { policyAdapter.setRiskType(value); } - if ("RiskLevel".equals(attributeId)){ + if ("RiskLevel".equals(attributeId)) { policyAdapter.setRiskLevel(value); } - if ("guard".equals(attributeId)){ + if ("guard".equals(attributeId)) { policyAdapter.setGuard(value); } - if ("TTLDate".equals(attributeId) && !value.contains("NA")){ + if ("TTLDate".equals(attributeId) && !value.contains("NA")) { PolicyController controller = new PolicyController(); String newDate = controller.convertDate(value); policyAdapter.setTtlDate(newDate); @@ -360,109 +369,103 @@ public class CreateBRMSParamController extends RestrictedBaseController { } // This method generates the UI from rule configuration - public void paramUIGenerate(PolicyRestAdapter policyAdapter, PolicyEntity entity) { + private void paramUIGenerate(PolicyRestAdapter policyAdapter, PolicyEntity entity) { String data = entity.getConfigurationData().getConfigBody(); - if(data == null){ + if (data == null) { return; } - - try { - StringBuilder params = new StringBuilder(""); - Boolean flag = false; - Boolean comment = false; - for (String line : data.split("\n")) { - if (line.isEmpty() || line.startsWith("//")) { - continue; - } - if(line.contains(brmsTemplateVlaue)){ - String value = line.substring(line.indexOf("<$%"),line.indexOf("%$>")); - value = value.replace(brmsTemplateVlaue, ""); - policyAdapter.setRuleName(value); - } - if(line.contains("<%$Values=")) { - String value = line.substring(line.indexOf("<%$"), line.indexOf("$%>")); - value = value.replaceAll("<%\\$Values=", ""); - for( String keyValue : value.split(":\\|:")) { - String[] pair = keyValue.split(":-:"); - if (pair != null && pair.length > 0) { - dynamicLayoutMap.put(pair[0], (pair.length > 1) ? pair[1] : ""); - } - } - return; - } - if (line.startsWith("/*")) { - comment = true; - continue; - } - if ((line.contains("//"))&&(!(line.contains("http://") || line.contains("https://")))){ - line = splitSingleLineComment(line); - } - if (line.contains("/*")) { - comment = true; - if (line.contains("*/")) { - comment = false; - line = processMultiLineFullComment(line); - } else { - line = splitMultiLineStartComment(line); - } - } + StringBuilder params = new StringBuilder(); + boolean flag = false; + boolean comment = false; + for (String line : data.split("\n")) { + if (line.isEmpty() || line.startsWith("//")) { + continue; + } + if (line.contains(brmsTemplateVlaue)) { + String value = line.substring(line.indexOf("<$%"), line.indexOf("%$>")); + value = value.replace(brmsTemplateVlaue, ""); + policyAdapter.setRuleName(value); + } + if (line.contains("<%$Values=")) { + String value = line.substring(line.indexOf("<%$"), line.indexOf("$%>")); + value = value.replaceAll("<%\\$Values=", ""); + Arrays.stream(value.split(":\\|:")).map(keyValue -> keyValue.split(":-:")) + .filter(pair -> pair.length > 0) + .forEach(pair -> dynamicLayoutMap.put(pair[0], (pair.length > 1) ? pair[1] : "")); + return; + } + if (line.startsWith("/*")) { + comment = true; + continue; + } + if ((line.contains("//")) && (!(line.contains("http://") || line.contains("https://")))) { + line = splitSingleLineComment(line); + } + if (line.contains("/*")) { + comment = true; if (line.contains("*/")) { comment = false; - line = processEndComment(line); - } - if (comment) { - continue; - } - if (flag) { - params.append(line); - } - if (line.contains("rule") && line.contains(".Params\"")) { - params.append(line); - flag = true; - } - if (line.contains("end") && flag) { - break; + line = processMultiLineFullComment(line); + } else { + line = splitMultiLineStartComment(line); } } - params = new StringBuilder(params.substring(params.indexOf(".Params\"")+ 11)); - params = new StringBuilder(params.toString().replaceAll("\\s+", "").replace("salience1000whenthenParamsparams=newParams();","") - .replace("insert(params);end", "") - .replace("params.set", "")); - String[] components = params.toString().split("\\);"); - if(components!= null && components.length > 0){ - for (int i = 0; i < components.length; i++) { - String value; - components[i] = components[i]+")"; - String caption = components[i].substring(0, - components[i].indexOf('(')); - caption = caption.substring(0, 1).toLowerCase() + caption.substring(1); - if (components[i].contains("(\"")) { - value = components[i] - .substring(components[i].indexOf("(\""), - components[i].indexOf("\")")) - .replace("(\"", "").replace("\")", ""); - } else { - value = components[i] - .substring(components[i].indexOf('('), - components[i].indexOf(')')) - .replace("(", "").replace(")", ""); - } - dynamicLayoutMap.put(caption, value); + if (line.contains("*/")) { + comment = false; + line = processEndComment(line); + } + if (comment) { + continue; + } + if (flag) { + params.append(line); + } + if (line.contains("rule") && line.contains(".Params\"")) { + params.append(line); + flag = true; + } + if (line.contains("end") && flag) { + break; + } + } + params = new StringBuilder(params.substring(params.indexOf(".Params\"") + 11)); + params = new StringBuilder(params.toString().replaceAll("\\s+", "") + .replace("salience1000whenthenParamsparams=newParams();", "") + .replace("insert(params);end", "") + .replace("params.set", "")); + updateCaptionToDynamicLayoutMap(params); + } + private void updateCaptionToDynamicLayoutMap(final StringBuilder params) { + String[] components = params.toString().split("\\);"); + if(components.length > 0){ + for (int i = 0; i < components.length; i++) { + String value; + components[i] = components[i] + ")"; + String caption = components[i].substring(0, + components[i].indexOf('(')); + caption = caption.substring(0, 1).toLowerCase() + caption.substring(1); + if (components[i].contains("(\"")) { + value = components[i] + .substring(components[i].indexOf("(\""), + components[i].indexOf("\")")) + .replace("(\"", "").replace("\")", ""); + } else { + value = components[i] + .substring(components[i].indexOf('('), + components[i].indexOf(')')) + .replace("(", "").replace(")", ""); } + dynamicLayoutMap.put(caption, value); } - } catch (Exception e) { - policyLogger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e.getMessage() + e); } - - } private String processEndComment(String line) { try { line = splitMultiLineEndComment(line); } catch (Exception e) { - policyLogger.info("Just for Logging"+e); + policyLogger.info("Just for Logging" + e); line = ""; } return line; @@ -471,9 +474,9 @@ public class CreateBRMSParamController extends RestrictedBaseController { private String processMultiLineFullComment(String line) { try { line = splitMultiLineStartComment(line) - + splitMultiLineEndComment(line); + + splitMultiLineEndComment(line); } catch (Exception e) { - policyLogger.info("Just for Logging"+e); + policyLogger.info("Just for Logging" + e); line = splitMultiLineStartComment(line); } return line; @@ -481,30 +484,33 @@ public class CreateBRMSParamController extends RestrictedBaseController { // set View Rule @SuppressWarnings("unchecked") - @RequestMapping(value={"/policyController/ViewBRMSParamPolicyRule.htm"}, method={org.springframework.web.bind.annotation.RequestMethod.POST}) - public void setViewRule(HttpServletRequest request, HttpServletResponse response){ + @RequestMapping(value = {"/policyController/ViewBRMSParamPolicyRule.htm"}, method = { RequestMethod.POST}) + public void setViewRule(HttpServletRequest request, HttpServletResponse response) { try { ObjectMapper mapper = new ObjectMapper(); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); JsonNode root = mapper.readTree(request.getReader()); - PolicyRestAdapter policyData = mapper.readValue(root.get(PolicyController.getPolicydata()).get("policy").toString(), PolicyRestAdapter.class); - policyData.setDomainDir(root.get(PolicyController.getPolicydata()).get("model").get("name").toString().replace("\"", "")); - if(root.get(PolicyController.getPolicydata()).get("model").get("type").toString().replace("\"", "").equals(PolicyController.getFile())){ + PolicyRestAdapter policyData = mapper + .readValue(root.get(PolicyController.getPolicydata()).get("policy").toString(), + PolicyRestAdapter.class); + policyData.setDomainDir( + root.get(PolicyController.getPolicydata()).get("model").get("name").toString().replace("\"", "")); + if (root.get(PolicyController.getPolicydata()).get("model").get("type").toString().replace("\"", "") + .equals(PolicyController.getFile())) { policyData.setEditPolicy(true); } - String body; - body = findRule((String) policyData.getRuleName()) + "\n"; - StringBuilder generatedMetadata = new StringBuilder(); - generatedMetadata.append("/* Autogenerated Code Please Don't change/remove this comment section. This is for the UI purpose. \n\t " + - brmsTemplateVlaue + policyData.getRuleName() + "%$> \n */ \n"); + String body = findRule(policyData.getRuleName()) + "\n"; + StringBuilder generatedMetadata = new StringBuilder().append( + "/* Autogenerated Code Please Don't change/remove this comment section. This is for the UI purpose. \n\t ") + .append(brmsTemplateVlaue).append(policyData.getRuleName()).append("%$> \n */ \n"); - if(policyData.getDynamicLayoutMap().size() > 0){ + if (policyData.getDynamicLayoutMap().size() > 0) { generatedMetadata.append("/* <%$Values="); for (Entry<?, ?> entry : policyData.getRuleData().entrySet()) { String uiKey = (String) entry.getKey(); - if(!"templateName".equals(uiKey)) { - generatedMetadata.append(uiKey+":-:"+entry.getValue()+":|:"); + if (!"templateName".equals(uiKey)) { + generatedMetadata.append(uiKey).append(":-:").append(entry.getValue()).append(":|:"); } } generatedMetadata.append("$%> \n*/ \n"); @@ -512,26 +518,27 @@ public class CreateBRMSParamController extends RestrictedBaseController { policyLogger.info("Metadata generated with :" + generatedMetadata.toString()); body = generatedMetadata.toString() + body; // Expand the body. - Map<String,String> copyMap=new HashMap<>(); - copyMap.putAll((Map<? extends String, ? extends String>) policyData.getRuleData()); - copyMap.put("policyName", policyData.getDomainDir().replace("\\", ".") +".Config_BRMS_Param_" + policyData.getPolicyName()); + Map<String, String> copyMap = new HashMap<>( + (Map<? extends String, ? extends String>) policyData.getRuleData()); + copyMap.put("policyName", + policyData.getDomainDir().replace("\\", ".") + ".Config_BRMS_Param_" + policyData.getPolicyName()); copyMap.put("policyScope", policyData.getDomainDir().replace("\\", ".")); copyMap.put("policyVersion", "1"); //Finding all the keys in the Map data-structure. - Set<String> keySet= copyMap.keySet(); + Set<String> keySet = copyMap.keySet(); Iterator<String> iterator = keySet.iterator(); Pattern p; Matcher m; - while(iterator.hasNext()) { + while (iterator.hasNext()) { //Converting the first character of the key into a lower case. - String input= iterator.next(); - String output = Character.toLowerCase(input.charAt(0)) + - (input.length() > 1 ? input.substring(1) : ""); + String input = iterator.next(); + String output = Character.toLowerCase(input.charAt(0)) + + (input.length() > 1 ? input.substring(1) : ""); //Searching for a pattern in the String using the key. - p=Pattern.compile("\\$\\{"+output+"\\}"); - m=p.matcher(body); + p = Pattern.compile("\\$\\{" + output + "\\}"); + m = p.matcher(body); //Replacing the value with the inputs provided by the user in the editor. - body=m.replaceAll(copyMap.get(input)); + body = m.replaceAll(copyMap.get(input)); } response.setCharacterEncoding("UTF-8"); response.setContentType("application / json"); diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateBRMSRawController.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateBRMSRawController.java index 3ab4f4f16..93ca28190 100644 --- a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateBRMSRawController.java +++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateBRMSRawController.java @@ -3,13 +3,14 @@ * ONAP Policy Engine * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2019 Bell Canada * ================================================================================ * 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. @@ -20,14 +21,14 @@ package org.onap.policy.controller; - import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.HashMap; -import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Objects; import javax.xml.bind.JAXBElement; import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionType; @@ -37,122 +38,133 @@ import oasis.names.tc.xacml._3_0.core.schema.wd_17.AnyOfType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeAssignmentExpressionType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeDesignatorType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeValueType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.MatchType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.RuleType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType; -import org.onap.policy.common.logging.flexlogger.FlexLogger; +import org.onap.policy.common.logging.flexlogger.FlexLogger; import org.onap.policy.common.logging.flexlogger.Logger; import org.onap.policy.rest.adapter.PolicyRestAdapter; import org.onap.policy.rest.jpa.PolicyEntity; -public class CreateBRMSRawController{ - - private static final Logger logger = FlexLogger.getLogger(CreateBRMSRawController.class); - - protected PolicyRestAdapter policyAdapter = null; - private ArrayList<Object> attributeList; - - - @SuppressWarnings("unchecked") - public void prePopulateBRMSRawPolicyData(PolicyRestAdapter policyAdapter, PolicyEntity entity) { - attributeList = new ArrayList<>(); - if (policyAdapter.getPolicyData() instanceof PolicyType) { - PolicyType policy = (PolicyType) policyAdapter.getPolicyData(); - policyAdapter.setOldPolicyFileName(policyAdapter.getPolicyName()); - // policy name value is the policy name without any prefix and - // Extensions. - String policyNameValue = policyAdapter.getPolicyName().substring(policyAdapter.getPolicyName().indexOf("BRMS_Raw_") + 9); - if (logger.isDebugEnabled()) { - logger.debug("Prepopulating form data for BRMS RAW Policy selected:" + policyAdapter.getPolicyName()); - } - policyAdapter.setPolicyName(policyNameValue); - String description = ""; - try{ - description = policy.getDescription().substring(0, policy.getDescription().indexOf("@CreatedBy:")); - }catch(Exception e){ - logger.info("Not able to see the createdby in description. So, add generic description", e); - description = policy.getDescription(); - } - policyAdapter.setPolicyDescription(description); - // Set Attributes. - AdviceExpressionsType expressionTypes = ((RuleType)policy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().get(0)).getAdviceExpressions(); - for( AdviceExpressionType adviceExpression: expressionTypes.getAdviceExpression()){ - for(AttributeAssignmentExpressionType attributeAssignment: adviceExpression.getAttributeAssignmentExpression()){ - if(attributeAssignment.getAttributeId().startsWith("key:")){ - Map<String, String> attribute = new HashMap<>(); - String key = attributeAssignment.getAttributeId().replace("key:", ""); - attribute.put("key", key); - JAXBElement<AttributeValueType> attributevalue = (JAXBElement<AttributeValueType>) attributeAssignment.getExpression(); - String value = (String) attributevalue.getValue().getContent().get(0); - attribute.put("value", value); - attributeList.add(attribute); - }else if(attributeAssignment.getAttributeId().startsWith("dependencies:")){ - ArrayList<String> dependencies = new ArrayList<>(Arrays.asList(attributeAssignment.getAttributeId().replace("dependencies:", "").split(","))); - if(dependencies.contains("")){ - dependencies.remove(""); +public class CreateBRMSRawController { + + private static final Logger logger = FlexLogger.getLogger(CreateBRMSRawController.class); + + protected PolicyRestAdapter policyAdapter = null; + + @SuppressWarnings("unchecked") + public void prePopulateBRMSRawPolicyData(PolicyRestAdapter policyAdapter, PolicyEntity entity) { + + if (policyAdapter.getPolicyData() instanceof PolicyType) { + PolicyType policy = (PolicyType) policyAdapter.getPolicyData(); + policyAdapter.setOldPolicyFileName(policyAdapter.getPolicyName()); + + // Set PolicyAdapter name value + setPolicyAdapterNameValue(policyAdapter); + + // Set PolicyAdapter description. + setPolicyAdapterDescription(policyAdapter, policy); + + // Set PolicyAdapter attributes. + setPolicyAdapterAttributes(policyAdapter, policy); + + // Set PolicyAdapter configBodyData + policyAdapter.setConfigBodyData(entity.getConfigurationData().getConfigBody()); + + // Get the target data under policy. + TargetType target = policy.getTarget(); + if (target == null) { + return; + } + // Under target we have AnyOFType + List<AnyOfType> anyOfList = target.getAnyOf(); + if (anyOfList == null) { + return; + } + + // Set PolicyAdapter riskType, riskLevel, guard, ttlDate from match attributes + setPolicyAdapterMatchAttributes(policyAdapter, policy.getTarget().getAnyOf()); + } + } + + private void setPolicyAdapterMatchAttributes(PolicyRestAdapter policyAdapter, List<AnyOfType> anyOfList) { + anyOfList.stream() + //Extract nonNull list of AllOfType objs from each AnyOfType obj + .map(AnyOfType::getAllOf).filter(Objects::nonNull) + .forEach(allOfList -> + //Extract nonNull list of MatchType objs from each AllOFType obj + allOfList.stream().map(AllOfType::getMatch).filter(Objects::nonNull) + .flatMap(Collection::stream) + .forEach(match -> { + // Under the match we have attribute value and + // attributeDesignator. So,finally down to the actual attribute. + AttributeValueType attributeValue = match.getAttributeValue(); + String value = (String) attributeValue.getContent().get(0); + AttributeDesignatorType designator = match.getAttributeDesignator(); + String attributeId = designator.getAttributeId(); + if ("RiskType".equals(attributeId)) { + policyAdapter.setRiskType(value); + } else if ("RiskLevel".equals(attributeId)) { + policyAdapter.setRiskLevel(value); + } else if ("guard".equals(attributeId)) { + policyAdapter.setGuard(value); + } else if ("TTLDate".equals(attributeId) && !value.contains("NA")) { + PolicyController controller = new PolicyController(); + String newDate = controller.convertDate(value); + policyAdapter.setTtlDate(newDate); } - policyAdapter.setBrmsDependency(dependencies); - }else if(attributeAssignment.getAttributeId().startsWith("controller:")){ - policyAdapter.setBrmsController(attributeAssignment.getAttributeId().replace("controller:", "")); - } - } - policyAdapter.setAttributes(attributeList); - } - // Get the target data under policy. - policyAdapter.setConfigBodyData(entity.getConfigurationData().getConfigBody()); - TargetType target = policy.getTarget(); - if (target != null) { - // Under target we have AnyOFType - List<AnyOfType> anyOfList = target.getAnyOf(); - if (anyOfList != null) { - Iterator<AnyOfType> iterAnyOf = anyOfList.iterator(); - while (iterAnyOf.hasNext()) { - AnyOfType anyOf = iterAnyOf.next(); - // Under AnyOFType we have AllOFType - List<AllOfType> allOfList = anyOf.getAllOf(); - if (allOfList != null) { - Iterator<AllOfType> iterAllOf = allOfList.iterator(); - while (iterAllOf.hasNext()) { - AllOfType allOf = iterAllOf.next(); - // Under AllOFType we have Match - List<MatchType> matchList = allOf.getMatch(); - if (matchList != null) { - Iterator<MatchType> iterMatch = matchList.iterator(); - while (iterMatch.hasNext()) { - MatchType match = iterMatch.next(); - // - // Under the match we have attribute value and - // attributeDesignator. So,finally down to the actual attribute. - // - AttributeValueType attributeValue = match.getAttributeValue(); - String value = (String) attributeValue.getContent().get(0); - AttributeDesignatorType designator = match.getAttributeDesignator(); - String attributeId = designator.getAttributeId(); - - if ("RiskType".equals(attributeId)){ - policyAdapter.setRiskType(value); - } - if ("RiskLevel".equals(attributeId)){ - policyAdapter.setRiskLevel(value); - } - if ("guard".equals(attributeId)){ - policyAdapter.setGuard(value); - } - if ("TTLDate".equals(attributeId) && !value.contains("NA")){ - PolicyController controller = new PolicyController(); - String newDate = controller.convertDate(value); - policyAdapter.setTtlDate(newDate); - } - } - } - } - } - } - } - } - } - } + })); + } + + private void setPolicyAdapterNameValue(final PolicyRestAdapter policyAdapter) { + // policy name value is the policy name without any prefix and extensions. + String policyNameValue = policyAdapter.getPolicyName() + .substring(policyAdapter.getPolicyName().indexOf("BRMS_Raw_") + 9); + if (logger.isDebugEnabled()) { + logger.debug("Prepopulating form data for BRMS RAW Policy selected:" + policyAdapter.getPolicyName()); + } + policyAdapter.setPolicyName(policyNameValue); + } + + private void setPolicyAdapterDescription(final PolicyRestAdapter policyAdapter, final PolicyType policy) { + String description; + try { + description = policy.getDescription().substring(0, policy.getDescription().indexOf("@CreatedBy:")); + } catch (Exception e) { + logger.info("Not able to see the createdby in description. So, add generic description", e); + description = policy.getDescription(); + } + policyAdapter.setPolicyDescription(description); + } + private void setPolicyAdapterAttributes(final PolicyRestAdapter policyAdapter, final PolicyType policy) { + ArrayList<Object> attributeList = new ArrayList<>(); + AdviceExpressionsType expressionTypes = ((RuleType) policy + .getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().get(0)).getAdviceExpressions(); + for (AdviceExpressionType adviceExpression : expressionTypes.getAdviceExpression()) { + for (AttributeAssignmentExpressionType attributeAssignment : adviceExpression + .getAttributeAssignmentExpression()) { + if (attributeAssignment.getAttributeId().startsWith("key:")) { + Map<String, String> attribute = new HashMap<>(); + String key = attributeAssignment.getAttributeId().replace("key:", ""); + attribute.put("key", key); + JAXBElement<AttributeValueType> attributeValue = (JAXBElement<AttributeValueType>) attributeAssignment + .getExpression(); + String value = (String) attributeValue.getValue().getContent().get(0); + attribute.put("value", value); + attributeList.add(attribute); + } else if (attributeAssignment.getAttributeId().startsWith("dependencies:")) { + ArrayList<String> dependencies = new ArrayList<>(Arrays + .asList(attributeAssignment.getAttributeId().replace("dependencies:", "").split(","))); + dependencies.remove(""); + policyAdapter.setBrmsDependency(dependencies); + } else if (attributeAssignment.getAttributeId().startsWith("controller:")) { + policyAdapter + .setBrmsController(attributeAssignment.getAttributeId().replace("controller:", "")); + } + } + policyAdapter.setAttributes(attributeList); + } + } } diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateClosedLoopFaultController.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateClosedLoopFaultController.java index d942939d1..4c3249311 100644 --- a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateClosedLoopFaultController.java +++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateClosedLoopFaultController.java @@ -3,13 +3,14 @@ * ONAP Policy Engine * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2019 Bell Canada * ================================================================================ * 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. @@ -20,15 +21,17 @@ package org.onap.policy.controller; - import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.ArrayList; -import java.util.Iterator; +import java.util.Arrays; +import java.util.Collection; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; +import java.util.stream.IntStream; import org.onap.policy.common.logging.flexlogger.FlexLogger; import org.onap.policy.common.logging.flexlogger.Logger; import org.onap.policy.rest.adapter.ClosedLoopFaultBody; @@ -54,602 +57,573 @@ import oasis.names.tc.xacml._3_0.core.schema.wd_17.AllOfType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.AnyOfType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeDesignatorType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeValueType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.MatchType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType; @Controller @RequestMapping("/") -public class CreateClosedLoopFaultController extends RestrictedBaseController{ - - private static final Logger policyLogger = FlexLogger.getLogger(CreateClosedLoopFaultController.class); - - protected PolicyRestAdapter policyAdapter = null; - - - private static CommonClassDao commonclassdao; - - @Autowired - private CreateClosedLoopFaultController(CommonClassDao commonclassdao){ - CreateClosedLoopFaultController.commonclassdao = commonclassdao; - } - - public CreateClosedLoopFaultController(){ - // Empty constructor - } - - public PolicyRestAdapter setDataToPolicyRestAdapter(PolicyRestAdapter policyData, JsonNode root){ - try{ - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - ClosedLoopFaultTrapDatas trapDatas = mapper.readValue(root.get("trapData").toString(), ClosedLoopFaultTrapDatas.class); - ClosedLoopFaultTrapDatas faultDatas = mapper.readValue(root.get("faultData").toString(), ClosedLoopFaultTrapDatas.class); - ClosedLoopGridJSONData policyJsonData = mapper.readValue(root.get("policyData").get("policy").toString(), ClosedLoopGridJSONData.class); - ClosedLoopFaultBody jsonBody = mapper.readValue(root.get("policyData").get("policy").get("jsonBodyData").toString(), ClosedLoopFaultBody.class); - - ArrayList<Object> trapSignatureDatas = new ArrayList<>(); - if(trapDatas.getTrap1() != null){ - trapSignatureDatas.add(trapDatas); - } - ArrayList<Object> faultSignatureDatas = new ArrayList<>(); - if(faultDatas.getTrap1() != null){ - faultSignatureDatas.add(faultDatas); - } - - StringBuilder resultBody = new StringBuilder(); - if(!policyJsonData.getConnecttriggerSignatures().isEmpty()){ - resultBody.append("("); - for(int i = policyJsonData.getConnecttriggerSignatures().size()-1; i>=0 ; i--){ - String connectBody = connectTriggerSignature(i, policyJsonData.getConnecttriggerSignatures(), trapSignatureDatas.get(0)); - resultBody.append(connectBody); - } - resultBody.append(resultBody + ")"); - }else{ - if(!trapSignatureDatas.isEmpty()){ - resultBody.append(callTrap("nill", trapSignatureDatas.get(0))); - } - } - ClosedLoopSignatures triggerSignatures = new ClosedLoopSignatures(); - triggerSignatures.setSignatures(resultBody.toString()); - if(policyData.getClearTimeOut() != null){ - triggerSignatures.setTimeWindow(Integer.parseInt(policyData.getClearTimeOut())); - triggerSignatures.setTrapMaxAge(Integer.parseInt(policyData.getTrapMaxAge())); - ClosedLoopFaultTriggerUISignatures uiTriggerSignatures = new ClosedLoopFaultTriggerUISignatures(); - if(!trapSignatureDatas.isEmpty()){ - uiTriggerSignatures.setSignatures(getUITriggerSignature("Trap", trapSignatureDatas.get(0))); - if(!policyJsonData.getConnecttriggerSignatures().isEmpty()){ - uiTriggerSignatures.setConnectSignatures(getUIConnectTraps(policyJsonData.getConnecttriggerSignatures())); - } - } - jsonBody.setTriggerSignaturesUsedForUI(uiTriggerSignatures); - jsonBody.setTriggerTimeWindowUsedForUI(Integer.parseInt(policyData.getClearTimeOut())); - jsonBody.setTrapMaxAge(Integer.parseInt(policyData.getTrapMaxAge())); - } - - jsonBody.setTriggerSignatures(triggerSignatures); - StringBuilder faultBody = new StringBuilder(); - if(!policyJsonData.getConnectVerificationSignatures().isEmpty()){ - faultBody.append("("); - for(int i = policyJsonData.getConnectVerificationSignatures().size()-1; i>=0 ; i--){ - String connectBody = connectTriggerSignature(i, policyJsonData.getConnectVerificationSignatures(), faultSignatureDatas.get(0)); - faultBody.append(connectBody); - } - faultBody.append(")"); - }else{ - if(!faultSignatureDatas.isEmpty()){ - faultBody.append(callTrap("nill", faultSignatureDatas.get(0))); - } - } - ClosedLoopSignatures faultSignatures = new ClosedLoopSignatures(); - faultSignatures.setSignatures(faultBody.toString()); - if(policyData.getVerificationclearTimeOut() != null){ - faultSignatures.setTimeWindow(Integer.parseInt(policyData.getVerificationclearTimeOut())); - ClosedLoopFaultTriggerUISignatures uifaultSignatures = new ClosedLoopFaultTriggerUISignatures(); - if(!faultSignatureDatas.isEmpty()){ - uifaultSignatures.setSignatures(getUITriggerSignature("Fault", faultSignatureDatas.get(0))); - if(!policyJsonData.getConnectVerificationSignatures().isEmpty()){ - uifaultSignatures.setConnectSignatures(getUIConnectTraps(policyJsonData.getConnectVerificationSignatures())); - } - } - - jsonBody.setVerificationSignaturesUsedForUI(uifaultSignatures); - jsonBody.setVerificationTimeWindowUsedForUI(Integer.parseInt(policyData.getVerificationclearTimeOut())); - } - jsonBody.setVerificationSignatures(faultSignatures); - ObjectWriter om = new ObjectMapper().writer(); - String json = om.writeValueAsString(jsonBody); - policyData.setJsonBody(json); - - }catch(Exception e){ - policyLogger.error("Exception Occured while setting data to Adapter" , e); - } - return policyData; - } - - - @SuppressWarnings("unchecked") - private String connectTriggerSignature(int index, List<Object> triggerSignatures, Object object) { - StringBuilder resultBody = new StringBuilder(); - Map<String, String> connectTraps = (Map<String, String>) triggerSignatures.get(index); - try{ - String notBox = ""; - if(connectTraps.keySet().contains("notBox")){ - notBox = connectTraps.get("notBox"); - } - resultBody.append("(" + notBox); - }catch(NullPointerException e){ - policyLogger.info("General error" , e); - resultBody.append("("); - } - String connectTrap1 = connectTraps.get("connectTrap1"); - if(connectTrap1.startsWith("Trap") || connectTrap1.startsWith("Fault")){ - String trapBody = callTrap(connectTrap1, object); - if(trapBody!=null){ - resultBody.append(trapBody); - } - }else if(connectTrap1.startsWith("C")){ - for(int i=0; i<= triggerSignatures.size(); i++){ - Map<String,String> triggerSignature = (Map<String, String>) triggerSignatures.get(i); - if(triggerSignature.get("id").equals(connectTrap1)){ - resultBody.append("("); - String connectBody = connectTriggerSignature(i, triggerSignatures, object); - resultBody.append(connectBody + ")"); - }else{ - i++; - } - } - } - try{ - String trapCount1 = connectTraps.get("trapCount1"); - resultBody.append(", Time = " + trapCount1 + ")"); - }catch(NullPointerException e){ - policyLogger.info("General error" , e); - } - try{ - String operatorBox = connectTraps.get("operatorBox"); - resultBody.append(operatorBox +"("); - }catch (NullPointerException e){ - policyLogger.info("General error" , e); - } - try{ - String connectTrap2 = connectTraps.get("connectTrap2"); - if(connectTrap2.startsWith("Trap") || connectTrap2.startsWith("Fault")){ - String trapBody = callTrap(connectTrap2, object); - if(trapBody!=null){ - resultBody.append(trapBody); - } - }else if(connectTrap2.startsWith("C")){ - for(int i=0; i<= triggerSignatures.size(); i++){ - Map<String,String> triggerSignature = (Map<String, String>) triggerSignatures.get(i); - if(triggerSignature.get("id").equals(connectTrap2)){ - resultBody.append("("); - String connectBody = connectTriggerSignature(i, triggerSignatures, object); - resultBody.append(connectBody + ")"); - }else{ - i++; - } - } - } - }catch(NullPointerException e){ - policyLogger.info("General error" , e); - } - try{ - String trapCount2 = connectTraps.get("trapCount2"); - resultBody.append(", Time = " + trapCount2 + ")"); - }catch(NullPointerException e){ - policyLogger.info("General error" , e); - } - return resultBody.toString(); - } - - - private String callTrap(String trap, Object object) { - String signatureBody = ""; - ClosedLoopFaultTrapDatas trapDatas = (ClosedLoopFaultTrapDatas) object; - List<Object> attributeList = new ArrayList<>(); - // Read the Trap - if(! "nill".equals(trap)){ - try{ - if(trap.startsWith("Trap")){ - if("Trap1".equals(trap)){ - attributeList = trapDatas.getTrap1(); - }else if("Trap2".equals(trap)){ - attributeList = trapDatas.getTrap2(); - }else if("Trap3".equals(trap)){ - attributeList = trapDatas.getTrap3(); - }else if("Trap4".equals(trap)){ - attributeList = trapDatas.getTrap4(); - }else if("Trap5".equals(trap)){ - attributeList = trapDatas.getTrap5(); - }else if("Trap6".equals(trap)){ - attributeList = trapDatas.getTrap6(); - } - }else{ - if(trap.startsWith("Fault")){ - if("Fault1".equals(trap)){ - attributeList = trapDatas.getTrap1(); - }else if("Fault2".equals(trap)){ - attributeList = trapDatas.getTrap2(); - }else if("Fault3".equals(trap)){ - attributeList = trapDatas.getTrap3(); - }else if("Fault4".equals(trap)){ - attributeList = trapDatas.getTrap4(); - }else if("Fault5".equals(trap)){ - attributeList = trapDatas.getTrap5(); - }else if("Fault6".equals(trap)){ - attributeList = trapDatas.getTrap6(); - } - } - } - } catch(Exception e){ - policyLogger.warn("Error during callTrap" , e); - return "(" + trap + ")"; - } - }else{ - if(trapDatas.getTrap1()!=null){ - attributeList = trapDatas.getTrap1(); - }else{ - return ""; - } - } - signatureBody = signatureBody + "(" + readAttributes(attributeList, attributeList.size()-1) + ")"; - return signatureBody; - } - - @SuppressWarnings("unchecked") - private String readAttributes(List<Object> object, int index) { - String attributes = ""; - Map<String, String> trapSignatures = (Map<String, String>) object.get(index); - // Read the Elements. - Object notBox = ""; - if(trapSignatures.keySet().contains("notBox")){ - notBox = trapSignatures.get("notBox"); - } - if(notBox!=null){ - attributes = attributes + notBox.toString(); - } - Object trapName1 = trapSignatures.get("trigger1"); - if(trapName1!=null){ - String attrib = trapName1.toString(); - if(attrib.startsWith("A")){ - try{ - int iy = Integer.parseInt(attrib.substring(1))-1; - attributes = attributes + "(" + readAttributes(object, iy) + ")"; - }catch(NumberFormatException e){ - try { - attrib = getVarbindOID(attrib); - attributes = attributes + "("+ URLEncoder.encode(attrib, "UTF-8")+ ")"; - } catch (UnsupportedEncodingException e1) { - policyLogger.error("Caused Exception while Encoding Varbind Dictionary Values",e1); - } - } - }else{ - try { - attrib = getVarbindOID(attrib); - attributes = attributes + "("+ URLEncoder.encode(attrib, "UTF-8")+ ")"; - } catch (UnsupportedEncodingException e) { - policyLogger.error("Caused Exception while Encoding Varbind Dictionary Values",e); - } - } - }else{ - return ""; - } - Object comboBox = trapSignatures.get("operatorBox"); - if(comboBox!=null){ - attributes = attributes + comboBox.toString(); - }else{ - return attributes; - } - Object trapName2 = trapSignatures.get("trigger2"); - if(trapName2!=null){ - String attrib = trapName2.toString(); - if(attrib.startsWith("A")){ - try{ - int iy = Integer.parseInt(attrib.substring(1))-1; - attributes = attributes + "(" + readAttributes(object, iy) + ")"; - }catch(NumberFormatException e){ - try { - attrib = getVarbindOID(attrib); - attributes = attributes + "("+ URLEncoder.encode(attrib, "UTF-8") + ")"; - } catch (UnsupportedEncodingException e1) { - policyLogger.error("Caused Exception while Encoding Varbind Dictionary Values",e1); - } - } - }else{ - try { - attrib = getVarbindOID(attrib); - attributes = attributes + "("+ URLEncoder.encode(attrib, "UTF-8") + ")"; - } catch (UnsupportedEncodingException e) { - policyLogger.error("Caused Exception while Encoding Varbind Dictionary Values",e); - } - } - } - return attributes; - } - - private String getVarbindOID(String attrib) { - VarbindDictionary varbindId = null; - try{ - varbindId = (VarbindDictionary) commonclassdao.getEntityItem(VarbindDictionary.class, "varbindName", attrib); - return varbindId.getVarbindOID(); - }catch(Exception e){ - policyLogger.error("Error during retrieving varbindName " + attrib, e); - return attrib; - } - } - - - //connect traps data set to JSON Body as String - @SuppressWarnings({ "unchecked", "rawtypes" }) - private String getUIConnectTraps(List<Object> connectTrapSignatures) { - StringBuilder resultBody = new StringBuilder(); - String connectMainBody = ""; - for(int j = 0; j < connectTrapSignatures.size(); j++){ - Map<String, String> connectTraps = (Map<String, String>)connectTrapSignatures.get(j); - String connectBody = ""; - Object object = connectTraps; - if(object instanceof LinkedHashMap<?, ?>){ - String notBox = ""; - String connectTrap1 = ""; - String trapCount1 = ""; - String operatorBox = ""; - String connectTrap2 = ""; - String trapCount2 = ""; - if(((LinkedHashMap) object).keySet().contains("notBox")){ - notBox = ((LinkedHashMap) object).get("notBox").toString(); - } - if(((LinkedHashMap) object).get("connectTrap1") != null){ - connectTrap1 = ((LinkedHashMap) object).get("connectTrap1").toString(); - } - if(((LinkedHashMap) object).get("trapCount1") != null){ - trapCount1 = ((LinkedHashMap) object).get("trapCount1").toString(); - } - if(((LinkedHashMap) object).get("operatorBox") != null){ - operatorBox = ((LinkedHashMap) object).get("operatorBox").toString(); - } - if(((LinkedHashMap) object).get("connectTrap2") != null){ - connectTrap2 = ((LinkedHashMap) object).get("connectTrap2").toString(); - } - if(((LinkedHashMap) object).get("trapCount2") != null){ - trapCount2 = ((LinkedHashMap) object).get("trapCount2").toString(); - } - connectBody = notBox + "@!" + connectTrap1 + "@!" + trapCount1 + "@!" + operatorBox + "@!" + connectTrap2 + "@!" + trapCount2 + "#!?!"; - } - resultBody.append(connectBody); - } - connectMainBody = connectMainBody + resultBody; - return connectMainBody; - } - - - - // get Trigger signature from JSON body - @SuppressWarnings({ "rawtypes", "unchecked" }) - private String getUITriggerSignature(String trap, Object object2) { - StringBuilder triggerBody = new StringBuilder(); - ClosedLoopFaultTrapDatas trapDatas = (ClosedLoopFaultTrapDatas) object2; - ArrayList<Object> attributeList = new ArrayList<>(); - // Read the Trap - if(trap.startsWith("Trap")){ - if(trapDatas.getTrap1()!= null){ - attributeList.add(trapDatas.getTrap1()); - } - if(trapDatas.getTrap2()!= null){ - attributeList.add(trapDatas.getTrap2()); - } - if(trapDatas.getTrap3()!= null){ - attributeList.add(trapDatas.getTrap3()); - } - if(trapDatas.getTrap4()!= null){ - attributeList.add(trapDatas.getTrap4()); - } - if(trapDatas.getTrap5()!= null){ - attributeList.add(trapDatas.getTrap5()); - } - if(trapDatas.getTrap6()!= null){ - attributeList.add(trapDatas.getTrap6()); - } - }else{ - if(trap.startsWith("Fault")){ - if(trapDatas.getTrap1()!= null){ - attributeList.add(trapDatas.getTrap1()); - } - if(trapDatas.getTrap2()!= null){ - attributeList.add(trapDatas.getTrap2()); - } - if(trapDatas.getTrap3()!= null){ - attributeList.add(trapDatas.getTrap3()); - } - if(trapDatas.getTrap4()!= null){ - attributeList.add(trapDatas.getTrap4()); - } - if(trapDatas.getTrap5()!= null){ - attributeList.add(trapDatas.getTrap5()); - } - if(trapDatas.getTrap6()!= null){ - attributeList.add(trapDatas.getTrap6()); - } - } - } - - for(int j = 0; j < attributeList.size(); j++){ - StringBuilder signatureBody = new StringBuilder(); - ArrayList<Object> connectTraps = (ArrayList<Object>) attributeList.get(j); - for(int i =0 ; i < connectTraps.size(); i++){ - String connectBody = ""; - Object object = connectTraps.get(i); - if(object instanceof LinkedHashMap<?, ?>){ - String notBox = ""; - String trigger1 = ""; - String operatorBox = ""; - String trigger2 = ""; - if(((LinkedHashMap) object).keySet().contains("notBox")){ - notBox = ((LinkedHashMap) object).get("notBox").toString(); - } - if(((LinkedHashMap) object).get("trigger1") != null){ - trigger1 = ((LinkedHashMap) object).get("trigger1").toString(); - } - if(((LinkedHashMap) object).get("operatorBox") != null){ - operatorBox = ((LinkedHashMap) object).get("operatorBox").toString(); - } - if(((LinkedHashMap) object).get("trigger2") != null){ - trigger2 = ((LinkedHashMap) object).get("trigger2").toString(); - } - connectBody = notBox + "@!" + trigger1 + "@!" + operatorBox + "@!" + trigger2 + "#!"; - } - signatureBody.append(connectBody); - } - triggerBody.append(signatureBody + "?!"); - } - - return triggerBody.toString(); - } - - public void prePopulateClosedLoopFaultPolicyData(PolicyRestAdapter policyAdapter, PolicyEntity entity) { - if (policyAdapter.getPolicyData() instanceof PolicyType) { - Object policyData = policyAdapter.getPolicyData(); - PolicyType policy = (PolicyType) policyData; - policyAdapter.setOldPolicyFileName(policyAdapter.getPolicyName()); - String policyNameValue = policyAdapter.getPolicyName().substring(policyAdapter.getPolicyName().indexOf("Fault_") +6); - policyAdapter.setPolicyName(policyNameValue); - String description = ""; - try{ - description = policy.getDescription().substring(0, policy.getDescription().indexOf("@CreatedBy:")); - }catch(Exception e){ - policyLogger.error("Error during collecting the description tag info for createClosedLoopFault " + policyNameValue , e); - description = policy.getDescription(); - } - policyAdapter.setPolicyDescription(description); - // Get the target data under policy. - TargetType target = policy.getTarget(); - if (target != null) { - // Under target we have AnyOFType - List<AnyOfType> anyOfList = target.getAnyOf(); - if (anyOfList != null) { - Iterator<AnyOfType> iterAnyOf = anyOfList.iterator(); - while (iterAnyOf.hasNext()) { - AnyOfType anyOf = iterAnyOf.next(); - // Under AnyOFType we have AllOFType - List<AllOfType> allOfList = anyOf.getAllOf(); - if (allOfList != null) { - Iterator<AllOfType> iterAllOf = allOfList.iterator(); - while (iterAllOf.hasNext()) { - AllOfType allOf = iterAllOf.next(); - // Under AllOFType we have Match - List<MatchType> matchList = allOf.getMatch(); - if (matchList != null) { - Iterator<MatchType> iterMatch = matchList.iterator(); - while (iterMatch.hasNext()) { - MatchType match = iterMatch.next(); - // - // Under the match we have attribute value and - // attributeDesignator. So,finally down to the actual attribute. - // - AttributeValueType attributeValue = match.getAttributeValue(); - String value = (String) attributeValue.getContent().get(0); - AttributeDesignatorType designator = match.getAttributeDesignator(); - String attributeId = designator.getAttributeId(); - - // First match in the target is OnapName, so set that value. - if ("ONAPName".equals(attributeId)) { - policyAdapter.setOnapName(value); - OnapName onapName = new OnapName(); - onapName.setOnapName(value); - policyAdapter.setOnapNameField(onapName); - } - if ("RiskType".equals(attributeId)){ - policyAdapter.setRiskType(value); - } - if ("RiskLevel".equals(attributeId)){ - policyAdapter.setRiskLevel(value); - } - if ("guard".equals(attributeId)){ - policyAdapter.setGuard(value); - } - if ("TTLDate".equals(attributeId) && !value.contains("NA")){ - PolicyController controller = new PolicyController(); - String newDate = controller.convertDate(value); - policyAdapter.setTtlDate(newDate); - } - } - } - } - } - } - } - } - readClosedLoopJSONFile(policyAdapter, entity); - } - - } - - private String readClosedLoopJSONFile(PolicyRestAdapter policyAdapter, PolicyEntity entity) { - ObjectMapper mapper = new ObjectMapper(); - try { - ClosedLoopFaultBody closedLoopBody = mapper.readValue(entity.getConfigurationData().getConfigBody(), ClosedLoopFaultBody.class); - if("ACTIVE".equalsIgnoreCase(closedLoopBody.getClosedLoopPolicyStatus())){ - closedLoopBody.setClosedLoopPolicyStatus("Active"); - }else{ - closedLoopBody.setClosedLoopPolicyStatus("InActive"); - } - policyAdapter.setJsonBodyData(closedLoopBody); - if(closedLoopBody.getTrapMaxAge() != null){ - policyAdapter.setTrapMaxAge(closedLoopBody.getTrapMaxAge().toString()); - } - if(closedLoopBody.getTriggerTimeWindowUsedForUI() != null){ - policyAdapter.setClearTimeOut(closedLoopBody.getTriggerTimeWindowUsedForUI().toString()); - } - if(closedLoopBody.getVerificationTimeWindowUsedForUI() != null){ - policyAdapter.setVerificationclearTimeOut(closedLoopBody.getVerificationTimeWindowUsedForUI().toString()); - } - - } catch (Exception e) { - policyLogger.error("Exception Occured"+e); - } - - return null; - } - +public class CreateClosedLoopFaultController extends RestrictedBaseController { + + private static final Logger policyLogger = FlexLogger.getLogger(CreateClosedLoopFaultController.class); + private static final String FAULT = "Fault"; + private static final String TRAP = "Trap"; + private static final String NOT_BOX = "notBox"; + private static final String OPERATOR_BOX = "operatorBox"; + private static final String CONNECT_TRAP_1 = "connectTrap1"; + private static final String TRAP_COUNT_1 = "trapCount1"; + private static final String CONNECT_TRAP_2 = "connectTrap2"; + private static final String TRAP_COUNT_2 = "trapCount2"; + private static final String TRIGGER_1 = "trigger1"; + private static final String ENC_UTF_8 = "UTF-8"; + private static final String TRIGGER_2 = "trigger2"; + + protected PolicyRestAdapter policyAdapter = null; + + private static CommonClassDao commonclassdao; + + @Autowired + private CreateClosedLoopFaultController(CommonClassDao commonclassdao) { + CreateClosedLoopFaultController.commonclassdao = commonclassdao; + } + + public CreateClosedLoopFaultController() { + // Empty constructor + } + + public PolicyRestAdapter setDataToPolicyRestAdapter(PolicyRestAdapter policyData, JsonNode root) { + try { + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + ClosedLoopFaultTrapDatas trapDatas = mapper + .readValue(root.get("trapData").toString(), ClosedLoopFaultTrapDatas.class); + ClosedLoopFaultTrapDatas faultDatas = mapper + .readValue(root.get("faultData").toString(), ClosedLoopFaultTrapDatas.class); + ClosedLoopGridJSONData policyJsonData = mapper + .readValue(root.get("policyData").get("policy").toString(), ClosedLoopGridJSONData.class); + ClosedLoopFaultBody jsonBody = mapper + .readValue(root.get("policyData").get("policy").get("jsonBodyData").toString(), + ClosedLoopFaultBody.class); + + // Build trapSignatureDatas list from faultData + List<Object> trapSignatureDatas = new ArrayList<>(); + if (trapDatas.getTrap1() != null) { + trapSignatureDatas.add(trapDatas); + } + // Extract resultBody and set jsonBody with trap ClosedLoopSignatures + String resultBody = getResultBody(policyJsonData, trapSignatureDatas); + ClosedLoopSignatures triggerSignatures = new ClosedLoopSignatures(); + triggerSignatures.setSignatures(resultBody); + if (policyData.getClearTimeOut() != null) { + triggerSignatures.setTimeWindow(Integer.parseInt(policyData.getClearTimeOut())); + triggerSignatures.setTrapMaxAge(Integer.parseInt(policyData.getTrapMaxAge())); + ClosedLoopFaultTriggerUISignatures uiTriggerSignatures = new ClosedLoopFaultTriggerUISignatures(); + if (!trapSignatureDatas.isEmpty()) { + uiTriggerSignatures.setSignatures(getUITriggerSignature(TRAP, trapSignatureDatas.get(0))); + if (!policyJsonData.getConnecttriggerSignatures().isEmpty()) { + uiTriggerSignatures + .setConnectSignatures(getUIConnectTraps(policyJsonData.getConnecttriggerSignatures())); + } + } + jsonBody.setTriggerSignaturesUsedForUI(uiTriggerSignatures); + jsonBody.setTriggerTimeWindowUsedForUI(Integer.parseInt(policyData.getClearTimeOut())); + jsonBody.setTrapMaxAge(Integer.parseInt(policyData.getTrapMaxAge())); + } + + jsonBody.setTriggerSignatures(triggerSignatures); + + // Build faultSignatureData list from faultData + List<Object> faultSignatureDatas = new ArrayList<>(); + if (faultDatas.getTrap1() != null) { + faultSignatureDatas.add(faultDatas); + } + // Extract faultBody and set jsonBody with fault ClosedLoopSignatures + String faultBody = getFaultBody(policyJsonData, faultSignatureDatas); + ClosedLoopSignatures faultSignatures = new ClosedLoopSignatures(); + faultSignatures.setSignatures(faultBody); + if (policyData.getVerificationclearTimeOut() != null) { + faultSignatures.setTimeWindow(Integer.parseInt(policyData.getVerificationclearTimeOut())); + ClosedLoopFaultTriggerUISignatures uifaultSignatures = new ClosedLoopFaultTriggerUISignatures(); + if (!faultSignatureDatas.isEmpty()) { + uifaultSignatures.setSignatures(getUITriggerSignature(FAULT, faultSignatureDatas.get(0))); + if (!policyJsonData.getConnectVerificationSignatures().isEmpty()) { + uifaultSignatures + .setConnectSignatures(getUIConnectTraps(policyJsonData.getConnectVerificationSignatures())); + } + } + jsonBody.setVerificationSignaturesUsedForUI(uifaultSignatures); + jsonBody.setVerificationTimeWindowUsedForUI(Integer.parseInt(policyData.getVerificationclearTimeOut())); + } + jsonBody.setVerificationSignatures(faultSignatures); + ObjectWriter om = new ObjectMapper().writer(); + String json = om.writeValueAsString(jsonBody); + policyData.setJsonBody(json); + + } catch (Exception e) { + policyLogger.error("Exception Occured while setting data to Adapter", e); + } + return policyData; + } + + // TODO: Can getResultBody() and getFaultBody() be merged? + private String getResultBody(final ClosedLoopGridJSONData policyJsonData, final List<Object> trapSignatureDatas) { + StringBuilder resultBody = new StringBuilder(); + if (!policyJsonData.getConnecttriggerSignatures().isEmpty()) { + resultBody.append("("); + IntStream.range(0, policyJsonData.getConnecttriggerSignatures().size()) + .mapToObj(i -> connectTriggerSignature(i, policyJsonData.getConnecttriggerSignatures(), + trapSignatureDatas.get(0))).forEach(resultBody::append); + resultBody.append(resultBody).append(")"); + } else { + if (!trapSignatureDatas.isEmpty()) { + resultBody.append(callTrap("nill", trapSignatureDatas.get(0))); + } + } + return resultBody.toString(); + } + + private String getFaultBody(final ClosedLoopGridJSONData policyJsonData, final List<Object> faultSignatureDatas) { + StringBuilder faultBody = new StringBuilder(); + if (!policyJsonData.getConnectVerificationSignatures().isEmpty()) { + faultBody.append("("); + IntStream.range(0, policyJsonData.getConnectVerificationSignatures().size()) + .mapToObj(i -> connectTriggerSignature(i, policyJsonData.getConnectVerificationSignatures(), + faultSignatureDatas.get(0))).forEach(faultBody::append); + faultBody.append(")"); + } else { + if (!faultSignatureDatas.isEmpty()) { + faultBody.append(callTrap("nill", faultSignatureDatas.get(0))); + } + } + return faultBody.toString(); + } + + @SuppressWarnings("unchecked") + private String connectTriggerSignature(int index, List<Object> triggerSignatures, Object object) { + StringBuilder resultBody = new StringBuilder(); + Map<String, String> connectTraps = (Map<String, String>) triggerSignatures.get(index); + try { + String notBox = ""; + if (connectTraps.keySet().contains(NOT_BOX)) { + notBox = connectTraps.get(NOT_BOX); + } + resultBody.append("(").append(notBox); + } catch (NullPointerException e) { + policyLogger.info("General error", e); + resultBody.append("("); + } + + try { + // Append connectTrap1 body to resultBody + appendTrapToResultBody(triggerSignatures, object, resultBody, connectTraps, CONNECT_TRAP_1); + + // Update trap1 count to resultBody + String trapCount1 = connectTraps.get(TRAP_COUNT_1); + resultBody.append(", Time = ").append(trapCount1).append(")"); + + // Append connectTrap2 body to resultBody + appendTrapToResultBody(triggerSignatures, object, resultBody, connectTraps, CONNECT_TRAP_2); + + // Update operatorBox to resultBody + String operatorBox = connectTraps.get(OPERATOR_BOX); + resultBody.append(operatorBox).append("("); + + // Update trap2 count to resultBody + String trapCount2 = connectTraps.get(TRAP_COUNT_2); + resultBody.append(", Time = ").append(trapCount2).append(")"); + } catch (NullPointerException e) { + policyLogger.info("General error", e); + } + return resultBody.toString(); + } + + private void appendTrapToResultBody(List<Object> triggerSignatures, Object object, StringBuilder resultBody, + Map<String, String> connectTraps, String connectTrapName) { + String connectTrap = connectTraps.get(connectTrapName); + if (connectTrap.startsWith(TRAP) || connectTrap.startsWith(FAULT)) { + String trapBody = callTrap(connectTrap, object); + resultBody.append(trapBody); + } else if (connectTrap.startsWith("C")) { + for (int i = 0; i <= triggerSignatures.size(); i++) { + Map<String, String> triggerSignature = (Map<String, String>) triggerSignatures.get(i); + if (triggerSignature.get("id").equals(connectTrap)) { + resultBody.append("("); + String connectBody = connectTriggerSignature(i, triggerSignatures, object); + resultBody.append(connectBody).append(")"); + } else { // FIXME: Is this a bug and can it be removed? + i++; + } + } + } + } + + private String callTrap(String trap, Object object) { + String signatureBody = ""; + ClosedLoopFaultTrapDatas trapDatas = (ClosedLoopFaultTrapDatas) object; + List<Object> attributeList = new ArrayList<>(); + // Read the Trap + if (!"nill".equals(trap)) { + List<String> trapTypes = new ArrayList<>(); + if (trap.startsWith(TRAP)) { + trapTypes = Arrays.asList("Trap1", "Trap2", "Trap3", "Trap4", "Trap5", "Trap6"); + } else if (trap.startsWith(FAULT)) { + trapTypes = Arrays.asList("Fault1", "Fault2", "Fault3", "Fault4", "Fault5", "Fault6"); + } + try { + if (trapTypes.get(0).equals(trap)) { + attributeList = trapDatas.getTrap1(); + } else if (trapTypes.get(1).equals(trap)) { + attributeList = trapDatas.getTrap2(); + } else if (trapTypes.get(2).equals(trap)) { + attributeList = trapDatas.getTrap3(); + } else if (trapTypes.get(3).equals(trap)) { + attributeList = trapDatas.getTrap4(); + } else if (trapTypes.get(4).equals(trap)) { + attributeList = trapDatas.getTrap5(); + } else if (trapTypes.get(5).equals(trap)) { + attributeList = trapDatas.getTrap6(); + } + } catch (Exception e) { + policyLogger.warn("Error during callTrap", e); + return "(" + trap + ")"; + } + } else { + if (trapDatas.getTrap1() == null) { + return ""; + } + attributeList = trapDatas.getTrap1(); + } + signatureBody = signatureBody + "(" + readAttributes(attributeList, attributeList.size() - 1) + ")"; + return signatureBody; + } + + @SuppressWarnings("unchecked") + private String readAttributes(List<Object> object, int index) { + String attributes = ""; + Map<String, String> trapSignatures = (Map<String, String>) object.get(index); + // Read the Elements. + Object notBox = ""; + if (trapSignatures.keySet().contains(NOT_BOX)) { + notBox = trapSignatures.get(NOT_BOX); + } + if (notBox != null) { + attributes = attributes + notBox.toString(); + } + + // Get Attributes for trap1 name + Object trapName1 = trapSignatures.get(TRIGGER_1); + if (trapName1 == null) { + return ""; + } + attributes = getTrapAttributesString(object, attributes, trapName1); + + Object comboBox = trapSignatures.get(OPERATOR_BOX); + if (comboBox != null) { + attributes = attributes + comboBox.toString(); + } else { + return attributes; + } + + // Get Attributes for trap1 name + Object trapName2 = trapSignatures.get(TRIGGER_2); + if (trapName2 != null) { + attributes = getTrapAttributesString(object, attributes, trapName2); + } + return attributes; + } + + private String getTrapAttributesString(List<Object> objectList, String attributesStr, Object trapName) { + String trap1Attrib = trapName.toString(); + if (trap1Attrib.startsWith("A")) { + try { + int iy = Integer.parseInt(trap1Attrib.substring(1)) - 1; + attributesStr = attributesStr + "(" + readAttributes(objectList, iy) + ")"; + } catch (NumberFormatException e) { + try { + trap1Attrib = getVarbindOID(trap1Attrib); + attributesStr = attributesStr + "(" + URLEncoder.encode(trap1Attrib, ENC_UTF_8) + ")"; + } catch (UnsupportedEncodingException e1) { + policyLogger.error("Caused Exception while Encoding Varbind Dictionary Values", e1); + } + } + } else { + try { + trap1Attrib = getVarbindOID(trap1Attrib); + attributesStr = attributesStr + "(" + URLEncoder.encode(trap1Attrib, ENC_UTF_8) + ")"; + } catch (UnsupportedEncodingException e) { + policyLogger.error("Caused Exception while Encoding Varbind Dictionary Values", e); + } + } + return attributesStr; + } + + private String getVarbindOID(String attrib) { + VarbindDictionary varbindId; + try { + varbindId = (VarbindDictionary) commonclassdao + .getEntityItem(VarbindDictionary.class, "varbindName", attrib); + return varbindId.getVarbindOID(); + } catch (Exception e) { + policyLogger.error("Error during retrieving varbindName " + attrib, e); + return attrib; + } + } + + //connect traps data set to JSON Body as String + @SuppressWarnings({"unchecked", "rawtypes"}) + private String getUIConnectTraps(List<Object> connectTrapSignatures) { + StringBuilder resultBody = new StringBuilder(); + String connectMainBody = ""; + for (Object connectTrapSignature : connectTrapSignatures) { + Map<String, String> connectTraps = (Map<String, String>) connectTrapSignature; + String connectBody = ""; + if (connectTraps instanceof LinkedHashMap<?, ?>) { + String notBox = ""; + String connectTrap1 = ""; + String trapCount1 = ""; + String operatorBox = ""; + String connectTrap2 = ""; + String trapCount2 = ""; + if (((LinkedHashMap) connectTraps).keySet().contains(NOT_BOX)) { + notBox = ((LinkedHashMap) connectTraps).get(NOT_BOX).toString(); + } + if (((LinkedHashMap) connectTraps).get(CONNECT_TRAP_1) != null) { + connectTrap1 = ((LinkedHashMap) connectTraps).get(CONNECT_TRAP_1).toString(); + } + if (((LinkedHashMap) connectTraps).get(TRAP_COUNT_1) != null) { + trapCount1 = ((LinkedHashMap) connectTraps).get(TRAP_COUNT_1).toString(); + } + if (((LinkedHashMap) connectTraps).get(OPERATOR_BOX) != null) { + operatorBox = ((LinkedHashMap) connectTraps).get(OPERATOR_BOX).toString(); + } + if (((LinkedHashMap) connectTraps).get(CONNECT_TRAP_2) != null) { + connectTrap2 = ((LinkedHashMap) connectTraps).get(CONNECT_TRAP_2).toString(); + } + if (((LinkedHashMap) connectTraps).get(TRAP_COUNT_2) != null) { + trapCount2 = ((LinkedHashMap) connectTraps).get(TRAP_COUNT_2).toString(); + } + connectBody = + notBox + "@!" + connectTrap1 + "@!" + trapCount1 + "@!" + operatorBox + "@!" + connectTrap2 + "@!" + + trapCount2 + "#!?!"; + } + resultBody.append(connectBody); + } + connectMainBody = connectMainBody + resultBody; + return connectMainBody; + } + + // get Trigger signature from JSON body + private String getUITriggerSignature(String trap, Object object2) { + ClosedLoopFaultTrapDatas trapDatas = (ClosedLoopFaultTrapDatas) object2; + List<Object> attributeList = new ArrayList<>(); + // Read the Trap + if (trap.startsWith(TRAP) || trap.startsWith(FAULT)) { + if (trapDatas.getTrap1() != null) { + attributeList.add(trapDatas.getTrap1()); + } + if (trapDatas.getTrap2() != null) { + attributeList.add(trapDatas.getTrap2()); + } + if (trapDatas.getTrap3() != null) { + attributeList.add(trapDatas.getTrap3()); + } + if (trapDatas.getTrap4() != null) { + attributeList.add(trapDatas.getTrap4()); + } + if (trapDatas.getTrap5() != null) { + attributeList.add(trapDatas.getTrap5()); + } + if (trapDatas.getTrap6() != null) { + attributeList.add(trapDatas.getTrap6()); + } + } + return getTriggerBody(attributeList); + } + + @SuppressWarnings({"rawtypes", "unchecked"}) + private String getTriggerBody(final List<Object> attributeList) { + StringBuilder triggerBody = new StringBuilder(); + for (Object o : attributeList) { + StringBuilder signatureBody = new StringBuilder(); + List<Object> connectTraps = (ArrayList<Object>) o; + for (Object connectTrap : connectTraps) { + String connectBody = ""; + if (connectTrap instanceof LinkedHashMap<?, ?>) { + String notBox = ""; + String trigger1 = ""; + String operatorBox = ""; + String trigger2 = ""; + if (((LinkedHashMap) connectTrap).keySet().contains(NOT_BOX)) { + notBox = ((LinkedHashMap) connectTrap).get(NOT_BOX).toString(); + } + if (((LinkedHashMap) connectTrap).get(TRIGGER_1) != null) { + trigger1 = ((LinkedHashMap) connectTrap).get(TRIGGER_1).toString(); + } + if (((LinkedHashMap) connectTrap).get(OPERATOR_BOX) != null) { + operatorBox = ((LinkedHashMap) connectTrap).get(OPERATOR_BOX).toString(); + } + if (((LinkedHashMap) connectTrap).get(TRIGGER_2) != null) { + trigger2 = ((LinkedHashMap) connectTrap).get(TRIGGER_2).toString(); + } + connectBody = notBox + "@!" + trigger1 + "@!" + operatorBox + "@!" + trigger2 + "#!"; + } + signatureBody.append(connectBody); + } + triggerBody.append(signatureBody).append("?!"); + } + return triggerBody.toString(); + } + + public void prePopulateClosedLoopFaultPolicyData(PolicyRestAdapter policyAdapter, PolicyEntity entity) { + if (policyAdapter.getPolicyData() instanceof PolicyType) { + PolicyType policy = (PolicyType) policyAdapter.getPolicyData(); + + // Set PolicyAdapter policyName, description + setPolicyAdapterPolicyNameAndDescription(policyAdapter, policy); + + // Set PolicyAdapter JsonBodyData, timeout settings + setClosedLoopJSONFile(policyAdapter, entity); + + // Get the target data under policy. + TargetType target = policy.getTarget(); + if (target == null) { + return; + } + + // Under target we have AnyOFType + List<AnyOfType> anyOfList = target.getAnyOf(); + if (anyOfList == null) { + return; + } + + // Set PolicyAdapter OnapNameField, riskType, riskLevel, guard, ttlDate from match attributes + setPolicyAdapterMatchAttributes(policyAdapter, anyOfList); + } + } + + private void setPolicyAdapterMatchAttributes(PolicyRestAdapter policyAdapter, List<AnyOfType> anyOfList) { + anyOfList.stream() + //Extract nonNull list of AllOfType objs from each AnyOfType obj + .map(AnyOfType::getAllOf).filter(Objects::nonNull) + .forEach(allOfList -> + //Extract nonNull list of MatchType objs from each AllOFType obj + allOfList.stream().map(AllOfType::getMatch).filter(Objects::nonNull) + .flatMap(Collection::stream) + .forEach(match -> { + // Under the match we have attribute value and + // attributeDesignator. So,finally down to the actual attribute. + AttributeValueType attributeValue = match.getAttributeValue(); + String value = (String) attributeValue.getContent().get(0); + AttributeDesignatorType designator = match.getAttributeDesignator(); + String attributeId = designator.getAttributeId(); + // First match in the target is OnapName, so set that value. + if ("ONAPName".equals(attributeId)) { + policyAdapter.setOnapName(value); + OnapName onapName = new OnapName(); + onapName.setOnapName(value); + policyAdapter.setOnapNameField(onapName); + } else if ("RiskType".equals(attributeId)) { + policyAdapter.setRiskType(value); + } else if ("RiskLevel".equals(attributeId)) { + policyAdapter.setRiskLevel(value); + } else if ("guard".equals(attributeId)) { + policyAdapter.setGuard(value); + } else if ("TTLDate".equals(attributeId) && !value.contains("NA")) { + PolicyController controller = new PolicyController(); + String newDate = controller.convertDate(value); + policyAdapter.setTtlDate(newDate); + } + })); + } + + private void setPolicyAdapterPolicyNameAndDescription(PolicyRestAdapter policyAdapter, PolicyType policy) { + policyAdapter.setOldPolicyFileName(policyAdapter.getPolicyName()); + String policyNameValue = policyAdapter.getPolicyName() + .substring(policyAdapter.getPolicyName().indexOf("Fault_") + 6); + policyAdapter.setPolicyName(policyNameValue); + String description; + try { + description = policy.getDescription().substring(0, policy.getDescription().indexOf("@CreatedBy:")); + } catch (Exception e) { + policyLogger.error( + "Error during collecting the description tag info for createClosedLoopFault " + policyNameValue, e); + description = policy.getDescription(); + } + policyAdapter.setPolicyDescription(description); + } + + private void setClosedLoopJSONFile(PolicyRestAdapter policyAdapter, PolicyEntity entity) { + ObjectMapper mapper = new ObjectMapper(); + try { + ClosedLoopFaultBody closedLoopBody = mapper + .readValue(entity.getConfigurationData().getConfigBody(), ClosedLoopFaultBody.class); + if ("ACTIVE".equalsIgnoreCase(closedLoopBody.getClosedLoopPolicyStatus())) { + closedLoopBody.setClosedLoopPolicyStatus("Active"); + } else { + closedLoopBody.setClosedLoopPolicyStatus("InActive"); + } + policyAdapter.setJsonBodyData(closedLoopBody); + if (closedLoopBody.getTrapMaxAge() != null) { + policyAdapter.setTrapMaxAge(closedLoopBody.getTrapMaxAge().toString()); + } + if (closedLoopBody.getTriggerTimeWindowUsedForUI() != null) { + policyAdapter.setClearTimeOut(closedLoopBody.getTriggerTimeWindowUsedForUI().toString()); + } + if (closedLoopBody.getVerificationTimeWindowUsedForUI() != null) { + policyAdapter + .setVerificationclearTimeOut(closedLoopBody.getVerificationTimeWindowUsedForUI().toString()); + } + } catch (Exception e) { + policyLogger.error("Exception Occured" + e); + } + } } -class ClosedLoopGridJSONData{ - - private String clearTimeOut; - private String trapMaxAge; - private String verificationclearTimeOut; - private List<Object> connecttriggerSignatures; - private List<Object> connectVerificationSignatures; - - public String getClearTimeOut() { - return clearTimeOut; - } - public void setClearTimeOut(String clearTimeOut) { - this.clearTimeOut = clearTimeOut; - } - public String getTrapMaxAge() { - return trapMaxAge; - } - public void setTrapMaxAge(String trapMaxAge) { - this.trapMaxAge = trapMaxAge; - } - public String getVerificationclearTimeOut() { - return verificationclearTimeOut; - } - public void setVerificationclearTimeOut(String verificationclearTimeOut) { - this.verificationclearTimeOut = verificationclearTimeOut; - } - - - public List<Object> getConnecttriggerSignatures() { - return connecttriggerSignatures; - } - public void setConnecttriggerSignatures(List<Object> connecttriggerSignatures) { - this.connecttriggerSignatures = connecttriggerSignatures; - } - public List<Object> getConnectVerificationSignatures() { - return connectVerificationSignatures; - } - public void setConnectVerificationSignatures(List<Object> connectVerificationSignatures) { - this.connectVerificationSignatures = connectVerificationSignatures; - } -}
\ No newline at end of file +class ClosedLoopGridJSONData { + + private String clearTimeOut; + private String trapMaxAge; + private String verificationclearTimeOut; + private List<Object> connecttriggerSignatures; + private List<Object> connectVerificationSignatures; + + public String getClearTimeOut() { + return clearTimeOut; + } + + public void setClearTimeOut(String clearTimeOut) { + this.clearTimeOut = clearTimeOut; + } + + public String getTrapMaxAge() { + return trapMaxAge; + } + + public void setTrapMaxAge(String trapMaxAge) { + this.trapMaxAge = trapMaxAge; + } + + public String getVerificationclearTimeOut() { + return verificationclearTimeOut; + } + + public void setVerificationclearTimeOut(String verificationclearTimeOut) { + this.verificationclearTimeOut = verificationclearTimeOut; + } + + + public List<Object> getConnecttriggerSignatures() { + return connecttriggerSignatures; + } + + public void setConnecttriggerSignatures(List<Object> connecttriggerSignatures) { + this.connecttriggerSignatures = connecttriggerSignatures; + } + + public List<Object> getConnectVerificationSignatures() { + return connectVerificationSignatures; + } + + public void setConnectVerificationSignatures(List<Object> connectVerificationSignatures) { + this.connectVerificationSignatures = connectVerificationSignatures; + } +} diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateClosedLoopPMController.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateClosedLoopPMController.java index 392adf039..d2b04e024 100644 --- a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateClosedLoopPMController.java +++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateClosedLoopPMController.java @@ -3,13 +3,14 @@ * ONAP Policy Engine * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2019 Bell Canada * ================================================================================ * 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. @@ -20,12 +21,11 @@ package org.onap.policy.controller; - import java.io.IOException; -import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; +import java.util.Objects; import javax.json.JsonArray; import javax.json.JsonObject; @@ -42,152 +42,145 @@ import oasis.names.tc.xacml._3_0.core.schema.wd_17.AllOfType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.AnyOfType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeDesignatorType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeValueType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.MatchType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType; -public class CreateClosedLoopPMController{ - - private static final Logger LOGGER = FlexLogger.getLogger(CreateClosedLoopPMController.class); - - protected PolicyRestAdapter policyAdapter = null; - - public void prePopulateClosedLoopPMPolicyData(PolicyRestAdapter policyAdapter, PolicyEntity entity) { - if (policyAdapter.getPolicyData() instanceof PolicyType) { - Object policyData = policyAdapter.getPolicyData(); - PolicyType policy = (PolicyType) policyData; - policyAdapter.setOldPolicyFileName(policyAdapter.getPolicyName()); - String policyNameValue = policyAdapter.getPolicyName().substring(policyAdapter.getPolicyName().indexOf("PM_") +3); - policyAdapter.setPolicyName(policyNameValue); - String description = ""; - try{ - description = policy.getDescription().substring(0, policy.getDescription().indexOf("@CreatedBy:")); - }catch(Exception e){ - LOGGER.info("General error" , e); - description = policy.getDescription(); - } - policyAdapter.setPolicyDescription(description); - // Get the target data under policy. - TargetType target = policy.getTarget(); - if (target != null) { - // Under target we have AnyOFType - List<AnyOfType> anyOfList = target.getAnyOf(); - if (anyOfList != null) { - Iterator<AnyOfType> iterAnyOf = anyOfList.iterator(); - while (iterAnyOf.hasNext()) { - AnyOfType anyOf = iterAnyOf.next(); - // Under AnyOFType we have AllOFType - List<AllOfType> allOfList = anyOf.getAllOf(); - if (allOfList != null) { - Iterator<AllOfType> iterAllOf = allOfList.iterator(); - while (iterAllOf.hasNext()) { - AllOfType allOf = iterAllOf.next(); - // Under AllOFType we have Match - List<MatchType> matchList = allOf.getMatch(); - if (matchList != null) { - Iterator<MatchType> iterMatch = matchList.iterator(); - while (matchList.size()>1 && iterMatch.hasNext()) { - MatchType match = iterMatch.next(); - // - // Under the match we have attribute value and - // attributeDesignator. So,finally down to the actual attribute. - // - AttributeValueType attributeValue = match.getAttributeValue(); - String value = (String) attributeValue.getContent().get(0); - AttributeDesignatorType designator = match.getAttributeDesignator(); - String attributeId = designator.getAttributeId(); - - // First match in the target is OnapName, so set that value. - if ("ONAPName".equals(attributeId)) { - policyAdapter.setOnapName(value); - } - if ("RiskType".equals(attributeId)){ - policyAdapter.setRiskType(value); - } - if ("RiskLevel".equals(attributeId)){ - policyAdapter.setRiskLevel(value); - } - if ("guard".equals(attributeId)){ - policyAdapter.setGuard(value); - } - if ("TTLDate".equals(attributeId) && !value.contains("NA")){ - PolicyController controller = new PolicyController(); - String newDate = controller.convertDate(value); - policyAdapter.setTtlDate(newDate); - } - if ("ServiceType".equals(attributeId)){ - LinkedHashMap<String, String> serviceTypePolicyName1 = new LinkedHashMap<>(); - String key = "serviceTypePolicyName"; - serviceTypePolicyName1.put(key, value); - policyAdapter.setServiceTypePolicyName(serviceTypePolicyName1); - LinkedHashMap<String, String> vertica = new LinkedHashMap<>(); - vertica.put("verticaMetrics", getVertica(value)); - policyAdapter.setVerticaMetrics(vertica); - LinkedHashMap<String, String> desc = new LinkedHashMap<>(); - desc.put("policyDescription", getDescription(value)); - policyAdapter.setDescription(desc); - LinkedHashMap<String, Object> attributes = new LinkedHashMap<>(); - attributes.put("attributes", getAttributes(value)); - policyAdapter.setAttributeFields(attributes); - } - } - } - } - } - } - } - } - readClosedLoopJSONFile(policyAdapter, entity); - } - } - - protected void readClosedLoopJSONFile(PolicyRestAdapter policyAdapter, PolicyEntity entity) { - ObjectMapper mapper = new ObjectMapper(); - try { - ClosedLoopPMBody closedLoopBody = mapper.readValue(entity.getConfigurationData().getConfigBody(), ClosedLoopPMBody.class); - policyAdapter.setJsonBodyData(closedLoopBody); - } catch (IOException e) { - LOGGER.error("Exception Occured"+e); - } - } - - //get vertica metrics data from the table - private String getVertica(String policyName){ - String verticas = null; - JsonArray data = PolicyManagerServlet.getPolicyNames(); - for(int i=0 ; i< data.size(); i++){ - if(policyName.equals(data.getJsonObject(i).getJsonString("serviceTypePolicyName").getString())){ - verticas = data.getJsonObject(i).getJsonString("verticaMetrics").getString(); - return verticas; - } - } - return verticas; - } - - //get policy description from the table - private String getDescription(String policyName){ - String description = null; - JsonArray data = PolicyManagerServlet.getPolicyNames(); - for(int i=0 ; i< data.size(); i++){ - if(policyName.equals(data.getJsonObject(i).getJsonString("serviceTypePolicyName").getString())){ - description = data.getJsonObject(i).getJsonString("policyDescription").getString(); - return description; - } - } - return description; - } - - //get Attributes - private JsonObject getAttributes(String policyName){ - JsonObject attributes = null; - JsonArray data = PolicyManagerServlet.getPolicyNames(); - for(int i=0 ; i< data.size(); i++){ - if(policyName.equals(data.getJsonObject(i).getJsonString("serviceTypePolicyName").getString())){ - attributes = data.getJsonObject(i).getJsonObject("attributes"); - return attributes; - } - } - return attributes; - } +public class CreateClosedLoopPMController { + + private static final Logger LOGGER = FlexLogger.getLogger(CreateClosedLoopPMController.class); + private static final String KEY_SERVICE_TYPE_POLICY_NAME = "serviceTypePolicyName"; + + protected PolicyRestAdapter policyAdapter = null; + + public void prePopulateClosedLoopPMPolicyData(PolicyRestAdapter policyAdapter, PolicyEntity entity) { + if (policyAdapter.getPolicyData() instanceof PolicyType) { + Object policyData = policyAdapter.getPolicyData(); + PolicyType policy = (PolicyType) policyData; + + // Set oldPolicyFileName to PolicyAdapter + policyAdapter.setOldPolicyFileName(policyAdapter.getPolicyName()); + + // Set policyNameValue and description to PolicyAdapter + setPolicyAdapterNameValueAndDescription(policyAdapter, policy); + + // Set PolicyAdapter JsonBodyData + setClosedLoopJSONFile(policyAdapter, entity); + + // Get the target data under policy. + TargetType target = policy.getTarget(); + if (target == null) { + return; + } + // Under target we have AnyOFType + List<AnyOfType> anyOfList = target.getAnyOf(); + if (anyOfList == null) { + return; + } + // Set PolicyAdapter OnapNameField, riskType, riskLevel, guard, ttlDate, ServiceType from match attributes + setPolicyAdapterMatchAttributes(policyAdapter, anyOfList); + } + } + + private void setPolicyAdapterNameValueAndDescription(PolicyRestAdapter policyAdapter, PolicyType policy) { + String policyNameValue = policyAdapter.getPolicyName() + .substring(policyAdapter.getPolicyName().indexOf("PM_") + 3); + policyAdapter.setPolicyName(policyNameValue); + String description; + try { + description = policy.getDescription().substring(0, policy.getDescription().indexOf("@CreatedBy:")); + } catch (Exception e) { + LOGGER.info("General error", e); + description = policy.getDescription(); + } + policyAdapter.setPolicyDescription(description); + } + + private void setClosedLoopJSONFile(PolicyRestAdapter policyAdapter, PolicyEntity entity) { + ObjectMapper mapper = new ObjectMapper(); + try { + ClosedLoopPMBody closedLoopBody = mapper + .readValue(entity.getConfigurationData().getConfigBody(), ClosedLoopPMBody.class); + policyAdapter.setJsonBodyData(closedLoopBody); + } catch (IOException e) { + LOGGER.error("Exception Occured" + e); + } + } + + private void setPolicyAdapterMatchAttributes(final PolicyRestAdapter policyAdapter, + final List<AnyOfType> anyOfList) { + anyOfList.stream() + //Extract nonNull list of AllOfType objs from each AnyOfType obj + .map(AnyOfType::getAllOf).filter(Objects::nonNull) + .forEach(allOfList -> + //Extract nonNull list of MatchType objs from each AllOFType obj + allOfList.stream().map(AllOfType::getMatch).filter(Objects::nonNull) + .forEach(matchList -> matchList.forEach(match -> { + // Under the match we have attribute value and + // attributeDesignator. So,finally down to the actual attribute. + AttributeValueType attributeValue = match.getAttributeValue(); + String value = (String) attributeValue.getContent().get(0); + AttributeDesignatorType designator = match.getAttributeDesignator(); + String attributeId = designator.getAttributeId(); + // First match in the target is OnapName, so set that value. + if ("ONAPName".equals(attributeId)) { + policyAdapter.setOnapName(value); + } else if ("RiskType".equals(attributeId)) { + policyAdapter.setRiskType(value); + } else if ("RiskLevel".equals(attributeId)) { + policyAdapter.setRiskLevel(value); + } else if ("guard".equals(attributeId)) { + policyAdapter.setGuard(value); + } else if ("TTLDate".equals(attributeId) && !value.contains("NA")) { + PolicyController controller = new PolicyController(); + String newDate = controller.convertDate(value); + policyAdapter.setTtlDate(newDate); + } else if ("ServiceType".equals(attributeId)) { + LinkedHashMap<String, String> serviceTypePolicyName1 = new LinkedHashMap<>(); + serviceTypePolicyName1.put(KEY_SERVICE_TYPE_POLICY_NAME, value); + policyAdapter.setServiceTypePolicyName(serviceTypePolicyName1); + LinkedHashMap<String, String> vertica = new LinkedHashMap<>(); + vertica.put("verticaMetrics", getVertica(value)); + policyAdapter.setVerticaMetrics(vertica); + LinkedHashMap<String, String> desc = new LinkedHashMap<>(); + desc.put("policyDescription", getDescription(value)); + policyAdapter.setDescription(desc); + LinkedHashMap<String, Object> attributes = new LinkedHashMap<>(); + attributes.put("attributes", getAttributes(value)); + policyAdapter.setAttributeFields(attributes); + } + }))); + } + + //get vertica metrics data from the table + private String getVertica(String policyName) { + JsonArray data = PolicyManagerServlet.getPolicyNames(); + for (int i = 0; i < data.size(); i++) { + if (policyName.equals(data.getJsonObject(i).getJsonString(KEY_SERVICE_TYPE_POLICY_NAME).getString())) { + return data.getJsonObject(i).getJsonString("verticaMetrics").getString(); + } + } + return null; + } + + //get policy description from the table + private String getDescription(String policyName) { + JsonArray data = PolicyManagerServlet.getPolicyNames(); + for (int i = 0; i < data.size(); i++) { + if (policyName.equals(data.getJsonObject(i).getJsonString(KEY_SERVICE_TYPE_POLICY_NAME).getString())) { + return data.getJsonObject(i).getJsonString("policyDescription").getString(); + } + } + return null; + } + //get Attributes + private JsonObject getAttributes(String policyName) { + JsonArray data = PolicyManagerServlet.getPolicyNames(); + for (int i = 0; i < data.size(); i++) { + if (policyName.equals(data.getJsonObject(i).getJsonString(KEY_SERVICE_TYPE_POLICY_NAME).getString())) { + return data.getJsonObject(i).getJsonObject("attributes"); + } + } + return null; + } } diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateDcaeMicroServiceController.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateDcaeMicroServiceController.java index 67a94474f..a8df74add 100644 --- a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateDcaeMicroServiceController.java +++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateDcaeMicroServiceController.java @@ -27,6 +27,7 @@ import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectWriter; +import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.JsonNodeFactory; import com.fasterxml.jackson.databind.node.ObjectNode; import com.google.gson.Gson; @@ -53,7 +54,9 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; import java.util.TreeMap; +import java.util.TreeSet; import java.util.UUID; +import java.util.regex.Pattern; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import javax.json.Json; @@ -124,7 +127,8 @@ public class CreateDcaeMicroServiceController extends RestrictedBaseController { private LinkedHashMap<String, MSAttributeObject> classMap = new LinkedHashMap<>(); String referenceAttributes; String attributeString; - Set<String> allManyTrueKeys = new HashSet<>(); + Set<String> allManyTrueKeys = null; + private Map<String, String> sigRules = null; public static final String DATATYPE = "data_types.policy.data."; public static final String PROPERTIES = ".properties."; @@ -136,7 +140,8 @@ public class CreateDcaeMicroServiceController extends RestrictedBaseController { public static final String REQUIRED = ".required"; public static final String MATCHABLE = ".matchable"; public static final String MANYFALSE = ":MANY-false"; - + private static final Pattern PATTERN = Pattern.compile("[A][0-9]"); + private static final String POLICYJSON = "policyJSON"; @Autowired private CreateDcaeMicroServiceController(CommonClassDao commonClassDao) { @@ -157,12 +162,12 @@ public class CreateDcaeMicroServiceController extends RestrictedBaseController { String jsonContent = null; try { - LOGGER.info("policyJSON :" + (root.get("policyJSON")).toString()); + LOGGER.info("policyJSON :" + (root.get(POLICYJSON)).toString()); - String tempJson = root.get("policyJSON").toString(); - JSONObject policyJSON = new JSONObject(root.get("policyJSON").toString()); + String tempJson = root.get(POLICYJSON).toString(); + JSONObject policyJSON = new JSONObject(root.get(POLICYJSON).toString()); if (policyJSON != null) { - saveOriginalJsonObject(policyJSON, jsonStringValues); + tempJson = saveOriginalJsonObject(policyJSON, jsonStringValues).toString(); } // ---replace empty value with the value below before calling decodeContent method. String dummyValue = "*empty-value*" + UUID.randomUUID().toString(); @@ -178,9 +183,9 @@ public class CreateDcaeMicroServiceController extends RestrictedBaseController { } // ----Here is the final step to reset the original value back. - if(policyData.getJsonBody() != null && jsonStringValues.size() > 0){ + if (policyData.getJsonBody() != null && jsonStringValues.size() > 0) { String contentBody = policyData.getJsonBody(); - JSONObject contentJson= new JSONObject(contentBody); + JSONObject contentJson = new JSONObject(contentBody); JSONObject content = contentJson.getJSONObject("content"); content = setOriginalJsonObject(content, jsonStringValues); contentJson.put("content", content); @@ -190,52 +195,52 @@ public class CreateDcaeMicroServiceController extends RestrictedBaseController { return policyData; } - /** - * To save the original JSON string from the root. - * - * @param jsonObj holds the value from the root. - * @param jsonStringValues value get saved. - */ - private void saveOriginalJsonObject(JSONObject jsonObj, Map<String, String> jsonStringValues) { + private JSONObject saveOriginalJsonObject(JSONObject jsonObj, Map<String, String> jsonStringValues) { for (Object key : jsonObj.keySet()) { String keyStr = (String) key; Object keyvalue = jsonObj.get(keyStr); if (keyvalue.toString().contains("{\\\"") || keyvalue.toString().contains("\\\"")) { jsonStringValues.put(keyStr, keyvalue.toString()); + // --- set default value + jsonObj.put(keyStr, "JSON_STRING"); } // for nested objects iteration if required if (keyvalue instanceof JSONObject) { saveOriginalJsonObject((JSONObject) keyvalue, jsonStringValues); + // --- set default value + jsonObj.put(keyStr, "JSON_STRING"); + } + + if (keyvalue instanceof JSONArray) { + for (int i = 0; i < ((JSONArray) keyvalue).length(); i++) { + JSONObject temp = ((JSONArray) keyvalue).getJSONObject(i); + saveOriginalJsonObject(temp, jsonStringValues); + } } } + + return jsonObj; } - /** - * To reset the original JSON string back associated to its key. - * - * @param jsonObj holds the original json. - * @param jsonStringValues value to be reset. - * @return - */ - private JSONObject setOriginalJsonObject(JSONObject jsonObj , Map<String, String> jsonStringValues) { + private JSONObject setOriginalJsonObject(JSONObject jsonObj, Map<String, String> jsonStringValues) { for (Object key : jsonObj.keySet()) { - String keyStr = (String)key; + String keyStr = (String) key; Object keyvalue = jsonObj.get(keyStr); String originalValue = getOriginalValue(keyStr); if (originalValue != null) { jsonObj.put(keyStr, originalValue); } - //for nested objects iteration if required + // for nested objects iteration if required if (keyvalue instanceof JSONObject) { - setOriginalJsonObject((JSONObject)keyvalue, jsonStringValues); + setOriginalJsonObject((JSONObject) keyvalue, jsonStringValues); jsonObj.put(keyStr, originalValue); } if (keyvalue instanceof JSONArray) { - for (int i = 0; i < ((JSONArray)keyvalue).length(); i++) { - JSONObject temp = ((JSONArray)keyvalue).getJSONObject(i); + for (int i = 0; i < ((JSONArray) keyvalue).length(); i++) { + JSONObject temp = ((JSONArray) keyvalue).getJSONObject(i); setOriginalJsonObject(temp, jsonStringValues); } } @@ -248,7 +253,8 @@ public class CreateDcaeMicroServiceController extends RestrictedBaseController { return (GroupPolicyScopeList) commonClassDao.getEntityItem(GroupPolicyScopeList.class, "name", policyScope); } - private PolicyRestAdapter constructJson(PolicyRestAdapter policyAdapter, String jsonContent, String dummyValue) { + private PolicyRestAdapter constructJson(PolicyRestAdapter policyAdapter, String jsonContent, String dummyValue) + throws IOException { ObjectWriter om = new ObjectMapper().writer(); String json = ""; DCAEMicroServiceObject microServiceObject = new DCAEMicroServiceObject(); @@ -297,7 +303,23 @@ public class CreateDcaeMicroServiceController extends RestrictedBaseController { microServiceObject.setGuard(policyAdapter.getGuard()); } microServiceObject.setContent(jsonContent); - + String modelName = policyAdapter.getServiceType(); + String versionName = policyAdapter.getVersion(); + List<Object> triggerData = commonClassDao.getDataById(MicroServiceModels.class, "modelName:version", + modelName + ":" + versionName); + MicroServiceModels model = null; + boolean ruleCheck = false; + boolean SymptomRuleCheck = false; + if (!triggerData.isEmpty()) { + model = (MicroServiceModels) triggerData.get(0); + if (model.getRuleFormation() != null) { + microServiceObject.setUiContent(jsonContent); + ruleCheck = true; + if (model.getRuleFormation().contains("@")) { + SymptomRuleCheck = true; + } + } + } try { json = om.writeValueAsString(microServiceObject); } catch (JsonProcessingException e) { @@ -311,10 +333,159 @@ public class CreateDcaeMicroServiceController extends RestrictedBaseController { StringUtils.replaceEach(cleanJson, new String[] {"\"" + dummyValue + "\""}, new String[] {"\"\""}); LOGGER.info("tempJson: " + tempJson); cleanJson = removeNullAttributes(tempJson); + if (cleanJson.contains("\\")) { + cleanJson = StringUtils.replaceEach(cleanJson, new String[] {"\\"}, new String[] {""}); + } policyAdapter.setJsonBody(cleanJson); + // for Triggers + ObjectMapper mapper = new ObjectMapper(); + JsonNode tempJsonNode = mapper.readTree(cleanJson); + if (ruleCheck) { + // JsonNode tempJsonNode = mapper.readTree(cleanJson); + ObjectNode finalJson = (ObjectNode) tempJsonNode; + JsonNode object = tempJsonNode.get("content"); + String primaryKey1 = model.getRuleFormation(); + String[] primaryKeyForSignatures = primaryKey1.split("@"); + for (String primaryKeyForSignature : primaryKeyForSignatures) { + String primarykeyAlarm = primaryKeyForSignature.substring(0, primaryKeyForSignature.indexOf('.')); + JsonNode triggerSig = object.get(primarykeyAlarm); + sigRules = new HashMap<>(); + String parseKey = primaryKeyForSignature.substring(primaryKeyForSignature.indexOf('.') + 1); + StringBuilder sb = null; + if (triggerSig instanceof ArrayNode) { + for (int i = 0; i < triggerSig.size(); i++) { + sb = new StringBuilder(); + parseData(triggerSig.get(i), parseKey); + sb.append("("); + List<?> keyList = new ArrayList<>(sigRules.keySet()); + for (int j = keyList.size() - 1; j >= 0; j--) { + String key = (String) keyList.get(j); + String jsonNode = sigRules.get(key); + constructRule(sb, jsonNode, sigRules); + } + sb.append(")").toString(); + putRuletoJson(tempJsonNode, i, sb, parseKey, primarykeyAlarm); + sigRules = new HashMap<>(); + } + } else { + sb = new StringBuilder(); + parseData(triggerSig, parseKey); + } + } + policyAdapter.setJsonBody(finalJson.toString()); + } return policyAdapter; } + private JsonNode putRuletoJson(JsonNode tmpJsonNode, int item, StringBuilder sb, String parseKey, + String primaryKey) { + JsonNode tmp = tmpJsonNode; + ObjectNode objectNode = (ObjectNode) tmp; + JsonNode jsonNode = tmpJsonNode.get("content").get(primaryKey).get(item); + JsonNode tempRuleJsonNode = tmpJsonNode.get("content").get(primaryKey).get(item); + String[] tempSt = parseKey.split("\\."); + for (String value : tempSt) { + if (value.contains("[")) { + if (tempRuleJsonNode instanceof ArrayNode) { + JsonNode tempRuleNode = tempRuleJsonNode.get(item); + ((ArrayNode) tempRuleJsonNode).removeAll(); + ((ArrayNode) tempRuleJsonNode).add(tempRuleNode); + objectNode = (ObjectNode) tempRuleJsonNode.get(item); + } + String key = value.substring(0, value.indexOf('[')); + objectNode.remove(key); + objectNode.put(key, sb.toString()); + return tmp; + } else { + jsonNode = jsonNode.get(value); + if (jsonNode instanceof ArrayNode) { + tempRuleJsonNode = jsonNode; + jsonNode = jsonNode.get(item); + } + } + } + return tmp; + } + + public boolean checkPattern(String patternString) { + return PATTERN.matcher(patternString).find(); + } + + /** + * Construct rule. + * + * @param sb the sb + * @param jsonNode the json node + * @param sigRules2 the sig rules 2 + */ + public void constructRule(StringBuilder sb, String jsonNode, Map<String, String> sigRules2) { + int count = 0; + String cleanJsonNode = jsonNode.replace("\"\"", " "); + cleanJsonNode = cleanJsonNode.replaceAll("\"", ""); + cleanJsonNode = cleanJsonNode.replaceAll("\\(", ""); + cleanJsonNode = cleanJsonNode.replaceAll("\\)", ""); + boolean flag = false; + if (cleanJsonNode.contains("OR")) { + sb.append("("); + flag = true; + } + for (String rowValue : cleanJsonNode.split(" ")) { + if (checkPattern(rowValue)) { + String value = sigRules2.get(rowValue); + LOGGER.info(" Value is:" + value); + constructRule(sb, value, sigRules2); + } else { + if ((count == 0) && (!("AND").equals(rowValue)) && (!("OR").equals(rowValue))) { + sb.append("("); + } + count++; + LOGGER.info(" " + rowValue + " "); + sb.append(" " + rowValue + " "); + if (count % 3 == 0) { + sb.append(")"); + count = 0; + } + } + } + if (flag) { + sb.append(")"); + } + } + + /** + * Parses the data. + * + * @param jsonNode the json node + * @param string the string + */ + public void parseData(JsonNode jsonNode, String string) { + if (string.contains(".")) { + String firstIndex = string.substring(0, string.indexOf('.')); + JsonNode signtures = jsonNode.get(firstIndex); + String subIndex = string.substring(firstIndex.length() + 1); + if (signtures instanceof ArrayNode) { + for (int i = 0; i < signtures.size(); i++) { + parseData(signtures.get(i), subIndex); + } + } else { + parseData(signtures, subIndex); + } + } else { + if (string.contains("[")) { + String ruleIndex = string.substring(0, string.indexOf('[')); + String[] keys = string.substring(string.indexOf('[') + 1, string.lastIndexOf(']')).split(","); + String key = "A" + Integer.valueOf(sigRules.size() + 1); + JsonNode node = jsonNode.get(ruleIndex); + StringBuilder sb = new StringBuilder("("); + for (int i = 0; i < keys.length; i++) { + sb.append(node.get(keys[i].trim())); + } + sb.append(")"); + sigRules.put(key, sb.toString()); + } + } + } + public String removeNullAttributes(String cleanJson) { ObjectMapper mapper = new ObjectMapper(); @@ -658,6 +829,8 @@ public class CreateDcaeMicroServiceController extends RestrictedBaseController { method = {org.springframework.web.bind.annotation.RequestMethod.POST}) public ModelAndView getDCAEMSTemplateData(HttpServletRequest request, HttpServletResponse response) throws IOException { + // TreeSet is used to ensure that individual items appear before their containing collection. + allManyTrueKeys = new TreeSet<>(); ObjectMapper mapper = new ObjectMapper(); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); JsonNode root = mapper.readTree(request.getReader()); @@ -693,7 +866,7 @@ public class CreateDcaeMicroServiceController extends RestrictedBaseController { JSONObject json = new JSONObject(returnModel.getSub_attributes()); getAllKeys(json); allkeys = allManyTrueKeys; - allManyTrueKeys = new HashSet<>(); + allManyTrueKeys = new TreeSet<>(); LOGGER.info("allkeys : " + allkeys); } @@ -704,9 +877,9 @@ public class CreateDcaeMicroServiceController extends RestrictedBaseController { } LOGGER.info("dataOrderInfo : " + dataOrderInfo); - String allManyTrueKeys = ""; + String allMnyTrueKeys = ""; if (allkeys != null) { - allManyTrueKeys = allkeys.toString(); + allMnyTrueKeys = allkeys.toString(); } String jsonModel = createMicroSeriveJson(returnModel, allkeys); @@ -719,6 +892,7 @@ public class CreateDcaeMicroServiceController extends RestrictedBaseController { while (iter.hasNext()) { // Convert to array values for MANY-true keys finalJsonObject = convertToArrayElement(jsonObject, iter.next()); + jsonObject = finalJsonObject; } } @@ -735,6 +909,7 @@ public class CreateDcaeMicroServiceController extends RestrictedBaseController { LOGGER.info(s); // convert to array element for MANY-true properties finalJsonObject = convertToArrayElement(jsonObj, s.trim()); + jsonObj = finalJsonObject; } if (finalJsonObject != null) { @@ -752,12 +927,12 @@ public class CreateDcaeMicroServiceController extends RestrictedBaseController { JSONObject j = null; - if ("".equals(allManyTrueKeys)) { + if ("".equals(allMnyTrueKeys)) { j = new JSONObject("{dcaeModelData: " + responseString + ",jsonValue: " + jsonModel + ",dataOrderInfo:" + dataOrderInfo + ",headDefautlsData:" + headDefautlsData + "}"); } else { j = new JSONObject("{dcaeModelData: " + responseString + ",jsonValue: " + jsonModel + ",allManyTrueKeys: " - + allManyTrueKeys + ",dataOrderInfo:" + dataOrderInfo + ",headDefautlsData:" + headDefautlsData + + allMnyTrueKeys + ",dataOrderInfo:" + dataOrderInfo + ",headDefautlsData:" + headDefautlsData + "}"); } list.add(j); @@ -868,11 +1043,11 @@ public class CreateDcaeMicroServiceController extends RestrictedBaseController { } - public static JSONObject convertToArrayElement(JSONObject json, String keyValue) { + public JSONObject convertToArrayElement(JSONObject json, String keyValue) { return convertToArrayElement(json, new HashSet<>(), keyValue); } - private static JSONObject convertToArrayElement(JSONObject json, Set<String> keys, String keyValue) { + private JSONObject convertToArrayElement(JSONObject json, Set<String> keys, String keyValue) { for (String key : json.keySet()) { Object obj = json.get(key); if (key.equals(keyValue.trim())) { @@ -890,15 +1065,20 @@ public class CreateDcaeMicroServiceController extends RestrictedBaseController { return json; } - if (obj instanceof JSONObject) + if (obj instanceof JSONObject) { convertToArrayElement(json.getJSONObject(key), keyValue); + } + + if (obj instanceof JSONArray) { + convertToArrayElement(json.getJSONArray(key).getJSONObject(0), keyValue); + } } return json; } // call this method to get all MANY-true properties - public static Set<String> getManyTrueProperties(String referAttributes) { + public Set<String> getManyTrueProperties(String referAttributes) { LOGGER.info("referAttributes : " + referAttributes); Set<String> manyTrueProperties = new HashSet<>(); @@ -1125,7 +1305,14 @@ public class CreateDcaeMicroServiceController extends RestrictedBaseController { } } - public static Map<String, String> convert(String str, String split) { + /** + * Convert. + * + * @param str the str + * @param split the split + * @return the map + */ + public Map<String, String> convert(String str, String split) { Map<String, String> map = new HashMap<>(); for (final String entry : str.split(split)) { String[] parts = entry.split("="); @@ -1135,8 +1322,14 @@ public class CreateDcaeMicroServiceController extends RestrictedBaseController { } + /** + * Read file. + * + * @param policyAdapter the policy adapter + * @param entity the entity + */ @SuppressWarnings("unchecked") - private void readFile(PolicyRestAdapter policyAdapter, PolicyEntity entity) { + public void readFile(PolicyRestAdapter policyAdapter, PolicyEntity entity) { String policyScopeName = null; ObjectMapper mapper = new ObjectMapper(); try { @@ -1153,9 +1346,14 @@ public class CreateDcaeMicroServiceController extends RestrictedBaseController { } else { policyAdapter.setServiceType(msBody.getService()); } - if (msBody.getContent() != null) { + // + LinkedHashMap<String, ?> content = (LinkedHashMap<String, ?>) msBody.getUiContent(); + if (content == null) { + content = (LinkedHashMap<String, ?>) msBody.getContent(); + } + if (content != null) { LinkedHashMap<String, Object> data = new LinkedHashMap<>(); - LinkedHashMap<String, ?> map = (LinkedHashMap<String, ?>) msBody.getContent(); + LinkedHashMap<String, ?> map = content; readRecursivlyJSONContent(map, data); policyAdapter.setRuleData(data); } @@ -1167,7 +1365,7 @@ public class CreateDcaeMicroServiceController extends RestrictedBaseController { } @SuppressWarnings({"rawtypes", "unchecked"}) - public void readRecursivlyJSONContent(LinkedHashMap<String, ?> map, LinkedHashMap<String, Object> data) { + public void readRecursivlyJSONContent(Map<String, ?> map, Map<String, Object> data) { for (Iterator iterator = map.keySet().iterator(); iterator.hasNext();) { Object key = iterator.next(); Object value = map.get(key); @@ -1306,13 +1504,12 @@ public class CreateDcaeMicroServiceController extends RestrictedBaseController { } List<File> fileList = new ArrayList<>(); - MSModelUtils msMLUtils = new MSModelUtils(); + MSModelUtils msMLUtils = new MSModelUtils(commonClassDao); this.directory = "model"; if (zip) { extractFolder(this.newFile); fileList = listModelFiles(this.directory); - } else if (yml == true) { - + } else if (yml) { errorMsg = msMLUtils.parseTosca(this.newFile); if (errorMsg != null) { PrintWriter out = response.getWriter(); @@ -1393,6 +1590,7 @@ public class CreateDcaeMicroServiceController extends RestrictedBaseController { j.put("modelDatas", mapper.writeValueAsString(classMap)); j.put("modelType", modelType); j.put("dataOrderInfo", msMLUtils.getDataOrderInfo()); + j.put("ruleFormation", msMLUtils.getJsonRuleFormation()); out.write(j.toString()); } @@ -1524,6 +1722,14 @@ public class CreateDcaeMicroServiceController extends RestrictedBaseController { return arrayTextList; } + public Map<String, String> getSigRules() { + return sigRules; + } + + public void setSigRules(Map<String, String> sigRules) { + this.sigRules = sigRules; + } + } @@ -1542,6 +1748,7 @@ class DCAEMicroServiceObject { private String riskType; private String riskLevel; private String guard = null; + private Object uiContent; public String getGuard() { return guard; @@ -1658,4 +1865,12 @@ class DCAEMicroServiceObject { this.templateVersion = templateVersion; } + public Object getUiContent() { + return uiContent; + } + + public void setUiContent(Object uiContent) { + this.uiContent = uiContent; + } + } diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateOptimizationController.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateOptimizationController.java index e3ce8780b..05fddb50d 100644 --- a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateOptimizationController.java +++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateOptimizationController.java @@ -2,14 +2,14 @@ * ============LICENSE_START======================================================= * ONAP Policy Engine * ================================================================================ - * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2018-2019 AT&T Intellectual Property. 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. @@ -21,6 +21,13 @@ package org.onap.policy.controller; +import com.att.research.xacml.util.XACMLProperties; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.ObjectWriter; +import com.google.gson.Gson; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; @@ -42,10 +49,15 @@ import java.util.Set; import java.util.UUID; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; - import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; - +import oasis.names.tc.xacml._3_0.core.schema.wd_17.AllOfType; +import oasis.names.tc.xacml._3_0.core.schema.wd_17.AnyOfType; +import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeDesignatorType; +import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeValueType; +import oasis.names.tc.xacml._3_0.core.schema.wd_17.MatchType; +import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType; +import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType; import org.apache.commons.compress.utils.IOUtils; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; @@ -59,9 +71,9 @@ import org.onap.policy.common.logging.flexlogger.Logger; import org.onap.policy.rest.XACMLRestProperties; import org.onap.policy.rest.adapter.PolicyRestAdapter; import org.onap.policy.rest.dao.CommonClassDao; +import org.onap.policy.rest.jpa.MicroserviceHeaderdeFaults; import org.onap.policy.rest.jpa.OptimizationModels; import org.onap.policy.rest.jpa.PolicyEntity; -import org.onap.policy.rest.jpa.MicroserviceHeaderdeFaults; import org.onap.policy.rest.util.MSAttributeObject; import org.onap.policy.rest.util.MSModelUtils; import org.onap.policy.rest.util.MSModelUtils.MODEL_TYPE; @@ -71,888 +83,913 @@ import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.att.research.xacml.util.XACMLProperties; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.ObjectWriter; -import com.google.gson.Gson; - -import oasis.names.tc.xacml._3_0.core.schema.wd_17.AllOfType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.AnyOfType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeDesignatorType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeValueType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.MatchType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType; - @Controller @RequestMapping("/") public class CreateOptimizationController extends RestrictedBaseController { - private static final Logger LOGGER = FlexLogger.getLogger(CreateOptimizationController.class); - private static CommonClassDao commonClassDao; - - public static CommonClassDao getCommonClassDao() { - return commonClassDao; - } - - private OptimizationModels newModel; - private String newFile; - private String directory; - private List<String> modelList = new ArrayList<>(); - private List<String> dirDependencyList = new ArrayList<>(); - private LinkedHashMap<String,MSAttributeObject > classMap = new LinkedHashMap<>(); - String referenceAttributes; - String attributeString; - Set<String> allManyTrueKeys= new HashSet <>(); - - public static final String DATATYPE = "data_types.policy.data."; - public static final String PROPERTIES=".properties."; - public static final String TYPE=".type"; - public static final String STRING="string"; - public static final String INTEGER="integer"; - public static final String LIST="list"; - public static final String DEFAULT=".default"; - public static final String REQUIRED=".required"; - public static final String MATCHABLE=".matchable"; - public static final String MANYFALSE=":MANY-false"; - public static final String MODEL = "model"; - public static final String MANY = "MANY-"; - public static final String UTF8 = "UTF-8"; - public static final String MODELNAME = "modelName"; - public static final String APPLICATIONJSON = "application / json"; - - - @Autowired - private CreateOptimizationController(CommonClassDao commonClassDao){ - setCommonClassDao(commonClassDao); - } - - public static void setCommonClassDao(CommonClassDao commonClassDao) { - CreateOptimizationController.commonClassDao = commonClassDao; - } - - public CreateOptimizationController(){ - // Empty Constructor - } - - protected PolicyRestAdapter policyAdapter = null; - private Map<String, String> attributesListRefMap = new HashMap<>(); - private Map<String, LinkedList<String>> arrayTextList = new HashMap<>(); - CreateDcaeMicroServiceController msController = new CreateDcaeMicroServiceController(); - - public PolicyRestAdapter setDataToPolicyRestAdapter(PolicyRestAdapter policyData, JsonNode root) { - String jsonContent = null; - try{ - LOGGER.info("policyJSON :" + (root.get("policyJSON")).toString()); - - String tempJson = root.get("policyJSON").toString(); - - //---replace empty value with the value below before calling decodeContent method. - String dummyValue = "*empty-value*" + UUID.randomUUID().toString(); - LOGGER.info("dummyValue:" + dummyValue); - tempJson = StringUtils.replaceEach(tempJson, new String[]{"\"\""}, new String[]{"\""+dummyValue+"\""}); - ObjectMapper mapper = new ObjectMapper(); - JsonNode tempJsonNode = mapper.readTree(tempJson); - jsonContent = msController.decodeContent(tempJsonNode).toString(); - constructJson(policyData, jsonContent, dummyValue); - }catch(Exception e){ - LOGGER.error("Error while decoding microservice content", e); - } - - return policyData; - } - - private PolicyRestAdapter constructJson(PolicyRestAdapter policyAdapter, String jsonContent, String dummyValue) { - ObjectWriter om = new ObjectMapper().writer(); - String json=""; - OptimizationObject optimizationObject = setOptimizationObjectValues(policyAdapter); - - optimizationObject.setContent(jsonContent); - - try { - json = om.writeValueAsString(optimizationObject); - } catch (JsonProcessingException e) { - LOGGER.error("Error writing out the object", e); - } - LOGGER.info("input json: " + json); - LOGGER.info("input jsonContent: " + jsonContent); - String cleanJson = msController.cleanUPJson(json); - - //--- reset empty value back after called cleanUPJson method and before calling removeNullAttributes - String tempJson = StringUtils.replaceEach(cleanJson, new String[]{"\""+dummyValue+"\""}, new String[]{"\"\""}); - LOGGER.info("tempJson: " + tempJson); - cleanJson = msController.removeNullAttributes(tempJson); - policyAdapter.setJsonBody(cleanJson); - return policyAdapter; - } - - @RequestMapping(value={"/policyController/getOptimizationTemplateData.htm"}, method={org.springframework.web.bind.annotation.RequestMethod.POST}) - public ModelAndView getOptimizationTemplateData(HttpServletRequest request, HttpServletResponse response) throws IOException{ - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - - String value = root.get("policyData").toString().replaceAll("^\"|\"$", ""); - String servicename = value.toString().split("-v")[0]; - String version = null; - if (value.toString().contains("-v")){ - version = value.toString().split("-v")[1]; - } - - OptimizationModels returnModel = getAttributeObject(servicename, version); - - MicroserviceHeaderdeFaults returnHeaderDefauls = getHeaderDefaultsObject(value); - JSONObject jsonHdDefaultObj = null; - if(returnHeaderDefauls != null){ - jsonHdDefaultObj = new JSONObject(); - jsonHdDefaultObj.put("onapName", returnHeaderDefauls.getOnapName()); - jsonHdDefaultObj.put("guard", returnHeaderDefauls.getGuard()); - jsonHdDefaultObj.put("riskLevel", returnHeaderDefauls.getRiskLevel()); - jsonHdDefaultObj.put("riskType", returnHeaderDefauls.getRiskType()); - jsonHdDefaultObj.put("priority", returnHeaderDefauls.getPriority()); - } - - String headDefautlsData = ""; - if(jsonHdDefaultObj != null){ - headDefautlsData = jsonHdDefaultObj.toString(); - LOGGER.info("returnHeaderDefauls headDefautlsData: " + headDefautlsData); - }else{ - headDefautlsData = "null"; - } - - //Get all keys with "MANY-true" defined in their value from subAttribute - Set<String> allkeys = null; - if(returnModel.getSubattributes() != null && !returnModel.getSubattributes().isEmpty()){ - JSONObject json = new JSONObject(returnModel.getSubattributes()); - getAllKeys(json); - allkeys = allManyTrueKeys; - allManyTrueKeys = new HashSet <>(); - LOGGER.info("allkeys : " + allkeys); - } - - //Get element order info - String dataOrderInfo = returnModel.getDataOrderInfo(); - if(dataOrderInfo != null && !dataOrderInfo.startsWith("\"")){ - dataOrderInfo = "\"" + dataOrderInfo + "\""; - } - - String nameOfTrueKeys = ""; - if(allkeys != null){ - nameOfTrueKeys = allkeys.toString(); - } - - String jsonModel = createOptimizationJson(returnModel); - - JSONObject jsonObject = new JSONObject(jsonModel); - - JSONObject finalJsonObject = null; - if(allkeys != null){ - Iterator<String> iter = allkeys.iterator(); - while(iter.hasNext()){ - //Convert to array values for MANY-true keys - finalJsonObject = CreateDcaeMicroServiceController.convertToArrayElement(jsonObject, iter.next()); - } - } - - if(finalJsonObject != null){ - LOGGER.info(finalJsonObject.toString()); - jsonModel = finalJsonObject.toString(); - } - - //get all properties with "MANY-true" defined in Ref_attributes - Set<String> manyTrueProperties = CreateDcaeMicroServiceController.getManyTrueProperties(returnModel.getRefattributes()); - JSONObject jsonObj = new JSONObject(jsonModel); - for (String s : manyTrueProperties) { - LOGGER.info(s); - //convert to array element for MANY-true properties - finalJsonObject = CreateDcaeMicroServiceController.convertToArrayElement(jsonObj, s.trim()); - } - - if(finalJsonObject != null){ - LOGGER.info(finalJsonObject.toString()); - jsonModel = finalJsonObject.toString(); - } - - response.setCharacterEncoding(UTF8); - response.setContentType(APPLICATIONJSON); - request.setCharacterEncoding(UTF8); - List<Object> list = new ArrayList<>(); - PrintWriter out = response.getWriter(); - String responseString = mapper.writeValueAsString(returnModel); - JSONObject j = null; - if("".equals(nameOfTrueKeys)){ - j = new JSONObject("{optimizationModelData: " + responseString + ",jsonValue: " + jsonModel + ",dataOrderInfo:" + dataOrderInfo + ",headDefautlsData:" + headDefautlsData +"}"); - }else{ - j = new JSONObject("{optimizationModelData: " + responseString + ",jsonValue: " + jsonModel + ",allManyTrueKeys: " + allManyTrueKeys+",dataOrderInfo:" + dataOrderInfo + ",headDefautlsData:" + headDefautlsData+ "}"); - } - list.add(j); - out.write(list.toString()); - return null; - } - - @SuppressWarnings({ "rawtypes", "unchecked" }) - private String createOptimizationJson(OptimizationModels returnModel) { - Map<String, String> attributeMap = new HashMap<>(); - Map<String, String> refAttributeMap = new HashMap<>(); - - String attribute = returnModel.getAttributes(); - if(attribute != null){ - attribute = attribute.trim(); - } - String refAttribute = returnModel.getRefattributes(); - if(refAttribute != null){ - refAttribute = refAttribute.trim(); - } - - String enumAttribute = returnModel.getEnumValues(); - if(enumAttribute != null){ - enumAttribute = enumAttribute.trim(); - } - - if (!StringUtils.isEmpty(attribute)){ - attributeMap = CreateDcaeMicroServiceController.convert(attribute, ","); - } - - if (!StringUtils.isEmpty(refAttribute)){ - refAttributeMap = CreateDcaeMicroServiceController.convert(refAttribute, ","); - } - - Gson gson = new Gson(); - - String subAttributes = returnModel.getSubattributes(); - if(subAttributes != null){ - subAttributes = subAttributes.trim(); - }else{ - subAttributes = ""; - } - - Map gsonObject = (Map) gson.fromJson(subAttributes, Object.class); - - JSONObject object = new JSONObject(); - JSONArray array; - - for (Entry<String, String> keySet : attributeMap.entrySet()){ - array = new JSONArray(); - String value = keySet.getValue(); - if ("true".equalsIgnoreCase(keySet.getValue().split(MANY)[1])){ - array.put(value); - object.put(keySet.getKey().trim(), array); - }else { - object.put(keySet.getKey().trim(), value.trim()); - } - } - - for (Entry<String, String> keySet : refAttributeMap.entrySet()){ - array = new JSONArray(); - String value = keySet.getValue().split(":")[0]; - if (gsonObject.containsKey(value)){ - if ("true".equalsIgnoreCase(keySet.getValue().split(MANY)[1])){ - array.put(recursiveReference(value, gsonObject, enumAttribute)); - object.put(keySet.getKey().trim(), array); - }else { - object.put(keySet.getKey().trim(), recursiveReference(value, gsonObject, enumAttribute)); - } - }else { - if ("true".equalsIgnoreCase(keySet.getValue().split(MANY)[1])){ - array.put(value.trim()); - object.put(keySet.getKey().trim(), array); - }else { - object.put(keySet.getKey().trim(), value.trim()); - } - } - } - - return object.toString(); - } - - @SuppressWarnings("unchecked") - private JSONObject recursiveReference(String name, Map<String,String> subAttributeMap, String enumAttribute) { - JSONObject object = new JSONObject(); - Map<String, String> map; - Object returnClass = subAttributeMap.get(name); - map = (Map<String, String>) returnClass; - JSONArray array; - - for( Entry<String, String> m:map.entrySet()){ - String[] splitValue = m.getValue().split(":"); - array = new JSONArray(); - if (subAttributeMap.containsKey(splitValue[0])){ - if ("true".equalsIgnoreCase(m.getValue().split(MANY)[1])){ - array.put(recursiveReference(splitValue[0], subAttributeMap, enumAttribute)); - object.put(m.getKey().trim(), array); - }else { - object.put(m.getKey().trim(), recursiveReference(splitValue[0], subAttributeMap, enumAttribute)); - } - } else{ - if ("true".equalsIgnoreCase(m.getValue().split(MANY)[1])){ - array.put(splitValue[0].trim()); - object.put(m.getKey().trim(), array); - }else { - object.put(m.getKey().trim(), splitValue[0].trim()); - } - } - } - - return object; - } - - //call this method to start the recursive - private Set<String> getAllKeys(JSONObject json) { - return getAllKeys(json, new HashSet<>()); - } - - private Set<String> getAllKeys(JSONArray arr) { - return getAllKeys(arr, new HashSet<>()); - } - - private Set<String> getAllKeys(JSONArray arr, Set<String> keys) { - for (int i = 0; i < arr.length(); i++) { - Object obj = arr.get(i); - if (obj instanceof JSONObject) keys.addAll(getAllKeys(arr.getJSONObject(i))); - if (obj instanceof JSONArray) keys.addAll(getAllKeys(arr.getJSONArray(i))); - } - - return keys; - } - + private static final Logger LOGGER = FlexLogger.getLogger(CreateOptimizationController.class); + private static CommonClassDao commonClassDao; + + public static CommonClassDao getCommonClassDao() { + return commonClassDao; + } + + private OptimizationModels newModel; + private String newFile; + private String directory; + private List<String> modelList = new ArrayList<>(); + private List<String> dirDependencyList = new ArrayList<>(); + private LinkedHashMap<String, MSAttributeObject> classMap = new LinkedHashMap<>(); + String referenceAttributes; + String attributeString; + Set<String> allManyTrueKeys = new HashSet<>(); + + public static final String DATATYPE = "data_types.policy.data."; + public static final String PROPERTIES = ".properties."; + public static final String TYPE = ".type"; + public static final String STRING = "string"; + public static final String INTEGER = "integer"; + public static final String LIST = "list"; + public static final String DEFAULT = ".default"; + public static final String REQUIRED = ".required"; + public static final String MATCHABLE = ".matchable"; + public static final String MANYFALSE = ":MANY-false"; + public static final String MODEL = "model"; + public static final String MANY = "MANY-"; + public static final String UTF8 = "UTF-8"; + public static final String MODELNAME = "modelName"; + public static final String APPLICATIONJSON = "application / json"; + + + @Autowired + private CreateOptimizationController(CommonClassDao commonClassDao) { + setCommonClassDao(commonClassDao); + } + + public static void setCommonClassDao(CommonClassDao commonClassDao) { + CreateOptimizationController.commonClassDao = commonClassDao; + } + + public CreateOptimizationController() { + // Empty Constructor + } + + protected PolicyRestAdapter policyAdapter = null; + private Map<String, String> attributesListRefMap = new HashMap<>(); + private Map<String, LinkedList<String>> arrayTextList = new HashMap<>(); + CreateDcaeMicroServiceController msController = new CreateDcaeMicroServiceController(); + + public PolicyRestAdapter setDataToPolicyRestAdapter(PolicyRestAdapter policyData, JsonNode root) { + String jsonContent = null; + try { + LOGGER.info("policyJSON :" + (root.get("policyJSON")).toString()); + + String tempJson = root.get("policyJSON").toString(); + + // ---replace empty value with the value below before calling decodeContent method. + String dummyValue = "*empty-value*" + UUID.randomUUID().toString(); + LOGGER.info("dummyValue:" + dummyValue); + tempJson = + StringUtils.replaceEach(tempJson, new String[] {"\"\""}, new String[] {"\"" + dummyValue + "\""}); + ObjectMapper mapper = new ObjectMapper(); + JsonNode tempJsonNode = mapper.readTree(tempJson); + jsonContent = msController.decodeContent(tempJsonNode).toString(); + constructJson(policyData, jsonContent, dummyValue); + } catch (Exception e) { + LOGGER.error("Error while decoding microservice content", e); + } + + return policyData; + } + + private PolicyRestAdapter constructJson(PolicyRestAdapter policyAdapter, String jsonContent, String dummyValue) { + ObjectWriter om = new ObjectMapper().writer(); + String json = ""; + OptimizationObject optimizationObject = setOptimizationObjectValues(policyAdapter); + + optimizationObject.setContent(jsonContent); + + try { + json = om.writeValueAsString(optimizationObject); + } catch (JsonProcessingException e) { + LOGGER.error("Error writing out the object", e); + } + LOGGER.info("input json: " + json); + LOGGER.info("input jsonContent: " + jsonContent); + String cleanJson = msController.cleanUPJson(json); + + // --- reset empty value back after called cleanUPJson method and before calling removeNullAttributes + String tempJson = + StringUtils.replaceEach(cleanJson, new String[] {"\"" + dummyValue + "\""}, new String[] {"\"\""}); + LOGGER.info("tempJson: " + tempJson); + cleanJson = msController.removeNullAttributes(tempJson); + policyAdapter.setJsonBody(cleanJson); + return policyAdapter; + } + + @RequestMapping(value = {"/policyController/getOptimizationTemplateData.htm"}, + method = {org.springframework.web.bind.annotation.RequestMethod.POST}) + public ModelAndView getOptimizationTemplateData(HttpServletRequest request, HttpServletResponse response) + throws IOException { + CreateDcaeMicroServiceController controller = new CreateDcaeMicroServiceController(); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + + String value = root.get("policyData").toString().replaceAll("^\"|\"$", ""); + String servicename = value.toString().split("-v")[0]; + String version = null; + if (value.toString().contains("-v")) { + version = value.toString().split("-v")[1]; + } + + OptimizationModels returnModel = getAttributeObject(servicename, version); + + MicroserviceHeaderdeFaults returnHeaderDefauls = getHeaderDefaultsObject(value); + JSONObject jsonHdDefaultObj = null; + if (returnHeaderDefauls != null) { + jsonHdDefaultObj = new JSONObject(); + jsonHdDefaultObj.put("onapName", returnHeaderDefauls.getOnapName()); + jsonHdDefaultObj.put("guard", returnHeaderDefauls.getGuard()); + jsonHdDefaultObj.put("riskLevel", returnHeaderDefauls.getRiskLevel()); + jsonHdDefaultObj.put("riskType", returnHeaderDefauls.getRiskType()); + jsonHdDefaultObj.put("priority", returnHeaderDefauls.getPriority()); + } + + String headDefautlsData = ""; + if (jsonHdDefaultObj != null) { + headDefautlsData = jsonHdDefaultObj.toString(); + LOGGER.info("returnHeaderDefauls headDefautlsData: " + headDefautlsData); + } else { + headDefautlsData = "null"; + } + + // Get all keys with "MANY-true" defined in their value from subAttribute + Set<String> allkeys = null; + if (returnModel.getSubattributes() != null && !returnModel.getSubattributes().isEmpty()) { + JSONObject json = new JSONObject(returnModel.getSubattributes()); + getAllKeys(json); + allkeys = allManyTrueKeys; + allManyTrueKeys = new HashSet<>(); + LOGGER.info("allkeys : " + allkeys); + } + + // Get element order info + String dataOrderInfo = returnModel.getDataOrderInfo(); + if (dataOrderInfo != null && !dataOrderInfo.startsWith("\"")) { + dataOrderInfo = "\"" + dataOrderInfo + "\""; + } + + String nameOfTrueKeys = ""; + if (allkeys != null) { + nameOfTrueKeys = allkeys.toString(); + } + + String jsonModel = createOptimizationJson(returnModel); + + JSONObject jsonObject = new JSONObject(jsonModel); + + JSONObject finalJsonObject = null; + if (allkeys != null) { + Iterator<String> iter = allkeys.iterator(); + while (iter.hasNext()) { + // Convert to array values for MANY-true keys + finalJsonObject = controller.convertToArrayElement(jsonObject, iter.next()); + } + } + + if (finalJsonObject != null) { + LOGGER.info(finalJsonObject.toString()); + jsonModel = finalJsonObject.toString(); + } + + // get all properties with "MANY-true" defined in Ref_attributes + Set<String> manyTrueProperties = controller.getManyTrueProperties(returnModel.getRefattributes()); + JSONObject jsonObj = new JSONObject(jsonModel); + for (String s : manyTrueProperties) { + LOGGER.info(s); + // convert to array element for MANY-true properties + finalJsonObject = controller.convertToArrayElement(jsonObj, s.trim()); + } + + if (finalJsonObject != null) { + LOGGER.info(finalJsonObject.toString()); + jsonModel = finalJsonObject.toString(); + } + + response.setCharacterEncoding(UTF8); + response.setContentType(APPLICATIONJSON); + request.setCharacterEncoding(UTF8); + List<Object> list = new ArrayList<>(); + PrintWriter out = response.getWriter(); + String responseString = mapper.writeValueAsString(returnModel); + JSONObject j = null; + if ("".equals(nameOfTrueKeys)) { + j = new JSONObject("{optimizationModelData: " + responseString + ",jsonValue: " + jsonModel + + ",dataOrderInfo:" + dataOrderInfo + ",headDefautlsData:" + headDefautlsData + "}"); + } else { + j = new JSONObject("{optimizationModelData: " + responseString + ",jsonValue: " + jsonModel + + ",allManyTrueKeys: " + allManyTrueKeys + ",dataOrderInfo:" + dataOrderInfo + ",headDefautlsData:" + + headDefautlsData + "}"); + } + list.add(j); + out.write(list.toString()); + return null; + } + + @SuppressWarnings({"rawtypes", "unchecked"}) + private String createOptimizationJson(OptimizationModels returnModel) { + Map<String, String> attributeMap = new HashMap<>(); + Map<String, String> refAttributeMap = new HashMap<>(); + + String attribute = returnModel.getAttributes(); + if (attribute != null) { + attribute = attribute.trim(); + } + String refAttribute = returnModel.getRefattributes(); + if (refAttribute != null) { + refAttribute = refAttribute.trim(); + } + + String enumAttribute = returnModel.getEnumValues(); + if (enumAttribute != null) { + enumAttribute = enumAttribute.trim(); + } + + CreateDcaeMicroServiceController controller = new CreateDcaeMicroServiceController(); + if (!StringUtils.isEmpty(attribute)) { + attributeMap = controller.convert(attribute, ","); + } + + if (!StringUtils.isEmpty(refAttribute)) { + refAttributeMap = controller.convert(refAttribute, ","); + } + + Gson gson = new Gson(); + + String subAttributes = returnModel.getSubattributes(); + if (subAttributes != null) { + subAttributes = subAttributes.trim(); + } else { + subAttributes = ""; + } + + Map gsonObject = (Map) gson.fromJson(subAttributes, Object.class); + + JSONObject object = new JSONObject(); + JSONArray array; + + for (Entry<String, String> keySet : attributeMap.entrySet()) { + array = new JSONArray(); + String value = keySet.getValue(); + if ("true".equalsIgnoreCase(keySet.getValue().split(MANY)[1])) { + array.put(value); + object.put(keySet.getKey().trim(), array); + } else { + object.put(keySet.getKey().trim(), value.trim()); + } + } + + for (Entry<String, String> keySet : refAttributeMap.entrySet()) { + array = new JSONArray(); + String value = keySet.getValue().split(":")[0]; + if (gsonObject.containsKey(value)) { + if ("true".equalsIgnoreCase(keySet.getValue().split(MANY)[1])) { + array.put(recursiveReference(value, gsonObject, enumAttribute)); + object.put(keySet.getKey().trim(), array); + } else { + object.put(keySet.getKey().trim(), recursiveReference(value, gsonObject, enumAttribute)); + } + } else { + if ("true".equalsIgnoreCase(keySet.getValue().split(MANY)[1])) { + array.put(value.trim()); + object.put(keySet.getKey().trim(), array); + } else { + object.put(keySet.getKey().trim(), value.trim()); + } + } + } + + return object.toString(); + } + + @SuppressWarnings("unchecked") + private JSONObject recursiveReference(String name, Map<String, String> subAttributeMap, String enumAttribute) { + JSONObject object = new JSONObject(); + Map<String, String> map; + Object returnClass = subAttributeMap.get(name); + map = (Map<String, String>) returnClass; + JSONArray array; + + for (Entry<String, String> m : map.entrySet()) { + String[] splitValue = m.getValue().split(":"); + array = new JSONArray(); + if (subAttributeMap.containsKey(splitValue[0])) { + if ("true".equalsIgnoreCase(m.getValue().split(MANY)[1])) { + array.put(recursiveReference(splitValue[0], subAttributeMap, enumAttribute)); + object.put(m.getKey().trim(), array); + } else { + object.put(m.getKey().trim(), recursiveReference(splitValue[0], subAttributeMap, enumAttribute)); + } + } else { + if ("true".equalsIgnoreCase(m.getValue().split(MANY)[1])) { + array.put(splitValue[0].trim()); + object.put(m.getKey().trim(), array); + } else { + object.put(m.getKey().trim(), splitValue[0].trim()); + } + } + } + + return object; + } + + // call this method to start the recursive + private Set<String> getAllKeys(JSONObject json) { + return getAllKeys(json, new HashSet<>()); + } + + private Set<String> getAllKeys(JSONArray arr) { + return getAllKeys(arr, new HashSet<>()); + } + + private Set<String> getAllKeys(JSONArray arr, Set<String> keys) { + for (int i = 0; i < arr.length(); i++) { + Object obj = arr.get(i); + if (obj instanceof JSONObject) + keys.addAll(getAllKeys(arr.getJSONObject(i))); + if (obj instanceof JSONArray) + keys.addAll(getAllKeys(arr.getJSONArray(i))); + } + + return keys; + } + // this method returns a set of keys with "MANY-true" defined in their value. - private Set<String> getAllKeys(JSONObject json, Set<String> keys) { - for (String key : json.keySet()) { - Object obj = json.get(key); - if(obj instanceof String && ((String) obj).contains("MANY-true")){ - LOGGER.info("key : " + key); - LOGGER.info("obj : " + obj); - allManyTrueKeys.add(key); - } - if (obj instanceof JSONObject) keys.addAll(getAllKeys(json.getJSONObject(key))); - if (obj instanceof JSONArray) keys.addAll(getAllKeys(json.getJSONArray(key))); - } - - return keys; - } - - @RequestMapping(value={"/policyController/getModelServiceVersionData.htm"}, method={org.springframework.web.bind.annotation.RequestMethod.POST}) - public ModelAndView getModelServiceVersionData(HttpServletRequest request, HttpServletResponse response) throws IOException{ - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - - String value = root.get("policyData").toString().replaceAll("^\"|\"$", ""); - String servicename = value.split("-v")[0]; - Set<String> returnList = getVersionList(servicename); - - response.setCharacterEncoding(UTF8); - response.setContentType(APPLICATIONJSON); - request.setCharacterEncoding(UTF8); - List<Object> list = new ArrayList<>(); - PrintWriter out = response.getWriter(); - String responseString = mapper.writeValueAsString(returnList); - JSONObject j = new JSONObject("{optimizationModelVersionData: " + responseString +"}"); - list.add(j); - out.write(list.toString()); - return null; - } - - private Set<String> getVersionList(String name) { - OptimizationModels workingModel; - Set<String> list = new HashSet<>(); - List<Object> optimizationModelsData = commonClassDao.getDataById(OptimizationModels.class, MODELNAME, name); - for (int i = 0; i < optimizationModelsData.size(); i++) { - workingModel = (OptimizationModels) optimizationModelsData.get(i); - if (workingModel.getVersion()!=null){ - list.add(workingModel.getVersion()); - }else{ - list.add("Default"); - } - } - return list; - } - - private OptimizationModels getAttributeObject(String name, String version) { - OptimizationModels workingModel = new OptimizationModels(); - List<Object> optimizationModelsData = commonClassDao.getDataById(OptimizationModels.class, MODELNAME, name); - for (int i = 0; i < optimizationModelsData.size(); i++) { - workingModel = (OptimizationModels) optimizationModelsData.get(i); - if(version != null){ - if (workingModel.getVersion()!=null){ - if (workingModel.getVersion().equals(version)){ - return workingModel; - } - }else{ - return workingModel; - } - }else{ - return workingModel; - } - - } - return workingModel; - } - - private MicroserviceHeaderdeFaults getHeaderDefaultsObject(String modelName) { - return (MicroserviceHeaderdeFaults) commonClassDao.getEntityItem(MicroserviceHeaderdeFaults.class, MODELNAME, modelName); - } - - public void prePopulatePolicyData(PolicyRestAdapter policyAdapter, PolicyEntity entity) { - if (policyAdapter.getPolicyData() instanceof PolicyType) { - Object policyData = policyAdapter.getPolicyData(); - PolicyType policy = (PolicyType) policyData; - policyAdapter.setOldPolicyFileName(policyAdapter.getPolicyName()); - String policyNameValue = policyAdapter.getPolicyName().substring(policyAdapter.getPolicyName().indexOf("OOF_") +4); - policyAdapter.setPolicyName(policyNameValue); - String description = ""; - try{ - description = policy.getDescription().substring(0, policy.getDescription().indexOf("@CreatedBy:")); - }catch(Exception e){ - LOGGER.error("Error while collecting the description tag in " + policyNameValue ,e); - description = policy.getDescription(); - } - policyAdapter.setPolicyDescription(description); - // Get the target data under policy. - TargetType target = policy.getTarget(); - if (target != null) { - // Under target we have AnyOFType - List<AnyOfType> anyOfList = target.getAnyOf(); - if (anyOfList != null) { - Iterator<AnyOfType> iterAnyOf = anyOfList.iterator(); - while (iterAnyOf.hasNext()) { - AnyOfType anyOf = iterAnyOf.next(); - // Under AnyOFType we have AllOFType - List<AllOfType> allOfList = anyOf.getAllOf(); - if (allOfList != null) { - Iterator<AllOfType> iterAllOf = allOfList.iterator(); - while (iterAllOf.hasNext()) { - AllOfType allOf = iterAllOf.next(); - // Under AllOFType we have Match - List<MatchType> matchList = allOf.getMatch(); - if (matchList != null) { - Iterator<MatchType> iterMatch = matchList.iterator(); - while (matchList.size()>1 && iterMatch.hasNext()) { - MatchType match = iterMatch.next(); - // - // Under the match we have attribute value and - // attributeDesignator. So,finally down to the actual attribute. - // - AttributeValueType attributeValue = match.getAttributeValue(); - String value = (String) attributeValue.getContent().get(0); - AttributeDesignatorType designator = match.getAttributeDesignator(); - String attributeId = designator.getAttributeId(); - // First match in the target is OnapName, so set that value. - if ("ONAPName".equals(attributeId)) { - policyAdapter.setOnapName(value); - } - if ("RiskType".equals(attributeId)){ - policyAdapter.setRiskType(value); - } - if ("RiskLevel".equals(attributeId)){ - policyAdapter.setRiskLevel(value); - } - if ("guard".equals(attributeId)){ - policyAdapter.setGuard(value); - } - if ("TTLDate".equals(attributeId) && !value.contains("NA")){ - PolicyController controller = new PolicyController(); - String newDate = controller.convertDate(value); - policyAdapter.setTtlDate(newDate); - } - } - readFile(policyAdapter, entity); - } - } - } - } - } - } - } - } - - @SuppressWarnings("unchecked") - private void readFile(PolicyRestAdapter policyAdapter, PolicyEntity entity) { - String policyScopeName = null; - ObjectMapper mapper = new ObjectMapper(); - try { - OptimizationObject optimizationBody = mapper.readValue(entity.getConfigurationData().getConfigBody(), OptimizationObject.class); - policyScopeName = msController.getPolicyScope(optimizationBody.getPolicyScope()); - policyAdapter.setPolicyScope(policyScopeName); - - policyAdapter.setPriority(optimizationBody.getPriority()); - - if (optimizationBody.getVersion()!= null){ - policyAdapter.setServiceType(optimizationBody.getService()); - policyAdapter.setVersion(optimizationBody.getVersion()); - }else{ - policyAdapter.setServiceType(optimizationBody.getService()); - } - if(optimizationBody.getContent() != null){ - LinkedHashMap<String, Object> data = new LinkedHashMap<>(); - LinkedHashMap<String, ?> map = (LinkedHashMap<String, ?>) optimizationBody.getContent(); - msController.readRecursivlyJSONContent(map, data); - policyAdapter.setRuleData(data); - } - - } catch (Exception e) { - LOGGER.error(e); - } - - } - - @RequestMapping(value={"/oof_dictionary/set_ModelData"}, method={org.springframework.web.bind.annotation.RequestMethod.POST}) - public void setModelData(HttpServletRequest request, HttpServletResponse response) throws IOException, FileUploadException{ - modelList = new ArrayList<>(); - dirDependencyList = new ArrayList<>(); - classMap = new LinkedHashMap<>(); - List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request); - - boolean zip = false; - boolean yml= false; - String errorMsg = ""; - for (FileItem item : items) { - if(item.getName().endsWith(".zip") || item.getName().endsWith(".xmi")||item.getName().endsWith(".yml")){ - this.newModel = new OptimizationModels(); - try{ - File file = new File(item.getName()); - OutputStream outputStream = new FileOutputStream(file); - IOUtils.copy(item.getInputStream(), outputStream); - outputStream.close(); - this.newFile = file.toString(); - this.newModel.setModelName(this.newFile.split("-v")[0]); - - if (this.newFile.contains("-v")){ - if (item.getName().endsWith(".zip")){ - this.newModel.setVersion(this.newFile.split("-v")[1].replace(".zip", "")); - zip = true; - }else if(item.getName().endsWith(".yml")){ - this.newModel.setVersion(this.newFile.split("-v")[1].replace(".yml", "")); - yml = true; - } - else { - this.newModel.setVersion(this.newFile.split("-v")[1].replace(".xmi", "")); - } - } - }catch(Exception e){ - LOGGER.error("Upload error : ", e); - errorMsg = "Upload error:" + e.getMessage(); - } - } - - } - - if(!errorMsg.isEmpty()){ - - PrintWriter out = response.getWriter(); - - response.setCharacterEncoding(UTF8); - response.setContentType(APPLICATIONJSON); - request.setCharacterEncoding(UTF8); - - JSONObject j = new JSONObject(); - j.put("errorMsg", errorMsg); - out.write(j.toString()); - return; - } - - List<File> fileList = new ArrayList<>(); - MSModelUtils modelUtil = new MSModelUtils(); - this.directory = MODEL; - if (zip){ - extractFolder(this.newFile); - fileList = listModelFiles(this.directory); - }else if (yml){ - modelUtil.parseTosca(this.newFile); - }else { - File file = new File(this.newFile); - fileList.add(file); - } - String modelType; - if(! yml){ - modelType="xmi"; - //Process Main Model file first - classMap = new LinkedHashMap<>(); - for (File file : fileList) { - if(!file.isDirectory() && file.getName().endsWith(".xmi")){ - retrieveDependency(file.toString()); - } - } - - modelList = createList(); - - msController.cleanUp(this.newFile); - msController.cleanUp(directory); - }else{ - modelType="yml"; - modelList.add(this.newModel.getModelName()); - String className=this.newModel.getModelName(); - MSAttributeObject optimizationAttributes= new MSAttributeObject(); - optimizationAttributes.setClassName(className); - - LinkedHashMap<String, String> returnAttributeList =new LinkedHashMap<>(); - returnAttributeList.put(className, modelUtil.getAttributeString()); - optimizationAttributes.setAttribute(returnAttributeList); - - optimizationAttributes.setSubClass(modelUtil.getRetmap()); - - optimizationAttributes.setMatchingSet(modelUtil.getMatchableValues()); - - LinkedHashMap<String, String> returnReferenceList =new LinkedHashMap<>(); - returnReferenceList.put(className, modelUtil.getReferenceAttributes()); - optimizationAttributes.setRefAttribute(returnReferenceList); - - if(!"".equals(modelUtil.getListConstraints())){ - LinkedHashMap<String, String> enumList =new LinkedHashMap<>(); - String[] listArray=modelUtil.getListConstraints().split("#"); - for(String str:listArray){ - String[] strArr= str.split("="); - if(strArr.length>1){ + private Set<String> getAllKeys(JSONObject json, Set<String> keys) { + for (String key : json.keySet()) { + Object obj = json.get(key); + if (obj instanceof String && ((String) obj).contains("MANY-true")) { + LOGGER.info("key : " + key); + LOGGER.info("obj : " + obj); + allManyTrueKeys.add(key); + } + if (obj instanceof JSONObject) + keys.addAll(getAllKeys(json.getJSONObject(key))); + if (obj instanceof JSONArray) + keys.addAll(getAllKeys(json.getJSONArray(key))); + } + + return keys; + } + + @RequestMapping(value = {"/policyController/getModelServiceVersionData.htm"}, + method = {org.springframework.web.bind.annotation.RequestMethod.POST}) + public ModelAndView getModelServiceVersionData(HttpServletRequest request, HttpServletResponse response) + throws IOException { + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + + String value = root.get("policyData").toString().replaceAll("^\"|\"$", ""); + String servicename = value.split("-v")[0]; + Set<String> returnList = getVersionList(servicename); + + response.setCharacterEncoding(UTF8); + response.setContentType(APPLICATIONJSON); + request.setCharacterEncoding(UTF8); + List<Object> list = new ArrayList<>(); + PrintWriter out = response.getWriter(); + String responseString = mapper.writeValueAsString(returnList); + JSONObject j = new JSONObject("{optimizationModelVersionData: " + responseString + "}"); + list.add(j); + out.write(list.toString()); + return null; + } + + private Set<String> getVersionList(String name) { + OptimizationModels workingModel; + Set<String> list = new HashSet<>(); + List<Object> optimizationModelsData = commonClassDao.getDataById(OptimizationModels.class, MODELNAME, name); + for (int i = 0; i < optimizationModelsData.size(); i++) { + workingModel = (OptimizationModels) optimizationModelsData.get(i); + if (workingModel.getVersion() != null) { + list.add(workingModel.getVersion()); + } else { + list.add("Default"); + } + } + return list; + } + + private OptimizationModels getAttributeObject(String name, String version) { + OptimizationModels workingModel = new OptimizationModels(); + List<Object> optimizationModelsData = commonClassDao.getDataById(OptimizationModels.class, MODELNAME, name); + for (int i = 0; i < optimizationModelsData.size(); i++) { + workingModel = (OptimizationModels) optimizationModelsData.get(i); + if (version != null) { + if (workingModel.getVersion() != null) { + if (workingModel.getVersion().equals(version)) { + return workingModel; + } + } else { + return workingModel; + } + } else { + return workingModel; + } + + } + return workingModel; + } + + private MicroserviceHeaderdeFaults getHeaderDefaultsObject(String modelName) { + return (MicroserviceHeaderdeFaults) commonClassDao.getEntityItem(MicroserviceHeaderdeFaults.class, MODELNAME, + modelName); + } + + public void prePopulatePolicyData(PolicyRestAdapter policyAdapter, PolicyEntity entity) { + if (policyAdapter.getPolicyData() instanceof PolicyType) { + Object policyData = policyAdapter.getPolicyData(); + PolicyType policy = (PolicyType) policyData; + policyAdapter.setOldPolicyFileName(policyAdapter.getPolicyName()); + String policyNameValue = + policyAdapter.getPolicyName().substring(policyAdapter.getPolicyName().indexOf("OOF_") + 4); + policyAdapter.setPolicyName(policyNameValue); + String description = ""; + try { + description = policy.getDescription().substring(0, policy.getDescription().indexOf("@CreatedBy:")); + } catch (Exception e) { + LOGGER.error("Error while collecting the description tag in " + policyNameValue, e); + description = policy.getDescription(); + } + policyAdapter.setPolicyDescription(description); + // Get the target data under policy. + TargetType target = policy.getTarget(); + if (target != null) { + // Under target we have AnyOFType + List<AnyOfType> anyOfList = target.getAnyOf(); + if (anyOfList != null) { + Iterator<AnyOfType> iterAnyOf = anyOfList.iterator(); + while (iterAnyOf.hasNext()) { + AnyOfType anyOf = iterAnyOf.next(); + // Under AnyOFType we have AllOFType + List<AllOfType> allOfList = anyOf.getAllOf(); + if (allOfList != null) { + Iterator<AllOfType> iterAllOf = allOfList.iterator(); + while (iterAllOf.hasNext()) { + AllOfType allOf = iterAllOf.next(); + // Under AllOFType we have Match + List<MatchType> matchList = allOf.getMatch(); + if (matchList != null) { + Iterator<MatchType> iterMatch = matchList.iterator(); + while (matchList.size() > 1 && iterMatch.hasNext()) { + MatchType match = iterMatch.next(); + // + // Under the match we have attribute value and + // attributeDesignator. So,finally down to the actual attribute. + // + AttributeValueType attributeValue = match.getAttributeValue(); + String value = (String) attributeValue.getContent().get(0); + AttributeDesignatorType designator = match.getAttributeDesignator(); + String attributeId = designator.getAttributeId(); + // First match in the target is OnapName, so set that value. + if ("ONAPName".equals(attributeId)) { + policyAdapter.setOnapName(value); + } + if ("RiskType".equals(attributeId)) { + policyAdapter.setRiskType(value); + } + if ("RiskLevel".equals(attributeId)) { + policyAdapter.setRiskLevel(value); + } + if ("guard".equals(attributeId)) { + policyAdapter.setGuard(value); + } + if ("TTLDate".equals(attributeId) && !value.contains("NA")) { + PolicyController controller = new PolicyController(); + String newDate = controller.convertDate(value); + policyAdapter.setTtlDate(newDate); + } + } + readFile(policyAdapter, entity); + } + } + } + } + } + } + } + } + + @SuppressWarnings("unchecked") + private void readFile(PolicyRestAdapter policyAdapter, PolicyEntity entity) { + String policyScopeName = null; + ObjectMapper mapper = new ObjectMapper(); + try { + OptimizationObject optimizationBody = + mapper.readValue(entity.getConfigurationData().getConfigBody(), OptimizationObject.class); + policyScopeName = msController.getPolicyScope(optimizationBody.getPolicyScope()); + policyAdapter.setPolicyScope(policyScopeName); + + policyAdapter.setPriority(optimizationBody.getPriority()); + + if (optimizationBody.getVersion() != null) { + policyAdapter.setServiceType(optimizationBody.getService()); + policyAdapter.setVersion(optimizationBody.getVersion()); + } else { + policyAdapter.setServiceType(optimizationBody.getService()); + } + if (optimizationBody.getContent() != null) { + LinkedHashMap<String, Object> data = new LinkedHashMap<>(); + LinkedHashMap<String, ?> map = (LinkedHashMap<String, ?>) optimizationBody.getContent(); + msController.readRecursivlyJSONContent(map, data); + policyAdapter.setRuleData(data); + } + + } catch (Exception e) { + LOGGER.error(e); + } + + } + + @RequestMapping(value = {"/oof_dictionary/set_ModelData"}, + method = {org.springframework.web.bind.annotation.RequestMethod.POST}) + public void setModelData(HttpServletRequest request, HttpServletResponse response) + throws IOException, FileUploadException { + modelList = new ArrayList<>(); + dirDependencyList = new ArrayList<>(); + classMap = new LinkedHashMap<>(); + List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request); + + boolean zip = false; + boolean yml = false; + String errorMsg = ""; + for (FileItem item : items) { + if (item.getName().endsWith(".zip") || item.getName().endsWith(".xmi") || item.getName().endsWith(".yml")) { + this.newModel = new OptimizationModels(); + try { + File file = new File(item.getName()); + OutputStream outputStream = new FileOutputStream(file); + IOUtils.copy(item.getInputStream(), outputStream); + outputStream.close(); + this.newFile = file.toString(); + this.newModel.setModelName(this.newFile.split("-v")[0]); + + if (this.newFile.contains("-v")) { + if (item.getName().endsWith(".zip")) { + this.newModel.setVersion(this.newFile.split("-v")[1].replace(".zip", "")); + zip = true; + } else if (item.getName().endsWith(".yml")) { + this.newModel.setVersion(this.newFile.split("-v")[1].replace(".yml", "")); + yml = true; + } else { + this.newModel.setVersion(this.newFile.split("-v")[1].replace(".xmi", "")); + } + } + } catch (Exception e) { + LOGGER.error("Upload error : ", e); + errorMsg = "Upload error:" + e.getMessage(); + } + } + + } + + if (!errorMsg.isEmpty()) { + + PrintWriter out = response.getWriter(); + + response.setCharacterEncoding(UTF8); + response.setContentType(APPLICATIONJSON); + request.setCharacterEncoding(UTF8); + + JSONObject j = new JSONObject(); + j.put("errorMsg", errorMsg); + out.write(j.toString()); + return; + } + + List<File> fileList = new ArrayList<>(); + MSModelUtils modelUtil = new MSModelUtils(); + this.directory = MODEL; + if (zip) { + extractFolder(this.newFile); + fileList = listModelFiles(this.directory); + } else if (yml) { + modelUtil.parseTosca(this.newFile); + } else { + File file = new File(this.newFile); + fileList.add(file); + } + String modelType; + if (!yml) { + modelType = "xmi"; + // Process Main Model file first + classMap = new LinkedHashMap<>(); + for (File file : fileList) { + if (!file.isDirectory() && file.getName().endsWith(".xmi")) { + retrieveDependency(file.toString()); + } + } + + modelList = createList(); + + msController.cleanUp(this.newFile); + msController.cleanUp(directory); + } else { + modelType = "yml"; + modelList.add(this.newModel.getModelName()); + String className = this.newModel.getModelName(); + MSAttributeObject optimizationAttributes = new MSAttributeObject(); + optimizationAttributes.setClassName(className); + + LinkedHashMap<String, String> returnAttributeList = new LinkedHashMap<>(); + returnAttributeList.put(className, modelUtil.getAttributeString()); + optimizationAttributes.setAttribute(returnAttributeList); + + optimizationAttributes.setSubClass(modelUtil.getRetmap()); + + optimizationAttributes.setMatchingSet(modelUtil.getMatchableValues()); + + LinkedHashMap<String, String> returnReferenceList = new LinkedHashMap<>(); + returnReferenceList.put(className, modelUtil.getReferenceAttributes()); + optimizationAttributes.setRefAttribute(returnReferenceList); + + if (!"".equals(modelUtil.getListConstraints())) { + LinkedHashMap<String, String> enumList = new LinkedHashMap<>(); + String[] listArray = modelUtil.getListConstraints().split("#"); + for (String str : listArray) { + String[] strArr = str.split("="); + if (strArr.length > 1) { enumList.put(strArr[0], strArr[1]); } } optimizationAttributes.setEnumType(enumList); - } - - classMap=new LinkedHashMap<>(); - classMap.put(className, optimizationAttributes); - - } - - PrintWriter out = response.getWriter(); - - response.setCharacterEncoding(UTF8); - response.setContentType(APPLICATIONJSON); - request.setCharacterEncoding(UTF8); - - ObjectMapper mapper = new ObjectMapper(); - JSONObject j = new JSONObject(); - j.put("classListDatas", modelList); - j.put("modelDatas", mapper.writeValueAsString(classMap)); - j.put("modelType", modelType); - j.put("dataOrderInfo", modelUtil.getDataOrderInfo()); - - out.write(j.toString()); - } - - /* - * Unzip file and store in the model directory for processing - */ - @SuppressWarnings("rawtypes") - private void extractFolder(String zipFile ) { - int BUFFER = 2048; - File file = new File(zipFile); - - try (ZipFile zip = new ZipFile(file)) { - String newPath = MODEL + File.separator + zipFile.substring(0, zipFile.length() - 4); - this.directory = MODEL + File.separator + zipFile.substring(0, zipFile.length() - 4); - msController.checkZipDirectory(this.directory); - new File(newPath).mkdir(); - Enumeration zipFileEntries = zip.entries(); - - // Process each entry - while (zipFileEntries.hasMoreElements()){ - // grab a zip file entry - ZipEntry entry = (ZipEntry) zipFileEntries.nextElement(); - String currentEntry = entry.getName(); - File destFile = new File(MODEL + File.separator + currentEntry); - File destinationParent = destFile.getParentFile(); - - destinationParent.mkdirs(); - - if (!entry.isDirectory()){ - BufferedInputStream is = new BufferedInputStream(zip.getInputStream(entry)); - int currentByte; - byte[] data = new byte[BUFFER]; - try (FileOutputStream fos = new FileOutputStream(destFile); - BufferedOutputStream dest = new BufferedOutputStream(fos, BUFFER)) { - while ((currentByte = is.read(data, 0, BUFFER)) != -1) { - dest.write(data, 0, currentByte); - } - dest.flush(); - } catch (IOException e) { - LOGGER.error("Failed to write zip contents to {}" + destFile + e); - // - // PLD should I throw e? - // - throw e; - } - } - - if (currentEntry.endsWith(".zip")){ - extractFolder(destFile.getAbsolutePath()); - } - } - } catch (IOException e) { - LOGGER.error("Failed to unzip model file " + zipFile, e); - } - } - - private void retrieveDependency(String workingFile) { - - MSModelUtils utils = new MSModelUtils(PolicyController.getMsOnapName(), PolicyController.getMsPolicyName()); - Map<String, MSAttributeObject> tempMap; - - tempMap = utils.processEpackage(workingFile, MODEL_TYPE.XMI); - - classMap.putAll(tempMap); - LOGGER.info(tempMap); - - return; - - } - - private List<File> listModelFiles(String directoryName) { - File fileDirectory = new File(directoryName); - List<File> resultList = new ArrayList<>(); - File[] fList = fileDirectory.listFiles(); - for (File file : fList) { - if (file.isFile()) { - resultList.add(file); - } else if (file.isDirectory()) { - dirDependencyList.add(file.getName()); - resultList.addAll(listModelFiles(file.getAbsolutePath())); - } - } - return resultList; - } - + } + + classMap = new LinkedHashMap<>(); + classMap.put(className, optimizationAttributes); + + } + + PrintWriter out = response.getWriter(); + + response.setCharacterEncoding(UTF8); + response.setContentType(APPLICATIONJSON); + request.setCharacterEncoding(UTF8); + + ObjectMapper mapper = new ObjectMapper(); + JSONObject j = new JSONObject(); + j.put("classListDatas", modelList); + j.put("modelDatas", mapper.writeValueAsString(classMap)); + j.put("modelType", modelType); + j.put("dataOrderInfo", modelUtil.getDataOrderInfo()); + + out.write(j.toString()); + } + + /* + * Unzip file and store in the model directory for processing + */ + @SuppressWarnings("rawtypes") + private void extractFolder(String zipFile) { + int BUFFER = 2048; + File file = new File(zipFile); + + try (ZipFile zip = new ZipFile(file)) { + String newPath = MODEL + File.separator + zipFile.substring(0, zipFile.length() - 4); + this.directory = MODEL + File.separator + zipFile.substring(0, zipFile.length() - 4); + msController.checkZipDirectory(this.directory); + new File(newPath).mkdir(); + Enumeration zipFileEntries = zip.entries(); + + // Process each entry + while (zipFileEntries.hasMoreElements()) { + // grab a zip file entry + ZipEntry entry = (ZipEntry) zipFileEntries.nextElement(); + String currentEntry = entry.getName(); + File destFile = new File(MODEL + File.separator + currentEntry); + File destinationParent = destFile.getParentFile(); + + destinationParent.mkdirs(); + + if (!entry.isDirectory()) { + BufferedInputStream is = new BufferedInputStream(zip.getInputStream(entry)); + int currentByte; + byte[] data = new byte[BUFFER]; + try (FileOutputStream fos = new FileOutputStream(destFile); + BufferedOutputStream dest = new BufferedOutputStream(fos, BUFFER)) { + while ((currentByte = is.read(data, 0, BUFFER)) != -1) { + dest.write(data, 0, currentByte); + } + dest.flush(); + } catch (IOException e) { + LOGGER.error("Failed to write zip contents to {}" + destFile + e); + // + // PLD should I throw e? + // + throw e; + } + } + + if (currentEntry.endsWith(".zip")) { + extractFolder(destFile.getAbsolutePath()); + } + } + } catch (IOException e) { + LOGGER.error("Failed to unzip model file " + zipFile, e); + } + } + + private void retrieveDependency(String workingFile) { + + MSModelUtils utils = new MSModelUtils(PolicyController.getMsOnapName(), PolicyController.getMsPolicyName()); + Map<String, MSAttributeObject> tempMap; + + tempMap = utils.processEpackage(workingFile, MODEL_TYPE.XMI); + + classMap.putAll(tempMap); + LOGGER.info(tempMap); + + return; + + } + + private List<File> listModelFiles(String directoryName) { + File fileDirectory = new File(directoryName); + List<File> resultList = new ArrayList<>(); + File[] fList = fileDirectory.listFiles(); + for (File file : fList) { + if (file.isFile()) { + resultList.add(file); + } else if (file.isDirectory()) { + dirDependencyList.add(file.getName()); + resultList.addAll(listModelFiles(file.getAbsolutePath())); + } + } + return resultList; + } + private List<String> createList() { - List<String> list = new ArrayList<>(); - for (Entry<String, MSAttributeObject> cMap : classMap.entrySet()){ - if (cMap.getValue().isPolicyTempalate()){ + List<String> list = new ArrayList<>(); + for (Entry<String, MSAttributeObject> cMap : classMap.entrySet()) { + if (cMap.getValue().isPolicyTempalate()) { list.add(cMap.getKey()); } - + } - - if (list.isEmpty()){ - if (classMap.containsKey(this.newModel.getModelName())){ + + if (list.isEmpty()) { + if (classMap.containsKey(this.newModel.getModelName())) { list.add(this.newModel.getModelName()); - }else { + } else { list.add("EMPTY"); } } return list; } - public Map<String, String> getAttributesListRefMap() { - return attributesListRefMap; - } - - public Map<String, LinkedList<String>> getArrayTextList() { - return arrayTextList; - } - - private OptimizationObject setOptimizationObjectValues(PolicyRestAdapter policyAdapter) { - OptimizationObject optimizationObject = new OptimizationObject(); - optimizationObject.setTemplateVersion(XACMLProperties.getProperty(XACMLRestProperties.TemplateVersion_OOF)); - - if(policyAdapter.getServiceType() !=null){ - optimizationObject.setService(policyAdapter.getServiceType()); - optimizationObject.setVersion(policyAdapter.getVersion()); - } - if(policyAdapter.getPolicyName()!=null){ - optimizationObject.setPolicyName(policyAdapter.getPolicyName()); - } - if(policyAdapter.getPolicyDescription()!=null){ - optimizationObject.setDescription(policyAdapter.getPolicyDescription()); - } - if (policyAdapter.getPriority()!=null){ - optimizationObject.setPriority(policyAdapter.getPriority()); - }else { - optimizationObject.setPriority("9999"); - } - if (policyAdapter.getRiskLevel()!=null){ - optimizationObject.setRiskLevel(policyAdapter.getRiskLevel()); - } - if (policyAdapter.getRiskType()!=null){ - optimizationObject.setRiskType(policyAdapter.getRiskType()); - } - if (policyAdapter.getGuard()!=null){ - optimizationObject.setGuard(policyAdapter.getGuard()); - } - return optimizationObject; - } + public Map<String, String> getAttributesListRefMap() { + return attributesListRefMap; + } + + public Map<String, LinkedList<String>> getArrayTextList() { + return arrayTextList; + } + + private OptimizationObject setOptimizationObjectValues(PolicyRestAdapter policyAdapter) { + OptimizationObject optimizationObject = new OptimizationObject(); + optimizationObject.setTemplateVersion(XACMLProperties.getProperty(XACMLRestProperties.TemplateVersion_OOF)); + + if (policyAdapter.getServiceType() != null) { + optimizationObject.setService(policyAdapter.getServiceType()); + optimizationObject.setVersion(policyAdapter.getVersion()); + } + if (policyAdapter.getPolicyName() != null) { + optimizationObject.setPolicyName(policyAdapter.getPolicyName()); + } + if (policyAdapter.getPolicyDescription() != null) { + optimizationObject.setDescription(policyAdapter.getPolicyDescription()); + } + if (policyAdapter.getPriority() != null) { + optimizationObject.setPriority(policyAdapter.getPriority()); + } else { + optimizationObject.setPriority("9999"); + } + if (policyAdapter.getRiskLevel() != null) { + optimizationObject.setRiskLevel(policyAdapter.getRiskLevel()); + } + if (policyAdapter.getRiskType() != null) { + optimizationObject.setRiskType(policyAdapter.getRiskType()); + } + if (policyAdapter.getGuard() != null) { + optimizationObject.setGuard(policyAdapter.getGuard()); + } + return optimizationObject; + } } + class OptimizationObject { - private String service; - private String policyName; - private String description; - private String templateVersion; - private String version; - private String priority; - private String policyScope; - private String riskType; - private String riskLevel; - private String guard = null; - - public String getGuard() { - return guard; - } - public void setGuard(String guard) { - this.guard = guard; - } - public String getRiskType() { - return riskType; - } - public void setRiskType(String riskType) { - this.riskType = riskType; - } - public String getRiskLevel() { - return riskLevel; - } - public void setRiskLevel(String riskLevel) { - this.riskLevel = riskLevel; - } - public String getPriority() { - return priority; - } - public void setPriority(String priority) { - this.priority = priority; - } - public String getPolicyScope() { - return policyScope; - } - public void setPolicyScope(String policyScope) { - this.policyScope = policyScope; - } - public String getVersion() { - return version; - } - public void setVersion(String version) { - this.version = version; - } - private Object content; - - public String getPolicyName() { - return policyName; - } - public void setPolicyName(String policyName) { - this.policyName = policyName; - } - public String getDescription() { - return description; - } - public void setDescription(String description) { - this.description = description; - } - public Object getContent() { - return content; - } - public void setContent(Object content) { - this.content = content; - } - public String getService() { - return service; - } - public void setService(String service) { - this.service = service; - } - public String getTemplateVersion() { - return templateVersion; - } - public void setTemplateVersion(String templateVersion) { - this.templateVersion = templateVersion; - } - -}
\ No newline at end of file + private String service; + private String policyName; + private String description; + private String templateVersion; + private String version; + private String priority; + private String policyScope; + private String riskType; + private String riskLevel; + private String guard = null; + + public String getGuard() { + return guard; + } + + public void setGuard(String guard) { + this.guard = guard; + } + + public String getRiskType() { + return riskType; + } + + public void setRiskType(String riskType) { + this.riskType = riskType; + } + + public String getRiskLevel() { + return riskLevel; + } + + public void setRiskLevel(String riskLevel) { + this.riskLevel = riskLevel; + } + + public String getPriority() { + return priority; + } + + public void setPriority(String priority) { + this.priority = priority; + } + + public String getPolicyScope() { + return policyScope; + } + + public void setPolicyScope(String policyScope) { + this.policyScope = policyScope; + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + private Object content; + + public String getPolicyName() { + return policyName; + } + + public void setPolicyName(String policyName) { + this.policyName = policyName; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public Object getContent() { + return content; + } + + public void setContent(Object content) { + this.content = content; + } + + public String getService() { + return service; + } + + public void setService(String service) { + this.service = service; + } + + public String getTemplateVersion() { + return templateVersion; + } + + public void setTemplateVersion(String templateVersion) { + this.templateVersion = templateVersion; + } + +} diff --git a/POLICY-SDK-APP/src/main/webapp/app/policyApp/Windows/Dictionary/MSModelDictionaryData.html b/POLICY-SDK-APP/src/main/webapp/app/policyApp/Windows/Dictionary/MSModelDictionaryData.html new file mode 100644 index 000000000..2a7d49cb7 --- /dev/null +++ b/POLICY-SDK-APP/src/main/webapp/app/policyApp/Windows/Dictionary/MSModelDictionaryData.html @@ -0,0 +1,59 @@ +<!--/*- + * ============LICENSE_START======================================================= + * ONAP Policy Engine + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. 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. + * ============LICENSE_END========================================================= + */--> +<script type="text/ng-template" id="add_dictionaryData_popup.html"> +<div class="modal" tabindex="-1"> + <div class="modal-dialog modal-lg"> + <div class="modal-content"> + <div class="modal-header"> + <h2 class="font-showcase-font-name" style="color : #157bb2">{{label}}</h2> + </div> + <form name="formdata" ng-submit="saveMSDictionatyData(editMSDictData);" novalidate> + <div class="modal-body"> + <div class="form-group row"> + <div class="form-group col-sm-6"> + <label>Dictionary Name:<sup><b>*</b></sup></label><br> + <input type="text" ng-model="editMSDictData.dictionaryName" class="form-control" name= "dictionaryName" required/> + <p ng-show="formdata.name.$invalid && !formdata.name.$pristine" class="help-block">Dictionary Name is required.</p> + </div> + </div> + <div class="form-group row"> + <div class="form-group col-sm-6"> + <label>URL:<sup><b>*</b></sup></label><br> + <input type="text" ng-model="editMSDictData.dictionaryUrl" class="form-control" name= "dictionaryUrl" required/> + <p ng-show="formdata.name.$invalid && !formdata.name.$pristine" class="help-block">URL is required.</p> + </div> + </div> + <div class="form-group row"> + <div class="form-group col-sm-6"> + <label>Dictionary Data Name:<sup><b>*</b></sup></label><br> + <input type="text" ng-model="editMSDictData.dictionaryDataByName" class="form-control" name= "dictionaryDataByName" required/> + <p ng-show="formdata.name.$invalid && !formdata.name.$pristine" class="help-block">Dictionary Data Name is required.</p> + </div> + </div> + </div> + <div class="modal-footer"> + <button class="btn btn-success" type="submit" ng-disabled="formdata.$invalid">Save</button> + <button class="btn btn-default" type="button" ng-click="close()">Close</button> + </div> + </form> + </div> + </div> +</div> +</script> diff --git a/POLICY-SDK-APP/src/main/webapp/app/policyApp/controller/DictionaryController.js b/POLICY-SDK-APP/src/main/webapp/app/policyApp/controller/DictionaryController.js index d12523879..6becb28e6 100644 --- a/POLICY-SDK-APP/src/main/webapp/app/policyApp/controller/DictionaryController.js +++ b/POLICY-SDK-APP/src/main/webapp/app/policyApp/controller/DictionaryController.js @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP Policy Engine * ================================================================================ - * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-2019 AT&T Intellectual Property. 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. @@ -27,7 +27,7 @@ var subDictionarys = [["Action Dictionary"], ["Settings Dictionary","Rainy Day Allowed Treatments"], ["Descriptive Scope"], ["Action List", "Address Group", "Parent Dictionary List", "Port List", "Prefix List", "Protocol List", "Security Zone", "Service Group", "Service List", "Tag List", "Tag Picker List", "Term List", "Zone"], - ["DCAE UUID","Header Default Values","MicroService ConfigName","MicroService Location", "MicroService Models", "MicroService Dictionary"], + ["DCAE UUID","Header Default Values","MicroService ConfigName","MicroService Location", "MicroService Models", "MicroService Dictionary","MicroService Dictionary Input"], ["ONAP Optimization Models"], ["Closed Loop", "Group Policy Scope", "Resource", "Service", "Type"], ["Risk Type", "Safe Policy Warning"]]; @@ -79,4 +79,4 @@ app.controller('dictionaryTabController', function ($scope, PolicyAppService, mo }); }; -});
\ No newline at end of file +}); diff --git a/POLICY-SDK-APP/src/main/webapp/app/policyApp/controller/dictionaryController/MSDictionaryController.js b/POLICY-SDK-APP/src/main/webapp/app/policyApp/controller/dictionaryController/MSDictionaryController.js new file mode 100644 index 000000000..21b89697d --- /dev/null +++ b/POLICY-SDK-APP/src/main/webapp/app/policyApp/controller/dictionaryController/MSDictionaryController.js @@ -0,0 +1,71 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP Policy Engine + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. 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. + * ============LICENSE_END========================================================= + */ +app.controller('editMSDictController' , function ($scope, $modalInstance, message, UserInfoServiceDS2, Notification){ + if(message.microServiceDictionaryDatas==null) + $scope.label='Add Dictionary input' + else{ + $scope.label='Edit Dictionary input' + $scope.disableCd=true; + } + + + /*getting user info from session*/ + var userid = null; + UserInfoServiceDS2.getFunctionalMenuStaticDetailSession() + .then(function (response) { + userid = response.userid; + }); + + $scope.editMSDictData = message.microServiceDictionaryDatas; + + $scope.saveMSDictionatyData = function(microServiceDictionaryDatas) { + var regex = new RegExp("^[a-zA-Z0-9_]*$"); + if(!regex.test(microServiceDictionaryDatas.name)) { + Notification.error("Enter Valid Dictionary Name without spaces or special characters"); + }else{ + var uuu = "saveDictionary/ms_dictionary/save_DictionaryData"; + var postData={microServiceDictionaryDatas: microServiceDictionaryDatas, userid: userid}; + $.ajax({ + type : 'POST', + url : uuu, + dataType: 'json', + contentType: 'application/json', + data: JSON.stringify(postData), + success : function(data){ + $scope.$apply(function(){ + $scope.microServiceDictionaryDatas=data.microServiceDictionaryDatas;}); + if($scope.microServiceDictionaryDatas == "Duplicate"){ + Notification.error("MS Dictionary data exists with Same Name.") + }else{ + console.log($scope.microServiceDictionaryDatas); + $modalInstance.close({microServiceDictionaryDatas:$scope.microServiceDictionaryDatas}); + } + }, + error : function(data){ + alert("Error while saving."); + } + }); + } + }; + + $scope.close = function() { + $modalInstance.close(); + }; +});
\ No newline at end of file diff --git a/POLICY-SDK-APP/src/main/webapp/app/policyApp/controller/dictionaryController/MSModelsDictController.js b/POLICY-SDK-APP/src/main/webapp/app/policyApp/controller/dictionaryController/MSModelsDictController.js index 262b2adea..abecfdbbd 100644 --- a/POLICY-SDK-APP/src/main/webapp/app/policyApp/controller/dictionaryController/MSModelsDictController.js +++ b/POLICY-SDK-APP/src/main/webapp/app/policyApp/controller/dictionaryController/MSModelsDictController.js @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP Policy Engine * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-2019 AT&T Intellectual Property. 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. @@ -65,6 +65,7 @@ app.controller('editMSModelController' , function ($scope, $modalInstance, mess $scope.modalDatas = data.modelDatas; $scope.modelType= data.modelType; $scope.dataOrderInfo= data.dataOrderInfo; + $scope.ruleFormation = data.ruleFormation; console.log($scope.classListDatas); } }).error( ); @@ -78,7 +79,7 @@ app.controller('editMSModelController' , function ($scope, $modalInstance, mess $scope.saveMSModel = function(microServiceModelsDictionaryData) { if(valid){ var uuu = "saveDictionary/ms_dictionary/save_model"; - var postData={microServiceModelsDictionaryData: microServiceModelsDictionaryData, userid: userid, classMap: $scope.modalDatas,modelType:$scope.modelType, dataOrderInfo:$scope.dataOrderInfo}; + var postData={microServiceModelsDictionaryData: microServiceModelsDictionaryData, userid: userid, classMap: $scope.modalDatas,modelType:$scope.modelType, dataOrderInfo:$scope.dataOrderInfo, ruleFormation:$scope.ruleFormation}; $.ajax({ type : 'POST', url : uuu, @@ -108,4 +109,4 @@ app.controller('editMSModelController' , function ($scope, $modalInstance, mess $scope.close = function() { $modalInstance.close(); }; -});
\ No newline at end of file +}); diff --git a/POLICY-SDK-APP/src/main/webapp/app/policyApp/controller/dictionaryGridController/MSModelDictionaryDataController.js b/POLICY-SDK-APP/src/main/webapp/app/policyApp/controller/dictionaryGridController/MSModelDictionaryDataController.js new file mode 100644 index 000000000..c4234b969 --- /dev/null +++ b/POLICY-SDK-APP/src/main/webapp/app/policyApp/controller/dictionaryGridController/MSModelDictionaryDataController.js @@ -0,0 +1,127 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP Policy Engine + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. 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. + * ============LICENSE_END========================================================= + */ +app.controller('MSModelDictionaryDataController', function ($scope, PolicyAppService, modalService, $modal){ + $( "#dialog" ).hide(); + + PolicyAppService.getData('getDictionary/get_MicroServiceDictData').then(function (data) { + var j = data; + $scope.data = JSON.parse(j.data); + console.log($scope.data); + $scope.microServiceDictionaryDatas = JSON.parse($scope.data.microServiceDictionaryDatas); + console.log($scope.microServiceDictionaryDatas); + }, function (error) { + console.log("failed"); + }); + + PolicyAppService.getData('get_LockDownData').then(function(data){ + var j = data; + $scope.data = JSON.parse(j.data); + $scope.lockdowndata = JSON.parse($scope.data.lockdowndata); + $scope.msModelsDictionaryDataGrid.columnDefs[0].visible = !$scope.lockdowndata[0].lockdown; + $scope.gridApi.grid.refresh(); + },function(error){ + console.log("failed"); + }); + + $scope.msModelsDictionaryDataGrid = { + data : 'microServiceDictionaryDatas', + enableFiltering: true, + columnDefs: [{ + field: 'id', enableFiltering: false, headerCellTemplate: '' + + '<button id=\'New\' ng-click="grid.appScope.createNewMSDictNameWindow()" class="btn btn-success">' + 'Create</button>', + cellTemplate: + '<button type="button" class="btn btn-primary" ng-click="grid.appScope.editMSDictNameWindow(row.entity)"><i class="fa fa-pencil-square-o"></i></button> ' + + '<button type="button" class="btn btn-danger" ng-click="grid.appScope.deleteMSDictName(row.entity)" ><i class="fa fa-trash-o"></i></button> ', width: '8%' + },{ field: 'dictionaryName', displayName : 'Dictionary Name', sort: { direction: 'asc', priority: 0 }}, + { field: 'dictionaryUrl', displayName : 'URL' }, + {field: 'dictionaryDataByName', displayName : 'Dictionary Data Name'} + ], + onRegisterApi: function(gridApi){ + $scope.gridApi = gridApi; + } + }; + + $scope.editMSDictData = null; + $scope.createNewMSDictNameWindow = function(){ + $scope.editMSDictData = null; + var modalInstance = $modal.open({ + backdrop: 'static', keyboard: false, + templateUrl : 'add_dictionaryData_popup.html', + controller: 'editMSDictController', + resolve: { + message: function () { + var message = { + microServiceDictionaryDatas: $scope.editMSDictData + }; + return message; + } + } + }); + modalInstance.result.then(function(response){ + console.log('response', response); + $scope.microServiceDictionaryDatas=response.microServiceDictionaryDatas; + }); + }; + + $scope.editMSDictNameWindow = function(microServiceDictionaryDatas) { + $scope.editMSDictData = microServiceDictionaryDatas; + var modalInstance = $modal.open({ + backdrop: 'static', keyboard: false, + templateUrl : 'add_dictionaryData_popup.html', + controller: 'editMSDictController', + resolve: { + message: function () { + var message = { + microServiceDictionaryDatas: $scope.editMSDictData + }; + return message; + } + } + }); + modalInstance.result.then(function(response){ + console.log('response', response); + $scope.microServiceDictionaryDatas = response.microServiceDictionaryDatas; + }); + }; + + $scope.deleteMSDictName = function(data) { + modalService.popupConfirmWin("Confirm","You are about to delete the Micro Service Config Name "+data.name+". Do you want to continue?", + function(){ + var uuu = "deleteDictionary/ms_dictionary/remove_msDictionaryData"; + var postData={data: data}; + $.ajax({ + type : 'POST', + url : uuu, + dataType: 'json', + contentType: 'application/json', + data: JSON.stringify(postData), + success : function(data){ + $scope.$apply(function(){$scope.microServiceDictionaryDatas=data.microServiceDictionaryDatas;}); + }, + error : function(data){ + console.log(data); + modalService.showFailure("Fail","Error while deleting: "+ data.responseText); + } + }); + + }) + }; + +});
\ No newline at end of file diff --git a/POLICY-SDK-APP/src/main/webapp/app/policyApp/main/policyEditor.html b/POLICY-SDK-APP/src/main/webapp/app/policyApp/main/policyEditor.html index 430907a65..6efb8b637 100644 --- a/POLICY-SDK-APP/src/main/webapp/app/policyApp/main/policyEditor.html +++ b/POLICY-SDK-APP/src/main/webapp/app/policyApp/main/policyEditor.html @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP Policy Engine * ================================================================================ - * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-2019 AT&T Intellectual Property. 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. @@ -158,6 +158,7 @@ <script src= "app/policyApp/controller/dictionaryGridController/MSHeaderDefaultValuesDictGridController.js"></script> <script src= "app/policyApp/controller/dictionaryGridController/MSDcaeUUIDDictGridController.js"></script> <script src= "app/policyApp/controller/dictionaryGridController/MSLocationDictGridController.js"></script> + <script src= "app/policyApp/controller/dictionaryGridController/MSModelDictionaryDataController.js"></script> <script src= "app/policyApp/controller/dictionaryGridController/MSModelDictGridController.js"></script> <script src= "app/policyApp/controller/dictionaryGridController/ModelAttributeDictGridController.js"></script> <script src= "app/policyApp/controller/dictionaryGridController/OptimizationModelDictGridController.js"></script> @@ -201,6 +202,7 @@ <script src= "app/policyApp/controller/dictionaryController/FWZoneDictController.js"></script> <script src= "app/policyApp/controller/dictionaryController/MSHeaderDefaultValuesDictController.js"></script> <script src= "app/policyApp/controller/dictionaryController/MSConfigNameDictController.js"></script> + <script src= "app/policyApp/controller/dictionaryController/MSDictionaryController.js"></script> <script src= "app/policyApp/controller/dictionaryController/MSDcaeUUIDDictController.js"></script> <script src= "app/policyApp/controller/dictionaryController/MSLocationDictController.js"></script> <script src= "app/policyApp/controller/dictionaryController/MSModelsDictController.js"></script> @@ -268,6 +270,7 @@ <div ng-include src="'app/policyApp/Windows/Dictionary/MSDCAEUUIDDictionary.html'"></div> <div ng-include src="'app/policyApp/Windows/Dictionary/MSLocationDictionary.html'"></div> <div ng-include src="'app/policyApp/Windows/Dictionary/MSModelsDictionary.html'"></div> + <div ng-include src="'app/policyApp/Windows/Dictionary/MSModelDictionaryData.html'"></div> <div ng-include src="'app/policyApp/Windows/Dictionary/ModelAttributeDictionary.html'"></div> <div ng-include src="'app/policyApp/Windows/Dictionary/OptimizationModelsDictionary.html'"></div> <div ng-include src="'app/policyApp/Windows/Dictionary/PSClosedLoopDictionary.html'"></div> diff --git a/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Dictionary/MSModelDictionaryData.html b/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Dictionary/MSModelDictionaryData.html new file mode 100644 index 000000000..3238d023e --- /dev/null +++ b/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Dictionary/MSModelDictionaryData.html @@ -0,0 +1,22 @@ +<!--/*- + * ============LICENSE_START======================================================= + * ONAP Policy Engine + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. 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. + * ============LICENSE_END========================================================= + */--> +<div ng-app ng-controller = "MSModelDictionaryDataController"> + <div ui-grid = "msModelsDictionaryDataGrid" ui-grid-pagination ui-grid-selection ui-grid-exporter class= "grid"></div> +</div>
\ No newline at end of file diff --git a/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/DCAEMicroServicePolicyController.js b/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/DCAEMicroServicePolicyController.js index 5a3c62e3c..cffa46f53 100644 --- a/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/DCAEMicroServicePolicyController.js +++ b/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/DCAEMicroServicePolicyController.js @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP Policy Engine * ================================================================================ - * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-2019 AT&T Intellectual Property. 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. @@ -272,6 +272,10 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind if (checkValue!=undefined && checkValue!="undefined"){ if($scope.temp.policy.ruleData != null){ var checkValue = $scope.temp.policy.ruleData[selects[i].id]; + var option = document.createElement('option'); + option.setAttribute('value', checkValue); + option.appendChild(document.createTextNode(checkValue)); + document.getElementById(selects[i].id).appendChild(option); document.getElementById(selects[i].id).value = $scope.temp.policy.ruleData[selects[i].id]; plainAttributeKeys.push(selects[i].id); } @@ -1033,25 +1037,25 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind textField.setAttribute("class" , "form-control"); if(dataType){ - if(dataType == "double"){ - textField.setAttribute("type" , "number"); - textField.setAttribute("step" , "any"); - - }else if(dataType == "boolean"){ //gw1218 testing boolean - var booleanDiv = document.createElement("div"); - - booleanDiv.setAttribute("class" , "onoffswitch"); - - //var checkField = document.createElement("INPUT"); - textField.setAttribute("type" , "checkbox"); - textField.setAttribute("name" , "onoffswitch"); - textField.setAttribute("class" , "onoffswitch-checkbox"); - textField.setAttribute("id" , ''+labelValue +attibuteKey+''); - if(defaultValue && defaultValue == "true") { - textField.setAttribute("checked" , "true"); - }else{ - textField.setAttribute("checked" , "false"); - } + if(dataType == "double"){ + textField.setAttribute("type" , "number"); + textField.setAttribute("step" , "any"); + + }else if(dataType == "boolean"){ //gw1218 testing boolean + var booleanDiv = document.createElement("div"); + + booleanDiv.setAttribute("class" , "onoffswitch"); + + //var checkField = document.createElement("INPUT"); + textField.setAttribute("type" , "checkbox"); + textField.setAttribute("name" , "onoffswitch"); + textField.setAttribute("class" , "onoffswitch-checkbox"); + textField.setAttribute("id" , ''+labelValue +attibuteKey+''); + if(defaultValue.substring(0,defaultValue.indexOf(":")) == "true") { + textField.setAttribute("checked" , true); + }else{ + textField.removeAttribute("checked"); + } var booleanlabel = document.createElement("Label"); booleanlabel.setAttribute("class" , "onoffswitch-label"); @@ -1355,31 +1359,62 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind requiredNodeToolTip.textContent = "Conditional Required"; requiredNode.appendChild(requiredNodeToolTip); + } + + var listField = document.createElement("SELECT"); + listField.setAttribute("class" , "form-control"); + listField.setAttribute("style" , "width:300px;"); + listField.setAttribute("ng-disabled" , "temp.policy.readOnly"); + + if(description && description != "null"){ + listField.setAttribute("title", description); + } + + if(isRequired){ + if(document.getElementById(divID).hasAttribute('data-conditional')){ + listField.setAttribute("data-conditional", divID); + listField.setAttribute("ng-blur", "validContionalRequired('"+divID+"')"); + }else{ + listField.setAttribute("required", true); } - - var listField = document.createElement("SELECT"); - listField.setAttribute("class" , "form-control"); - listField.setAttribute("style" , "width:300px;"); - listField.setAttribute("ng-disabled" , "temp.policy.readOnly"); - - if(description && description != "null"){ - listField.setAttribute("title", description); - } - - if(isRequired){ - if(document.getElementById(divID).hasAttribute('data-conditional')){ - listField.setAttribute("data-conditional", divID); - listField.setAttribute("ng-blur", "validContionalRequired('"+divID+"')"); - }else{ - listField.setAttribute("required", true); - } - } - if( many != true || isRequired != true){ // add an empty option for not required or not multiple select element - var optionFirst = document.createElement('option'); - optionFirst.setAttribute('value', ""); - listField.appendChild(optionFirst); + } + if( many != true || isRequired != true){ // add an empty option for not required or not multiple select element + var optionFirst = document.createElement('option'); + var optionValue = ""; + if($scope.temp.policy.ruleData != null){ + if($scope.temp.policy.ruleData[labelLevel + attributeName] != undefined && $scope.temp.policy.ruleData[labelLevel + attributeName] != "undefined"){ + optionValue = $scope.temp.policy.ruleData[labelLevel + attributeName]; + } + } + optionFirst.setAttribute('value', optionValue); + optionFirst.appendChild(document.createTextNode(optionValue)); + listField.appendChild(optionFirst); + } + var ruleFormationCheck = false; + if(listemunerateValues.length !== 0 && typeof listemunerateValues[0] == "string" && listemunerateValues[0].includes("dictionary:")) { + var ruleCheck = listemunerateValues[0].split("&"); + var dictParams = ruleCheck[0].split(":"); + var dictParamsSplit = dictParams[1].split("@"); + if (ruleCheck[1] != undefined && ruleCheck[1] == 'Rule') { + ruleFormationCheck = true; } - + PolicyAppService.getData(dictParamsSplit[0]).then(function (data) { + var j = data; + $scope.data = JSON.parse(j.data); + console.log($scope.data); + $scope.listDictionarys = JSON.parse($scope.data[dictParamsSplit[1]]); + for (i=0; i < $scope.listDictionarys.length; i += 1) { + option = document.createElement('option'); + option.setAttribute('value', $scope.listDictionarys[i]); + option.appendChild(document.createTextNode($scope.listDictionarys[i])); + listField.appendChild(option); + } + }, function (error) { + console.log("failed"); + }); + + } + else{ for (i=0; i < listemunerateValues.length; i += 1) { if(typeof listemunerateValues[i] == "string" && listemunerateValues[i].includes("equal-sign")){ listemunerateValues[i] = listemunerateValues[i].replace('equal-sign','='); @@ -1391,95 +1426,130 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind option.setAttribute('value', listemunerateValues[i]); listField.appendChild(option); } - listField.setAttribute("id" , ''+ labelLevel + attributeName + ''); - - enumKeyList.push(attributeName); - - document.getElementById(divID).appendChild(label); - document.getElementById(divID).appendChild(br); - - if(many == true){ - document.getElementById(divID).appendChild(listField).multiple = true; - plainAttributeKeys.push(labelLevel + attributeName+'*'+true); - }else { - document.getElementById(divID).appendChild(listField).multiple = false; - plainAttributeKeys.push(labelLevel + attributeName+'*'+false); - - if (defaultValue){ - if(defaultValue.includes(':')){ - defaultValue = defaultValue.split(':')[0]; - } - var location = listemunerateValues.indexOf(defaultValue); - document.getElementById(labelLevel +attributeName).options[location+1].selected = true; + } + listField.setAttribute("id" , ''+ labelLevel + attributeName + ''); + + enumKeyList.push(attributeName); + + document.getElementById(divID).appendChild(label); + document.getElementById(divID).appendChild(br); + + if(many == true){ + document.getElementById(divID).appendChild(listField).multiple = true; + plainAttributeKeys.push(labelLevel + attributeName+'*'+true); + }else { + document.getElementById(divID).appendChild(listField).multiple = false; + plainAttributeKeys.push(labelLevel + attributeName+'*'+false); + + if (defaultValue){ + if(defaultValue.includes(':')){ + defaultValue = defaultValue.split(':')[0]; } + var location = listemunerateValues.indexOf(defaultValue); + document.getElementById(labelLevel +attributeName).options[location+1].selected = true; } - - if($scope.temp.policy.ruleData != null){ - if (many == true){ - document.getElementById(labelLevel +attributeName).options[0].selected = false; - for (i=0; i < listemunerateValues.length; i += 1) { - var testValue = $scope.temp.policy.ruleData[labelLevel +attributeName+'@' + i]; - if (testValue === undefined){ - testValue = $scope.temp.policy.ruleData[labelLevel +attributeName]; - } - var location = listemunerateValues.indexOf(testValue); - if (location!=-1){ - document.getElementById(labelLevel +attributeName).options[location].selected = true; - } - } - }else { - if($scope.temp.policy.ruleData[labelLevel + attributeName] != undefined && $scope.temp.policy.ruleData[labelLevel + attributeName] != "undefined"){ - document.getElementById(labelLevel + attributeName).value = $scope.temp.policy.ruleData[labelLevel + attributeName]; - } + } + + if (ruleFormationCheck) { + var optionInput = document.createElement("INPUT"); + optionInput.setAttribute("type" , "text"); + optionInput.setAttribute("id" , ''+ labelLevel + attributeName + '.input'); + optionInput.setAttribute("name" , "ruleName"); + optionInput.setAttribute("value" , " "); + optionInput.setAttribute("style" , "width:300px;"); + optionInput.setAttribute("ng-disabled" , "temp.policy.readOnly"); + optionInput.removeAttribute("required"); + + document.getElementById(divID).appendChild(optionInput); + + var optionButton = document.createElement("BUTTON"); + optionButton.setAttribute("ng-disabled" , "temp.policy.readOnly"); + var buttonLabel = document.createTextNode("+"); + optionButton.appendChild(buttonLabel); + optionButton.setAttribute("class", "btn btn-add-remove"); + optionButton.setAttribute("onclick" , 'addDynamicOptions("'+ labelLevel + attributeName + '");'); + optionButton.removeAttribute("required"); + + + document.getElementById(divID).appendChild(optionButton); + document.getElementById(divID).appendChild(br); + } + + if($scope.temp.policy.ruleData != null){ + if (many == true){ + document.getElementById(labelLevel +attributeName).options[0].selected = false; + for (i=0; i < listemunerateValues.length; i += 1) { + var testValue = $scope.temp.policy.ruleData[labelLevel +attributeName+'@' + i]; + if (testValue === undefined){ + testValue = $scope.temp.policy.ruleData[labelLevel +attributeName]; } + var location = listemunerateValues.indexOf(testValue); + if (location!=-1){ + document.getElementById(labelLevel +attributeName).options[location].selected = true; + } + } + }else { + if($scope.temp.policy.ruleData[labelLevel + attributeName] != undefined && $scope.temp.policy.ruleData[labelLevel + attributeName] != "undefined"){ + document.getElementById(labelLevel + attributeName).value = $scope.temp.policy.ruleData[labelLevel + attributeName]; } - }; - - function onlyUnique(value, index, self) { - return self.indexOf(value) === index; - }; - - - function checkDictionary(value){ - for (i = 0; i < $scope.microServiceAttributeDictionaryDatas.length; i++) { - if ($scope.microServiceAttributeDictionaryDatas[i].name.localeCompare(value)){ - return true; - } - } - - } - $scope.savePolicy = function(policy){ - if(policy.itemContent != undefined){ - $scope.refreshCheck = true; - $scope.policyNavigator = policy.itemContent; - policy.itemContent = ""; - } - $scope.savebutton = false; - var splitAt = '*'; - var dot ='.'; - var jsonPolicy = {}; - if(plainAttributeKeys != null){ - for(a = 0; a < plainAttributeKeys.length; a++){ - var splitPlainAttributeKey = plainAttributeKeys[a].split(splitAt); - console.log("splitPlainAttributeKey: " + splitPlainAttributeKey); - var searchElement = document.getElementById(splitPlainAttributeKey[0]); - var key = splitPlainAttributeKey[0]; - if(searchElement == null){ - searchElement = document.getElementById(splitPlainAttributeKey[0]+'@0'); - key = splitPlainAttributeKey[0]+'@0'; - }else if (searchElement.nodeName == 'BUTTON'){ - searchElement = document.getElementById(splitPlainAttributeKey[0]+'@0'); - key = splitPlainAttributeKey[0]+'@0'; - } - if(searchElement != null){ - var keySplit = key.split(dot); - var elumentLocation = keySplit.length; - var enumKey = key; - if (elumentLocation > 1){ - enumKey = keySplit[keySplit.length - 1]; - } - //check it is undefined or not - if (enumKeyList != undefined && enumKeyList.indexOf(enumKey) != -1){ + } + } + }; + + addDynamicOptions = function(id) { + var option = document.createElement("option"); + var value = document.getElementById(id+".input").value; + option.setAttribute('value', value); + option.appendChild(document.createTextNode(value)); + document.getElementById(id).options.add(option); + document.getElementById(id+".input").value = ""; + }; + + function onlyUnique(value, index, self) { + return self.indexOf(value) === index; + }; + + + function checkDictionary(value){ + for (i = 0; i < $scope.microServiceAttributeDictionaryDatas.length; i++) { + if ($scope.microServiceAttributeDictionaryDatas[i].name.localeCompare(value)){ + return true; + } + } + + } + $scope.savePolicy = function(policy){ + if(policy.itemContent != undefined){ + $scope.refreshCheck = true; + $scope.policyNavigator = policy.itemContent; + policy.itemContent = ""; + } + $scope.savebutton = false; + var splitAt = '*'; + var dot ='.'; + var jsonPolicy = {}; + if(plainAttributeKeys != null){ + for(a = 0; a < plainAttributeKeys.length; a++){ + var splitPlainAttributeKey = plainAttributeKeys[a].split(splitAt); + console.log("splitPlainAttributeKey: " + splitPlainAttributeKey); + var searchElement = document.getElementById(splitPlainAttributeKey[0]); + var key = splitPlainAttributeKey[0]; + if(searchElement == null){ + searchElement = document.getElementById(splitPlainAttributeKey[0]+'@0'); + key = splitPlainAttributeKey[0]+'@0'; + }else if (searchElement.nodeName == 'BUTTON'){ + searchElement = document.getElementById(splitPlainAttributeKey[0]+'@0'); + key = splitPlainAttributeKey[0]+'@0'; + } + if(searchElement != null){ + var keySplit = key.split(dot); + var elumentLocation = keySplit.length; + var enumKey = key; + if (elumentLocation > 1){ + enumKey = keySplit[keySplit.length - 1]; + } + //check it is undefined or not + if (enumKeyList != undefined && enumKeyList.indexOf(enumKey) != -1){ if (splitPlainAttributeKey[1]!= undefined && splitPlainAttributeKey[1].indexOf("true") !== -1){ var multiSlect = []; for ( var i = 0; i < searchElement.selectedOptions.length; i++) { @@ -1722,4 +1792,4 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind } }); -}]);
\ No newline at end of file +}]); diff --git a/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/css/main.css b/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/css/main.css index d7c98b98c..81d91d90b 100644 --- a/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/css/main.css +++ b/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/css/main.css @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP Policy Engine * ================================================================================ - * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-2019 AT&T Intellectual Property. 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. @@ -550,4 +550,107 @@ table th > a:focus { border: 0px solid grey; border-left: none; cursor: pointer; -}
\ No newline at end of file +} + +.switch { + position: relative; + display: inline-block; + width: 60px; + height: 34px; +} + +.switch input {display:none;} + +.slider { + position: absolute; + cursor: pointer; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #ccc; + -webkit-transition: .4s; + transition: .4s; +} + +.slider:before { + position: absolute; + content: ""; + height: 26px; + width: 26px; + left: 4px; + bottom: 4px; + background-color: white; + -webkit-transition: .4s; + transition: .4s; +} + +input:checked + .slider { + background-color: blue; +} + +input:focus + .slider { + box-shadow: 0 0 1px blue; +} + +input:checked + .slider:before { + -webkit-transform: translateX(26px); + -ms-transform: translateX(26px); + transform: translateX(26px); +} + +/* Rounded sliders */ +.slider.round { + border-radius: 34px; +} + +.slider.round:before { + border-radius: 50%; +} + + +.onoffswitch { + position: relative; width: 90px; + -webkit-user-select:none; -moz-user-select:none; -ms-user-select: none; +} +.onoffswitch-checkbox { + display: none; +} +.onoffswitch-label { + display: block; overflow: hidden; cursor: pointer; + border: 2px solid #999999; border-radius: 20px; +} +.onoffswitch-inner { + display: block; width: 200%; margin-left: -100%; + transition: margin 0.3s ease-in 0s; +} +.onoffswitch-inner:before, .onoffswitch-inner:after { + display: block; float: left; width: 50%; height: 25px; padding: 0; line-height: 25px; + font-size: 14px; color: white; font-family: Trebuchet, Arial, sans-serif; font-weight: bold; + box-sizing: border-box; +} +.onoffswitch-inner:before { + content: "ON"; + padding-left: 10px; + background-color: #337ab7; color: #FFFFFF; +} +.onoffswitch-inner:after { + content: "OFF"; + padding-right: 10px; + background-color: #EEEEEE; color: #999999; + text-align: right; +} +.onoffswitch-switch { + display: block; width: 18px; margin: 6px; + background: #FFFFFF; + position: absolute; top: 0; bottom: 0; + right: 56px; + border: 2px solid #999999; border-radius: 20px; + transition: all 0.3s ease-in 0s; +} +.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner { + margin-left: 0; +} +.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch { + right: 0px; +} diff --git a/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/policy_Dictionary.html b/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/policy_Dictionary.html index 690f43b36..acf5e1827 100644 --- a/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/policy_Dictionary.html +++ b/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/policy_Dictionary.html @@ -2,7 +2,7 @@ ============LICENSE_START======================================================= ONAP Policy Engine ================================================================================ - Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. + Copyright (C) 2017-2019 AT&T Intellectual Property. 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. @@ -105,6 +105,7 @@ <div ng-if="option2 == 'MicroService Location'" ng-include = "'app/policyApp/policy-models/Dictionary/MSLocationDictionary.html'"></div> <div ng-if="option2 == 'MicroService Models'" ng-include = "'app/policyApp/policy-models/Dictionary/MSModelDictionary.html'"></div> <div ng-if="option2 == 'MicroService Dictionary'" ng-include = "'app/policyApp/policy-models/Dictionary/ModelAttributeDictionary.html'"></div> + <div ng-if="option2 == 'MicroService Dictionary Input'" ng-include = "'app/policyApp/policy-models/Dictionary/MSModelDictionaryData.html'"></div> <!--Optimization Policy Dictionary's--> <div ng-if="option2 == 'ONAP Optimization Models'" ng-include = "'app/policyApp/policy-models/Dictionary/OptimizationModelDictionary.html'"></div> <!-- Policy Scope Dictionary's --> @@ -137,4 +138,4 @@ </div> </div> </div> -</script>
\ No newline at end of file +</script> diff --git a/POLICY-SDK-APP/src/test/java/org/onap/policy/controller/CreateDcaeMicroServiceControllerTest.java b/POLICY-SDK-APP/src/test/java/org/onap/policy/controller/CreateDcaeMicroServiceControllerTest.java index ea67bbd34..e4ededa1f 100644 --- a/POLICY-SDK-APP/src/test/java/org/onap/policy/controller/CreateDcaeMicroServiceControllerTest.java +++ b/POLICY-SDK-APP/src/test/java/org/onap/policy/controller/CreateDcaeMicroServiceControllerTest.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP Policy Engine * ================================================================================ - * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Modifications Copyright (C) 2019 Samsung * ================================================================================ @@ -31,6 +31,10 @@ import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.github.fge.jackson.JsonLoader; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; @@ -45,6 +49,13 @@ import java.util.Map; import javax.servlet.ReadListener; import javax.servlet.ServletInputStream; import javax.servlet.http.HttpServletRequest; +import oasis.names.tc.xacml._3_0.core.schema.wd_17.AllOfType; +import oasis.names.tc.xacml._3_0.core.schema.wd_17.AnyOfType; +import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeDesignatorType; +import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeValueType; +import oasis.names.tc.xacml._3_0.core.schema.wd_17.MatchType; +import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType; +import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType; import org.junit.Before; import org.junit.Test; import org.onap.policy.common.logging.flexlogger.FlexLogger; @@ -56,25 +67,14 @@ import org.onap.policy.rest.jpa.MicroServiceModels; import org.onap.policy.rest.jpa.PolicyEntity; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.github.fge.jackson.JsonLoader; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.AllOfType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.AnyOfType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeDesignatorType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeValueType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.MatchType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType; /** * The class <code>CreateDcaeMicroServiceControllerTest</code> contains tests for the class * {@link <code>CreateDcaeMicroServiceController</code>}* * - * All JUnits are designed to run in the local development environment where they have write - * privileges and can execute time-sensitive tasks. - * + * All JUnits are designed to run in the local development environment where they have write privileges and can execute + * time-sensitive tasks. + * */ public class CreateDcaeMicroServiceControllerTest { @@ -87,38 +87,94 @@ public class CreateDcaeMicroServiceControllerTest { @Before public void setUp() throws Exception { - logger.info("setUp: Entering"); commonClassDao = mock(CommonClassDao.class); List<Object> microServiceModelsData = new ArrayList<Object>(); MicroServiceModels testData = new MicroServiceModels(); testData.setVersion("OpenOnap-Junit"); + testData.setModelName("modelName"); + testData.setRuleFormation("triggerSignature.signaturesAlarm.alarmSignatures.alarmSignature[VnfType, " + + "Contains, FilterValue]@SymptomTriggerSignature.signaturesSymptom.symptomSignatures." + + "symptomSignature[symptomVnfType, symptomContains, symptomFilterValue]"); + testData.setAttributes( + "ParentCorrelation Name=String:defaultValue-null:required-true:MANY-false:description-null," + + "CorrelationWindow=String:defaultValue-null:required-true:MANY-false:description-null," + + "EmailNotification=String:defaultValue-null:required-true:MANY-false:description-null," + + "CorrelationPriority=string:defaultValue-null:required-true:MANY-false:description-null,"); + testData.setRef_attributes("SymptomTriggerSignature=resource-model-symptomEntity:MANY-true:description-null," + + "triggerSignature=resource-model-entity:MANY-true:description-null," + + "SelectServerScope=SELECTSERVERSCOPE:MANY-false,logicalConnector=LOGICALCONNECTOR:MANY-false," + + "ParentCorrelationTraversal=PARENTCORRELATIONTRAVERSAL:MANY-false,"); + testData.setSub_attributes( + "{\"symptomAlarms\":{\"symptomContains\":\"SYMPTOMCONTAINS:defaultValue-null:required-true:MANY-false:" + + "description-null\",\"symptomFilterValue\":\"string:defaultValue-null:" + + "required-true:MANY-false:" + + "description-null\",\"symptomVnfType\":\"SYMPTOMVNFTYPE:defaultValue-null:" + + "required-true:MANY-false:" + + "description-null\"},\"symptomElement\":{\"symptomSignatures\":\"symptomRange:required-true:" + + "MANY-true:description-null\",\"symptomTraversal\":\"SYMPTOMTRAVERSAL:defaultValue-null:" + + "required-true:MANY-false:description-null\"},\"alarms\":{\"Contains\":\"CONTAINS:" + + "defaultValue-null:required-true:MANY-false:description-null\",\"VnfType\":\"VNFTYPE:" + + "defaultValue-null:required-true:MANY-false:description-null\",\"FilterValue\":\"string:" + + "defaultValue-null:required-true:MANY-false:description-null\"},\"resource-model-entity\":" + + "{\"signaturesAlarm\":\"element:required-false:MANY-false:description-null\"},\"range\":" + + "{\"alarmSignature\":\"alarms:required-true:MANY-false:description-null\"},\"symptomRange\":" + + "{\"symptomSignature\":\"symptomAlarms:required-true:MANY-false:description-null\"}," + + "\"element\":" + + "{\"alarmSignatures\":\"range:required-true:MANY-true:description-null\",\"traversal\":" + + "\"TRAVERSAL:" + "defaultValue-null:required-true:MANY-false:description-null\"}," + + "\"resource-model-symptomEntity\":" + + "{\"signaturesSymptom\":\"symptomElement:required-false:MANY-false:description-null\"}}"); + testData.setAnnotation( + "alarmSignatures=matching-true, symptomContains=matching-true, symptomSignatures=matching-true, " + + "symptomTraversal=matching-true, symptomVnfType=matching-true, Contains=matching-true, " + + "SelectServerScope=matching-true, VnfType=matching-true, traversal=matching-true, " + + "logicalConnector=matching-true, ParentCorrelationTraversal=matching-true"); + testData.setEnumValues("triggerSignature.signaturesAlarm.alarmSignatures.alarmSignature[VnfType, Contains, " + + "FilterValue]@SymptomTriggerSignature.signaturesSymptom.symptomSignatures.symptomSignature" + + "[symptomVnfType, symptomContains, symptomFilterValue]"); + testData.setDataOrderInfo("triggerSignature.signaturesAlarm.alarmSignatures.alarmSignature[VnfType, Contains, " + + "FilterValue]@SymptomTriggerSignature.signaturesSymptom.symptomSignatures." + + "symptomSignature[symptomVnfType, symptomContains, symptomFilterValue]"); microServiceModelsData.add(testData); // mock the getDataById() call - when(commonClassDao.getDataById(MicroServiceModels.class, "modelName", "test")) + when(commonClassDao.getDataById(MicroServiceModels.class, "modelName:version", "TESTMODEL" + ":" + "TODAY")) .thenReturn(microServiceModelsData); - jsonString = - "{\"policyData\": {\"error\": \"\",\"inprocess\": false,\"model\": {\"name\": \"testingdata\", " - + " \"subScopename\": \"\",\"path\": [],\"type\": \"dir\",\"size\": 0," - + "\"date\": \"2017-04-12T21:26:57.000Z\", \"version\": \"\",\"createdBy\": \"someone\"," - + "\"modifiedBy\": \"someone\",\"content\": \"\",\"recursive\": false}," - + "\"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\"}," - + "\"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\"," - + "\"policyName\": \"may1501\", \"policyDescription\": \"testing input\"," - + "\"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\"," - + "\"riskLevel\": \"2\",\"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\"," - + "\"version\": \"1707.41.02\",\"ruleGridData\": [[\"fileId\"]],\"ttlDate\": null}}," - + "\"policyJSON\": {\"pmTableName\": \"test\",\"dmdTopic\": \"1\",\"fileId\": \"56\"}}"; - - configBodyString = - "{\"service\":\"SniroPolicyEntityTest\",\"policyName\":\"someone\",\"description\":\"test\"," - + "\"templateVersion\":\"1607\",\"version\":\"HD\",\"priority\":\"2\"," - + "\"content\":{\"lastPolled\":\"1\",\"boolen-test\":\"true\",\"created\":\"test\"," - + "\"retiredDate\":\"test\",\"scope\":\"SNIRO_PLACEMENT_VDHV\",\"name\":\"test\"," - + "\"lastModified\":\"test\",\"state\":\"CREATED\",\"type\":\"CONFIG\",\"intent\":\"test\"," - + "\"target\":\"SNIRO\"}}"; + jsonString = "{\"policyData\":{\"error\":\"\",\"inprocess\":false,\"model\":{\"name\":\"DCAE\"," + + "\"subScopename\":\"\",\"path\":[],\"type\":\"dir\",\"size\":0,\"createdDate\":" + + "\"2019-02-26 09:56:23.0\",\"modifiedDate\":\"2019-02-26 09:56:23.0\",\"version\":" + + "\"\",\"createdBy\":\"super-admin\",\"modifiedBy\":\"super-admin\",\"roleType\":\"super-admin\"," + + "\"content\":\"\",\"recursive\":false},\"tempModel\":{\"name\":\"DCAE\",\"subScopename\":\"\"," + + "\"path\":[],\"type\":\"dir\",\"size\":0,\"createdDate\":\"2019-02-26 09:56:23.0\"," + + "\"modifiedDate\":\"2019-02-26 09:56:23.0\",\"version\":\"\",\"createdBy\":\"super-admin\"," + + "\"modifiedBy\":\"super-admin\",\"roleType\":\"super-admin\",\"content\":\"\"," + + "\"recursive\":false},\"$$hashKey\":\"object:354\",\"policy\":{\"policyType\":\"Config\"," + + "\"configPolicyType\":\"Micro Service\",\"serviceType\":\"TESTMODEL\",\"version\":\"TODAY\"," + + "\"ruleGridData\":[\"Correlation Priority\",\"Correlation Window\"," + + "\"Email Notification for failures\",\"Select Server Scope\"," + + "\"Parent Correlation Name\",\"Parent Correlation Traversal\"," + + "\"traversal\",\"FilterValue\"],\"policyName\":\"testttt\",\"onapName\":" + + "\"asdafadf\",\"guard\":\"True\",\"riskType\":\"sfsgs\",\"riskLevel\":\"1\"," + + "\"priority\":\"1\",\"configName\":\"Search\",\"location\":\"Search\"," + + "\"uuid\":\"Search\",\"policyScope\":\"PolicyScope_ssaaa123\"}}," + + "\"policyJSON\":{\"Correlation Priority\":\"testttt\",\"Correlation Window\":" + + "\"testttt\",\"Email Notification for failures\":\"sds@l.com\"," + + "\"Select Server Scope\":\"testttt\",\"Parent Correlation Name\":" + + "\"testttt\",\"Parent Correlation Traversal\":\"testttt\",\"logicalConnector\":" + + "\"OR\",\"triggerSignature@0.signaturesAlarm.alarmSignatures@0.traversal\":\"testttt\"," + + "\"triggerSignature@0.signaturesAlarm.alarmSignatures@0.alarmSignature@0.VnfType\":" + + "\" testttt\",\"triggerSignature@0.signaturesAlarm.alarmSignatures@0." + + "alarmSignature@0.Contains\":\"AND\",\"triggerSignature@0.signaturesAlarm." + + "alarmSignatures@0.alarmSignature@0.FilterValue\":\"testttt\"}}"; + + configBodyString = "{\"service\":\"SniroPolicyEntityTest\",\"policyName\":\"someone\",\"description\":\"test\"," + + "\"templateVersion\":\"1607\",\"version\":\"HD\",\"priority\":\"2\"," + + "\"content\":{\"lastPolled\":\"1\",\"boolen-test\":\"true\",\"created\":\"test\"," + + "\"retiredDate\":\"test\",\"scope\":\"SNIRO_PLACEMENT_VDHV\",\"name\":\"test\"," + + "\"lastModified\":\"test\",\"state\":\"CREATED\",\"type\":\"CONFIG\",\"intent\":\"test\"," + + "\"target\":\"SNIRO\"}}"; request = mock(HttpServletRequest.class); BufferedReader br = new BufferedReader(new StringReader(jsonString)); @@ -129,7 +185,7 @@ public class CreateDcaeMicroServiceControllerTest { } /** - * Run the PolicyRestAdapter setDataToPolicyRestAdapter(PolicyRestAdapter, JsonNode) method test + * Run the PolicyRestAdapter setDataToPolicyRestAdapter(PolicyRestAdapter, JsonNode) method test. */ @Test @@ -137,7 +193,6 @@ public class CreateDcaeMicroServiceControllerTest { logger.debug("testSetDataToPolicyRestAdapter: enter"); - CreateDcaeMicroServiceController controller = new CreateDcaeMicroServiceController(); CreateDcaeMicroServiceController.setCommonClassDao(commonClassDao); JsonNode root = null; @@ -146,27 +201,24 @@ public class CreateDcaeMicroServiceControllerTest { PolicyRestAdapter policyData = null; try { root = JsonLoader.fromString(jsonString); - policyData = (PolicyRestAdapter) mapper.readValue( - root.get("policyData").get("policy").toString(), PolicyRestAdapter.class); + policyData = mapper.readValue(root.get("policyData").get("policy").toString(), PolicyRestAdapter.class); } catch (Exception e) { logger.error("testSetDataToPolicyRestAdapter", e); } - + CreateDcaeMicroServiceController controller = new CreateDcaeMicroServiceController(); PolicyRestAdapter result = controller.setDataToPolicyRestAdapter(policyData, root); - assertTrue( - result != null && result.getJsonBody() != null && !result.getJsonBody().isEmpty()); + assertTrue(result != null && result.getJsonBody() != null && !result.getJsonBody().isEmpty()); logger.debug("result.getJsonBody() : " + result.getJsonBody()); logger.debug("testSetDataToPolicyRestAdapter: exit"); } /** - * Run the ModelAndView getDCAEMSTemplateData(HttpServletRequest, HttpServletResponse) method - * test + * Run the ModelAndView getDCAEMSTemplateData(HttpServletRequest, HttpServletResponse) method test. */ @Test - public void testGetDCAEMSTemplateData() { + public void testGetDcaeMsTemplateData() { logger.debug("testGetDCAEMSTemplateData: enter"); @@ -186,13 +238,13 @@ public class CreateDcaeMicroServiceControllerTest { testData.setVersion("1707.4.1.2-Junit"); microServiceModelsData.add(testData); // mock the getDataById() call with the same MS model name - when(commonClassDao.getDataById(MicroServiceModels.class, "modelName", - "DkatPolicyBody")).thenReturn(microServiceModelsData); + when(commonClassDao.getDataById(MicroServiceModels.class, "modelName", "DkatPolicyBody")) + .thenReturn(microServiceModelsData); controller.getDCAEMSTemplateData(request, response); - assertTrue(response.getContentAsString() != null - && response.getContentAsString().contains("dcaeModelData")); + assertTrue( + response.getContentAsString() != null && response.getContentAsString().contains("dcaeModelData")); logger.debug("response: " + response.getContentAsString()); @@ -204,8 +256,7 @@ public class CreateDcaeMicroServiceControllerTest { } /** - * Run the ModelAndView getModelServiceVersionData(HttpServletRequest, HttpServletResponse) - * method test + * Run the ModelAndView getModelServiceVersionData(HttpServletRequest, HttpServletResponse) method test. */ @Test @@ -230,8 +281,8 @@ public class CreateDcaeMicroServiceControllerTest { microServiceModelsData.add(testData); // mock the getDataById() call with the same MS model name - when(commonClassDao.getDataById(MicroServiceModels.class, "modelName", - "DkatPolicyBody")).thenReturn(microServiceModelsData); + when(commonClassDao.getDataById(MicroServiceModels.class, "modelName", "DkatPolicyBody")) + .thenReturn(microServiceModelsData); controller.getModelServiceVersionData(request, response); assertTrue(response.getContentAsString() != null @@ -248,11 +299,11 @@ public class CreateDcaeMicroServiceControllerTest { } /** - * Run the void getDCAEPriorityValuesData(HttpServletRequest, HttpServletResponse) method test + * Run the void getDCAEPriorityValuesData(HttpServletRequest, HttpServletResponse) method test. */ @Test - public void testGetDCAEPriorityValuesData() { + public void testGetDcaePriorityValuesData() { logger.debug("testGetDCAEPriorityValuesData: enter"); @@ -262,8 +313,8 @@ public class CreateDcaeMicroServiceControllerTest { MockHttpServletResponse response = new MockHttpServletResponse(); try { controller.getDCAEPriorityValuesData(request, response); - assertTrue(response.getContentAsString() != null - && response.getContentAsString().contains("priorityDatas")); + assertTrue( + response.getContentAsString() != null && response.getContentAsString().contains("priorityDatas")); logger.debug("response: " + response.getContentAsString()); } catch (Exception e) { logger.error("testGetDCAEPriorityValuesData", e); @@ -274,11 +325,11 @@ public class CreateDcaeMicroServiceControllerTest { } /** - * Run the void prePopulateDCAEMSPolicyData(PolicyRestAdapter, PolicyEntity) method test + * Run the void prePopulateDCAEMSPolicyData(PolicyRestAdapter, PolicyEntity) method test. */ @Test - public void testPrePopulateDCAEMSPolicyData() { + public void testPrePopulateDcaeMsPolicyData() { logger.debug("testPrePopulateDCAEMSPolicyData: enter"); @@ -297,9 +348,7 @@ public class CreateDcaeMicroServiceControllerTest { try { root = JsonLoader.fromString(jsonString); - restAdapter = (PolicyRestAdapter) mapper.readValue( - root.get("policyData").get("policy").toString(), PolicyRestAdapter.class); - PolicyType policyType = new PolicyType(); + restAdapter = mapper.readValue(root.get("policyData").get("policy").toString(), PolicyRestAdapter.class); TargetType target = new TargetType(); // create guard attribute @@ -364,8 +413,6 @@ public class CreateDcaeMicroServiceControllerTest { target.getAnyOf().add(anyRiskType); // create RiskLevel attribute - AnyOfType anyRiskLevel = new AnyOfType(); - AllOfType allRiskLevel = new AllOfType(); MatchType matchRiskLevel = new MatchType(); // set value AttributeValueType riskLevel = new AttributeValueType(); @@ -375,6 +422,7 @@ public class CreateDcaeMicroServiceControllerTest { AttributeDesignatorType designatorRiskLevel = new AttributeDesignatorType(); designatorRiskLevel.setAttributeId("RiskLevel"); matchRiskLevel.setAttributeDesignator(designatorRiskLevel); + AllOfType allRiskLevel = new AllOfType(); allRiskLevel.getMatch().add(matchRiskLevel); // add a dummy MatchType object since while (matchList.size()>1 ...) @@ -389,10 +437,10 @@ public class CreateDcaeMicroServiceControllerTest { matchDummy2.setAttributeDesignator(designatorDummy2); allRiskLevel.getMatch().add(matchDummy2); - + AnyOfType anyRiskLevel = new AnyOfType(); anyRiskLevel.getAllOf().add(allRiskLevel); target.getAnyOf().add(anyRiskLevel); - + PolicyType policyType = new PolicyType(); policyType.setTarget(target); restAdapter.setPolicyData(policyType); @@ -417,7 +465,7 @@ public class CreateDcaeMicroServiceControllerTest { } /** - * Run the Map<String,String> convert(String, String) method test + * Run the Map<String,String> convert(String, String) method test. */ @Test @@ -426,39 +474,38 @@ public class CreateDcaeMicroServiceControllerTest { String str = "k1=v1,k2=v2,k3=v3"; String split = ","; - Map<String, String> result = CreateDcaeMicroServiceController.convert(str, split); + Map<String, String> result = new CreateDcaeMicroServiceController().convert(str, split); assertTrue(result != null && result.size() == 3); logger.debug("testConvert: exit"); } /** - * Run the Map<String,String> convertMap(Map<String,String>, Map<String,String>) method test + * Run the Map<String,String> convertMap(Map<String,String>, Map<String,String>) method test. */ @Test public void testConvertMap() { logger.debug("testConvertMap: enter"); - - CreateDcaeMicroServiceController controller = new CreateDcaeMicroServiceController(); Map<String, String> attributesMap = new HashMap<String, String>(); - Map<String, String> attributesRefMap = new HashMap<String, String>(); - Map<String, String> attributesListRefMap = controller.getAttributesListRefMap(); - Map<String, LinkedList<String>> arrayTextList = controller.getArrayTextList(); - LinkedList<String> list = new LinkedList<String>(); attributesMap.put("keyOne", "valueOne"); attributesMap.put("keyTwo", "valueTwo"); attributesMap.put("keyThree", "valueThree"); + Map<String, String> attributesRefMap = new HashMap<String, String>(); attributesRefMap.put("key4", "value4"); attributesRefMap.put("key5", "value5"); attributesRefMap.put("key6", "value6"); + CreateDcaeMicroServiceController controller = new CreateDcaeMicroServiceController(); + Map<String, String> attributesListRefMap = controller.getAttributesListRefMap(); + LinkedList<String> list = new LinkedList<String>(); attributesListRefMap.put("key7", "value7"); list.add("l1"); list.add("l2"); + Map<String, LinkedList<String>> arrayTextList = controller.getArrayTextList(); arrayTextList.put("key8", list); Map<String, String> result = controller.convertMap(attributesMap, attributesRefMap); @@ -471,12 +518,12 @@ public class CreateDcaeMicroServiceControllerTest { } /** - * Run the void SetMSModelData(HttpServletRequest, HttpServletResponse) method test + * Run the void SetMSModelData(HttpServletRequest, HttpServletResponse) method test. */ // @Ignore @Test - public void testSetMSModelData() { + public void testSetMsModelData() { logger.debug("testSetMSModelData: enter"); @@ -493,9 +540,7 @@ public class CreateDcaeMicroServiceControllerTest { String fileName = ""; try { ClassLoader classLoader = getClass().getClassLoader(); - fileName = - new File(classLoader.getResource("schedulerPolicies-v1707.xmi").getFile()) - .getAbsolutePath(); + fileName = new File(classLoader.getResource("schedulerPolicies-v1707.xmi").getFile()).getAbsolutePath(); } catch (Exception e1) { logger.error("Exception Occured while loading file" + e1); } @@ -513,8 +558,7 @@ public class CreateDcaeMicroServiceControllerTest { } /** - * - * @ Get File Stream + * @ Get File Stream. * */ private class MockServletInputStream extends ServletInputStream { diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/ConfigNameRequest.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/ConfigNameRequest.java index 1a64757ca..c5c10b07d 100644 --- a/PolicyEngineAPI/src/main/java/org/onap/policy/api/ConfigNameRequest.java +++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/ConfigNameRequest.java @@ -25,6 +25,7 @@ import java.io.Serializable; public class ConfigNameRequest implements Serializable { private static final long serialVersionUID = 4487978240532425305L; + private static final Gson GSON = new Gson(); private String policyName = null; @@ -37,12 +38,12 @@ public class ConfigNameRequest implements Serializable { } /** - * Used to print the input Params for getCOnfig REST call. + * Used to print the input Params for getConfig REST call. * * @return JSON String of this object. */ @Override public String toString() { - return new Gson().toJson(this); + return GSON.toJson(this); } } diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/ConfigRequestParameters.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/ConfigRequestParameters.java index dcdc17802..35169a39e 100644 --- a/PolicyEngineAPI/src/main/java/org/onap/policy/api/ConfigRequestParameters.java +++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/ConfigRequestParameters.java @@ -2,14 +2,14 @@ * ============LICENSE_START======================================================= * PolicyEngineAPI * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017,2019 AT&T Intellectual Property. 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. @@ -20,151 +20,166 @@ package org.onap.policy.api; +import com.google.gson.Gson; import java.util.Map; import java.util.UUID; /** - * <code>ConfigRequestParameters</code> defines the Config Policy Request Parameters - * which retrieve(s) the policy from PDP if the request parameters match with any Config Policy. - * + * <code>ConfigRequestParameters</code> defines the Config Policy Request Parameters which retrieve(s) the policy from + * PDP if the request parameters match with any Config Policy. + * * @version 0.1 */ public class ConfigRequestParameters { - private String policyName; - private String onapName; - private String configName; - private Map<String,String> configAttributes; - private UUID requestID; - private Boolean unique = false; - - /** - * Sets the PolicyName of the Config policy which needs to be retrieved. - * - * @param policyName the <code>String</code> format of the PolicyFile Name whose configuration is required. - */ - public void setPolicyName(String policyName){ - this.policyName = policyName; - } - - /** - * Sets the ONAP Component Name of the Config policy which needs to be retrieved. - * - * @param onapName the <code>String</code> format of the onapName whose configuration is required. - */ - public void setOnapName(String onapName){ - this.onapName = onapName; - } - - /** - * Sets the ONAP Component Name of the Config policy which needs to be retrieved. - * + private static final Gson GSON = new Gson(); + private String policyName; + private String onapName; + private String configName; + private Map<String, String> configAttributes; + private UUID requestID; + private Boolean unique = false; + + /** + * Sets the PolicyName of the Config policy which needs to be retrieved. + * + * @param policyName the <code>String</code> format of the PolicyFile Name whose configuration is required. + */ + public void setPolicyName(String policyName) { + this.policyName = policyName; + } + + /** + * Sets the ONAP Component Name of the Config policy which needs to be retrieved. + * + * @param onapName the <code>String</code> format of the onapName whose configuration is required. + */ + public void setOnapName(String onapName) { + this.onapName = onapName; + } + + /** + * Sets the ONAP Component Name of the Config policy which needs to be retrieved. + * * @param ecompName the <code>String</code> format of the onapName whose configuration is required. - * @deprecated use {@link #setOnapName(String)} instead. + * @deprecated use {@link #setOnapName(String)} instead. */ - @Deprecated - public void setEcompName(String ecompName){ + @Deprecated + public void setEcompName(String ecompName) { this.onapName = ecompName; } - - /** - * Sets the Config Name of the Config policy which needs to be retrieved. - * - * @param configName the <code>String</code> format of the configurationName whose configuration is required. - */ - public void setConfigName(String configName){ - this.configName = configName; - } - - /** - * Sets the ConfigAttributes of the Config policy which needs to be retrieved. - * - * @param configAttributes the <code>Map</code> of <code>String,String</code> format of the configuration attributes which are required. - */ - public void setConfigAttributes(Map<String, String> configAttributes){ - this.configAttributes = configAttributes; - } - - /** - * Sets the Request ID of the ONAP request. - * - * @param requestID unique <code>UUID</code> requestID which will be passed throughout the ONAP components to correlate logging messages. - */ - public void setRequestID(UUID requestID){ - this.requestID = requestID; - } - - /** - * Gets the policyName of the Request Parameters. - * - * @return <code>String</code> format of the policyName. - */ - public String getPolicyName(){ - return policyName; - } - - /** - * Gets the ONAP Component Name of the Request Parameters. - * - * @return <code>String</code> format of the ONAP Component Name. - */ - public String getOnapName(){ - return onapName; - } - - /** - * Gets the ONAP Component Name of the Request Parameters. - * - * @return <code>String</code> format of the ONAP Component Name. - * @deprecated use {@link #getOnapName()} instead. + + /** + * Sets the Config Name of the Config policy which needs to be retrieved. + * + * @param configName the <code>String</code> format of the configurationName whose configuration is required. + */ + public void setConfigName(String configName) { + this.configName = configName; + } + + /** + * Sets the ConfigAttributes of the Config policy which needs to be retrieved. + * + * @param configAttributes the <code>Map</code> of <code>String,String</code> format of the configuration attributes + * which are required. + */ + public void setConfigAttributes(Map<String, String> configAttributes) { + this.configAttributes = configAttributes; + } + + /** + * Sets the Request ID of the ONAP request. + * + * @param requestID unique <code>UUID</code> requestID which will be passed throughout the ONAP components to + * correlate logging messages. + */ + public void setRequestID(UUID requestID) { + this.requestID = requestID; + } + + /** + * Gets the policyName of the Request Parameters. + * + * @return <code>String</code> format of the policyName. */ - @Deprecated - public String getEcompName(){ + public String getPolicyName() { + return policyName; + } + + /** + * Gets the ONAP Component Name of the Request Parameters. + * + * @return <code>String</code> format of the ONAP Component Name. + */ + public String getOnapName() { return onapName; } - - /** - * Gets the Config name of the Request Parameters. - * - * @return <code>String</code> format of the Config Name. - */ - public String getConfigName(){ - return configName; - } - - /** - * Gets the Config Attributes of the Request Parameters. - * - * @return <code>Map</code> of <code>String</code>,<code>String</code> format of the config Attributes. - */ - public Map<String,String> getConfigAttributes(){ - return configAttributes; - } - - /** - * Gets the Request ID of the Request Paramters. - * - * @return <code>UUID</code> format of requestID. - */ - public UUID getRequestID(){ - return requestID; - } - - /** - * Makes the results Unique, priority based. If set to True. Default Value is set to False. - * - * @param unique flag which is either true or false. - */ - public void makeUnique(Boolean unique){ - this.unique = unique; - } - - /** - * Gets the Unique flag value from the Config Request Parameters. - * - * @return unique flag which is either true or false. - */ - public Boolean getUnique(){ - return this.unique; - } + + /** + * Gets the ONAP Component Name of the Request Parameters. + * + * @return <code>String</code> format of the ONAP Component Name. + * @deprecated use {@link #getOnapName()} instead. + */ + @Deprecated + public String getEcompName() { + return onapName; + } + + /** + * Gets the Config name of the Request Parameters. + * + * @return <code>String</code> format of the Config Name. + */ + public String getConfigName() { + return configName; + } + + /** + * Gets the Config Attributes of the Request Parameters. + * + * @return <code>Map</code> of <code>String</code>,<code>String</code> format of the config Attributes. + */ + public Map<String, String> getConfigAttributes() { + return configAttributes; + } + + /** + * Gets the Request ID of the Request Paramters. + * + * @return <code>UUID</code> format of requestID. + */ + public UUID getRequestID() { + return requestID; + } + + /** + * Makes the results Unique, priority based. If set to True. Default Value is set to False. + * + * @param unique flag which is either true or false. + */ + public void makeUnique(Boolean unique) { + this.unique = unique; + } + + /** + * Gets the Unique flag value from the Config Request Parameters. + * + * @return unique flag which is either true or false. + */ + public Boolean getUnique() { + return this.unique; + } + + /** + * Used to print the input Params for getCOnfig REST call. + * + * @return JSON String of this object. + */ + @Override + public String toString() { + return GSON.toJson(this); + } + } diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/DecisionRequestParameters.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/DecisionRequestParameters.java index 2163bf555..a95063ed9 100644 --- a/PolicyEngineAPI/src/main/java/org/onap/policy/api/DecisionRequestParameters.java +++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/DecisionRequestParameters.java @@ -2,14 +2,14 @@ * ============LICENSE_START======================================================= * PolicyEngineAPI * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-2019 AT&T Intellectual Property. 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. @@ -20,110 +20,131 @@ package org.onap.policy.api; +import com.google.gson.Gson; import java.util.Map; import java.util.UUID; /** - * <code>DecisionRequestParameters</code> defines the Decision Policy Request Parameters - * which retrieve(s) the response from PDP if the request parameters match with any Decision Policy. - * + * <code>DecisionRequestParameters</code> defines the Decision Policy Request Parameters which retrieve(s) the response + * from PDP if the request parameters match with any Decision Policy. + * * @version 0.1 */ public class DecisionRequestParameters { - private String onapName; - private Map<String,String> decisionAttributes; - private UUID requestID; - - /** - * Constructor with no Parameters - */ - public DecisionRequestParameters(){ - // Empty constructor - } - - /** - * Constructor with Parameters - * - * @param onapName the <code>String</code> format of the onapName whose Decision is required. - * @param decisionAttributes the <code>Map</code> of <code>String,String</code> format of the decisionAttributes that contain the ID and values. - * @param requestID unique request ID which will be passed throughout the ONAP components to correlate logging messages. - */ - public DecisionRequestParameters(String onapName, Map<String,String> decisionAttributes, UUID requestID){ - this.onapName = onapName; - this.decisionAttributes = decisionAttributes; - this.requestID = requestID; - } - - /** - * Gets the onapName of the Decision Request Parameters. - * - * @return onapName the <code>String</code> format of the onapName of the Decision Request Parameters. - */ - public String getOnapName() { - return onapName; - } - - /** - * Gets the onapName of the Decision Request Parameters. - * + private static final Gson GSON = new Gson(); + private String onapName; + private Map<String, String> decisionAttributes; + private UUID requestID; + + /** + * Constructor with no Parameters + */ + public DecisionRequestParameters() { + // Empty constructor + } + + /** + * Constructor with Parameters + * + * @param onapName the <code>String</code> format of the onapName whose Decision is required. + * @param decisionAttributes the <code>Map</code> of <code>String,String</code> format of the decisionAttributes + * that contain the ID and values. + * @param requestID unique request ID which will be passed throughout the ONAP components to correlate logging + * messages. + */ + public DecisionRequestParameters(String onapName, Map<String, String> decisionAttributes, UUID requestID) { + this.onapName = onapName; + this.decisionAttributes = decisionAttributes; + this.requestID = requestID; + } + + /** + * Gets the onapName of the Decision Request Parameters. + * + * @return onapName the <code>String</code> format of the onapName of the Decision Request Parameters. + */ + public String getOnapName() { + return onapName; + } + + /** + * Gets the onapName of the Decision Request Parameters. + * * @return onapName the <code>String</code> format of the onapName of the Decision Request Parameters. - * @deprecated use {@link #getOnapName()} instead. + * @deprecated use {@link #getOnapName()} instead. */ - @Deprecated + @Deprecated public String getECOMPComponentName() { return onapName; } - - /** - * Sets the onapName of the Decision Request parameters. - * - * @param onapName the <code>String</code> format of the onapName whose Decision is required. - */ - public void setOnapName(String onapName) { - this.onapName = onapName; - } - - /** - * Sets the ecompComponentName of the Decision Request parameters. - * + + /** + * Sets the onapName of the Decision Request parameters. + * + * @param onapName the <code>String</code> format of the onapName whose Decision is required. + */ + public void setOnapName(String onapName) { + this.onapName = onapName; + } + + /** + * Sets the ecompComponentName of the Decision Request parameters. + * * @param ecompName the <code>String</code> format of the onapName whose Decision is required. - * @deprecated use {@link #setOnapName(String)} instead. + * @deprecated use {@link #setOnapName(String)} instead. */ - @Deprecated + @Deprecated public void setECOMPComponentName(String ecompName) { this.onapName = ecompName; } - - /** - * Gets the Decision Attributes from Decision Request Parameters. - * - * @return decisionAttributes the <code>Map</code> of <code>String,String</code> format of the decisionAttributes that contain the ID and values. - */ - public Map<String,String> getDecisionAttributes() { - return decisionAttributes; - } - /** - * Sets the Decision Attributes which contain ID and values for obtaining Decision from PDP. - * - * @param decisionAttributes the <code>Map</code> of <code>String,String</code> format of the decisionAttributes that must contain the ID and values. - */ - public void setDecisionAttributes(Map<String,String> decisionAttributes) { - this.decisionAttributes = decisionAttributes; - } - /** - * Gets the request ID of Decision Request Parameters. - * - * @return the requestID unique request ID which will be passed throughout the ONAP components to correlate logging messages. - */ - public UUID getRequestID() { - return requestID; - } - /** - * Sets the ReqestID of Decision Request Parameters which will be passed around ONAP requests. - * - * @param requestID unique request ID which will be passed throughout the ONAP components to correlate logging messages. - */ - public void setRequestID(UUID requestID) { - this.requestID = requestID; - } + + /** + * Gets the Decision Attributes from Decision Request Parameters. + * + * @return decisionAttributes the <code>Map</code> of <code>String,String</code> format of the decisionAttributes + * that contain the ID and values. + */ + public Map<String, String> getDecisionAttributes() { + return decisionAttributes; + } + + /** + * Sets the Decision Attributes which contain ID and values for obtaining Decision from PDP. + * + * @param decisionAttributes the <code>Map</code> of <code>String,String</code> format of the decisionAttributes + * that must contain the ID and values. + */ + public void setDecisionAttributes(Map<String, String> decisionAttributes) { + this.decisionAttributes = decisionAttributes; + } + + /** + * Gets the request ID of Decision Request Parameters. + * + * @return the requestID unique request ID which will be passed throughout the ONAP components to correlate logging + * messages. + */ + public UUID getRequestID() { + return requestID; + } + + /** + * Sets the ReqestID of Decision Request Parameters which will be passed around ONAP requests. + * + * @param requestID unique request ID which will be passed throughout the ONAP components to correlate logging + * messages. + */ + public void setRequestID(UUID requestID) { + this.requestID = requestID; + } + + /** + * Used to print the input Params for getDecision REST call. + * + * @return JSON String of this object. + */ + @Override + public String toString() { + return GSON.toJson(this); + } } diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/DeletePolicyParameters.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/DeletePolicyParameters.java index af2aed79c..8c56f5714 100644 --- a/PolicyEngineAPI/src/main/java/org/onap/policy/api/DeletePolicyParameters.java +++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/DeletePolicyParameters.java @@ -2,14 +2,14 @@ * ============LICENSE_START======================================================= * PolicyEngineAPI * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017,2019 AT&T Intellectual Property. 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. @@ -20,16 +20,16 @@ package org.onap.policy.api; +import com.google.gson.Gson; import java.util.UUID; /** - * <code>PushPolicyParameters</code> defines the Policy Parameters which are required to Push a - * Policy to PDPGroup. - * + * <code>PushPolicyParameters</code> defines the Policy Parameters which are required to Push a Policy to PDPGroup. + * * @version 0.1 */ public class DeletePolicyParameters { - + private static final Gson GSON = new Gson(); private String policyName; private String policyType; private String policyComponent; @@ -121,10 +121,13 @@ public class DeletePolicyParameters { this.pdpGroup = pdpGroup; } + /** + * Used to print the input Params for REST call. + * + * @return JSON String of this object. + */ @Override public String toString() { - return "DeletePolicyParameters [policyName=" + policyName + ", policyType=" + policyType + ", policyComponent=" - + policyComponent + ", deleteCondition=" + deleteCondition + ", pdpGroup=" + pdpGroup + ", requestID=" - + requestID + "]"; + return GSON.toJson(this); } } diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/DictionaryParameters.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/DictionaryParameters.java index e4aa5e1a5..23855ee84 100644 --- a/PolicyEngineAPI/src/main/java/org/onap/policy/api/DictionaryParameters.java +++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/DictionaryParameters.java @@ -2,14 +2,14 @@ * ============LICENSE_START======================================================= * PolicyEngineAPI * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017,2019 AT&T Intellectual Property. 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. @@ -20,63 +20,81 @@ package org.onap.policy.api; +import com.google.gson.Gson; import java.util.UUID; public class DictionaryParameters { - - private DictionaryType dictionaryType; - private String dictionary; - private String dictionaryJson; - private UUID requestID; - - - /** - * @return the dictionaryType - */ - public DictionaryType getDictionaryType() { - return dictionaryType; - } - /** - * @param dictionaryType the dictionaryType to set - */ - public void setDictionaryType(DictionaryType dictionaryType) { - this.dictionaryType = dictionaryType; - } - /** - * @return the dictionary - */ - public String getDictionary() { - return dictionary; - } - /** - * @param dictionary the dictionary to set - */ - public void setDictionary(String dictionary) { - this.dictionary = dictionary; - } - /** - * @return the dictionaryFields - */ - public String getDictionaryJson() { - return dictionaryJson; - } - /** - * @param dictionaryFields the dictionaryFields to set - */ - public void setDictionaryJson(String dictionaryJson) { - this.dictionaryJson = dictionaryJson; - } - /** - * @return the requestID - */ - public UUID getRequestID() { - return requestID; - } - /** - * @param requestID the requestID to set - */ - public void setRequestID(UUID requestID) { - this.requestID = requestID; - } + private static final Gson GSON = new Gson(); + private DictionaryType dictionaryType; + private String dictionary; + private String dictionaryJson; + private UUID requestID; + + + /** + * @return the dictionaryType + */ + public DictionaryType getDictionaryType() { + return dictionaryType; + } + + /** + * @param dictionaryType the dictionaryType to set + */ + public void setDictionaryType(DictionaryType dictionaryType) { + this.dictionaryType = dictionaryType; + } + + /** + * @return the dictionary + */ + public String getDictionary() { + return dictionary; + } + + /** + * @param dictionary the dictionary to set + */ + public void setDictionary(String dictionary) { + this.dictionary = dictionary; + } + + /** + * @return the dictionaryFields + */ + public String getDictionaryJson() { + return dictionaryJson; + } + + /** + * @param dictionaryFields the dictionaryFields to set + */ + public void setDictionaryJson(String dictionaryJson) { + this.dictionaryJson = dictionaryJson; + } + + /** + * @return the requestID + */ + public UUID getRequestID() { + return requestID; + } + + /** + * @param requestID the requestID to set + */ + public void setRequestID(UUID requestID) { + this.requestID = requestID; + } + + /** + * Used to print the input Params for REST call. + * + * @return JSON String of this object. + */ + @Override + public String toString() { + return GSON.toJson(this); + } } diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/PushPolicyParameters.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PushPolicyParameters.java index a55cd6ed3..27f9c4058 100644 --- a/PolicyEngineAPI/src/main/java/org/onap/policy/api/PushPolicyParameters.java +++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PushPolicyParameters.java @@ -2,14 +2,14 @@ * ============LICENSE_START======================================================= * PolicyEngineAPI * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017,2019 AT&T Intellectual Property. 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. @@ -20,113 +20,125 @@ package org.onap.policy.api; +import com.google.gson.Gson; import java.util.UUID; /** - * <code>PushPolicyParameters</code> defines the Policy Parameters - * which are required to Push a Policy to PDPGroup. - * + * <code>PushPolicyParameters</code> defines the Policy Parameters which are required to Push a Policy to PDPGroup. + * * @version 0.1 */ public class PushPolicyParameters { - private String policyName; - private String policyType; - private String pdpGroup; - private UUID requestID; - - /** - * Constructor with no Parameters. - */ - public PushPolicyParameters(){ - // Empty constructor - } - - /** - * Constructor with Parameters. - * - * @param policyName the <code>String</code> format of the Policy Name - * @param policyType the <code>String</code> format of the Policy Type - * @param pdpGroup the <code>String</code> format of the PDPGroup - * @param requestID unique request ID which will be passed throughout the ONAP components to correlate logging messages. - */ - public PushPolicyParameters(String policyName, String policyType, String pdpGroup, UUID requestID){ - this.policyName = policyName; - this.policyType = policyType; - this.pdpGroup = pdpGroup; - this.requestID = requestID; - } - - /** - * Gets the PolicyName of the Push Policy Parameters. - * - * @return policyName the <code>String</code> format of the Policy Name - */ - public String getPolicyName() { - return policyName; - } - - /** - * Sets the policyName of the Push Policy Parameters. - * - * @param policyName the <code>String</code> format of the Policy Name - */ - public void setPolicyName(String policyName) { - this.policyName = policyName; - } - - /** - * Gets the PolicyType of the Push Policy Parameters. - * - * @return policyType the <code>String</code> format of the Policy Type - */ - public String getPolicyType() { - return policyType; - } - - /** - * Sets the policyType of the Push Policy Parameters. - * - * @param policyType the <code>String</code> format of the Policy Type - */ - public void setPolicyType(String policyType) { - this.policyType = policyType; - } - - /** - * Gets the PDPGroup of the Push Policy Parameters. - * - * @return pdpGroup the <code>String</code> format of the PDPGroup - */ - public String getPdpGroup() { - return pdpGroup; - } - - /** - * Sets the PDPGroup of the Push Policy Parameters. - * - * @param pdpGroup the <code>String</code> format of the PDPGroup - */ - public void setPdpGroup(String pdpGroup) { - this.pdpGroup = pdpGroup; - } - - /** - * Gets the requestID of the Push Policy Parameters. - * - * @return unique request ID which will be passed throughout the ONAP components to correlate logging messages. - */ - public UUID getRequestID() { - return requestID; - } - - /** - * Sets the requestID of the Push Policy Parameters. - * - * @param requestID unique request ID which will be passed throughout the ONAP components to correlate logging messages. - */ - public void setRequestID(UUID requestID) { - this.requestID = requestID; - } - - + private static final Gson GSON = new Gson(); + private String policyName; + private String policyType; + private String pdpGroup; + private UUID requestID; + + /** + * Constructor with no Parameters. + */ + public PushPolicyParameters() { + // Empty constructor + } + + /** + * Constructor with Parameters. + * + * @param policyName the <code>String</code> format of the Policy Name + * @param policyType the <code>String</code> format of the Policy Type + * @param pdpGroup the <code>String</code> format of the PDPGroup + * @param requestID unique request ID which will be passed throughout the ONAP components to correlate logging + * messages. + */ + public PushPolicyParameters(String policyName, String policyType, String pdpGroup, UUID requestID) { + this.policyName = policyName; + this.policyType = policyType; + this.pdpGroup = pdpGroup; + this.requestID = requestID; + } + + /** + * Gets the PolicyName of the Push Policy Parameters. + * + * @return policyName the <code>String</code> format of the Policy Name + */ + public String getPolicyName() { + return policyName; + } + + /** + * Sets the policyName of the Push Policy Parameters. + * + * @param policyName the <code>String</code> format of the Policy Name + */ + public void setPolicyName(String policyName) { + this.policyName = policyName; + } + + /** + * Gets the PolicyType of the Push Policy Parameters. + * + * @return policyType the <code>String</code> format of the Policy Type + */ + public String getPolicyType() { + return policyType; + } + + /** + * Sets the policyType of the Push Policy Parameters. + * + * @param policyType the <code>String</code> format of the Policy Type + */ + public void setPolicyType(String policyType) { + this.policyType = policyType; + } + + /** + * Gets the PDPGroup of the Push Policy Parameters. + * + * @return pdpGroup the <code>String</code> format of the PDPGroup + */ + public String getPdpGroup() { + return pdpGroup; + } + + /** + * Sets the PDPGroup of the Push Policy Parameters. + * + * @param pdpGroup the <code>String</code> format of the PDPGroup + */ + public void setPdpGroup(String pdpGroup) { + this.pdpGroup = pdpGroup; + } + + /** + * Gets the requestID of the Push Policy Parameters. + * + * @return unique request ID which will be passed throughout the ONAP components to correlate logging messages. + */ + public UUID getRequestID() { + return requestID; + } + + /** + * Sets the requestID of the Push Policy Parameters. + * + * @param requestID unique request ID which will be passed throughout the ONAP components to correlate logging + * messages. + */ + public void setRequestID(UUID requestID) { + this.requestID = requestID; + } + + /** + * Used to print the input Params for PushPolicy REST call. + * + * @return JSON String of this object. + */ + @Override + public String toString() { + return GSON.toJson(this); + } + } diff --git a/packages/base/src/files/install/mysql/data/190202_downgrade_script.sql b/packages/base/src/files/install/mysql/data/190202_downgrade_script.sql index 2c0917428..d1ecebf04 100644 --- a/packages/base/src/files/install/mysql/data/190202_downgrade_script.sql +++ b/packages/base/src/files/install/mysql/data/190202_downgrade_script.sql @@ -17,4 +17,6 @@ -- ============LICENSE_END========================================================= use onap_sdk; -drop table if exists policyAuditlog;
\ No newline at end of file +drop table if exists policyAuditlog; +drop table if exists dictionaryData; + diff --git a/packages/base/src/files/install/mysql/data/190202_upgrade_script.sql b/packages/base/src/files/install/mysql/data/190202_upgrade_script.sql index 2b44c331f..f92da8d81 100644 --- a/packages/base/src/files/install/mysql/data/190202_upgrade_script.sql +++ b/packages/base/src/files/install/mysql/data/190202_upgrade_script.sql @@ -24,4 +24,21 @@ CREATE TABLE policyAuditlog ( actions varchar(50) NOT NULL, dateAndTime datetime NOT NULL, PRIMARY KEY (id) -);
\ No newline at end of file +); + +ALTER TABLE microservicemodels +ADD ruleFormation VARCHAR(45) DEFAULT NULL; + +CREATE TABLE `onap_sdk`.`dictionaryData` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `dictionaryName` varchar(64) NOT NULL, + `dictionaryUrl` varchar(64) NOT NULL, + `dictionaryDataByName` varchar(64) NOT NULL, + PRIMARY KEY (`id`) + ); + +INSERT INTO dictionaryData (dictionaryName, dictionaryUrl, dictionaryDataByName) +VALUES ('GocVNFType', 'getDictionary/get_GocVnfTypeDataByName', 'gocVnfTypeDictionaryDatas'), +('ServerScope','getDictionary/get_ServerScopeDataByName','gocServerScopeDictionaryDatas'), +('TraversalData', 'getDictionary/get_TraversalDataByName', 'gocTraversalDictionaryDatas'); + diff --git a/packages/base/src/files/install/servers/pdp/bin/client.properties b/packages/base/src/files/install/servers/pdp/bin/client.properties index 4a39cf1c0..27d255462 100644 --- a/packages/base/src/files/install/servers/pdp/bin/client.properties +++ b/packages/base/src/files/install/servers/pdp/bin/client.properties @@ -2,7 +2,7 @@ # ============LICENSE_START======================================================= # ONAP Policy Engine # ================================================================================ -# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. +# Copyright (C) 2017,2019 AT&T Intellectual Property. 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. @@ -18,4 +18,5 @@ # ============LICENSE_END========================================================= ### -python=test,MASTER
\ No newline at end of file +python=test,MASTER +testpdp=alpha123,MASTER
\ No newline at end of file |