aboutsummaryrefslogtreecommitdiffstats
path: root/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components
diff options
context:
space:
mode:
authorGuo Ruijing <ruijing.guo@intel.com>2017-07-31 08:47:35 +0000
committerPamela Dragosh <pdragosh@research.att.com>2017-07-31 15:51:10 -0400
commit073cc188efe9abb4c010cf674e34e2cf46ef1c52 (patch)
tree155c23fbdf3a838ecb5f4183fc3bb6b09aac41eb /ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components
parent4ca818fdfb9b807562166800a086b413593d6894 (diff)
[POLICY-73] replace openecomp for policy-engine
Change-Id: I54072f6bcd388c0e05562614ee89b4ae7ad67004 Signed-off-by: Guo Ruijing <ruijing.guo@intel.com> Signed-off-by: Pamela Dragosh <pdragosh@research.att.com>
Diffstat (limited to 'ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components')
-rw-r--r--ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/ActionPolicy.java529
-rw-r--r--ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/AutoPushPolicy.java100
-rw-r--r--ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/ClosedLoopPolicy.java412
-rw-r--r--ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/ConfigPolicy.java564
-rw-r--r--ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateBRMSRuleTemplate.java73
-rw-r--r--ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateBrmsParamPolicy.java692
-rw-r--r--ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateBrmsRawPolicy.java489
-rw-r--r--ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateClosedLoopPerformanceMetrics.java412
-rw-r--r--ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateNewMicroServiceModel.java248
-rw-r--r--ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/DecisionPolicy.java793
-rw-r--r--ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/FirewallConfigPolicy.java1305
-rw-r--r--ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/MicroServiceConfigPolicy.java555
-rw-r--r--ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/Policy.java416
-rw-r--r--ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/PolicyDBDao.java2798
-rw-r--r--ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/PolicyDBDaoTransaction.java188
-rw-r--r--ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/SafePolicyBuilder.java86
-rw-r--r--ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/package-info.java21
17 files changed, 0 insertions, 9681 deletions
diff --git a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/ActionPolicy.java b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/ActionPolicy.java
deleted file mode 100644
index 45ef01f6e..000000000
--- a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/ActionPolicy.java
+++ /dev/null
@@ -1,529 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ECOMP-PAP-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.openecomp.policy.pap.xacml.rest.components;
-
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-import javax.persistence.EntityManager;
-import javax.persistence.Query;
-
-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.ApplyType;
-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.ConditionType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.EffectType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.MatchType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ObjectFactory;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ObligationExpressionType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ObligationExpressionsType;
-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.openecomp.policy.pap.xacml.rest.XACMLPapServlet;
-import org.openecomp.policy.pap.xacml.rest.util.JPAUtils;
-import org.openecomp.policy.rest.adapter.PolicyRestAdapter;
-import org.openecomp.policy.rest.jpa.ActionPolicyDict;
-import org.openecomp.policy.rest.jpa.Datatype;
-import org.openecomp.policy.rest.jpa.FunctionDefinition;
-import org.openecomp.policy.xacml.api.XACMLErrorConstants;
-import org.openecomp.policy.common.logging.eelf.MessageCodes;
-import org.openecomp.policy.common.logging.eelf.PolicyLogger;
-import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
-import org.openecomp.policy.common.logging.flexlogger.Logger;
-
-public class ActionPolicy extends Policy {
-
- /**
- * ActionPolicy Fields
- */
- private static final Logger LOGGER = FlexLogger.getLogger(ActionPolicy.class);
-
- public static final String JSON_CONFIG = "JSON";
-
- public static final String PDP_ACTION = "PDP";
- public static final String PEP_ACTION = "PEP";
- public static final String TYPE_ACTION = "REST";
-
- public static final String GET_METHOD = "GET";
- public static final String PUT_METHOD = "PUT";
- public static final String POST_METHOD = "POST";
-
- public static final String PERFORMER_ATTRIBUTEID = "performer";
- public static final String TYPE_ATTRIBUTEID = "type";
- public static final String METHOD_ATTRIBUTEID = "method";
- public static final String HEADERS_ATTRIBUTEID = "headers";
- public static final String URL_ATTRIBUTEID = "url";
- public static final String BODY_ATTRIBUTEID = "body";
-
- private static boolean isAttribute = false;
-
-
- List<String> dynamicLabelRuleAlgorithms = new LinkedList<>();
- List<String> dynamicFieldFunctionRuleAlgorithms = new LinkedList<>();
- List<String> dynamicFieldOneRuleAlgorithms = new LinkedList<>();
- List<String> dynamicFieldTwoRuleAlgorithms = new LinkedList<>();
-
- protected Map<String, String> dropDownMap = new HashMap<>();
-
-
- public ActionPolicy() {
- super();
- }
-
- public ActionPolicy(PolicyRestAdapter policyAdapter){
- this.policyAdapter = policyAdapter;
- }
-
- @Override
- public Map<String, String> savePolicies() throws Exception {
-
- Map<String, String> successMap = new HashMap<>();
- if(isPolicyExists()){
- successMap.put("EXISTS", "This Policy already exist on the PAP");
- return successMap;
- }
-
- if(!ActionPolicy.isAttribute) {
- successMap.put("invalidAttribute", "Action Attrbute was not in the database.");
- return successMap;
- }
-
- if(!isPreparedToSave()){
- //Prep and configure the policy for saving
- prepareToSave();
- }
-
- // Until here we prepared the data and here calling the method to create xml.
- Path newPolicyPath = null;
- newPolicyPath = Paths.get(policyAdapter.getNewFileName());
- successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject() );
- return successMap;
- }
-
- //This is the method for preparing the policy for saving. We have broken it out
- //separately because the fully configured policy is used for multiple things
- @Override
- public boolean prepareToSave() throws Exception{
-
- if(isPreparedToSave()){
- //we have already done this
- return true;
- }
-
- int version = 0;
- String policyID = policyAdapter.getPolicyID();
- version = policyAdapter.getHighestVersion();
-
- // Create the Instance for pojo, PolicyType object is used in marshalling.
- if (policyAdapter.getPolicyType().equals("Action")) {
- PolicyType policyConfig = new PolicyType();
-
- policyConfig.setVersion(Integer.toString(version));
- policyConfig.setPolicyId(policyID);
- policyConfig.setTarget(new TargetType());
- policyAdapter.setData(policyConfig);
- }
-
- policyName = policyAdapter.getNewFileName();
-
- if (policyAdapter.getData() != null) {
- // Action body is optional so checking value provided or not
- String comboDictValue = policyAdapter.getActionAttribute();
- String actionBody = getActionPolicyDict(comboDictValue).getBody();
- if(!(actionBody==null || "".equals(actionBody))){
- saveActionBody(policyName, actionBody);
- } else {
- if(!isAttribute){
- LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "Could not find " + comboDictValue + " in the ActionPolicyDict table.");
- return false;
- }
- }
-
- PolicyType actionPolicy = (PolicyType) policyAdapter.getData();
- actionPolicy.setDescription(policyAdapter.getPolicyDescription());
- actionPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId());
-
- AllOfType allOf = new AllOfType();
-
- Map<String, String> dynamicFieldComponentAttributes = policyAdapter.getDynamicFieldConfigAttributes();
-
- // If there is any dynamic field attributes create the matches here
- for (String keyField : dynamicFieldComponentAttributes.keySet()) {
- String key = keyField;
- String value = dynamicFieldComponentAttributes.get(key);
- MatchType dynamicMatch = createDynamicMatch(key, value);
- allOf.getMatch().add(dynamicMatch);
- }
-
- AnyOfType anyOf = new AnyOfType();
- anyOf.getAllOf().add(allOf);
-
- TargetType target = new TargetType();
- target.getAnyOf().add(anyOf);
-
- // Adding the target to the policy element
- actionPolicy.setTarget(target);
-
- RuleType rule = new RuleType();
- rule.setRuleId(policyAdapter.getRuleID());
-
- rule.setEffect(EffectType.PERMIT);
- rule.setTarget(new TargetType());
-
- dynamicLabelRuleAlgorithms = policyAdapter.getDynamicRuleAlgorithmLabels();
- dynamicFieldFunctionRuleAlgorithms = policyAdapter.getDynamicRuleAlgorithmCombo();
- dynamicFieldOneRuleAlgorithms = policyAdapter.getDynamicRuleAlgorithmField1();
- dynamicFieldTwoRuleAlgorithms = policyAdapter.getDynamicRuleAlgorithmField2();
- //dropDownMap = policyAdapter.getDropDownMap();
- dropDownMap = createDropDownMap();
-
- // Rule attributes are optional and dynamic so check and add them to condition.
- if (dynamicLabelRuleAlgorithms != null && dynamicLabelRuleAlgorithms.size() > 0) {
- boolean isCompound = false;
- ConditionType condition = new ConditionType();
- int index = dynamicFieldOneRuleAlgorithms.size() - 1;
-
- for (String labelAttr : dynamicLabelRuleAlgorithms) {
- // if the rule algorithm as a label means it is a compound
- if (dynamicFieldOneRuleAlgorithms.get(index).toString().equals(labelAttr)) {
- ApplyType actionApply = new ApplyType();
-
- String selectedFunction = (String) dynamicFieldFunctionRuleAlgorithms.get(index).toString();
- String value1 = (String) dynamicFieldOneRuleAlgorithms.get(index).toString();
- String value2 = dynamicFieldTwoRuleAlgorithms.get(index).toString();
- actionApply.setFunctionId(dropDownMap.get(selectedFunction));
- actionApply.getExpression().add(new ObjectFactory().createApply(getInnerActionApply(value1)));
- actionApply.getExpression().add(new ObjectFactory().createApply(getInnerActionApply(value2)));
- condition.setExpression(new ObjectFactory().createApply(actionApply));
- isCompound = true;
- }
- }
- // if rule algorithm not a compound
- if (!isCompound) {
- condition.setExpression(new ObjectFactory().createApply(getInnerActionApply(dynamicLabelRuleAlgorithms.get(index).toString())));
- }
- rule.setCondition(condition);
- }
- // set the obligations to rule
- rule.setObligationExpressions(getObligationExpressions());
- actionPolicy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().add(rule);
- policyAdapter.setPolicyData(actionPolicy);
- } else {
- PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + "Unsupported data object." + policyAdapter.getData().getClass().getCanonicalName());
- }
-
- setPreparedToSave(true);
- return true;
- }
-
- // Saving the json Configurations file if exists at server location for action policy.
- private void saveActionBody(String policyName, String actionBodyData) {
- try {
- if(policyName.endsWith(".xml")){
- policyName = policyName.replace(".xml", "");
- }
- File file = new File(ACTION_HOME+ File.separator + policyName + ".json");
- FileWriter fw = new FileWriter(file.getAbsoluteFile());
- BufferedWriter bw = new BufferedWriter(fw);
- bw.write(actionBodyData);
- bw.close();
- if (LOGGER.isInfoEnabled()) {
- LOGGER.info("Action Body is succesfully saved at " + file.getAbsolutePath());
- }
- } catch (IOException e) {
- LOGGER.error("Exception Occured"+e);
- }
- }
-
- // Data required for obligation part is setting here.
- private ObligationExpressionsType getObligationExpressions() {
- ObligationExpressionsType obligations = new ObligationExpressionsType();
-
- ObligationExpressionType obligation = new ObligationExpressionType();
- String comboDictValue = policyAdapter.getActionAttribute();
- obligation.setObligationId(comboDictValue);
- obligation.setFulfillOn(EffectType.PERMIT);
-
- // Add Action Assignment:
- AttributeAssignmentExpressionType assignment1 = new AttributeAssignmentExpressionType();
- assignment1.setAttributeId(PERFORMER_ATTRIBUTEID);
- assignment1.setCategory(CATEGORY_RECIPIENT_SUBJECT);
-
- AttributeValueType actionNameAttributeValue = new AttributeValueType();
- actionNameAttributeValue.setDataType(STRING_DATATYPE);
- actionNameAttributeValue.getContent().add(performer.get(policyAdapter.getActionPerformer()));
-
- assignment1.setExpression(new ObjectFactory().createAttributeValue(actionNameAttributeValue));
- obligation.getAttributeAssignmentExpression().add(assignment1);
-
- // Add Type Assignment:
- AttributeAssignmentExpressionType assignmentType = new AttributeAssignmentExpressionType();
- assignmentType.setAttributeId(TYPE_ATTRIBUTEID);
- assignmentType.setCategory(CATEGORY_RESOURCE);
-
- AttributeValueType typeAttributeValue = new AttributeValueType();
- typeAttributeValue.setDataType(STRING_DATATYPE);
- String actionDictType = getActionPolicyDict(comboDictValue).getType();
- typeAttributeValue.getContent().add(actionDictType);
-
- assignmentType.setExpression(new ObjectFactory().createAttributeValue(typeAttributeValue));
- obligation.getAttributeAssignmentExpression().add(assignmentType);
-
- // Add Rest_URL Assignment:
- AttributeAssignmentExpressionType assignmentURL = new AttributeAssignmentExpressionType();
- assignmentURL.setAttributeId(URL_ATTRIBUTEID);
- assignmentURL.setCategory(CATEGORY_RESOURCE);
-
- AttributeValueType actionURLAttributeValue = new AttributeValueType();
- actionURLAttributeValue.setDataType(URI_DATATYPE);
- String actionDictUrl = getActionPolicyDict(comboDictValue).getUrl();
- actionURLAttributeValue.getContent().add(actionDictUrl);
-
- assignmentURL.setExpression(new ObjectFactory().createAttributeValue(actionURLAttributeValue));
- obligation.getAttributeAssignmentExpression().add(assignmentURL);
-
- // Add Method Assignment:
- AttributeAssignmentExpressionType assignmentMethod = new AttributeAssignmentExpressionType();
- assignmentMethod.setAttributeId(METHOD_ATTRIBUTEID);
- assignmentMethod.setCategory(CATEGORY_RESOURCE);
-
- AttributeValueType methodAttributeValue = new AttributeValueType();
- methodAttributeValue.setDataType(STRING_DATATYPE);
- String actionDictMethod = getActionPolicyDict(comboDictValue).getMethod();
- methodAttributeValue.getContent().add(actionDictMethod);
-
- assignmentMethod.setExpression(new ObjectFactory().createAttributeValue(methodAttributeValue));
- obligation.getAttributeAssignmentExpression().add(assignmentMethod);
-
- // Add JSON_URL Assignment:
- String actionBody = getActionPolicyDict(comboDictValue).getBody();
- if (actionBody != null) {
- AttributeAssignmentExpressionType assignmentJsonURL = new AttributeAssignmentExpressionType();
- assignmentJsonURL.setAttributeId(BODY_ATTRIBUTEID);
- assignmentJsonURL.setCategory(CATEGORY_RESOURCE);
-
- AttributeValueType jsonURLAttributeValue = new AttributeValueType();
- jsonURLAttributeValue.setDataType(URI_DATATYPE);
- jsonURLAttributeValue.getContent().add(CONFIG_URL + "/Action/" + policyName + ".json");
-
- assignmentJsonURL.setExpression(new ObjectFactory().createAttributeValue(jsonURLAttributeValue));
- obligation.getAttributeAssignmentExpression().add(assignmentJsonURL);
- }
-
- if(getActionPolicyDict(comboDictValue).getHeader() != null){
- String headerVal = getActionPolicyDict(comboDictValue).getHeader();
- if(headerVal != null && !headerVal.equals("")){
- // parse it on : to get number of headers
- String[] result = headerVal.split(":");
- for (String eachString : result){
- // parse each value on =
- String[] textFieldVals = eachString.split("=");
- obligation.getAttributeAssignmentExpression().add(addDynamicHeaders(textFieldVals[0], textFieldVals[1]));
- }
- }
-
- }
-
- obligations.getObligationExpression().add(obligation);
- return obligations;
- }
-
-
- // if compound setting the inner apply here
- protected ApplyType getInnerActionApply(String value1Label) {
- ApplyType actionApply = new ApplyType();
- int index = 0;
- // check the index for the label.
- for (String labelAttr : dynamicLabelRuleAlgorithms) {
- if (labelAttr.equals(value1Label)) {
- String value1 = dynamicFieldOneRuleAlgorithms.get(index).toString();
- // check if the row contains label again
- for (String labelValue : dynamicLabelRuleAlgorithms) {
- if (labelValue.equals(value1)) {
- return getCompoundApply(index);
- }
- }
-
- // Getting the values from the form.
- String functionKey = dynamicFieldFunctionRuleAlgorithms.get(index).toString();
- String value2 = dynamicFieldTwoRuleAlgorithms.get(index).toString();
- actionApply.setFunctionId(dropDownMap.get(functionKey));
- // if two text field are rule attributes.
- if ((value1.contains(RULE_VARIABLE)) && (value2.contains(RULE_VARIABLE))) {
- ApplyType innerActionApply1 = new ApplyType();
- ApplyType innerActionApply2 = new ApplyType();
- AttributeDesignatorType attributeDesignator1 = new AttributeDesignatorType();
- AttributeDesignatorType attributeDesignator2 = new AttributeDesignatorType();
- // If selected function is Integer function set integer functionID
- if (functionKey.toLowerCase().contains("integer")) {
- innerActionApply1.setFunctionId(FUNTION_INTEGER_ONE_AND_ONLY);
- innerActionApply2.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
- innerActionApply1.setFunctionId(FUNCTION_STRING_ONE_AND_ONLY);
- innerActionApply2.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));
-
- innerActionApply1.getExpression().add(new ObjectFactory().createAttributeDesignator(attributeDesignator1));
- innerActionApply2.getExpression().add(new ObjectFactory().createAttributeDesignator(attributeDesignator2));
-
- actionApply.getExpression().add(new ObjectFactory().createApply(innerActionApply1));
- actionApply.getExpression().add(new ObjectFactory().createApply(innerActionApply2));
-
- } else {// if either of one text field is rule attribute.
- ApplyType innerActionApply = new ApplyType();
- AttributeDesignatorType attributeDesignator = new AttributeDesignatorType();
- AttributeValueType actionConditionAttributeValue = new AttributeValueType();
-
- if (functionKey.toLowerCase().contains("integer")) {
- innerActionApply.setFunctionId(FUNTION_INTEGER_ONE_AND_ONLY);
- actionConditionAttributeValue.setDataType(INTEGER_DATATYPE);
- attributeDesignator.setDataType(INTEGER_DATATYPE);
- } else {
- innerActionApply.setFunctionId(FUNCTION_STRING_ONE_AND_ONLY);
- actionConditionAttributeValue.setDataType(STRING_DATATYPE);
- attributeDesignator.setDataType(STRING_DATATYPE);
- }
-
- String attributeId = null;
- String attributeValue = null;
-
- // Find which textField has rule attribute and set it as
- attributeId = value1;
- attributeValue = value2;
-
- if (attributeId != null) {
- attributeDesignator.setCategory(CATEGORY_RESOURCE);
- attributeDesignator.setAttributeId(attributeId);
- }
- actionConditionAttributeValue.getContent().add(attributeValue);
- innerActionApply.getExpression().add(new ObjectFactory().createAttributeDesignator(attributeDesignator));
- // Decide the order of element based the values.
- if (attributeId.equals(value1)) {
- actionApply.getExpression().add(new ObjectFactory().createApply(innerActionApply));
- actionApply.getExpression().add(new ObjectFactory().createAttributeValue(actionConditionAttributeValue));
- } else {
- actionApply.getExpression().add(new ObjectFactory().createAttributeValue(actionConditionAttributeValue));
- actionApply.getExpression().add(new ObjectFactory().createApply(innerActionApply));
- }
- }
- }
- index++;
- }
- return actionApply;
- }
-
- // if the rule algorithm is multiple compound one setting the apply
- protected ApplyType getCompoundApply(int index) {
- ApplyType actionApply = new ApplyType();
- String selectedFunction = dynamicFieldFunctionRuleAlgorithms.get(index).toString();
- String value1 = dynamicFieldOneRuleAlgorithms.get(index).toString();
- String value2 = dynamicFieldTwoRuleAlgorithms.get(index).toString();
- actionApply.setFunctionId(dropDownMap.get(selectedFunction));
- actionApply.getExpression().add(new ObjectFactory().createApply(getInnerActionApply(value1)));
- actionApply.getExpression().add(new ObjectFactory().createApply(getInnerActionApply(value2)));
- return actionApply;
- }
-
- // Adding the dynamic headers if any
- private AttributeAssignmentExpressionType addDynamicHeaders(String header, String value) {
- AttributeAssignmentExpressionType assignmentHeaders = new AttributeAssignmentExpressionType();
- assignmentHeaders.setAttributeId("headers:" + header);
- assignmentHeaders.setCategory(CATEGORY_RESOURCE);
-
- AttributeValueType headersAttributeValue = new AttributeValueType();
- headersAttributeValue.setDataType(STRING_DATATYPE);
- headersAttributeValue.getContent().add(value);
-
- assignmentHeaders.setExpression(new ObjectFactory().createAttributeValue(headersAttributeValue));
- return assignmentHeaders;
- }
-
- private Map<String,String> createDropDownMap(){
- JPAUtils jpaUtils = null;
- Map<String, String> dropDownMap = new HashMap<>();
- try {
- jpaUtils = JPAUtils.getJPAUtilsInstance(XACMLPapServlet.getEmf());
- } catch (Exception e) {
- LOGGER.error("Exception Occured"+e);
- }
- if(jpaUtils != null){
- Map<Datatype, List<FunctionDefinition>> functionMap = jpaUtils.getFunctionDatatypeMap();
-
- for (Datatype id : functionMap.keySet()) {
- List<FunctionDefinition> functionDefinitions = (List<FunctionDefinition>) functionMap
- .get(id);
- for (FunctionDefinition functionDef : functionDefinitions) {
- dropDownMap.put(functionDef.getShortname(),functionDef.getXacmlid());
- }
- }
- }
- return dropDownMap;
- }
-
- private ActionPolicyDict getActionPolicyDict(String attributeName){
- ActionPolicyDict retObj = new ActionPolicyDict();
- EntityManager em = XACMLPapServlet.getEmf().createEntityManager();
- Query getActionPolicyDicts = em.createNamedQuery("ActionPolicyDict.findAll");
- List<?> actionPolicyDicts = getActionPolicyDicts.getResultList();
-
- for (Object id : actionPolicyDicts) {
- ActionPolicyDict actionPolicy = (ActionPolicyDict) id;
- if(attributeName.equals(actionPolicy.getAttributeName())){
- isAttribute = true;
- retObj = actionPolicy;
- break;
- }
- }
- em.close();
- return retObj;
- }
-
- @Override
- public Object getCorrectPolicyDataObject() {
- return policyAdapter.getPolicyData();
- }
-
-}
diff --git a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/AutoPushPolicy.java b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/AutoPushPolicy.java
deleted file mode 100644
index 31871587b..000000000
--- a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/AutoPushPolicy.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ECOMP-PAP-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.openecomp.policy.pap.xacml.rest.components;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.nio.file.Paths;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Properties;
-import java.util.Set;
-
-import org.openecomp.policy.common.logging.eelf.MessageCodes;
-import org.openecomp.policy.common.logging.eelf.PolicyLogger;
-import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
-import org.openecomp.policy.common.logging.flexlogger.Logger;
-import org.openecomp.policy.xacml.std.pap.StdPDPGroup;
-import org.openecomp.policy.xacml.std.pap.StdPDPPolicy;
-
-import com.att.research.xacml.api.pap.PDPPolicy;
-/**
- * Auto Push Policy based on the property file properties.
- *
- * @version 0.1
- */
-public class AutoPushPolicy {
-
- private static final Logger LOGGER = FlexLogger.getLogger(AutoPushPolicy.class);
-
- private String filePath = null;
- private Properties properties;
- private Long newModified;
- private Long oldModified;
- private File propFile;
-
-
- /**
- * Constructor Pass in the property file path.
- */
- public AutoPushPolicy(String file){
- filePath = file;
- properties = new Properties();
- propFile = Paths.get(filePath).toFile();
- readFile();
- }
-
- private void readFile(){
- try {
- properties.load(new FileInputStream(propFile));
- oldModified = propFile.lastModified();
- } catch (Exception e) {
- PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "AutoPushPolicy", "Error while loading in the auto push properties file.");
- }
- }
-
- private StdPDPGroup addToGroup(String policyId, String policyName, String policyToCreateUpdate, StdPDPGroup pdpGroup) throws Exception{
- // Add to group. Send Notification.
- StdPDPPolicy policy = new StdPDPPolicy(policyId, true, policyName, null);
- //Get the current policies from the Group and Add the new one
- Set<PDPPolicy> currentPoliciesInGroup = pdpGroup.getPolicies();
- Set<PDPPolicy> policies = new HashSet<>();
- policies.add(policy);
- pdpGroup.copyPolicyToFile(policyId, new FileInputStream(Paths.get(policyToCreateUpdate).toFile()));
- //If the selected policy is in the group we must remove it because the name is default
- Iterator<PDPPolicy> policyIterator = policies.iterator();
- while (policyIterator.hasNext()) {
- PDPPolicy selPolicy = policyIterator.next();
- for (PDPPolicy existingPolicy : currentPoliciesInGroup) {
- if (existingPolicy.getId().equals(selPolicy.getId())) {
- pdpGroup.removePolicyFromGroup(existingPolicy);
- LOGGER.debug("Removing policy: " + existingPolicy);
- break;
- }
- }
- }
- if(currentPoliciesInGroup!=null){
- policies.addAll(currentPoliciesInGroup);
- }
- pdpGroup.setPolicies(policies);
- return pdpGroup;
- }
-}
diff --git a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/ClosedLoopPolicy.java b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/ClosedLoopPolicy.java
deleted file mode 100644
index 1281bd083..000000000
--- a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/ClosedLoopPolicy.java
+++ /dev/null
@@ -1,412 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ECOMP-PAP-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.openecomp.policy.pap.xacml.rest.components;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.nio.charset.Charset;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.commons.io.FilenameUtils;
-import org.openecomp.policy.common.logging.eelf.MessageCodes;
-import org.openecomp.policy.common.logging.eelf.PolicyLogger;
-import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
-import org.openecomp.policy.common.logging.flexlogger.Logger;
-import org.openecomp.policy.rest.adapter.PolicyRestAdapter;
-
-import com.att.research.xacml.std.IdentifierImpl;
-
-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;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeValueType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.EffectType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.MatchType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ObjectFactory;
-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;
-
-public class ClosedLoopPolicy extends Policy {
-
- private static final Logger LOGGER = FlexLogger.getLogger(ClosedLoopPolicy.class);
-
- public ClosedLoopPolicy() {
- super();
- }
-
- public ClosedLoopPolicy(PolicyRestAdapter policyAdapter){
- this.policyAdapter = policyAdapter;
- }
-
- //save configuration of the policy based on the policyname
- private void saveConfigurations(String policyName, String jsonBody) {
- try {
- String body = jsonBody;
- try {
- try{
- //Remove the trapMaxAge in Verification Signature
- body = body.replace(",\"trapMaxAge\":null", "");
- }catch(Exception e){
- LOGGER.debug("No Trap Max Age in JSON body");
- }
- this.policyAdapter.setJsonBody(body);
- } catch (Exception e) {
- LOGGER.error("Exception Occured"+e);
- }
-
- if(policyName.endsWith(".xml")){
- policyName = policyName.replace(".xml", "");
- }
- PrintWriter out = new PrintWriter(CONFIG_HOME + File.separator+ policyName +".json");
- out.println(body);
- out.close();
-
- } catch (Exception e) {
- LOGGER.error("Exception Occured while writing Configuration Data"+e);
- }
- }
-
- //Utility to read json data from the existing file to a string
- static String readFile(String path, Charset encoding) throws IOException {
-
- byte[] encoded = Files.readAllBytes(Paths.get(path));
- return new String(encoded, encoding);
-
- }
-
- //create the configuration file based on the policy name on adding the extension as .json
- private String getConfigFile(String filename) {
- filename = FilenameUtils.removeExtension(filename);
- if (filename.endsWith(".xml")) {
- filename = filename.substring(0, filename.length() - 4);
- }
- filename = filename + ".json";
- return filename;
- }
-
- @Override
- public Map<String, String> savePolicies() throws Exception {
-
- Map<String, String> successMap = new HashMap<>();
- if(isPolicyExists()){
- successMap.put("EXISTS", "This Policy already exist on the PAP");
- return successMap;
- }
-
- if(!isPreparedToSave()){
- prepareToSave();
- }
-
- // Until here we prepared the data and here calling the method to create xml.
- Path newPolicyPath = null;
- newPolicyPath = Paths.get(policyAdapter.getNewFileName());
-
- successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject());
- return successMap;
- }
-
- //This is the method for preparing the policy for saving. We have broken it out
- //separately because the fully configured policy is used for multiple things
- @Override
- public boolean prepareToSave() throws Exception{
-
- if(isPreparedToSave()){
- //we have already done this
- return true;
- }
-
- int version = 0;
- String policyID = policyAdapter.getPolicyID();
- version = policyAdapter.getHighestVersion();
-
- // Create the Instance for pojo, PolicyType object is used in marshalling.
- if (policyAdapter.getPolicyType().equals("Config")) {
- PolicyType policyConfig = new PolicyType();
-
- policyConfig.setVersion(Integer.toString(version));
- policyConfig.setPolicyId(policyID);
- policyConfig.setTarget(new TargetType());
- policyAdapter.setData(policyConfig);
- }
- policyName = policyAdapter.getNewFileName();
- if (policyAdapter.getData() != null) {
- // Save the Configurations file with the policy name with extention based on selection.
- String jsonBody = policyAdapter.getJsonBody();
- saveConfigurations(policyName, jsonBody);
-
- // Make sure the filename ends with an extension
- if (policyName.endsWith(".xml") == false) {
- policyName = policyName + ".xml";
- }
-
- PolicyType faultPolicy = (PolicyType) policyAdapter.getData();
-
- faultPolicy.setDescription(policyAdapter.getPolicyDescription());
-
- faultPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId());
-
- AllOfType allOfOne = new AllOfType();
- String fileName = policyAdapter.getNewFileName();
- String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length());
- if ((name == null) || (name.equals(""))) {
- name = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length());
- }
- allOfOne.getMatch().add(createMatch("PolicyName", name));
- AllOfType allOf = new AllOfType();
- // Adding the matches to AllOfType element
- // Match for Ecomp
- allOf.getMatch().add(createMatch("ECOMPName", policyAdapter.getEcompName()));
- // Match for riskType
- allOf.getMatch().add(
- createDynamicMatch("RiskType", policyAdapter.getRiskType()));
- // Match for riskLevel
- allOf.getMatch().add(
- createDynamicMatch("RiskLevel", String.valueOf(policyAdapter.getRiskLevel())));
- // Match for riskguard
- allOf.getMatch().add(
- createDynamicMatch("guard", policyAdapter.getGuard()));
- // Match for ttlDate
- allOf.getMatch().add(
- createDynamicMatch("TTLDate", policyAdapter.getTtlDate()));
-
- AnyOfType anyOf = new AnyOfType();
- anyOf.getAllOf().add(allOfOne);
- anyOf.getAllOf().add(allOf);
-
- TargetType target = new TargetType();
- ((TargetType) target).getAnyOf().add(anyOf);
- // Adding the target to the policy element
- faultPolicy.setTarget((TargetType) target);
-
- RuleType rule = new RuleType();
- rule.setRuleId(policyAdapter.getRuleID());
- rule.setEffect(EffectType.PERMIT);
-
- // Create Target in Rule
- AllOfType allOfInRule = new AllOfType();
-
- // Creating match for ACCESS in rule target
- MatchType accessMatch = new MatchType();
- AttributeValueType accessAttributeValue = new AttributeValueType();
- accessAttributeValue.setDataType(STRING_DATATYPE);
- accessAttributeValue.getContent().add("ACCESS");
- accessMatch.setAttributeValue(accessAttributeValue);
- AttributeDesignatorType accessAttributeDesignator = new AttributeDesignatorType();
- URI accessURI = null;
- try {
- accessURI = new URI(ACTION_ID);
- } catch (URISyntaxException e) {
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "CreateClosedLoopPolicy", "Exception creating ACCESS URI");
- }
- accessAttributeDesignator.setCategory(CATEGORY_ACTION);
- accessAttributeDesignator.setDataType(STRING_DATATYPE);
- accessAttributeDesignator.setAttributeId(new IdentifierImpl(accessURI).stringValue());
- accessMatch.setAttributeDesignator(accessAttributeDesignator);
- accessMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE);
-
- // Creating Config Match in rule Target
- MatchType closedMatch = new MatchType();
- AttributeValueType closedAttributeValue = new AttributeValueType();
- closedAttributeValue.setDataType(STRING_DATATYPE);
- closedAttributeValue.getContent().add("Config");
- closedMatch.setAttributeValue(closedAttributeValue);
- AttributeDesignatorType closedAttributeDesignator = new AttributeDesignatorType();
- URI closedURI = null;
- try {
- closedURI = new URI(RESOURCE_ID);
- } catch (URISyntaxException e) {
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "CreateClosedLoopPolicy", "Exception creating closed URI");
- }
- closedAttributeDesignator.setCategory(CATEGORY_RESOURCE);
- closedAttributeDesignator.setDataType(STRING_DATATYPE);
- closedAttributeDesignator.setAttributeId(new IdentifierImpl(closedURI).stringValue());
- closedMatch.setAttributeDesignator(closedAttributeDesignator);
- closedMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE);
-
- allOfInRule.getMatch().add(accessMatch);
- allOfInRule.getMatch().add(closedMatch);
-
- AnyOfType anyOfInRule = new AnyOfType();
- anyOfInRule.getAllOf().add(allOfInRule);
-
- TargetType targetInRule = new TargetType();
- targetInRule.getAnyOf().add(anyOfInRule);
-
- rule.setTarget(targetInRule);
- rule.setAdviceExpressions(getAdviceExpressions(version, policyName));
-
- faultPolicy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().add(rule);
- policyAdapter.setPolicyData(faultPolicy);
-
- } else {
- PolicyLogger.error("Unsupported data object." + policyAdapter.getData().getClass().getCanonicalName());
- }
-
- setPreparedToSave(true);
- return true;
- }
-
- // Data required for Advice part is setting here.
- private AdviceExpressionsType getAdviceExpressions(int version, String fileName) {
- AdviceExpressionsType advices = new AdviceExpressionsType();
- AdviceExpressionType advice = new AdviceExpressionType();
- advice.setAdviceId("faultID");
- advice.setAppliesTo(EffectType.PERMIT);
- // For Configuration
- AttributeAssignmentExpressionType assignment1 = new AttributeAssignmentExpressionType();
- assignment1.setAttributeId("type");
- assignment1.setCategory(CATEGORY_RESOURCE);
- assignment1.setIssuer("");
-
- AttributeValueType configNameAttributeValue = new AttributeValueType();
- configNameAttributeValue.setDataType(STRING_DATATYPE);
- configNameAttributeValue.getContent().add("Configuration");
- assignment1.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue));
-
- advice.getAttributeAssignmentExpression().add(assignment1);
- // For Config file Url if configurations are provided.
- AttributeAssignmentExpressionType assignment2 = new AttributeAssignmentExpressionType();
- assignment2.setAttributeId("URLID");
- assignment2.setCategory(CATEGORY_RESOURCE);
- assignment2.setIssuer("");
-
- AttributeValueType AttributeValue = new AttributeValueType();
- AttributeValue.setDataType(URI_DATATYPE);
- String content = CONFIG_URL +"/Config/" + getConfigFile(policyName);
- System.out.println("URL value :" + content);
- AttributeValue.getContent().add(content);
- assignment2.setExpression(new ObjectFactory().createAttributeValue(AttributeValue));
-
- advice.getAttributeAssignmentExpression().add(assignment2);
- AttributeAssignmentExpressionType assignment3 = new AttributeAssignmentExpressionType();
- assignment3.setAttributeId("PolicyName");
- assignment3.setCategory(CATEGORY_RESOURCE);
- assignment3.setIssuer("");
-
- AttributeValueType attributeValue3 = new AttributeValueType();
- attributeValue3.setDataType(STRING_DATATYPE);
- fileName = FilenameUtils.removeExtension(fileName);
- fileName = fileName + ".xml";
- String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length());
- if ((name == null) || (name.equals(""))) {
- name = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length());
- }
- attributeValue3.getContent().add(name);
- assignment3.setExpression(new ObjectFactory().createAttributeValue(attributeValue3));
- advice.getAttributeAssignmentExpression().add(assignment3);
-
- AttributeAssignmentExpressionType assignment4 = new AttributeAssignmentExpressionType();
- assignment4.setAttributeId("VersionNumber");
- assignment4.setCategory(CATEGORY_RESOURCE);
- assignment4.setIssuer("");
-
- AttributeValueType configNameAttributeValue4 = new AttributeValueType();
- configNameAttributeValue4.setDataType(STRING_DATATYPE);
- configNameAttributeValue4.getContent().add(Integer.toString(version));
- assignment4.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue4));
-
- advice.getAttributeAssignmentExpression().add(assignment4);
-
- AttributeAssignmentExpressionType assignment5 = new AttributeAssignmentExpressionType();
- assignment5.setAttributeId("matching:" + ECOMPID);
- assignment5.setCategory(CATEGORY_RESOURCE);
- assignment5.setIssuer("");
-
- AttributeValueType configNameAttributeValue5 = new AttributeValueType();
- configNameAttributeValue5.setDataType(STRING_DATATYPE);
- configNameAttributeValue5.getContent().add(policyAdapter.getEcompName());
- assignment5.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue5));
-
- advice.getAttributeAssignmentExpression().add(assignment5);
-
- //Risk Attributes
- AttributeAssignmentExpressionType assignment6 = new AttributeAssignmentExpressionType();
- assignment6.setAttributeId("RiskType");
- assignment6.setCategory(CATEGORY_RESOURCE);
- assignment6.setIssuer("");
-
- AttributeValueType configNameAttributeValue6 = new AttributeValueType();
- configNameAttributeValue6.setDataType(STRING_DATATYPE);
- configNameAttributeValue6.getContent().add(policyAdapter.getRiskType());
- assignment6.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue6));
-
- advice.getAttributeAssignmentExpression().add(assignment6);
-
- AttributeAssignmentExpressionType assignment7 = new AttributeAssignmentExpressionType();
- assignment7.setAttributeId("RiskLevel");
- assignment7.setCategory(CATEGORY_RESOURCE);
- assignment7.setIssuer("");
-
- AttributeValueType configNameAttributeValue7 = new AttributeValueType();
- configNameAttributeValue7.setDataType(STRING_DATATYPE);
- configNameAttributeValue7.getContent().add(policyAdapter.getRiskLevel());
- assignment7.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue7));
-
- advice.getAttributeAssignmentExpression().add(assignment7);
-
- AttributeAssignmentExpressionType assignment8 = new AttributeAssignmentExpressionType();
- assignment8.setAttributeId("guard");
- assignment8.setCategory(CATEGORY_RESOURCE);
- assignment8.setIssuer("");
-
- AttributeValueType configNameAttributeValue8 = new AttributeValueType();
- configNameAttributeValue8.setDataType(STRING_DATATYPE);
- configNameAttributeValue8.getContent().add(policyAdapter.getGuard());
- assignment8.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue8));
-
- advice.getAttributeAssignmentExpression().add(assignment8);
-
- AttributeAssignmentExpressionType assignment9 = new AttributeAssignmentExpressionType();
- assignment9.setAttributeId("TTLDate");
- assignment9.setCategory(CATEGORY_RESOURCE);
- assignment9.setIssuer("");
-
- AttributeValueType configNameAttributeValue9 = new AttributeValueType();
- configNameAttributeValue9.setDataType(STRING_DATATYPE);
- configNameAttributeValue9.getContent().add(policyAdapter.getTtlDate());
- assignment9.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue9));
-
- advice.getAttributeAssignmentExpression().add(assignment9);
-
-
-
- advices.getAdviceExpression().add(advice);
- return advices;
- }
-
- @Override
- public Object getCorrectPolicyDataObject() {
- return policyAdapter.getPolicyData();
- }
-
-
-}
diff --git a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/ConfigPolicy.java b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/ConfigPolicy.java
deleted file mode 100644
index 0cf9c6546..000000000
--- a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/ConfigPolicy.java
+++ /dev/null
@@ -1,564 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ECOMP-PAP-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.openecomp.policy.pap.xacml.rest.components;
-
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.StringReader;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Scanner;
-
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-
-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;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeValueType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.EffectType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.MatchType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ObjectFactory;
-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.apache.commons.io.FilenameUtils;
-import org.openecomp.policy.common.logging.eelf.MessageCodes;
-import org.openecomp.policy.common.logging.eelf.PolicyLogger;
-import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
-import org.openecomp.policy.common.logging.flexlogger.Logger;
-import org.openecomp.policy.rest.adapter.PolicyRestAdapter;
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-import org.xml.sax.XMLReader;
-
-import com.att.research.xacml.std.IdentifierImpl;
-
-public class ConfigPolicy extends Policy {
-
- /**
- * Config Fields
- */
- private static final Logger LOGGER = FlexLogger.getLogger(ConfigPolicy.class);
-
- public static final String JSON_CONFIG = "JSON";
- public static final String XML_CONFIG = "XML";
- public static final String PROPERTIES_CONFIG = "PROPERTIES";
- public static final String OTHER_CONFIG = "OTHER";
-
- private String configBodyData;
-
- public ConfigPolicy() {
- super();
- }
-
- public ConfigPolicy(PolicyRestAdapter policyAdapter){
- this.policyAdapter = policyAdapter;
- }
-
- // Saving the Configurations file at server location for config policy.
- protected void saveConfigurations(String policyName) {
- try {
- String fileName = getConfigFile(policyName);
- FileWriter fw = new FileWriter(CONFIG_HOME + File.separator + fileName);
- BufferedWriter bw = new BufferedWriter(fw);
- bw.write(configBodyData);
- bw.close();
- if (LOGGER.isDebugEnabled()) {
- LOGGER.debug("Configuration is succesfully saved");
- }
- } catch (IOException e) {
- LOGGER.error("Exception Occured while writing Configuration Data"+e);
- }
- }
-
-
- // Here we are adding the extension for the configurations file based on the
- // config type selection for saving.
- private String getConfigFile(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;
- }
-
-
- // Validations for Config form
- /*
- * FORM VALIDATION WILL BE DONE BY THE PAP-ADMIN before creating JSON object...
- * BODY VALIDATION WILL BE DONE BY THE PAP-REST after receiving and deserializing the JSON object
- */
- public boolean validateConfigForm() {
-
- isValidForm = true;
-
- /*
- * Validate Text Area Body
- */
- configBodyData = policyAdapter.getConfigBodyData();
- String id = policyAdapter.getConfigType();
- if (id != null) {
- if (id.equals(JSON_CONFIG)) {
- if (!isJSONValid(configBodyData)) {
- isValidForm = false;
- }
- } else if (id.equals(XML_CONFIG)) {
- if (!isXMLValid(configBodyData)) {
- isValidForm = false;
- }
- } else if (id.equals(PROPERTIES_CONFIG)) {
- if (!isPropValid(configBodyData)||configBodyData.equals("")) {
- isValidForm = false;
- }
- } else if (id.equals(OTHER_CONFIG)) {
- if (configBodyData.equals("")) {
- isValidForm = false;
- }
- }
- }
- return isValidForm;
-
- }
-
- // Validation for XML.
- private boolean isXMLValid(String data) {
-
- SAXParserFactory factory = SAXParserFactory.newInstance();
- factory.setValidating(false);
- factory.setNamespaceAware(true);
- try {
- SAXParser parser = factory.newSAXParser();
- XMLReader reader = parser.getXMLReader();
- reader.setErrorHandler(new XMLErrorHandler());
- reader.parse(new InputSource(new StringReader(data)));
- } catch (ParserConfigurationException e) {
- return false;
- } catch (SAXException e) {
- return false;
- } catch (IOException e) {
- return false;
- }
- return true;
-
- }
-
- // Validation for Properties file.
- public boolean isPropValid(String prop) {
-
- Scanner scanner = new Scanner(prop);
- while (scanner.hasNextLine()) {
- String line = scanner.nextLine();
- line.replaceAll("\\s+", "");
- if (line.startsWith("#")) {
- continue;
- } else {
- if (line.contains("=")) {
- String[] parts = line.split("=");
- if (parts.length < 2) {
- scanner.close();
- return false;
- }
- } else {
- scanner.close();
- return false;
- }
- }
- }
- scanner.close();
- return true;
-
- }
-
- public class XMLErrorHandler implements ErrorHandler {
-
- public void warning(SAXParseException e) throws SAXException {
- System.out.println(e.getMessage());
- }
-
- public void error(SAXParseException e) throws SAXException {
- System.out.println(e.getMessage());
- }
-
- public void fatalError(SAXParseException e) throws SAXException {
- System.out.println(e.getMessage());
- }
-
- }
-
- @Override
- public Map<String, String> savePolicies() throws Exception {
-
- Map<String, String> successMap = new HashMap<>();
- if(isPolicyExists()){
- successMap.put("EXISTS", "This Policy already exist on the PAP");
- return successMap;
- }
-
- if(!isPreparedToSave()){
- //Prep and configure the policy for saving
- prepareToSave();
- }
-
- // Until here we prepared the data and here calling the method to create xml.
- Path newPolicyPath = null;
- newPolicyPath = Paths.get(policyAdapter.getNewFileName());
- successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject());
- return successMap;
- }
-
- //This is the method for preparing the policy for saving. We have broken it out
- //separately because the fully configured policy is used for multiple things
- @Override
- public boolean prepareToSave() throws Exception{
-
- if(isPreparedToSave()){
- return true;
- }
-
- int version = 0;
- String policyID = policyAdapter.getPolicyID();
- version = policyAdapter.getHighestVersion();
-
- // Create the Instance for pojo, PolicyType object is used in marshalling.
- if (policyAdapter.getPolicyType().equals("Config")) {
- PolicyType policyConfig = new PolicyType();
-
- policyConfig.setVersion(Integer.toString(version));
- policyConfig.setPolicyId(policyID);
- policyConfig.setTarget(new TargetType());
- policyAdapter.setData(policyConfig);
- }
-
- policyName = policyAdapter.getNewFileName();
- configBodyData = policyAdapter.getConfigBodyData();
- saveConfigurations(policyName);
-
- if (policyAdapter.getData() != null) {
- PolicyType configPolicy = (PolicyType) policyAdapter.getData();
-
- configPolicy.setDescription(policyAdapter.getPolicyDescription());
-
- configPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId());
- AllOfType allOfOne = new AllOfType();
-
- String fileName = policyAdapter.getNewFileName();
- String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length());
- if ((name == null) || (name.equals(""))) {
- name = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length());
- }
- allOfOne.getMatch().add(createMatch("PolicyName", name));
- AllOfType allOf = new AllOfType();
-
- // Adding the matches to AllOfType element Match for Ecomp
- allOf.getMatch().add(createMatch("ECOMPName", policyAdapter.getEcompName()));
- // Match for riskType
- allOf.getMatch().add(createDynamicMatch("RiskType", policyAdapter.getRiskType()));
- // Match for riskLevel
- allOf.getMatch().add(createDynamicMatch("RiskLevel", String.valueOf(policyAdapter.getRiskLevel())));
- // Match for riskguard
- allOf.getMatch().add(createDynamicMatch("guard", policyAdapter.getGuard()));
- // Match for ttlDate
- allOf.getMatch().add(createDynamicMatch("TTLDate", policyAdapter.getTtlDate()));
- // Match for ConfigName
- allOf.getMatch().add(createMatch("ConfigName", policyAdapter.getConfigName()));
-
- Map<String, String> dynamicFieldConfigAttributes = policyAdapter.getDynamicFieldConfigAttributes();
-
- // If there is any dynamic field create the matches here
- for (String keyField : dynamicFieldConfigAttributes.keySet()) {
- String key = keyField;
- String value = dynamicFieldConfigAttributes.get(key);
- MatchType dynamicMatch = createDynamicMatch(key, value);
- allOf.getMatch().add(dynamicMatch);
- }
-
- AnyOfType anyOf = new AnyOfType();
- anyOf.getAllOf().add(allOfOne);
- anyOf.getAllOf().add(allOf);
-
- TargetType target = new TargetType();
- ((TargetType) target).getAnyOf().add(anyOf);
-
- // Adding the target to the policy element
- configPolicy.setTarget((TargetType) target);
-
- RuleType rule = new RuleType();
- rule.setRuleId(policyAdapter.getRuleID());
- rule.setEffect(EffectType.PERMIT);
-
- // Create Target in Rule
- AllOfType allOfInRule = new AllOfType();
-
- // Creating match for ACCESS in rule target
- MatchType accessMatch = new MatchType();
- AttributeValueType accessAttributeValue = new AttributeValueType();
- accessAttributeValue.setDataType(STRING_DATATYPE);
- accessAttributeValue.getContent().add("ACCESS");
- accessMatch.setAttributeValue(accessAttributeValue);
- AttributeDesignatorType accessAttributeDesignator = new AttributeDesignatorType();
- URI accessURI = null;
- try{
- accessURI = new URI(ACTION_ID);
- }catch(URISyntaxException e){
- PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "ConfigPolicy", "Exception creating ACCESS URI");
- }
- accessAttributeDesignator.setCategory(CATEGORY_ACTION);
- accessAttributeDesignator.setDataType(STRING_DATATYPE);
- accessAttributeDesignator.setAttributeId(new IdentifierImpl(accessURI).stringValue());
- accessMatch.setAttributeDesignator(accessAttributeDesignator);
- accessMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE);
-
- // Creating Config Match in rule Target
- MatchType configMatch = new MatchType();
- AttributeValueType configAttributeValue = new AttributeValueType();
- configAttributeValue.setDataType(STRING_DATATYPE);
- configAttributeValue.getContent().add("Config");
- configMatch.setAttributeValue(configAttributeValue);
- AttributeDesignatorType configAttributeDesignator = new AttributeDesignatorType();
- URI configURI = null;
- try{
- configURI = new URI(RESOURCE_ID);
- }catch(URISyntaxException e){
- PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "ConfigPolicy", "Exception creating Config URI");
- }
- configAttributeDesignator.setCategory(CATEGORY_RESOURCE);
- configAttributeDesignator.setDataType(STRING_DATATYPE);
- configAttributeDesignator.setAttributeId(new IdentifierImpl(configURI).stringValue());
- configMatch.setAttributeDesignator(configAttributeDesignator);
- configMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE);
-
- allOfInRule.getMatch().add(accessMatch);
- allOfInRule.getMatch().add(configMatch);
-
- AnyOfType anyOfInRule = new AnyOfType();
- anyOfInRule.getAllOf().add(allOfInRule);
-
- TargetType targetInRule = new TargetType();
- targetInRule.getAnyOf().add(anyOfInRule);
-
- rule.setTarget(targetInRule);
- rule.setAdviceExpressions(getAdviceExpressions(version, policyName));
-
- configPolicy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().add(rule);
- policyAdapter.setPolicyData(configPolicy);
-
- } else {
- PolicyLogger.error("Unsupported data object." + policyAdapter.getData().getClass().getCanonicalName());
- }
- setPreparedToSave(true);
- return true;
- }
-
- // Data required for Advice part is setting here.
- private AdviceExpressionsType getAdviceExpressions(int version, String fileName) {
- AdviceExpressionsType advices = new AdviceExpressionsType();
- AdviceExpressionType advice = new AdviceExpressionType();
- advice.setAdviceId("configID");
- advice.setAppliesTo(EffectType.PERMIT);
-
- // For Configuration
- AttributeAssignmentExpressionType assignment1 = new AttributeAssignmentExpressionType();
- assignment1.setAttributeId("type");
- assignment1.setCategory(CATEGORY_RESOURCE);
- assignment1.setIssuer("");
-
- AttributeValueType configNameAttributeValue = new AttributeValueType();
- configNameAttributeValue.setDataType(STRING_DATATYPE);
- configNameAttributeValue.getContent().add("Configuration");
- assignment1.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue));
-
- advice.getAttributeAssignmentExpression().add(assignment1);
-
- // For Config file Url if configurations are provided.
- if (policyAdapter.getConfigType() != null) {
- AttributeAssignmentExpressionType assignment2 = new AttributeAssignmentExpressionType();
- assignment2.setAttributeId("URLID");
- assignment2.setCategory(CATEGORY_RESOURCE);
- assignment2.setIssuer("");
-
- AttributeValueType AttributeValue = new AttributeValueType();
- AttributeValue.setDataType(URI_DATATYPE);
- String content = "$URL" + "/Config/" + getConfigFile(policyName);
- AttributeValue.getContent().add(content);
- assignment2.setExpression(new ObjectFactory().createAttributeValue(AttributeValue));
-
- advice.getAttributeAssignmentExpression().add(assignment2);
- AttributeAssignmentExpressionType assignment3 = new AttributeAssignmentExpressionType();
- assignment3.setAttributeId("PolicyName");
- assignment3.setCategory(CATEGORY_RESOURCE);
- assignment3.setIssuer("");
-
- AttributeValueType attributeValue3 = new AttributeValueType();
- attributeValue3.setDataType(STRING_DATATYPE);
-
- fileName = FilenameUtils.removeExtension(fileName);
- fileName = fileName + ".xml";
- String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length());
- if ((name == null) || (name.equals(""))) {
- name = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length());
- }
- attributeValue3.getContent().add(name);
- assignment3.setExpression(new ObjectFactory().createAttributeValue(attributeValue3));
- advice.getAttributeAssignmentExpression().add(assignment3);
-
- AttributeAssignmentExpressionType assignment4 = new AttributeAssignmentExpressionType();
- assignment4.setAttributeId("VersionNumber");
- assignment4.setCategory(CATEGORY_RESOURCE);
- assignment4.setIssuer("");
-
- AttributeValueType configNameAttributeValue4 = new AttributeValueType();
- configNameAttributeValue4.setDataType(STRING_DATATYPE);
- configNameAttributeValue4.getContent().add(Integer.toString(version));
- assignment4.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue4));
-
- advice.getAttributeAssignmentExpression().add(assignment4);
-
- AttributeAssignmentExpressionType assignment5 = new AttributeAssignmentExpressionType();
- assignment5.setAttributeId("matching:" + ECOMPID);
- assignment5.setCategory(CATEGORY_RESOURCE);
- assignment5.setIssuer("");
-
- AttributeValueType configNameAttributeValue5 = new AttributeValueType();
- configNameAttributeValue5.setDataType(STRING_DATATYPE);
- configNameAttributeValue5.getContent().add(policyAdapter.getEcompName());
- assignment5.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue5));
-
- advice.getAttributeAssignmentExpression().add(assignment5);
-
- AttributeAssignmentExpressionType assignment6 = new AttributeAssignmentExpressionType();
- assignment6.setAttributeId("matching:" + CONFIGID);
- assignment6.setCategory(CATEGORY_RESOURCE);
- assignment6.setIssuer("");
-
- AttributeValueType configNameAttributeValue6 = new AttributeValueType();
- configNameAttributeValue6.setDataType(STRING_DATATYPE);
- configNameAttributeValue6.getContent().add(policyAdapter.getConfigName());
- assignment6.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue6));
-
- advice.getAttributeAssignmentExpression().add(assignment6);
-
- Map<String, String> dynamicFieldConfigAttributes = policyAdapter.getDynamicFieldConfigAttributes();
- for (String keyField : dynamicFieldConfigAttributes.keySet()) {
- String key = keyField;
- String value = dynamicFieldConfigAttributes.get(key);
- AttributeAssignmentExpressionType assignment7 = new AttributeAssignmentExpressionType();
- assignment7.setAttributeId("matching:" + key);
- assignment7.setCategory(CATEGORY_RESOURCE);
- assignment7.setIssuer("");
-
- AttributeValueType configNameAttributeValue7 = new AttributeValueType();
- configNameAttributeValue7.setDataType(STRING_DATATYPE);
- configNameAttributeValue7.getContent().add(value);
- assignment7.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue7));
-
- advice.getAttributeAssignmentExpression().add(assignment7);
- }
- }
-
- //Risk Attributes
- AttributeAssignmentExpressionType assignment8 = new AttributeAssignmentExpressionType();
- assignment8.setAttributeId("RiskType");
- assignment8.setCategory(CATEGORY_RESOURCE);
- assignment8.setIssuer("");
-
- AttributeValueType configNameAttributeValue8 = new AttributeValueType();
- configNameAttributeValue8.setDataType(STRING_DATATYPE);
- configNameAttributeValue8.getContent().add(policyAdapter.getRiskType());
- assignment8.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue8));
-
- advice.getAttributeAssignmentExpression().add(assignment8);
-
- AttributeAssignmentExpressionType assignment9 = new AttributeAssignmentExpressionType();
- assignment9.setAttributeId("RiskLevel");
- assignment9.setCategory(CATEGORY_RESOURCE);
- assignment9.setIssuer("");
-
- AttributeValueType configNameAttributeValue9 = new AttributeValueType();
- configNameAttributeValue9.setDataType(STRING_DATATYPE);
- configNameAttributeValue9.getContent().add(policyAdapter.getRiskLevel());
- assignment9.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue9));
-
- advice.getAttributeAssignmentExpression().add(assignment9);
-
- AttributeAssignmentExpressionType assignment10 = new AttributeAssignmentExpressionType();
- assignment10.setAttributeId("guard");
- assignment10.setCategory(CATEGORY_RESOURCE);
- assignment10.setIssuer("");
-
- AttributeValueType configNameAttributeValue10 = new AttributeValueType();
- configNameAttributeValue10.setDataType(STRING_DATATYPE);
- configNameAttributeValue10.getContent().add(policyAdapter.getGuard());
- assignment10.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue10));
-
- advice.getAttributeAssignmentExpression().add(assignment10);
-
- AttributeAssignmentExpressionType assignment11 = new AttributeAssignmentExpressionType();
- assignment11.setAttributeId("TTLDate");
- assignment11.setCategory(CATEGORY_RESOURCE);
- assignment11.setIssuer("");
-
- AttributeValueType configNameAttributeValue11 = new AttributeValueType();
- configNameAttributeValue11.setDataType(STRING_DATATYPE);
- configNameAttributeValue11.getContent().add(policyAdapter.getTtlDate());
- assignment11.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue11));
-
- advice.getAttributeAssignmentExpression().add(assignment11);
-
- advices.getAdviceExpression().add(advice);
- return advices;
- }
-
- @Override
- public Object getCorrectPolicyDataObject() {
- return policyAdapter.getPolicyData();
- }
-
-}
diff --git a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateBRMSRuleTemplate.java b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateBRMSRuleTemplate.java
deleted file mode 100644
index 078ba1040..000000000
--- a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateBRMSRuleTemplate.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ECOMP-PAP-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.openecomp.policy.pap.xacml.rest.components;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
-import org.openecomp.policy.common.logging.flexlogger.Logger;
-import org.openecomp.policy.rest.dao.CommonClassDao;
-import org.openecomp.policy.rest.jpa.BRMSParamTemplate;
-import org.openecomp.policy.rest.jpa.UserInfo;
-import org.openecomp.policy.utils.PolicyUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-@Service
-public class CreateBRMSRuleTemplate {
- private static final Logger LOGGER = FlexLogger.getLogger(CreateBRMSRuleTemplate.class);
- private static CommonClassDao commonClassDao;
-
- @Autowired
- public CreateBRMSRuleTemplate(CommonClassDao commonClassDao){
- CreateBRMSRuleTemplate.commonClassDao = commonClassDao;
- }
-
- public CreateBRMSRuleTemplate() {}
-
- public Map<String, String> addRule(String rule, String ruleName, String description, String userID) {
- Map<String,String> responseMap = new HashMap<>();
- if(rule!=null && !PolicyUtils.brmsRawValidate(rule).contains("[ERR")){
- List<Object> duplicateData = commonClassDao.checkDuplicateEntry(ruleName, "ruleName", BRMSParamTemplate.class);
- if(duplicateData!=null && !duplicateData.isEmpty()){
- LOGGER.error("Import new service failed. Service already exists");
- responseMap.put("DBError", "EXISTS");
- return responseMap;
- }else{
- BRMSParamTemplate brmsParamTemplate = new BRMSParamTemplate();
- brmsParamTemplate.setDescription(description);
- brmsParamTemplate.setRuleName(ruleName);
- brmsParamTemplate.setRule(rule);
- UserInfo userCreatedBy = (UserInfo) commonClassDao.getEntityItem(UserInfo.class, "userLoginId", userID);
- brmsParamTemplate.setUserCreatedBy(userCreatedBy);
- commonClassDao.save(brmsParamTemplate);
- LOGGER.info("Template created with " + ruleName + " by " + userID);
- }
- responseMap.put("success", "success");
- }else{
- LOGGER.debug("Error during validating the rule for creating record for BRMS Param Template");
- responseMap.put("error", "VALIDATION");
- }
- return responseMap;
- }
-
-}
diff --git a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateBrmsParamPolicy.java b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateBrmsParamPolicy.java
deleted file mode 100644
index b9dc039fc..000000000
--- a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateBrmsParamPolicy.java
+++ /dev/null
@@ -1,692 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ECOMP-PAP-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.openecomp.policy.pap.xacml.rest.components;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.nio.charset.Charset;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.apache.commons.io.FilenameUtils;
-import org.openecomp.policy.common.logging.eelf.MessageCodes;
-import org.openecomp.policy.common.logging.eelf.PolicyLogger;
-import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
-import org.openecomp.policy.common.logging.flexlogger.Logger;
-import org.openecomp.policy.pap.xacml.rest.controller.BRMSDictionaryController;
-import org.openecomp.policy.pap.xacml.rest.daoimpl.CommonClassDaoImpl;
-import org.openecomp.policy.rest.adapter.PolicyRestAdapter;
-import org.openecomp.policy.rest.jpa.BRMSParamTemplate;
-
-import com.att.research.xacml.std.IdentifierImpl;
-
-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;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeValueType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.EffectType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.MatchType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ObjectFactory;
-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;
-
-public class CreateBrmsParamPolicy extends Policy {
-
- private static final Logger LOGGER = FlexLogger.getLogger(CreateBrmsParamPolicy.class);
-
- public CreateBrmsParamPolicy() {
- super();
- }
-
- public CreateBrmsParamPolicy(PolicyRestAdapter policyAdapter) {
- this.policyAdapter = policyAdapter;
- this.policyAdapter.setConfigType(policyAdapter.getConfigType());
-
- }
-
- public String expandConfigBody(String ruleContents, Map<String, String> brmsParamBody) {
-
- Map<String,String> copyMap=new HashMap<>();
- copyMap.putAll(brmsParamBody);
- copyMap.put("policyName", policyName.substring(0, policyName.replace(".xml", "").lastIndexOf(".")));
- copyMap.put("policyScope", policyAdapter.getDomainDir());
- copyMap.put("policyVersion",policyAdapter.getHighestVersion().toString());
- copyMap.put("unique", ("p"+policyName+UUID.randomUUID().toString()).replaceAll("[^A-Za-z0-9]", ""));
-
- //Finding all the keys in the Map data-structure.
- Iterator<String> iterator = copyMap.keySet().iterator();
- Pattern p;
- Matcher m;
- 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) : "");
- //Searching for a pattern in the String using the key.
- p=Pattern.compile("\\$\\{"+output+"\\}");
- m=p.matcher(ruleContents);
- //Replacing the value with the inputs provided by the user in the editor.
- String finalInput = copyMap.get(input);
- if(finalInput.contains("$")){
- finalInput = finalInput.replace("$", "\\$");
- }
- ruleContents=m.replaceAll(finalInput);
- }
- return ruleContents;
- }
-
-
-
- // Utility to read json data from the existing file to a string
- static String readFile(String path, Charset encoding) throws IOException {
-
- byte[] encoded = Files.readAllBytes(Paths.get(path));
- return new String(encoded, encoding);
-
- }
-
- // Saving the Configurations file at server location for config policy.
- protected void saveConfigurations(String policyName, String ruleBody) {
- try {
- if (policyName.endsWith(".xml")) {
- policyName = policyName.substring(0,
- policyName.lastIndexOf(".xml"));
- }
- PrintWriter out = new PrintWriter(CONFIG_HOME + File.separator + policyName + ".txt");
- String expandedBody=expandConfigBody(ruleBody,policyAdapter.getBrmsParamBody());
- out.println(expandedBody);
- policyAdapter.setJsonBody(expandedBody);
- policyAdapter.setConfigBodyData(expandedBody);
- out.close();
-
-
- } catch (Exception e) {
- PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "CreateBrmsParamPolicy", "Exception saving configuration file");
- }
- }
-
-
- // Here we are adding the extension for the configurations file based on the
- // config type selection for saving.
- private String getConfigFile(String filename) {
- filename = FilenameUtils.removeExtension(filename);
- if (filename.endsWith(".txt")) {
- filename = filename.substring(0, filename.length() - 3);
- }
-
- filename = filename + ".txt";
- return filename;
- }
-
- // Validations for Config form
- public boolean validateConfigForm() {
-
- // Validating mandatory Fields.
- isValidForm = true;
- return isValidForm;
-
- }
-
- @Override
- public Map<String, String> savePolicies() throws Exception {
-
- Map<String, String> successMap = new HashMap<>();
- if(isPolicyExists()){
- successMap.put("EXISTS", "This Policy already exist on the PAP");
- return successMap;
- }
-
- if (!isPreparedToSave()) {
- prepareToSave();
- }
- // Until here we prepared the data and here calling the method to create
- // xml.
- Path newPolicyPath = null;
- newPolicyPath = Paths.get(policyAdapter.getNewFileName());
- successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject());
- if(successMap == null){
- successMap = new HashMap<>();
- PolicyLogger.error("Failed to Update the Database Dictionary Tables.");
- successMap.put("error", "DB UPDATE");
- }
- return successMap;
- }
-
- private String getValueFromDictionary(String templateName){
- String ruleTemplate = null;
- CommonClassDaoImpl dbConnection = new CommonClassDaoImpl();
- String queryString="from BRMSParamTemplate where param_template_name= '"+templateName+"'";
- List<Object> result = dbConnection.getDataByQuery(queryString);
- if(!result.isEmpty()){
- BRMSParamTemplate template = (BRMSParamTemplate) result.get(0);
- ruleTemplate = template.getRule();
- }
- return ruleTemplate;
- }
-
- protected Map<String, String> findType(String rule) {
- Map<String, String> mapFieldType= new HashMap<>();
- if(rule!=null){
- try {
- String params = "";
- Boolean flag = false;
- Boolean comment = false;
- String lines[] = rule.split("\n");
- for(String line : lines){
- if (line.isEmpty() || line.startsWith("//")) {
- continue;
- }
- if (line.startsWith("/*")) {
- comment = true;
- continue;
- }
- if (line.contains("//")) {
- if(!(line.contains("http://") || line.contains("https://"))){
- line = line.split("\\/\\/")[0];
- }
- }
- if (line.contains("/*")) {
- comment = true;
- if (line.contains("*/")) {
- try {
- comment = false;
- line = line.split("\\/\\*")[0]
- + line.split("\\*\\/")[1].replace("*/", "");
- } catch (Exception e) {
- line = line.split("\\/\\*")[0];
- }
- } else {
- line = line.split("\\/\\*")[0];
- }
- }
- if (line.contains("*/")) {
- comment = false;
- try {
- line = line.split("\\*\\/")[1].replace("*/", "");
- } catch (Exception e) {
- line = "";
- }
- }
- if (comment) {
- continue;
- }
- if (flag) {
- params = params + line;
- }
- if (line.contains("declare Params")) {
- params = params + line;
- flag = true;
- }
- if (line.contains("end") && flag) {
- break;
- }
- }
- params = params.replace("declare Params", "").replace("end", "")
- .replaceAll("\\s+", "");
- String[] components = params.split(":");
- String caption = "";
- for (int i = 0; i < components.length; i++) {
- String type = "";
- if (i == 0) {
- caption = components[i];
- }
- if(caption.equals("")){
- break;
- }
- String nextComponent = "";
- try {
- nextComponent = components[i + 1];
- } catch (Exception e) {
- nextComponent = components[i];
- }
- //If the type is of type String then we add the UI Item and type to the map.
- if (nextComponent.startsWith("String")) {
- type = "String";
- mapFieldType.put(caption, type);
- caption = nextComponent.replace("String", "");
- } else if (nextComponent.startsWith("int")) {
- type = "int";
- mapFieldType.put(caption, type);
- caption = nextComponent.replace("int", "");
- }
- }
- } catch (Exception e) {
- PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "CreateBrmsParamPolicy", "Exception parsing file in findType");
- }
- }
- return mapFieldType;
- }
-
- // This is the method for preparing the policy for saving. We have broken it
- // out
- // separately because the fully configured policy is used for multiple
- // things
- @Override
- public boolean prepareToSave() throws Exception {
-
- if (isPreparedToSave()) {
- // we have already done this
- return true;
- }
-
- int version = 0;
- String policyID = policyAdapter.getPolicyID();
- version = policyAdapter.getHighestVersion();
-
- // Create the Instance for pojo, PolicyType object is used in
- // marshalling.
- if (policyAdapter.getPolicyType().equals("Config")) {
- PolicyType policyConfig = new PolicyType();
-
- policyConfig.setVersion(Integer.toString(version));
- policyConfig.setPolicyId(policyID);
- policyConfig.setTarget(new TargetType());
- policyAdapter.setData(policyConfig);
- }
-
- policyName = policyAdapter.getNewFileName();
-
- if (policyAdapter.getData() != null) {
- Map<String,String> ruleAndUIValue= policyAdapter.getBrmsParamBody();
- String tempateValue= ruleAndUIValue.get("templateName");
- String valueFromDictionary= getValueFromDictionary(tempateValue);
-
- //Get the type of the UI Fields.
- Map<String,String> typeOfUIField=findType(valueFromDictionary);
- String generatedRule=null;
- String body = "";
-
- try {
-
- try {
- body = "/* Autogenerated Code Please Don't change/remove this comment section. This is for the UI purpose. \n\t " +
- "<$%BRMSParamTemplate=" + tempateValue + "%$> \n */ \n";
- body = body + valueFromDictionary + "\n";
- generatedRule = "rule \"" +policyName.substring(0, policyName.replace(".xml", "").lastIndexOf(".")) +".Params\" \n\tsalience 1000 \n\twhen\n\tthen\n\t\tParams params = new Params();";
-
- //We first read the map data structure(ruleAndUIValue) received from the PAP-ADMIN
- //We ignore if the key is "templateName as we are interested only in the UI fields and its value.
- //We have one more map data structure(typeOfUIField) created by parsing the Drools rule.
- //From the type of the UI field(String/int) we structure whether to put the "" or not.
- for (Map.Entry<String, String> entry : ruleAndUIValue.entrySet()) {
- if(entry.getKey()!="templateName")
- {
- for(Map.Entry<String, String> fieldType:typeOfUIField.entrySet())
- {
- if(fieldType.getKey().equalsIgnoreCase(entry.getKey()))
- {
- String key = entry.getKey().substring(0, 1).toUpperCase() + entry.getKey().substring(1);
- if(fieldType.getValue()=="String")
- {
- //Type is String
- generatedRule = generatedRule + "\n\t\tparams.set"
- + key + "(\""
- + entry.getValue() + "\");";
- }
- else{
- generatedRule = generatedRule + "\n\t\tparams.set"
- + key + "("
- + entry.getValue() + ");";
- }
- }
- }
- }
- }
-
- generatedRule = generatedRule
- + "\n\t\tinsert(params);\nend";
- LOGGER.info("New rule generated with :" + generatedRule);
- body = body + generatedRule;
- } catch (Exception e) {
- PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "CreateBrmsParamPolicy", "Exception saving policy");
- }
- }
- catch (Exception e) {
- PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "CreateBrmsParamPolicy", "Exception saving policy");
- }
-
- saveConfigurations(policyName,body);
-
- // Make sure the filename ends with an extension
- if (policyName.endsWith(".xml") == false) {
- policyName = policyName + ".xml";
- }
-
- PolicyType configPolicy = (PolicyType) policyAdapter.getData();
-
- configPolicy.setDescription(policyAdapter.getPolicyDescription());
-
- configPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId());
-
- AllOfType allOfOne = new AllOfType();
-
- String fileName = policyAdapter.getNewFileName();
- String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length());
- if ((name == null) || (name.equals(""))) {
- name = fileName.substring(fileName.lastIndexOf("/") + 1,
- fileName.length());
- }
- allOfOne.getMatch().add(createMatch("PolicyName", name));
-
-
- AllOfType allOf = new AllOfType();
-
- // Match for ECOMPName
- allOf.getMatch().add(createMatch("ECOMPName", policyAdapter.getEcompName()));
- allOf.getMatch().add(createMatch("ConfigName", policyAdapter.getConfigName()));
- // Match for riskType
- allOf.getMatch().add(createDynamicMatch("RiskType", policyAdapter.getRiskType()));
- // Match for riskLevel
- allOf.getMatch().add(createDynamicMatch("RiskLevel", String.valueOf(policyAdapter.getRiskLevel())));
- // Match for riskguard
- allOf.getMatch().add(createDynamicMatch("guard", policyAdapter.getGuard()));
- // Match for ttlDate
- allOf.getMatch().add(createDynamicMatch("TTLDate", policyAdapter.getTtlDate()));
- AnyOfType anyOf = new AnyOfType();
- anyOf.getAllOf().add(allOfOne);
- anyOf.getAllOf().add(allOf);
-
- TargetType target = new TargetType();
- ((TargetType) target).getAnyOf().add(anyOf);
-
- // Adding the target to the policy element
- configPolicy.setTarget((TargetType) target);
-
- RuleType rule = new RuleType();
- rule.setRuleId(policyAdapter.getRuleID());
-
- rule.setEffect(EffectType.PERMIT);
-
- // Create Target in Rule
- AllOfType allOfInRule = new AllOfType();
-
- // Creating match for ACCESS in rule target
- MatchType accessMatch = new MatchType();
- AttributeValueType accessAttributeValue = new AttributeValueType();
- accessAttributeValue.setDataType(STRING_DATATYPE);
- accessAttributeValue.getContent().add("ACCESS");
- accessMatch.setAttributeValue(accessAttributeValue);
- AttributeDesignatorType accessAttributeDesignator = new AttributeDesignatorType();
- URI accessURI = null;
- try {
- accessURI = new URI(ACTION_ID);
- } catch (URISyntaxException e) {
- PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "CreateBrmsParamPolicy", "Exception creating ACCESS URI");
- }
- accessAttributeDesignator.setCategory(CATEGORY_ACTION);
- accessAttributeDesignator.setDataType(STRING_DATATYPE);
- accessAttributeDesignator.setAttributeId(new IdentifierImpl(
- accessURI).stringValue());
- accessMatch.setAttributeDesignator(accessAttributeDesignator);
- accessMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE);
-
- // Creating Config Match in rule Target
- MatchType configMatch = new MatchType();
- AttributeValueType configAttributeValue = new AttributeValueType();
- configAttributeValue.setDataType(STRING_DATATYPE);
-
- configAttributeValue.getContent().add("Config");
-
- configMatch.setAttributeValue(configAttributeValue);
- AttributeDesignatorType configAttributeDesignator = new AttributeDesignatorType();
- URI configURI = null;
- try {
- configURI = new URI(RESOURCE_ID);
- } catch (URISyntaxException e) {
- PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "CreateBrmsParamPolicy", "Exception creating Config URI");
- }
-
- configAttributeDesignator.setCategory(CATEGORY_RESOURCE);
- configAttributeDesignator.setDataType(STRING_DATATYPE);
- configAttributeDesignator.setAttributeId(new IdentifierImpl(configURI).stringValue());
- configMatch.setAttributeDesignator(configAttributeDesignator);
- configMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE);
-
- allOfInRule.getMatch().add(accessMatch);
- allOfInRule.getMatch().add(configMatch);
-
- AnyOfType anyOfInRule = new AnyOfType();
- anyOfInRule.getAllOf().add(allOfInRule);
-
- TargetType targetInRule = new TargetType();
- targetInRule.getAnyOf().add(anyOfInRule);
-
- rule.setTarget(targetInRule);
- rule.setAdviceExpressions(getAdviceExpressions(version, policyName));
-
- configPolicy
- .getCombinerParametersOrRuleCombinerParametersOrVariableDefinition()
- .add(rule);
- policyAdapter.setPolicyData(configPolicy);
-
- } else {
- PolicyLogger.error("Unsupported data object."
- + policyAdapter.getData().getClass().getCanonicalName());
- }
- setPreparedToSave(true);
- return true;
- }
-
- // Data required for Advice part is setting here.
- private AdviceExpressionsType getAdviceExpressions(int version,
- String fileName) {
-
- //Policy Config ID Assignment
- AdviceExpressionsType advices = new AdviceExpressionsType();
- AdviceExpressionType advice = new AdviceExpressionType();
- advice.setAdviceId("BRMSPARAMID");
- advice.setAppliesTo(EffectType.PERMIT);
- // For Configuration
- AttributeAssignmentExpressionType assignment1 = new AttributeAssignmentExpressionType();
- assignment1.setAttributeId("type");
- assignment1.setCategory(CATEGORY_RESOURCE);
- assignment1.setIssuer("");
- AttributeValueType configNameAttributeValue = new AttributeValueType();
- configNameAttributeValue.setDataType(STRING_DATATYPE);
- configNameAttributeValue.getContent().add("Configuration");
- assignment1.setExpression(new ObjectFactory()
- .createAttributeValue(configNameAttributeValue));
- advice.getAttributeAssignmentExpression().add(assignment1);
-
- // For Config file Url if configurations are provided.
- // URL ID Assignment
- AttributeAssignmentExpressionType assignment2 = new AttributeAssignmentExpressionType();
- assignment2.setAttributeId("URLID");
- assignment2.setCategory(CATEGORY_RESOURCE);
- assignment2.setIssuer("");
- AttributeValueType AttributeValue = new AttributeValueType();
- AttributeValue.setDataType(URI_DATATYPE);
-
- String content = CONFIG_URL + "/Config/"+ getConfigFile(policyName);
-
- AttributeValue.getContent().add(content);
- assignment2.setExpression(new ObjectFactory()
- .createAttributeValue(AttributeValue));
- advice.getAttributeAssignmentExpression().add(assignment2);
-
- // Policy Name Assignment
- AttributeAssignmentExpressionType assignment3 = new AttributeAssignmentExpressionType();
- assignment3.setAttributeId("PolicyName");
- assignment3.setCategory(CATEGORY_RESOURCE);
- assignment3.setIssuer("");
- AttributeValueType attributeValue3 = new AttributeValueType();
- attributeValue3.setDataType(STRING_DATATYPE);
- fileName = FilenameUtils.removeExtension(fileName);
- fileName = fileName + ".xml";
- String name = fileName.substring(fileName.lastIndexOf("\\") + 1,
- fileName.length());
- if ((name == null) || (name.equals(""))) {
- name = fileName.substring(fileName.lastIndexOf("/") + 1,
- fileName.length());
- }
- attributeValue3.getContent().add(name);
- assignment3.setExpression(new ObjectFactory()
- .createAttributeValue(attributeValue3));
- advice.getAttributeAssignmentExpression().add(assignment3);
-
- // Version Number Assignment
- AttributeAssignmentExpressionType assignment4 = new AttributeAssignmentExpressionType();
- assignment4.setAttributeId("VersionNumber");
- assignment4.setCategory(CATEGORY_RESOURCE);
- assignment4.setIssuer("");
- AttributeValueType configNameAttributeValue4 = new AttributeValueType();
- configNameAttributeValue4.setDataType(STRING_DATATYPE);
- configNameAttributeValue4.getContent().add(Integer.toString(version));
- assignment4.setExpression(new ObjectFactory()
- .createAttributeValue(configNameAttributeValue4));
- advice.getAttributeAssignmentExpression().add(assignment4);
-
- // Ecomp Name Assignment
- AttributeAssignmentExpressionType assignment5 = new AttributeAssignmentExpressionType();
- assignment5.setAttributeId("matching:" + ECOMPID);
- assignment5.setCategory(CATEGORY_RESOURCE);
- assignment5.setIssuer("");
- AttributeValueType configNameAttributeValue5 = new AttributeValueType();
- configNameAttributeValue5.setDataType(STRING_DATATYPE);
- configNameAttributeValue5.getContent().add(policyAdapter.getEcompName());
- assignment5.setExpression(new ObjectFactory()
- .createAttributeValue(configNameAttributeValue5));
- advice.getAttributeAssignmentExpression().add(assignment5);
-
-
- //Config Name Assignment
- AttributeAssignmentExpressionType assignment6 = new AttributeAssignmentExpressionType();
- assignment6.setAttributeId("matching:" +CONFIGID);
- assignment6.setCategory(CATEGORY_RESOURCE);
- assignment6.setIssuer("");
- AttributeValueType configNameAttributeValue6 = new AttributeValueType();
- configNameAttributeValue6.setDataType(STRING_DATATYPE);
- configNameAttributeValue6.getContent().add(policyAdapter.getConfigName());
- assignment6.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue6));
- advice.getAttributeAssignmentExpression().add(assignment6);
- // Adding Controller Information.
- if(policyAdapter.getBrmsController()!=null){
- BRMSDictionaryController brmsDicitonaryController = new BRMSDictionaryController();
- advice.getAttributeAssignmentExpression().add(
- createResponseAttributes("controller:"+ policyAdapter.getBrmsController(),
- brmsDicitonaryController.getControllerDataByID(policyAdapter.getBrmsController()).getController()));
- }
-
- // Adding Dependencies.
- if(policyAdapter.getBrmsDependency()!=null){
- BRMSDictionaryController brmsDicitonaryController = new BRMSDictionaryController();
- ArrayList<String> dependencies = new ArrayList<>();
- StringBuilder key = new StringBuilder();
- for(String dependencyName: policyAdapter.getBrmsDependency()){
- dependencies.add(brmsDicitonaryController.getDependencyDataByID(dependencyName).getDependency());
- key.append(dependencyName + ",");
- }
- advice.getAttributeAssignmentExpression().add(
- createResponseAttributes("dependencies:"+key.toString(), dependencies.toString()));
- }
-
- // Dynamic Field Config Attributes.
- Map<String, String> dynamicFieldConfigAttributes = policyAdapter.getDynamicFieldConfigAttributes();
- for (String keyField : dynamicFieldConfigAttributes.keySet()) {
- advice.getAttributeAssignmentExpression().add(createResponseAttributes("key:"+keyField, dynamicFieldConfigAttributes.get(keyField)));
- }
-
- //Risk Attributes
- AttributeAssignmentExpressionType assignment8 = new AttributeAssignmentExpressionType();
- assignment8.setAttributeId("RiskType");
- assignment8.setCategory(CATEGORY_RESOURCE);
- assignment8.setIssuer("");
-
- AttributeValueType configNameAttributeValue8 = new AttributeValueType();
- configNameAttributeValue8.setDataType(STRING_DATATYPE);
- configNameAttributeValue8.getContent().add(policyAdapter.getRiskType());
- assignment8.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue8));
-
- advice.getAttributeAssignmentExpression().add(assignment8);
-
- AttributeAssignmentExpressionType assignment9 = new AttributeAssignmentExpressionType();
- assignment9.setAttributeId("RiskLevel");
- assignment9.setCategory(CATEGORY_RESOURCE);
- assignment9.setIssuer("");
-
- AttributeValueType configNameAttributeValue9 = new AttributeValueType();
- configNameAttributeValue9.setDataType(STRING_DATATYPE);
- configNameAttributeValue9.getContent().add(policyAdapter.getRiskLevel());
- assignment9.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue9));
-
- advice.getAttributeAssignmentExpression().add(assignment9);
-
- AttributeAssignmentExpressionType assignment10 = new AttributeAssignmentExpressionType();
- assignment10.setAttributeId("guard");
- assignment10.setCategory(CATEGORY_RESOURCE);
- assignment10.setIssuer("");
-
- AttributeValueType configNameAttributeValue10 = new AttributeValueType();
- configNameAttributeValue10.setDataType(STRING_DATATYPE);
- configNameAttributeValue10.getContent().add(policyAdapter.getGuard());
- assignment10.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue10));
-
- advice.getAttributeAssignmentExpression().add(assignment10);
-
- AttributeAssignmentExpressionType assignment11 = new AttributeAssignmentExpressionType();
- assignment11.setAttributeId("TTLDate");
- assignment11.setCategory(CATEGORY_RESOURCE);
- assignment11.setIssuer("");
-
- AttributeValueType configNameAttributeValue11 = new AttributeValueType();
- configNameAttributeValue11.setDataType(STRING_DATATYPE);
- configNameAttributeValue11.getContent().add(policyAdapter.getTtlDate());
- assignment11.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue11));
-
- advice.getAttributeAssignmentExpression().add(assignment11);
-
- advices.getAdviceExpression().add(advice);
- return advices;
- }
-
- @Override
- public Object getCorrectPolicyDataObject() {
- return policyAdapter.getData();
- }
-
- private AttributeAssignmentExpressionType createResponseAttributes(String key, String value){
- AttributeAssignmentExpressionType assignment7 = new AttributeAssignmentExpressionType();
- assignment7.setAttributeId(key);
- assignment7.setCategory(CATEGORY_RESOURCE);
- assignment7.setIssuer("");
- AttributeValueType configNameAttributeValue7 = new AttributeValueType();
- configNameAttributeValue7.setDataType(STRING_DATATYPE);
- configNameAttributeValue7.getContent().add(value);
- assignment7.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue7));
- return assignment7;
- }
-}
diff --git a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateBrmsRawPolicy.java b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateBrmsRawPolicy.java
deleted file mode 100644
index a0f13ec02..000000000
--- a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateBrmsRawPolicy.java
+++ /dev/null
@@ -1,489 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ECOMP-PAP-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.openecomp.policy.pap.xacml.rest.components;
-
-
-import java.io.File;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.nio.charset.Charset;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.commons.io.FilenameUtils;
-import org.openecomp.policy.common.logging.eelf.MessageCodes;
-import org.openecomp.policy.common.logging.eelf.PolicyLogger;
-import org.openecomp.policy.pap.xacml.rest.controller.BRMSDictionaryController;
-import org.openecomp.policy.rest.adapter.PolicyRestAdapter;
-
-import com.att.research.xacml.std.IdentifierImpl;
-
-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;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeValueType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.EffectType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.MatchType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ObjectFactory;
-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;
-
-
-public class CreateBrmsRawPolicy extends Policy {
-
- public CreateBrmsRawPolicy() {
- super();
- }
-
- public CreateBrmsRawPolicy(PolicyRestAdapter policyAdapter) {
- this.policyAdapter = policyAdapter;
- this.policyAdapter.setConfigType(policyAdapter.getConfigType());
-
- }
-
- // Saving the Configurations file at server location for CreateBrmsRawPolicy policy.
- protected void saveConfigurations(String policyName, String jsonBody) {
- try {
- if (policyName.endsWith(".xml")) {
- policyName = policyName.substring(0,
- policyName.lastIndexOf(".xml"));
- }
- PrintWriter out = new PrintWriter(CONFIG_HOME + File.separator + policyName + ".txt");
- out.println(jsonBody);
- out.close();
-
- } catch (Exception e) {
- PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "CreateBrmsRawPolicy", "Exception saving configurations file");
- }
- }
-
- // Utility to read json data from the existing file to a string
- static String readFile(String path, Charset encoding) throws IOException {
-
- byte[] encoded = Files.readAllBytes(Paths.get(path));
- return new String(encoded, encoding);
-
- }
-
- // Here we are adding the extension for the configurations file based on the
- // config type selection for saving.
- private String getConfigFile(String filename) {
- filename = FilenameUtils.removeExtension(filename);
- if (filename.endsWith(".txt")) {
- filename = filename.substring(0, filename.length() - 3);
- }
-
- filename = filename + ".txt";
- return filename;
- }
-
- // Validations for Config form
- public boolean validateConfigForm() {
-
- // Validating mandatory Fields.
- isValidForm = true;
- return isValidForm;
-
- }
-
- @Override
- public Map<String, String> savePolicies() throws Exception {
-
- Map<String, String> successMap = new HashMap<>();
- if(isPolicyExists()){
- successMap.put("EXISTS", "This Policy already exist on the PAP");
- return successMap;
- }
-
- if (!isPreparedToSave()) {
- prepareToSave();
- }
- // Until here we prepared the data and here calling the method to create
- // xml.
- Path newPolicyPath = null;
- newPolicyPath = Paths.get(policyAdapter.getNewFileName());
-
- successMap = createPolicy(newPolicyPath, getCorrectPolicyDataObject());
- if (successMap == null) {
- successMap = new HashMap<>();
- PolicyLogger.error("Failed to Update the Database Dictionary Tables.");
- successMap.put("error", "DB UPDATE");
- }
-
- return successMap;
- }
-
- // This is the method for preparing the policy for saving. We have broken it
- // out
- // separately because the fully configured policy is used for multiple
- // things
- @Override
- public boolean prepareToSave() throws Exception {
-
- if (isPreparedToSave()) {
- // we have already done this
- return true;
- }
-
- int version = 0;
- String policyID = policyAdapter.getPolicyID();
- version = policyAdapter.getHighestVersion();
-
- // Create the Instance for pojo, PolicyType object is used in
- // marshalling.
- if (policyAdapter.getPolicyType().equals("Config")) {
- PolicyType policyConfig = new PolicyType();
-
- policyConfig.setVersion(Integer.toString(version));
- policyConfig.setPolicyId(policyID);
- policyConfig.setTarget(new TargetType());
- policyAdapter.setData(policyConfig);
- }
-
- policyName = policyAdapter.getNewFileName();
-
- if (policyAdapter.getData() != null) {
- //String jsonBody = policyAdapter.getJsonBody();
- String configBody=policyAdapter.getConfigBodyData();
- saveConfigurations(policyName, configBody);
-
- // Make sure the filename ends with an extension
- if (policyName.endsWith(".xml") == false) {
- policyName = policyName + ".xml";
- }
-
- PolicyType configPolicy = (PolicyType) policyAdapter.getData();
-
- configPolicy.setDescription(policyAdapter.getPolicyDescription());
-
- configPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId());
-
- AllOfType allOfOne = new AllOfType();
- String fileName = policyAdapter.getNewFileName();
- String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length());
- if ((name == null) || (name.equals(""))) {
- name = fileName.substring(fileName.lastIndexOf("/") + 1,
- fileName.length());
- }
- allOfOne.getMatch().add(createMatch("PolicyName", name));
-
-
- AllOfType allOf = new AllOfType();
-
- // Match for ECOMPName
- allOf.getMatch().add(createMatch("ECOMPName", policyAdapter.getEcompName()));
- allOf.getMatch().add(createMatch("ConfigName", policyAdapter.getConfigName()));
- // Match for riskType
- allOf.getMatch().add(createDynamicMatch("RiskType", policyAdapter.getRiskType()));
- // Match for riskLevel
- allOf.getMatch().add(createDynamicMatch("RiskLevel", String.valueOf(policyAdapter.getRiskLevel())));
- // Match for riskguard
- allOf.getMatch().add(createDynamicMatch("guard", policyAdapter.getGuard()));
- // Match for ttlDate
- allOf.getMatch().add(createDynamicMatch("TTLDate", policyAdapter.getTtlDate()));
- AnyOfType anyOf = new AnyOfType();
- anyOf.getAllOf().add(allOfOne);
- anyOf.getAllOf().add(allOf);
-
- TargetType target = new TargetType();
- ((TargetType) target).getAnyOf().add(anyOf);
-
- // Adding the target to the policy element
- configPolicy.setTarget((TargetType) target);
-
- RuleType rule = new RuleType();
- rule.setRuleId(policyAdapter.getRuleID());
-
- rule.setEffect(EffectType.PERMIT);
-
- // Create Target in Rule
- AllOfType allOfInRule = new AllOfType();
-
- // Creating match for ACCESS in rule target
- MatchType accessMatch = new MatchType();
- AttributeValueType accessAttributeValue = new AttributeValueType();
- accessAttributeValue.setDataType(STRING_DATATYPE);
- accessAttributeValue.getContent().add("ACCESS");
- accessMatch.setAttributeValue(accessAttributeValue);
- AttributeDesignatorType accessAttributeDesignator = new AttributeDesignatorType();
- URI accessURI = null;
- try {
- accessURI = new URI(ACTION_ID);
- } catch (URISyntaxException e) {
- PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "CreateBrmsRawPolicy", "Exception creating ACCESS URI");
- }
- accessAttributeDesignator.setCategory(CATEGORY_ACTION);
- accessAttributeDesignator.setDataType(STRING_DATATYPE);
- accessAttributeDesignator.setAttributeId(new IdentifierImpl(
- accessURI).stringValue());
- accessMatch.setAttributeDesignator(accessAttributeDesignator);
- accessMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE);
-
- // Creating Config Match in rule Target
- MatchType configMatch = new MatchType();
- AttributeValueType configAttributeValue = new AttributeValueType();
- configAttributeValue.setDataType(STRING_DATATYPE);
-
- configAttributeValue.getContent().add("Config");
-
- configMatch.setAttributeValue(configAttributeValue);
- AttributeDesignatorType configAttributeDesignator = new AttributeDesignatorType();
- URI configURI = null;
- try {
- configURI = new URI(RESOURCE_ID);
- } catch (URISyntaxException e) {
- PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "CreateBrmsRawPolicy", "Exception creating Config URI");
- }
-
- configAttributeDesignator.setCategory(CATEGORY_RESOURCE);
- configAttributeDesignator.setDataType(STRING_DATATYPE);
- configAttributeDesignator.setAttributeId(new IdentifierImpl(
- configURI).stringValue());
- configMatch.setAttributeDesignator(configAttributeDesignator);
- configMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE);
-
- allOfInRule.getMatch().add(accessMatch);
- allOfInRule.getMatch().add(configMatch);
-
- AnyOfType anyOfInRule = new AnyOfType();
- anyOfInRule.getAllOf().add(allOfInRule);
-
- TargetType targetInRule = new TargetType();
- targetInRule.getAnyOf().add(anyOfInRule);
-
- rule.setTarget(targetInRule);
- rule.setAdviceExpressions(getAdviceExpressions(version, policyName));
-
- configPolicy
- .getCombinerParametersOrRuleCombinerParametersOrVariableDefinition()
- .add(rule);
- policyAdapter.setPolicyData(configPolicy);
-
- } else {
- PolicyLogger.error("Unsupported data object."
- + policyAdapter.getData().getClass().getCanonicalName());
- }
- setPreparedToSave(true);
- return true;
- }
-
- // Data required for Advice part is setting here.
- private AdviceExpressionsType getAdviceExpressions(int version,
- String fileName) {
-
- // Policy Config ID Assignment
- AdviceExpressionsType advices = new AdviceExpressionsType();
- AdviceExpressionType advice = new AdviceExpressionType();
- advice.setAdviceId("BRMSRAWID");
- advice.setAppliesTo(EffectType.PERMIT);
- // For Configuration
- AttributeAssignmentExpressionType assignment1 = new AttributeAssignmentExpressionType();
- assignment1.setAttributeId("type");
- assignment1.setCategory(CATEGORY_RESOURCE);
- assignment1.setIssuer("");
- AttributeValueType configNameAttributeValue = new AttributeValueType();
- configNameAttributeValue.setDataType(STRING_DATATYPE);
- configNameAttributeValue.getContent().add("Configuration");
- assignment1.setExpression(new ObjectFactory()
- .createAttributeValue(configNameAttributeValue));
- advice.getAttributeAssignmentExpression().add(assignment1);
-
- // For Config file Url if configurations are provided.
- // URL ID Assignment
- AttributeAssignmentExpressionType assignment2 = new AttributeAssignmentExpressionType();
- assignment2.setAttributeId("URLID");
- assignment2.setCategory(CATEGORY_RESOURCE);
- assignment2.setIssuer("");
- AttributeValueType AttributeValue = new AttributeValueType();
- AttributeValue.setDataType(URI_DATATYPE);
-
- String content = CONFIG_URL + "/Config/" + getConfigFile(policyName);
-
- AttributeValue.getContent().add(content);
- assignment2.setExpression(new ObjectFactory()
- .createAttributeValue(AttributeValue));
- advice.getAttributeAssignmentExpression().add(assignment2);
-
- // Policy Name Assignment
- AttributeAssignmentExpressionType assignment3 = new AttributeAssignmentExpressionType();
- assignment3.setAttributeId("PolicyName");
- assignment3.setCategory(CATEGORY_RESOURCE);
- assignment3.setIssuer("");
- AttributeValueType attributeValue3 = new AttributeValueType();
- attributeValue3.setDataType(STRING_DATATYPE);
- fileName = FilenameUtils.removeExtension(fileName);
- fileName = fileName + ".xml";
- System.out.println(fileName);
- String name = fileName.substring(fileName.lastIndexOf("\\") + 1,
- fileName.length());
- if ((name == null) || (name.equals(""))) {
- name = fileName.substring(fileName.lastIndexOf("/") + 1,
- fileName.length());
- }
- System.out.println(name);
- attributeValue3.getContent().add(name);
- assignment3.setExpression(new ObjectFactory()
- .createAttributeValue(attributeValue3));
- advice.getAttributeAssignmentExpression().add(assignment3);
-
- // Version Number Assignment
- AttributeAssignmentExpressionType assignment4 = new AttributeAssignmentExpressionType();
- assignment4.setAttributeId("VersionNumber");
- assignment4.setCategory(CATEGORY_RESOURCE);
- assignment4.setIssuer("");
- AttributeValueType configNameAttributeValue4 = new AttributeValueType();
- configNameAttributeValue4.setDataType(STRING_DATATYPE);
- configNameAttributeValue4.getContent().add(Integer.toString(version));
- assignment4.setExpression(new ObjectFactory()
- .createAttributeValue(configNameAttributeValue4));
- advice.getAttributeAssignmentExpression().add(assignment4);
-
- // Ecomp Name Assignment
- AttributeAssignmentExpressionType assignment5 = new AttributeAssignmentExpressionType();
- assignment5.setAttributeId("matching:" + ECOMPID);
- assignment5.setCategory(CATEGORY_RESOURCE);
- assignment5.setIssuer("");
- AttributeValueType configNameAttributeValue5 = new AttributeValueType();
- configNameAttributeValue5.setDataType(STRING_DATATYPE);
- configNameAttributeValue5.getContent().add(policyAdapter.getEcompName());
- assignment5.setExpression(new ObjectFactory()
- .createAttributeValue(configNameAttributeValue5));
- advice.getAttributeAssignmentExpression().add(assignment5);
-
-
- //Config Name Assignment
- AttributeAssignmentExpressionType assignment6 = new AttributeAssignmentExpressionType();
- assignment6.setAttributeId("matching:" + CONFIGID);
- assignment6.setCategory(CATEGORY_RESOURCE);
- assignment6.setIssuer("");
- AttributeValueType configNameAttributeValue6 = new AttributeValueType();
- configNameAttributeValue6.setDataType(STRING_DATATYPE);
- configNameAttributeValue6.getContent().add(policyAdapter.getConfigName());
- assignment6.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue6));
- advice.getAttributeAssignmentExpression().add(assignment6);
-
- // Adding Controller Information.
- if(policyAdapter.getBrmsController()!=null){
- BRMSDictionaryController brmsDicitonaryController = new BRMSDictionaryController();
- advice.getAttributeAssignmentExpression().add(
- createResponseAttributes("controller:"+ policyAdapter.getBrmsController(),
- brmsDicitonaryController.getControllerDataByID(policyAdapter.getBrmsController()).getController()));
- }
-
- // Adding Dependencies.
- if(policyAdapter.getBrmsDependency()!=null){
- BRMSDictionaryController brmsDicitonaryController = new BRMSDictionaryController();
- ArrayList<String> dependencies = new ArrayList<>();
- StringBuilder key = new StringBuilder();
- for(String dependencyName: policyAdapter.getBrmsDependency()){
- dependencies.add(brmsDicitonaryController.getDependencyDataByID(dependencyName).getDependency());
- key.append(dependencyName + ",");
- }
- advice.getAttributeAssignmentExpression().add(
- createResponseAttributes("dependencies:"+key.toString(), dependencies.toString()));
- }
-
- // Dynamic Field Config Attributes.
- Map<String, String> dynamicFieldConfigAttributes = policyAdapter.getDynamicFieldConfigAttributes();
- for (String keyField : dynamicFieldConfigAttributes.keySet()) {
- advice.getAttributeAssignmentExpression().add(createResponseAttributes("key:"+keyField, dynamicFieldConfigAttributes.get(keyField)));
- }
-
- //Risk Attributes
- AttributeAssignmentExpressionType assignment8 = new AttributeAssignmentExpressionType();
- assignment8.setAttributeId("RiskType");
- assignment8.setCategory(CATEGORY_RESOURCE);
- assignment8.setIssuer("");
-
- AttributeValueType configNameAttributeValue8 = new AttributeValueType();
- configNameAttributeValue8.setDataType(STRING_DATATYPE);
- configNameAttributeValue8.getContent().add(policyAdapter.getRiskType());
- assignment8.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue8));
-
- advice.getAttributeAssignmentExpression().add(assignment8);
-
- AttributeAssignmentExpressionType assignment9 = new AttributeAssignmentExpressionType();
- assignment9.setAttributeId("RiskLevel");
- assignment9.setCategory(CATEGORY_RESOURCE);
- assignment9.setIssuer("");
-
- AttributeValueType configNameAttributeValue9 = new AttributeValueType();
- configNameAttributeValue9.setDataType(STRING_DATATYPE);
- configNameAttributeValue9.getContent().add(policyAdapter.getRiskLevel());
- assignment9.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue9));
-
- advice.getAttributeAssignmentExpression().add(assignment9);
-
- AttributeAssignmentExpressionType assignment10 = new AttributeAssignmentExpressionType();
- assignment10.setAttributeId("guard");
- assignment10.setCategory(CATEGORY_RESOURCE);
- assignment10.setIssuer("");
-
- AttributeValueType configNameAttributeValue10 = new AttributeValueType();
- configNameAttributeValue10.setDataType(STRING_DATATYPE);
- configNameAttributeValue10.getContent().add(policyAdapter.getGuard());
- assignment10.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue10));
-
- advice.getAttributeAssignmentExpression().add(assignment10);
-
- AttributeAssignmentExpressionType assignment11 = new AttributeAssignmentExpressionType();
- assignment11.setAttributeId("TTLDate");
- assignment11.setCategory(CATEGORY_RESOURCE);
- assignment11.setIssuer("");
-
- AttributeValueType configNameAttributeValue11 = new AttributeValueType();
- configNameAttributeValue11.setDataType(STRING_DATATYPE);
- configNameAttributeValue11.getContent().add(policyAdapter.getTtlDate());
- assignment11.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue11));
-
- advice.getAttributeAssignmentExpression().add(assignment11);
-
- advices.getAdviceExpression().add(advice);
- return advices;
- }
-
- @Override
- public Object getCorrectPolicyDataObject() {
- return policyAdapter.getData();
- }
-
- private AttributeAssignmentExpressionType createResponseAttributes(String key, String value){
- AttributeAssignmentExpressionType assignment7 = new AttributeAssignmentExpressionType();
- assignment7.setAttributeId(key);
- assignment7.setCategory(CATEGORY_RESOURCE);
- assignment7.setIssuer("");
- AttributeValueType configNameAttributeValue7 = new AttributeValueType();
- configNameAttributeValue7.setDataType(STRING_DATATYPE);
- configNameAttributeValue7.getContent().add(value);
- assignment7.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue7));
- return assignment7;
- }
-}
diff --git a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateClosedLoopPerformanceMetrics.java b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateClosedLoopPerformanceMetrics.java
deleted file mode 100644
index a16ab9a79..000000000
--- a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateClosedLoopPerformanceMetrics.java
+++ /dev/null
@@ -1,412 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ECOMP-PAP-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.openecomp.policy.pap.xacml.rest.components;
-
-
-import java.io.File;
-import java.io.PrintWriter;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.commons.io.FilenameUtils;
-import org.openecomp.policy.common.logging.eelf.MessageCodes;
-import org.openecomp.policy.common.logging.eelf.PolicyLogger;
-import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
-import org.openecomp.policy.common.logging.flexlogger.Logger;
-import org.openecomp.policy.rest.adapter.PolicyRestAdapter;
-
-import com.att.research.xacml.std.IdentifierImpl;
-
-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;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeValueType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.EffectType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.MatchType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ObjectFactory;
-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;
-
-public class CreateClosedLoopPerformanceMetrics extends Policy {
-
- private static final Logger LOGGER = FlexLogger.getLogger(CreateClosedLoopPerformanceMetrics.class);
-
- public CreateClosedLoopPerformanceMetrics() {
- super();
- }
-
- public CreateClosedLoopPerformanceMetrics(PolicyRestAdapter policyAdapter){
- this.policyAdapter = policyAdapter;
- }
-
- //save configuration of the policy based on the policyname
- private void saveConfigurations(String policyName, String jsonBody) {
- try {
- String body = null;
- try {
- body = jsonBody;
- } catch (Exception e) {
- LOGGER.error("Exception Occured"+e);
- }
- if(policyName.endsWith(".xml")){
- policyName = policyName.substring(0, policyName.lastIndexOf(".xml"));
- }
- PrintWriter out = new PrintWriter(CONFIG_HOME + File.separator + "."+ policyName +".json");
- out.println(body);
- policyAdapter.setJsonBody(body);
- policyAdapter.setConfigBodyData(body);
- out.close();
-
- } catch (Exception e) {
- LOGGER.error("Exception Occured"+e);
- }
- }
-
- //getting the policy name and setting to configuration on adding .json
- private String getConfigFile(String filename) {
- filename = FilenameUtils.removeExtension(filename);
- if (filename.endsWith(".xml")) {
- filename = filename.substring(0, filename.length() - 4);
- }
- filename = filename +".json";
- return filename;
- }
-
- @Override
- public Map<String, String> savePolicies() throws Exception {
-
- Map<String, String> successMap = new HashMap<>();
- if(isPolicyExists()){
- successMap.put("EXISTS", "This Policy already exist on the PAP");
- return successMap;
- }
-
- if(!isPreparedToSave()){
- //Prep and configure the policy for saving
- prepareToSave();
- }
-
- // Until here we prepared the data and here calling the method to create xml.
- Path newPolicyPath = null;
- newPolicyPath = Paths.get(policyAdapter.getNewFileName());
-
- successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject());
-
- return successMap;
- }
-
- //This is the method for preparing the policy for saving. We have broken it out
- //separately because the fully configured policy is used for multiple things
- @Override
- public boolean prepareToSave() throws Exception{
-
- if(isPreparedToSave()){
- //we have already done this
- return true;
- }
-
- int version = 0;
- String policyID = policyAdapter.getPolicyID();
- version = policyAdapter.getHighestVersion();
-
- // Create the Instance for pojo, PolicyType object is used in marshalling.
- if (policyAdapter.getPolicyType().equals("Config")) {
- PolicyType policyConfig = new PolicyType();
-
- policyConfig.setVersion(Integer.toString(version));
- policyConfig.setPolicyId(policyID);
- policyConfig.setTarget(new TargetType());
- policyAdapter.setData(policyConfig);
- }
- policyName = policyAdapter.getNewFileName();
- if (policyAdapter.getData() != null) {
- // Save the Configurations file with the policy name with extention based on selection.
- String jsonBody = policyAdapter.getJsonBody();
- saveConfigurations(policyName, jsonBody);
-
- // Make sure the filename ends with an extension
- if (policyName.endsWith(".xml") == false) {
- policyName = policyName + ".xml";
- }
-
-
- PolicyType configPolicy = (PolicyType) policyAdapter.getData();
-
- configPolicy.setDescription(policyAdapter.getPolicyDescription());
-
- configPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId());
-
- AllOfType allOfOne = new AllOfType();
- String fileName = policyAdapter.getNewFileName();
- String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length());
- if ((name == null) || (name.equals(""))) {
- name = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length());
- }
- allOfOne.getMatch().add(createMatch("PolicyName", name));
- AllOfType allOf = new AllOfType();
-
- // Adding the matches to AllOfType element Match for Ecomp
- allOf.getMatch().add(createMatch("ECOMPName", policyAdapter.getEcompName()));
- // Match for riskType
- allOf.getMatch().add(
- createDynamicMatch("RiskType", policyAdapter.getRiskType()));
- // Match for riskLevel
- allOf.getMatch().add(
- createDynamicMatch("RiskLevel", String.valueOf(policyAdapter.getRiskLevel())));
- // Match for riskguard
- allOf.getMatch().add(
- createDynamicMatch("guard", policyAdapter.getGuard()));
- // Match for ttlDate
- allOf.getMatch().add(
- createDynamicMatch("TTLDate", policyAdapter.getTtlDate()));
- // Match for ServiceType
- allOf.getMatch().add(createMatch("ServiceType", policyAdapter.getServiceType()));
-
- AnyOfType anyOf = new AnyOfType();
- anyOf.getAllOf().add(allOfOne);
- anyOf.getAllOf().add(allOf);
-
- TargetType target = new TargetType();
- ((TargetType) target).getAnyOf().add(anyOf);
-
- // Adding the target to the policy element
- configPolicy.setTarget((TargetType) target);
-
- RuleType rule = new RuleType();
- rule.setRuleId(policyAdapter.getRuleID());
-
- rule.setEffect(EffectType.PERMIT);
-
- // Create Target in Rule
- AllOfType allOfInRule = new AllOfType();
-
- // Creating match for ACCESS in rule target
- MatchType accessMatch = new MatchType();
- AttributeValueType accessAttributeValue = new AttributeValueType();
- accessAttributeValue.setDataType(STRING_DATATYPE);
- accessAttributeValue.getContent().add("ACCESS");
- accessMatch.setAttributeValue(accessAttributeValue);
- AttributeDesignatorType accessAttributeDesignator = new AttributeDesignatorType();
- URI accessURI = null;
- try {
- accessURI = new URI(ACTION_ID);
- } catch (URISyntaxException e) {
- PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "CreateClosedLoopPerformanceMetrics", "Exception creating ACCESS URI");
- }
- accessAttributeDesignator.setCategory(CATEGORY_ACTION);
- accessAttributeDesignator.setDataType(STRING_DATATYPE);
- accessAttributeDesignator.setAttributeId(new IdentifierImpl(accessURI).stringValue());
- accessMatch.setAttributeDesignator(accessAttributeDesignator);
- accessMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE);
-
- // Creating Config Match in rule Target
- MatchType configMatch = new MatchType();
- AttributeValueType configAttributeValue = new AttributeValueType();
- configAttributeValue.setDataType(STRING_DATATYPE);
- configAttributeValue.getContent().add("Config");
- configMatch.setAttributeValue(configAttributeValue);
- AttributeDesignatorType configAttributeDesignator = new AttributeDesignatorType();
- URI configURI = null;
- try {
- configURI = new URI(RESOURCE_ID);
- } catch (URISyntaxException e) {
- PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "CreateClosedLoopPerformanceMetrics", "Exception creating Config URI");
- }
- configAttributeDesignator.setCategory(CATEGORY_RESOURCE);
- configAttributeDesignator.setDataType(STRING_DATATYPE);
- configAttributeDesignator.setAttributeId(new IdentifierImpl(configURI).stringValue());
- configMatch.setAttributeDesignator(configAttributeDesignator);
- configMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE);
-
- allOfInRule.getMatch().add(accessMatch);
- allOfInRule.getMatch().add(configMatch);
-
- AnyOfType anyOfInRule = new AnyOfType();
- anyOfInRule.getAllOf().add(allOfInRule);
-
- TargetType targetInRule = new TargetType();
- targetInRule.getAnyOf().add(anyOfInRule);
-
- rule.setTarget(targetInRule);
- rule.setAdviceExpressions(getAdviceExpressions(version, policyName));
-
- configPolicy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().add(rule);
- policyAdapter.setPolicyData(configPolicy);
-
- } else {
- PolicyLogger.error("Unsupported data object." + policyAdapter.getData().getClass().getCanonicalName());
- }
- setPreparedToSave(true);
- return true;
- }
-
- // Data required for Advice part is setting here.
- @SuppressWarnings("static-access")
- private AdviceExpressionsType getAdviceExpressions(int version, String fileName) {
- AdviceExpressionsType advices = new AdviceExpressionsType();
- AdviceExpressionType advice = new AdviceExpressionType();
- advice.setAdviceId("PMID");
- advice.setAppliesTo(EffectType.PERMIT);
- // For Configuration
- AttributeAssignmentExpressionType assignment1 = new AttributeAssignmentExpressionType();
- assignment1.setAttributeId("type");
- assignment1.setCategory(CATEGORY_RESOURCE);
- assignment1.setIssuer("");
-
- AttributeValueType configNameAttributeValue = new AttributeValueType();
- configNameAttributeValue.setDataType(STRING_DATATYPE);
- configNameAttributeValue.getContent().add("Configuration");
- assignment1.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue));
-
- advice.getAttributeAssignmentExpression().add(assignment1);
- // For Config file Url if configurations are provided.
- AttributeAssignmentExpressionType assignment2 = new AttributeAssignmentExpressionType();
- assignment2.setAttributeId("URLID");
- assignment2.setCategory(CATEGORY_RESOURCE);
- assignment2.setIssuer("");
-
- AttributeValueType AttributeValue = new AttributeValueType();
- AttributeValue.setDataType(URI_DATATYPE);
- String content = CONFIG_URL +"/Config/"+ getConfigFile(policyName);
- AttributeValue.getContent().add(content);
- assignment2.setExpression(new ObjectFactory().createAttributeValue(AttributeValue));
-
- advice.getAttributeAssignmentExpression().add(assignment2);
- AttributeAssignmentExpressionType assignment3 = new AttributeAssignmentExpressionType();
- assignment3.setAttributeId("PolicyName");
- assignment3.setCategory(CATEGORY_RESOURCE);
- assignment3.setIssuer("");
-
- AttributeValueType attributeValue3 = new AttributeValueType();
- attributeValue3.setDataType(STRING_DATATYPE);
- fileName = FilenameUtils.removeExtension(fileName);
- fileName = fileName + ".xml";
- String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length());
- if ((name == null) || (name.equals(""))) {
- name = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length());
- }
- attributeValue3.getContent().add(name);
- assignment3.setExpression(new ObjectFactory().createAttributeValue(attributeValue3));
- advice.getAttributeAssignmentExpression().add(assignment3);
-
- AttributeAssignmentExpressionType assignment4 = new AttributeAssignmentExpressionType();
- assignment4.setAttributeId("VersionNumber");
- assignment4.setCategory(CATEGORY_RESOURCE);
- assignment4.setIssuer("");
-
- AttributeValueType configNameAttributeValue4 = new AttributeValueType();
- configNameAttributeValue4.setDataType(STRING_DATATYPE);
- configNameAttributeValue4.getContent().add(Integer.toString(version));
- assignment4.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue4));
-
- advice.getAttributeAssignmentExpression().add(assignment4);
-
- AttributeAssignmentExpressionType assignment5 = new AttributeAssignmentExpressionType();
- assignment5.setAttributeId("matching:" + this.ECOMPID);
- assignment5.setCategory(CATEGORY_RESOURCE);
- assignment5.setIssuer("");
-
- AttributeValueType configNameAttributeValue5 = new AttributeValueType();
- configNameAttributeValue5.setDataType(STRING_DATATYPE);
- configNameAttributeValue5.getContent().add(policyAdapter.getEcompName());
- assignment5.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue5));
-
- advice.getAttributeAssignmentExpression().add(assignment5);
-
- AttributeAssignmentExpressionType assignment6 = new AttributeAssignmentExpressionType();
- assignment6.setAttributeId("matching:" + this.CLOSEDLOOPID);
- assignment6.setCategory(CATEGORY_RESOURCE);
- assignment6.setIssuer("");
-
- AttributeValueType configNameAttributeValue6 = new AttributeValueType();
- configNameAttributeValue6.setDataType(STRING_DATATYPE);
- configNameAttributeValue6.getContent().add(policyAdapter.getServiceType());
- assignment6.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue6));
-
- advice.getAttributeAssignmentExpression().add(assignment6);
-
- //Risk Attributes
- AttributeAssignmentExpressionType assignment7 = new AttributeAssignmentExpressionType();
- assignment7.setAttributeId("RiskType");
- assignment7.setCategory(CATEGORY_RESOURCE);
- assignment7.setIssuer("");
-
- AttributeValueType configNameAttributeValue7 = new AttributeValueType();
- configNameAttributeValue7.setDataType(STRING_DATATYPE);
- configNameAttributeValue7.getContent().add(policyAdapter.getRiskType());
- assignment7.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue7));
-
- advice.getAttributeAssignmentExpression().add(assignment7);
-
- AttributeAssignmentExpressionType assignment8 = new AttributeAssignmentExpressionType();
- assignment8.setAttributeId("RiskLevel");
- assignment8.setCategory(CATEGORY_RESOURCE);
- assignment8.setIssuer("");
-
- AttributeValueType configNameAttributeValue8 = new AttributeValueType();
- configNameAttributeValue8.setDataType(STRING_DATATYPE);
- configNameAttributeValue8.getContent().add(policyAdapter.getRiskLevel());
- assignment8.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue8));
-
- advice.getAttributeAssignmentExpression().add(assignment8);
-
- AttributeAssignmentExpressionType assignment9 = new AttributeAssignmentExpressionType();
- assignment9.setAttributeId("guard");
- assignment9.setCategory(CATEGORY_RESOURCE);
- assignment9.setIssuer("");
-
- AttributeValueType configNameAttributeValue9 = new AttributeValueType();
- configNameAttributeValue9.setDataType(STRING_DATATYPE);
- configNameAttributeValue9.getContent().add(policyAdapter.getGuard());
- assignment9.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue9));
-
- advice.getAttributeAssignmentExpression().add(assignment9);
-
- AttributeAssignmentExpressionType assignment10 = new AttributeAssignmentExpressionType();
- assignment10.setAttributeId("TTLDate");
- assignment10.setCategory(CATEGORY_RESOURCE);
- assignment10.setIssuer("");
-
- AttributeValueType configNameAttributeValue10 = new AttributeValueType();
- configNameAttributeValue10.setDataType(STRING_DATATYPE);
- configNameAttributeValue10.getContent().add(policyAdapter.getTtlDate());
- assignment10.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue10));
-
- advice.getAttributeAssignmentExpression().add(assignment10);
-
- advices.getAdviceExpression().add(advice);
- return advices;
- }
-
- @Override
- public Object getCorrectPolicyDataObject() {
- return policyAdapter.getPolicyData();
- }
-
-}
diff --git a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateNewMicroServiceModel.java b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateNewMicroServiceModel.java
deleted file mode 100644
index e801a459d..000000000
--- a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateNewMicroServiceModel.java
+++ /dev/null
@@ -1,248 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ECOMP-PAP-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.openecomp.policy.pap.xacml.rest.components;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Enumeration;
-import java.util.HashMap;
-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.openecomp.policy.common.logging.eelf.MessageCodes;
-import org.openecomp.policy.common.logging.eelf.PolicyLogger;
-import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
-import org.openecomp.policy.common.logging.flexlogger.Logger;
-import org.openecomp.policy.pap.xacml.rest.XACMLPapServlet;
-import org.openecomp.policy.pap.xacml.rest.daoimpl.CommonClassDaoImpl;
-import org.openecomp.policy.rest.jpa.MicroServiceModels;
-import org.openecomp.policy.rest.jpa.UserInfo;
-import org.openecomp.policy.rest.util.MSAttributeObject;
-import org.openecomp.policy.rest.util.MSModelUtils;
-import org.openecomp.policy.rest.util.MSModelUtils.MODEL_TYPE;
-
-public class CreateNewMicroServiceModel {
- private static final Logger logger = FlexLogger.getLogger(CreateNewMicroServiceModel.class);
- private MicroServiceModels newModel = null;
- private HashMap<String,MSAttributeObject > classMap = new HashMap<>();
-
-
- MSModelUtils utils = new MSModelUtils(XACMLPapServlet.getMsEcompName(), XACMLPapServlet.getMsPolicyName());
-
- public CreateNewMicroServiceModel(String fileName, String serviceName, String string, String version) {
- super();
- }
-
- public CreateNewMicroServiceModel(String importFile, String modelName, String description, String version, String randomID) {
-
- this.newModel = new MicroServiceModels();
- this.newModel.setVersion(version);
- this.newModel.setModelName(modelName);
- UserInfo userInfo = new UserInfo();
- userInfo.setUserLoginId("API");
- this.newModel.setUserCreatedBy(userInfo);
- String cleanUpFile = null;
-
- HashMap<String, MSAttributeObject> tempMap = new HashMap<>();
- //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
- for (File file : fileList){
- if (file.isFile()){
- tempMap = utils.processEpackage(file.getAbsolutePath(), MODEL_TYPE.XMI);
- classMap.putAll(tempMap);
- }
- }
- cleanUpFile = "ExtractDir" + File.separator + randomID + ".zip";
- try {
- FileUtils.deleteDirectory(new File("ExtractDir" + File.separator + randomID));
- FileUtils.deleteDirectory(new File(randomID));
- File deleteFile = new File(cleanUpFile);
- FileUtils.forceDelete(deleteFile);
- } catch (IOException e) {
- logger.error("Failed to unzip model file " + randomID);
- }
- }else {
- tempMap = utils.processEpackage("ExtractDir" + File.separator + randomID+".xmi", MODEL_TYPE.XMI);
- classMap.putAll(tempMap);
- cleanUpFile = "ExtractDir" + File.separator + randomID+".xmi";
- File deleteFile = new File(cleanUpFile);
- deleteFile.delete();
- }
- }
-
- private List<File> listModelFiles(String directoryName) {
- File directory = new File(directoryName);
- List<File> resultList = new ArrayList<>();
- File[] fList = directory.listFiles();
- for (File file : fList) {
- if (file.isFile()) {
- resultList.add(file);
- } else if (file.isDirectory()) {
- resultList.addAll(listModelFiles(file.getAbsolutePath()));
- }
- }
- return resultList;
- }
-
- @SuppressWarnings("rawtypes")
- private void extractFolder(String zipFile) {
- int BUFFER = 2048;
- File file = new File(zipFile);
-
- ZipFile zip = null;
- try {
- zip = new ZipFile("ExtractDir" + File.separator +file);
- String newPath = zipFile.substring(0, zipFile.length() - 4);
- 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("ExtractDir" + File.separator + newPath + 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];
-
- 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();
- dest.close();
- is.close();
- }
-
- if (currentEntry.endsWith(".zip")){
- extractFolder(destFile.getAbsolutePath());
- }
- }
- } catch (IOException e) {
- logger.error("Failed to unzip model file " + zipFile + e);
- }finally{
- if(zip != null){
- try {
- zip.close();
- } catch (Exception e) {
- logger.error("Exception Occured while closing the zip file"+e);
- }
- }
- }
- }
-
- public Map<String, String> addValuesToNewModel() {
-
- Map<String, String> successMap = new HashMap<>();
- MSAttributeObject mainClass = null;
- ArrayList<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");
- successMap.put("error", "MISSING");
- return successMap;
- }
- mainClass = classMap.get(this.newModel.getModelName());
- String dependTemp = StringUtils.replaceEach(mainClass.getDependency(), new String[]{"[", "]", " "}, new String[]{"", "", ""});
- this.newModel.setDependency(dependTemp);
- if (!this.newModel.getDependency().equals("")){
- dependency = new ArrayList<String>(Arrays.asList(dependTemp.split(",")));
- dependency = utils.getFullDependencyList(dependency, classMap);
- if (!dependency.isEmpty()){
- for (String element : dependency){
- MSAttributeObject temp = new MSAttributeObject();
- if (classMap.containsKey(element)){
- temp = classMap.get(element);
- mainClass.addAllRefAttribute(temp.getRefAttribute());
- mainClass.addAllAttribute(temp.getAttribute());
- }
- }
- }
- }
- subAttribute = utils.createSubAttributes(dependency, classMap, this.newModel.getModelName());
-
- this.newModel.setSub_attributes(subAttribute);
- this.newModel.setAttributes(mainClass.getAttribute().toString().replace("{", "").replace("}", ""));
- this.newModel.setRef_attributes(mainClass.getRefAttribute().toString().replace("{", "").replace("}", ""));
- this.newModel.setEnumValues(mainClass.getEnumType().toString().replace("{", "").replace("}", ""));
- this.newModel.setAnnotation(mainClass.getMatchingSet().toString().replace("{", "").replace("}", ""));
- successMap.put("success", "success");
- return successMap;
-
- }
-
- 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.isEmpty()){
- MicroServiceModels model = new MicroServiceModels();
- model.setModelName(modelName);
- model.setVersion(version);
- model.setAttributes(this.newModel.getAttributes());
- model.setAnnotation(this.newModel.getAnnotation());
- model.setDependency(this.newModel.getDependency());
- model.setDescription(this.newModel.getDescription());
- model.setEnumValues(this.newModel.getEnumValues());
- model.setRef_attributes(this.newModel.getRef_attributes());
- model.setSub_attributes(this.newModel.getSub_attributes());
- UserInfo userInfo = new UserInfo();
- userInfo.setUserLoginId(imported_by);
- userInfo.setUserName(imported_by);
- model.setUserCreatedBy(userInfo);
- dbConnection.save(model);
- successMap.put("success", "success");
- }else{
- successMap.put("DBError", "EXISTS");
- logger.error("Import new service failed. Service already exists");
- }
- return successMap;
- }
-}
diff --git a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/DecisionPolicy.java b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/DecisionPolicy.java
deleted file mode 100644
index 5a566c9bd..000000000
--- a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/DecisionPolicy.java
+++ /dev/null
@@ -1,793 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ECOMP-PAP-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.openecomp.policy.pap.xacml.rest.components;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.IOException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-
-import javax.persistence.EntityManager;
-import javax.persistence.Query;
-
-import org.openecomp.policy.common.logging.eelf.MessageCodes;
-import org.openecomp.policy.common.logging.eelf.PolicyLogger;
-import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
-import org.openecomp.policy.common.logging.flexlogger.Logger;
-import org.openecomp.policy.controlloop.policy.builder.BuilderException;
-import org.openecomp.policy.controlloop.policy.builder.Results;
-import org.openecomp.policy.controlloop.policy.guard.Constraint;
-import org.openecomp.policy.controlloop.policy.guard.ControlLoopGuard;
-import org.openecomp.policy.controlloop.policy.guard.Guard;
-import org.openecomp.policy.controlloop.policy.guard.GuardPolicy;
-import org.openecomp.policy.controlloop.policy.guard.MatchParameters;
-import org.openecomp.policy.controlloop.policy.guard.builder.ControlLoopGuardBuilder;
-import org.openecomp.policy.pap.xacml.rest.XACMLPapServlet;
-import org.openecomp.policy.pap.xacml.rest.util.JPAUtils;
-import org.openecomp.policy.rest.adapter.PolicyRestAdapter;
-import org.openecomp.policy.rest.jpa.Datatype;
-import org.openecomp.policy.rest.jpa.DecisionSettings;
-import org.openecomp.policy.rest.jpa.FunctionDefinition;
-import org.openecomp.policy.utils.PolicyUtils;
-import org.openecomp.policy.xacml.api.XACMLErrorConstants;
-import org.openecomp.policy.xacml.std.pip.engines.aaf.AAFEngine;
-import org.openecomp.policy.xacml.util.XACMLPolicyScanner;
-
-import com.att.research.xacml.std.IdentifierImpl;
-
-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.ApplyType;
-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.ConditionType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.EffectType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.MatchType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ObjectFactory;
-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 oasis.names.tc.xacml._3_0.core.schema.wd_17.VariableDefinitionType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.VariableReferenceType;
-
-public class DecisionPolicy extends Policy {
-
- private static final Logger LOGGER = FlexLogger.getLogger(DecisionPolicy.class);
-
- public static final String FUNCTION_NOT = "urn:oasis:names:tc:xacml:1.0:function:not";
- private static final String AAFPROVIDER = "AAF";
- public static final String GUARD_YAML = "GUARD_YAML";
- public static final String GUARD_BL_YAML = "GUARD_BL_YAML";
- public static final String RAINY_DAY = "Rainy_Day";
- private static final String XACML_GUARD_TEMPLATE = "Decision_GuardPolicyTemplate.xml";
- private static final String XACML_BLGUARD_TEMPLATE = "Decision_GuardBLPolicyTemplate.xml";
-
- private static final String ECOMPNAME = "ECOMPName";
- private static final String POLICY_NAME = "PolicyName";
- private static final String DESCRIPTION = "description";
-
-
- List<String> dynamicLabelRuleAlgorithms = new LinkedList<>();
- List<String> dynamicFieldComboRuleAlgorithms = new LinkedList<>();
- List<String> dynamicFieldOneRuleAlgorithms = new LinkedList<>();
- List<String> dynamicFieldTwoRuleAlgorithms = new LinkedList<>();
- List<String> dataTypeList = new LinkedList<>();
-
- protected Map<String, String> dropDownMap = new HashMap<>();
-
-
- public DecisionPolicy() {
- super();
- }
-
- public DecisionPolicy(PolicyRestAdapter policyAdapter){
- this.policyAdapter = policyAdapter;
- }
-
- @Override
- public Map<String, String> savePolicies() throws Exception {
-
- Map<String, String> successMap = new HashMap<>();
- if(isPolicyExists()){
- successMap.put("EXISTS", "This Policy already exist on the PAP");
- return successMap;
- }
-
- if(!isPreparedToSave()){
- //Prep and configure the policy for saving
- prepareToSave();
- }
-
- // Until here we prepared the data and here calling the method to create xml.
- Path newPolicyPath = null;
- newPolicyPath = Paths.get(policyAdapter.getNewFileName());
-
- successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject());
- return successMap;
- }
-
- //This is the method for preparing the policy for saving. We have broken it out
- //separately because the fully configured policy is used for multiple things
- @Override
- public boolean prepareToSave() throws Exception{
-
- if(isPreparedToSave()){
- //we have already done this
- return true;
- }
-
- int version = 0;
- String policyID = policyAdapter.getPolicyID();
- version = policyAdapter.getHighestVersion();
-
- // Create the Instance for pojo, PolicyType object is used in marshalling.
- if ("Decision".equals(policyAdapter.getPolicyType())) {
- PolicyType policyConfig = new PolicyType();
-
- policyConfig.setVersion(Integer.toString(version));
- policyConfig.setPolicyId(policyID);
- policyConfig.setTarget(new TargetType());
- policyAdapter.setData(policyConfig);
- }
- policyName = policyAdapter.getNewFileName();
-
- if(policyAdapter.getRuleProvider().equals(GUARD_YAML) || policyAdapter.getRuleProvider().equals(GUARD_BL_YAML)){
- Map<String, String> yamlParams = new HashMap<>();
- yamlParams.put(DESCRIPTION, (policyAdapter.getPolicyDescription()!=null)? policyAdapter.getPolicyDescription(): "YAML Guard Policy");
- String fileName = policyAdapter.getNewFileName();
- String name = fileName.substring(fileName.lastIndexOf('\\') + 1, fileName.length());
- if ((name == null) || ("".equals(name))) {
- name = fileName.substring(fileName.lastIndexOf('/') + 1, fileName.length());
- }
- yamlParams.put(POLICY_NAME, name);
- yamlParams.put(ECOMPNAME, policyAdapter.getEcompName());
- Map<String, String> params = policyAdapter.getDynamicFieldConfigAttributes();
- yamlParams.putAll(params);
- // Call YAML to XACML
- PolicyType decisionPolicy = getGuardPolicy(yamlParams, policyAdapter.getRuleProvider());
- decisionPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId());
- decisionPolicy.setVersion(Integer.toString(version));
- policyAdapter.setPolicyData(decisionPolicy);
- policyAdapter.setData(decisionPolicy);
- }else if (policyAdapter.getData() != null) {
- PolicyType decisionPolicy = (PolicyType) policyAdapter.getData();
-
- decisionPolicy.setDescription(policyAdapter.getPolicyDescription());
-
- decisionPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId());
- AllOfType allOfOne = new AllOfType();
- String fileName = policyAdapter.getNewFileName();
- String name = fileName.substring(fileName.lastIndexOf('\\') + 1, fileName.length());
- if ((name == null) || ("".equals(name))) {
- name = fileName.substring(fileName.lastIndexOf('/') + 1, fileName.length());
- }
- allOfOne.getMatch().add(createMatch(POLICY_NAME, name));
-
- AllOfType allOf = new AllOfType();
-
- // Match for Ecomp
- allOf.getMatch().add(createMatch(ECOMPNAME, (policyAdapter.getEcompName())));
-
- Map<String, String> dynamicFieldComponentAttributes = policyAdapter.getDynamicFieldConfigAttributes();
- if(policyAdapter.getRuleProvider()!=null && policyAdapter.getRuleProvider().equals(AAFPROVIDER)){
- dynamicFieldComponentAttributes = new HashMap<>();
- }
-
- // If there is any dynamic field attributes create the matches here
- for (String keyField : dynamicFieldComponentAttributes.keySet()) {
- String key = keyField;
- String value = dynamicFieldComponentAttributes.get(key);
- MatchType dynamicMatch = createDynamicMatch(key, value);
- allOf.getMatch().add(dynamicMatch);
- }
-
- AnyOfType anyOf = new AnyOfType();
- anyOf.getAllOf().add(allOfOne);
- anyOf.getAllOf().add(allOf);
-
- TargetType target = new TargetType();
- target.getAnyOf().add(anyOf);
- decisionPolicy.setTarget(target);
-
- Map<String, String> dynamicFieldDecisionSettings = policyAdapter.getDynamicSettingsMap();
- if(policyAdapter.getRuleProvider()!=null && policyAdapter.getRuleProvider().equals(AAFPROVIDER)){
- dynamicFieldDecisionSettings = new HashMap<>();
- }
-
- // settings are dynamic so check how many rows are added and add all
- for (String keyField : dynamicFieldDecisionSettings.keySet()) {
- String key = keyField;
- String value = dynamicFieldDecisionSettings.get(key);
- String dataType = getDataType(key);
- VariableDefinitionType dynamicVariable = createDynamicVariable(key, value, dataType);
- decisionPolicy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().add(dynamicVariable);
- }
- Map<String, String> dynamicFieldTreatmentAttributes = policyAdapter.getRainydayMap();
-
- if(policyAdapter.getRuleProvider().equals(RAINY_DAY)){
- for(String keyField : dynamicFieldTreatmentAttributes.keySet()) {
- String errorcode = keyField;
- String treatment = dynamicFieldTreatmentAttributes.get(errorcode);
- createRainydayRule(decisionPolicy, errorcode, treatment, true);
- }
- } else {
- createRule(decisionPolicy, true);
- createRule(decisionPolicy, false);
- }
-
- }
- setPreparedToSave(true);
- return true;
- }
-
- public PolicyType getGuardPolicy(Map<String, String> yamlParams, String ruleProvider) throws BuilderException{
- try {
- ControlLoopGuardBuilder builder = ControlLoopGuardBuilder.Factory.buildControlLoopGuard(new Guard());
- MatchParameters matchParameters = new MatchParameters(yamlParams.get("actor"), yamlParams.get("recipe"));
- matchParameters.setControlLoopName(yamlParams.get("clname"));
- if(yamlParams.containsKey("targets")){
- String targetString = yamlParams.get("targets");
- List<String> targets = null;
- if(targetString!=null && !targetString.isEmpty()){
- if (targetString.contains(",")){
- targets = Arrays.asList(targetString.split(","));
- }
- else{
- targets = new ArrayList<>();
- targets.add(targetString);
- }
- }
- matchParameters.setTargets(targets);
- }
- GuardPolicy policy1 = new GuardPolicy((policyAdapter.getUuid()!=null? policyAdapter.getUuid(): UUID.randomUUID().toString()) ,yamlParams.get(POLICY_NAME), yamlParams.get(DESCRIPTION), matchParameters);
- builder = builder.addGuardPolicy(policy1);
- Map<String, String> activeTimeRange = new HashMap<>();
- activeTimeRange.put("start", yamlParams.get("guardActiveStart"));
- activeTimeRange.put("end", yamlParams.get("guardActiveEnd"));
- String blackListString = yamlParams.get("blackList");
- List<String> blackList = null;
- if(blackListString!=null){
- if (blackListString.contains(",")){
- blackList = Arrays.asList(blackListString.split(","));
- }
- else{
- blackList = new ArrayList<>();
- blackList.add(blackListString);
- }
- }
- File templateFile;
- Path xacmlTemplatePath;
- ClassLoader classLoader = getClass().getClassLoader();
- Constraint cons = new Constraint();
- switch (ruleProvider){
- case GUARD_BL_YAML:
- templateFile = new File(classLoader.getResource(XACML_BLGUARD_TEMPLATE).getFile());
- xacmlTemplatePath = templateFile.toPath();
- cons.setActive_time_range(activeTimeRange);
- cons.setBlacklist(blackList);
- break;
- default:
- templateFile = new File(classLoader.getResource(XACML_GUARD_TEMPLATE).getFile());
- xacmlTemplatePath = templateFile.toPath();
- Map<String,String> timeWindow = new HashMap<>();
- if(!PolicyUtils.isInteger(yamlParams.get("timeWindow"))){
- throw new BuilderException("time window is not in Integer format.");
- }
- String timeUnits = yamlParams.get("timeUnits");
- if(timeUnits==null || !(timeUnits.equalsIgnoreCase("minute") || timeUnits.equalsIgnoreCase("hour") || timeUnits.equalsIgnoreCase("day")
- || timeUnits.equalsIgnoreCase("week") || timeUnits.equalsIgnoreCase("month")||timeUnits.equalsIgnoreCase("year"))){
- throw new BuilderException("time Units is not in proper format.");
- }
- timeWindow.put("value", yamlParams.get("timeWindow"));
- timeWindow.put("units", yamlParams.get("timeUnits"));
- cons = new Constraint(Integer.parseInt(yamlParams.get("limit")),timeWindow,activeTimeRange);
- break;
- }
- builder = builder.addLimitConstraint(policy1.getId(), cons);
- // Build the specification
- Results results = builder.buildSpecification();
- // YAML TO XACML
- ControlLoopGuard yamlGuardObject = SafePolicyBuilder.loadYamlGuard(results.getSpecification());
- String xacmlTemplateContent;
- try {
- xacmlTemplateContent = new String(Files.readAllBytes(xacmlTemplatePath));
- HashMap<String, String> yamlSpecs = new HashMap<>();
- yamlSpecs.put(POLICY_NAME, yamlParams.get(POLICY_NAME));
- yamlSpecs.put(DESCRIPTION, yamlParams.get(DESCRIPTION));
- yamlSpecs.put(ECOMPNAME, yamlParams.get(ECOMPNAME));
- yamlSpecs.put("actor", yamlGuardObject.getGuards().getFirst().getMatch_parameters().getActor());
- yamlSpecs.put("recipe", yamlGuardObject.getGuards().getFirst().getMatch_parameters().getRecipe());
- yamlSpecs.put("clname", yamlGuardObject.getGuards().getFirst().getMatch_parameters().getControlLoopName());
- if(yamlGuardObject.getGuards().getFirst().getLimit_constraints().getFirst().getFreq_limit_per_target()!=null){
- yamlSpecs.put("limit", yamlGuardObject.getGuards().getFirst().getLimit_constraints().getFirst().getFreq_limit_per_target().toString());
- }
- if(yamlGuardObject.getGuards().getFirst().getLimit_constraints().getFirst().getTime_window()!=null){
- yamlSpecs.put("twValue", yamlGuardObject.getGuards().getFirst().getLimit_constraints().getFirst().getTime_window().get("value"));
- yamlSpecs.put("twUnits", yamlGuardObject.getGuards().getFirst().getLimit_constraints().getFirst().getTime_window().get("units"));
- }
- yamlSpecs.put("guardActiveStart", yamlGuardObject.getGuards().getFirst().getLimit_constraints().getFirst().getActive_time_range().get("start"));
- yamlSpecs.put("guardActiveEnd", yamlGuardObject.getGuards().getFirst().getLimit_constraints().getFirst().getActive_time_range().get("end"));
- String xacmlPolicyContent = SafePolicyBuilder.generateXacmlGuard(xacmlTemplateContent,yamlSpecs, yamlGuardObject.getGuards().getFirst().getLimit_constraints().getFirst().getBlacklist(), yamlGuardObject.getGuards().getFirst().getMatch_parameters().getTargets());
- // Convert the Policy into Stream input to Policy Adapter.
- Object policy = XACMLPolicyScanner.readPolicy(new ByteArrayInputStream(xacmlPolicyContent.getBytes(StandardCharsets.UTF_8)));
- return (PolicyType) policy;
- } catch (IOException e) {
- LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "Error while creating the policy " + e.getMessage() , e);
- }
- } catch (BuilderException e) {
- LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "Error while creating the policy " + e.getMessage() ,e);
- throw e;
- }
- return null;
- }
-
- private DecisionSettings findDecisionSettingsBySettingId(String settingId) {
- DecisionSettings decisionSetting = null;
-
- EntityManager em = XACMLPapServlet.getEmf().createEntityManager();
- Query getDecisionSettings = em.createNamedQuery("DecisionSettings.findAll");
- List<?> decisionSettingsList = getDecisionSettings.getResultList();
-
- for (Object id : decisionSettingsList) {
- decisionSetting = (DecisionSettings) id;
- if (decisionSetting.getXacmlId().equals(settingId)) {
- break;
- }
- }
- return decisionSetting;
- }
-
- private void createRule(PolicyType decisionPolicy, boolean permitRule) {
- RuleType rule = new RuleType();
-
- rule.setRuleId(policyAdapter.getRuleID());
-
- if (permitRule) {
- rule.setEffect(EffectType.PERMIT);
- } else {
- rule.setEffect(EffectType.DENY);
- }
- rule.setTarget(new TargetType());
-
- // Create Target in Rule
- AllOfType allOfInRule = new AllOfType();
-
- // Creating match for ACCESS in rule target
- MatchType accessMatch = new MatchType();
- AttributeValueType accessAttributeValue = new AttributeValueType();
- accessAttributeValue.setDataType(STRING_DATATYPE);
- accessAttributeValue.getContent().add("DECIDE");
- accessMatch.setAttributeValue(accessAttributeValue);
- AttributeDesignatorType accessAttributeDesignator = new AttributeDesignatorType();
- URI accessURI = null;
- try {
- accessURI = new URI(ACTION_ID);
- } catch (URISyntaxException e) {
- PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "DecisionPolicy", "Exception creating ACCESS URI");
- }
- accessAttributeDesignator.setCategory(CATEGORY_ACTION);
- accessAttributeDesignator.setDataType(STRING_DATATYPE);
- accessAttributeDesignator.setAttributeId(new IdentifierImpl(accessURI).stringValue());
- accessMatch.setAttributeDesignator(accessAttributeDesignator);
- accessMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE);
-
- dynamicLabelRuleAlgorithms = policyAdapter.getDynamicRuleAlgorithmLabels();
- dynamicFieldComboRuleAlgorithms = policyAdapter.getDynamicRuleAlgorithmCombo();
- dynamicFieldOneRuleAlgorithms = policyAdapter.getDynamicRuleAlgorithmField1();
- dynamicFieldTwoRuleAlgorithms = policyAdapter.getDynamicRuleAlgorithmField2();
- dropDownMap = createDropDownMap();
-
- if(policyAdapter.getRuleProvider()!=null && policyAdapter.getRuleProvider().equals(AAFPROVIDER)){
- // Values for AAF Provider are here for XML Creation.
- ConditionType condition = new ConditionType();
- ApplyType decisionApply = new ApplyType();
- String selectedFunction = "boolean-equal";
-
- AttributeValueType value1 = new AttributeValueType();
- value1.setDataType(BOOLEAN_DATATYPE);
- value1.getContent().add("true");
-
- AttributeDesignatorType value2 = new AttributeDesignatorType();
- value2.setAttributeId(AAFEngine.AAF_RESULT);
- value2.setCategory(CATEGORY_RESOURCE);
- value2.setDataType(BOOLEAN_DATATYPE);
- value2.setMustBePresent(false);
-
- ApplyType innerDecisionApply = new ApplyType();
- innerDecisionApply.setFunctionId(FUNCTION_BOOLEAN_ONE_AND_ONLY);
- innerDecisionApply.getExpression().add(new ObjectFactory().createAttributeDesignator(value2));
-
- decisionApply.setFunctionId(dropDownMap.get(selectedFunction));
- decisionApply.getExpression().add(new ObjectFactory().createAttributeValue(value1));
- decisionApply.getExpression().add(new ObjectFactory().createApply(innerDecisionApply));
- condition.setExpression(new ObjectFactory().createApply(decisionApply));
- if (!permitRule) {
- ApplyType notOuterApply = new ApplyType();
- notOuterApply.setFunctionId(FUNCTION_NOT);
- notOuterApply.getExpression().add(condition.getExpression());
- condition.setExpression(new ObjectFactory().createApply(notOuterApply));
- }
- rule.setCondition(condition);
- allOfInRule.getMatch().add(accessMatch);
-
- AnyOfType anyOfInRule = new AnyOfType();
- anyOfInRule.getAllOf().add(allOfInRule);
-
- TargetType targetInRule = new TargetType();
- targetInRule.getAnyOf().add(anyOfInRule);
-
- rule.setTarget(targetInRule);
- if(!permitRule){
- AdviceExpressionsType adviceExpressions = new AdviceExpressionsType();
- AdviceExpressionType adviceExpression = new AdviceExpressionType();
- adviceExpression.setAdviceId(AAFPROVIDER);
- adviceExpression.setAppliesTo(EffectType.DENY);
- AttributeAssignmentExpressionType assignment = new AttributeAssignmentExpressionType();
- assignment.setAttributeId("aaf.response");
- assignment.setCategory(CATEGORY_RESOURCE);
- AttributeDesignatorType value = new AttributeDesignatorType();
- value.setAttributeId(AAFEngine.AAF_RESPONSE);
- value.setCategory(CATEGORY_RESOURCE);
- value.setDataType(STRING_DATATYPE);
- value.setMustBePresent(false);
- assignment.setExpression(new ObjectFactory().createAttributeDesignator(value));
- adviceExpression.getAttributeAssignmentExpression().add(assignment);
- adviceExpressions.getAdviceExpression().add(adviceExpression);
- rule.setAdviceExpressions(adviceExpressions);
- }
- decisionPolicy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().add(rule);
- policyAdapter.setPolicyData(decisionPolicy);
-
- }else if (dynamicLabelRuleAlgorithms != null && !dynamicLabelRuleAlgorithms.isEmpty()) {
- boolean isCompound = false;
- ConditionType condition = new ConditionType();
- int index = dynamicFieldOneRuleAlgorithms.size() - 1;
-
- for (String labelAttr : dynamicLabelRuleAlgorithms) {
- // if the rule algorithm as a label means it is a compound
- if (dynamicFieldOneRuleAlgorithms.get(index).equals(labelAttr)) {
- ApplyType decisionApply = new ApplyType();
-
- String selectedFunction = dynamicFieldComboRuleAlgorithms.get(index);
- String value1 = dynamicFieldOneRuleAlgorithms.get(index);
- String value2 = dynamicFieldTwoRuleAlgorithms.get(index);
- decisionApply.setFunctionId(dropDownMap.get(selectedFunction));
- decisionApply.getExpression().add(new ObjectFactory().createApply(getInnerDecisionApply(value1)));
- decisionApply.getExpression().add(new ObjectFactory().createApply(getInnerDecisionApply(value2)));
- condition.setExpression(new ObjectFactory().createApply(decisionApply));
- isCompound = true;
- }
-
- // if rule algorithm not a compound
- if (!isCompound) {
- condition.setExpression(new ObjectFactory().createApply(getInnerDecisionApply(dynamicLabelRuleAlgorithms.get(index))));
- }
- }
- if (!permitRule) {
- ApplyType notOuterApply = new ApplyType();
- notOuterApply.setFunctionId(FUNCTION_NOT);
- notOuterApply.getExpression().add(condition.getExpression());
- condition.setExpression(new ObjectFactory().createApply(notOuterApply));
- }
- rule.setCondition(condition);
- allOfInRule.getMatch().add(accessMatch);
-
- AnyOfType anyOfInRule = new AnyOfType();
- anyOfInRule.getAllOf().add(allOfInRule);
-
- TargetType targetInRule = new TargetType();
- targetInRule.getAnyOf().add(anyOfInRule);
-
- rule.setTarget(targetInRule);
-
- decisionPolicy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().add(rule);
- policyAdapter.setPolicyData(decisionPolicy);
-
- } else {
- PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + "Unsupported data object."+ policyAdapter.getData().getClass().getCanonicalName());
- }
-
- }
-
- private void createRainydayRule(PolicyType decisionPolicy, String errorcode, String treatment, boolean permitRule) {
- RuleType rule = new RuleType();
-
- rule.setRuleId(UUID.randomUUID().toString());
-
- if (permitRule) {
- rule.setEffect(EffectType.PERMIT);
- } else {
- rule.setEffect(EffectType.DENY);
- }
- rule.setTarget(new TargetType());
-
- // Create Target in Rule
- AllOfType allOfInRule = new AllOfType();
-
- // Creating match for DECIDE in rule target
- MatchType accessMatch = new MatchType();
- AttributeValueType accessAttributeValue = new AttributeValueType();
- accessAttributeValue.setDataType(STRING_DATATYPE);
- accessAttributeValue.getContent().add("DECIDE");
- accessMatch.setAttributeValue(accessAttributeValue);
- AttributeDesignatorType accessAttributeDesignator = new AttributeDesignatorType();
- URI accessURI = null;
- try {
- accessURI = new URI(ACTION_ID);
- } catch (URISyntaxException e) {
- PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "DecisionPolicy", "Exception creating ACCESS URI");
- }
- accessAttributeDesignator.setCategory(CATEGORY_ACTION);
- accessAttributeDesignator.setDataType(STRING_DATATYPE);
- accessAttributeDesignator.setAttributeId(new IdentifierImpl(accessURI).stringValue());
- accessMatch.setAttributeDesignator(accessAttributeDesignator);
- accessMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE);
-
- allOfInRule.getMatch().add(accessMatch);
-
- // Creating match for ErrorCode in rule target
- MatchType errorcodeMatch = new MatchType();
- AttributeValueType errorcodeAttributeValue = new AttributeValueType();
- errorcodeAttributeValue.setDataType(STRING_DATATYPE);
- errorcodeAttributeValue.getContent().add(errorcode);
- errorcodeMatch.setAttributeValue(errorcodeAttributeValue);
- AttributeDesignatorType errorcodeAttributeDesignator = new AttributeDesignatorType();
- errorcodeAttributeDesignator.setCategory(CATEGORY_RESOURCE);
- errorcodeAttributeDesignator.setDataType(STRING_DATATYPE);
- errorcodeAttributeDesignator.setAttributeId("ErrorCode");
- errorcodeMatch.setAttributeDesignator(errorcodeAttributeDesignator);
- errorcodeMatch.setMatchId(FUNCTION_STRING_REGEXP_MATCH);
-
- allOfInRule.getMatch().add(errorcodeMatch);
-
- AnyOfType anyOfInRule = new AnyOfType();
- anyOfInRule.getAllOf().add(allOfInRule);
-
- TargetType targetInRule = new TargetType();
- targetInRule.getAnyOf().add(anyOfInRule);
-
- rule.setTarget(targetInRule);
-
- AdviceExpressionsType adviceExpressions = new AdviceExpressionsType();
- AdviceExpressionType adviceExpression = new AdviceExpressionType();
- adviceExpression.setAdviceId(RAINY_DAY);
- adviceExpression.setAppliesTo(EffectType.PERMIT);
-
- AttributeAssignmentExpressionType assignment = new AttributeAssignmentExpressionType();
- assignment.setAttributeId("treatment");
- assignment.setCategory(CATEGORY_RESOURCE);
-
- AttributeValueType treatmentAttributeValue = new AttributeValueType();
- treatmentAttributeValue.setDataType(STRING_DATATYPE);
- treatmentAttributeValue.getContent().add(treatment);
- assignment.setExpression(new ObjectFactory().createAttributeValue(treatmentAttributeValue));
-
- adviceExpression.getAttributeAssignmentExpression().add(assignment);
- adviceExpressions.getAdviceExpression().add(adviceExpression);
- rule.setAdviceExpressions(adviceExpressions);
- decisionPolicy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().add(rule);
- policyAdapter.setPolicyData(decisionPolicy);
-
- }
-
- // if compound setting the inner apply here
- protected ApplyType getInnerDecisionApply(String value1Label) {
- ApplyType decisionApply = new ApplyType();
- int index = 0;
- // check the index for the label.
- for (String labelAttr : dynamicLabelRuleAlgorithms) {
- if (labelAttr.equals(value1Label)) {
- String value1 = dynamicFieldOneRuleAlgorithms.get(index);
- populateDataTypeList(value1);
-
- // check if the row contains label again
- for (String labelValue : dynamicLabelRuleAlgorithms) {
- if (labelValue.equals(value1)) {
- return getCompoundDecisionApply(index);
- }
- }
-
- // Getting the values from the form.
- String functionKey = dynamicFieldComboRuleAlgorithms.get(index);
- String value2 = dynamicFieldTwoRuleAlgorithms.get(index);
- decisionApply.setFunctionId(dropDownMap.get(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));
- } 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 != null) {
- attributeDesignator.setCategory(CATEGORY_RESOURCE);
- attributeDesignator.setAttributeId(attributeId);
- }
- decisionConditionAttributeValue.getContent().add(attributeValue);
- innerDecisionApply.getExpression().add(new ObjectFactory().createAttributeDesignator(attributeDesignator));
- decisionApply.getExpression().add(new ObjectFactory().createAttributeValue(decisionConditionAttributeValue));
- decisionApply.getExpression().add(new ObjectFactory().createApply(innerDecisionApply));
- } else {
- value1 = value1.substring(2, value1.length());
- VariableReferenceType variableReferenceType = new VariableReferenceType();
- variableReferenceType.setVariableId(value1);
-
- String dataType = dataTypeList.get(index);
-
- AttributeValueType decisionConditionAttributeValue = new AttributeValueType();
- decisionConditionAttributeValue.setDataType(dataType);
- decisionConditionAttributeValue.getContent().add(value2);
- decisionApply.getExpression().add(new ObjectFactory().createVariableReference(variableReferenceType));
- decisionApply.getExpression().add(new ObjectFactory().createAttributeValue(decisionConditionAttributeValue));
- }
- }
- }
- index++;
- }
- return decisionApply;
- }
-
- // if the rule algorithm is multiple compound one setting the apply
- protected ApplyType getCompoundDecisionApply(int index) {
- ApplyType decisionApply = new ApplyType();
- String selectedFunction = dynamicFieldComboRuleAlgorithms.get(index);
- String value1 = dynamicFieldOneRuleAlgorithms.get(index);
- String value2 = dynamicFieldTwoRuleAlgorithms.get(index);
- decisionApply.setFunctionId(dropDownMap.get(selectedFunction));
- decisionApply.getExpression().add(new ObjectFactory().createApply(getInnerDecisionApply(value1)));
- decisionApply.getExpression().add(new ObjectFactory().createApply(getInnerDecisionApply(value2)));
- return decisionApply;
- }
-
- private VariableDefinitionType createDynamicVariable(String key, String value, String dataType) {
- VariableDefinitionType dynamicVariable = new VariableDefinitionType();
- AttributeValueType dynamicAttributeValue = new AttributeValueType();
-
- dynamicAttributeValue.setDataType(dataType);
- dynamicAttributeValue.getContent().add(value);
-
- dynamicVariable.setVariableId(key);
- dynamicVariable.setExpression(new ObjectFactory().createAttributeValue(dynamicAttributeValue));
-
- return dynamicVariable;
-
- }
-
- private void populateDataTypeList(String value1) {
- String dataType = null;
- if(value1.contains("S_")) {
- value1 = value1.substring(2, value1.length());
- DecisionSettings decisionSettings = findDecisionSettingsBySettingId(value1.substring(2, value1.length()));
- if (decisionSettings != null && "string".equals(decisionSettings.getDatatypeBean().getShortName())) {
- dataType = STRING_DATATYPE;
- } else if (decisionSettings != null && "boolean".equals(decisionSettings.getDatatypeBean().getShortName())) {
- dataType = BOOLEAN_DATATYPE;
- } else {
- dataType = INTEGER_DATATYPE;
- }
- } else {
- dataType = "OTHER";
- }
-
- dataTypeList.add(dataType);
- }
-
- private Map<String,String> createDropDownMap(){
- JPAUtils jpaUtils = null;
- try {
- jpaUtils = JPAUtils.getJPAUtilsInstance(XACMLPapServlet.getEmf());
- } catch (Exception e) {
- LOGGER.error("Exception Occured"+e);
- }
- Map<String, String> dropDownOptions = new HashMap<>();
- if(jpaUtils!=null){
- Map<Datatype, List<FunctionDefinition>> functionMap = jpaUtils.getFunctionDatatypeMap();
- for (Map.Entry<Datatype,List<FunctionDefinition>> map: functionMap.entrySet()) {
- for (FunctionDefinition functionDef : map.getValue()) {
- dropDownOptions.put(functionDef.getShortname(),functionDef.getXacmlid());
- }
- }
- }
- return dropDownOptions;
- }
-
- private String getDataType(String key) {
-
- DecisionSettings decisionSettings = findDecisionSettingsBySettingId(key);
- String dataType = null;
-
- if (decisionSettings != null && "string".equals(decisionSettings.getDatatypeBean().getShortName())) {
- dataType = STRING_DATATYPE;
- } else if (decisionSettings != null && "boolean".equals(decisionSettings.getDatatypeBean().getShortName())) {
- dataType = BOOLEAN_DATATYPE;
- } else {
- dataType = INTEGER_DATATYPE;
- }
-
- return dataType;
- }
-
- @Override
- public Object getCorrectPolicyDataObject() {
- return policyAdapter.getData();
- }
-
-}
diff --git a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/FirewallConfigPolicy.java b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/FirewallConfigPolicy.java
deleted file mode 100644
index 9f780fd28..000000000
--- a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/FirewallConfigPolicy.java
+++ /dev/null
@@ -1,1305 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ECOMP-PAP-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.openecomp.policy.pap.xacml.rest.components;
-
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.StringReader;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.nio.charset.Charset;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.sql.SQLException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.json.Json;
-import javax.json.JsonArray;
-import javax.json.JsonObject;
-import javax.json.JsonReader;
-import javax.persistence.EntityManager;
-import javax.persistence.Query;
-
-import org.apache.commons.io.FilenameUtils;
-import org.openecomp.policy.common.logging.eelf.MessageCodes;
-import org.openecomp.policy.common.logging.eelf.PolicyLogger;
-import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
-import org.openecomp.policy.common.logging.flexlogger.Logger;
-import org.openecomp.policy.pap.xacml.rest.XACMLPapServlet;
-import org.openecomp.policy.pap.xacml.rest.daoimpl.CommonClassDaoImpl;
-import org.openecomp.policy.rest.adapter.PolicyRestAdapter;
-import org.openecomp.policy.rest.jpa.ActionList;
-import org.openecomp.policy.rest.jpa.AddressGroup;
-import org.openecomp.policy.rest.jpa.GroupServiceList;
-import org.openecomp.policy.rest.jpa.PolicyEntity;
-import org.openecomp.policy.rest.jpa.PortList;
-import org.openecomp.policy.rest.jpa.PrefixList;
-import org.openecomp.policy.rest.jpa.ProtocolList;
-import org.openecomp.policy.rest.jpa.ServiceList;
-import org.openecomp.policy.rest.jpa.TermList;
-import org.openecomp.policy.rest.jpa.UserInfo;
-
-import com.att.research.xacml.std.IdentifierImpl;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.github.fge.jackson.JsonLoader;
-import com.github.fge.jsonpatch.diff.JsonDiff;
-
-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;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeValueType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.EffectType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.MatchType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ObjectFactory;
-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;
-
-public class FirewallConfigPolicy extends Policy {
-
- private static final Logger LOGGER = FlexLogger.getLogger(FirewallConfigPolicy.class);
-
- public FirewallConfigPolicy() {
- super();
- }
-
- public FirewallConfigPolicy(PolicyRestAdapter policyAdapter) {
- this.policyAdapter = policyAdapter;
- this.policyAdapter.setConfigType(policyAdapter.getConfigType());
- }
-
- // Saving the Configurations file at server location for config policy.
- protected void saveConfigurations(String policyName, String jsonBody) {
- String configurationName = policyName;
- FileWriter fw = null;
- try{
- if(configurationName.endsWith(".xml")){
- configurationName = configurationName.replace(".xml", "");
- }
- fw = new FileWriter(CONFIG_HOME + File.separator + configurationName + ".json");
- BufferedWriter bw = new BufferedWriter(fw);
- bw.write(jsonBody);
- bw.close();
- if (LOGGER.isDebugEnabled()) {
- LOGGER.debug("Configuration is succesfully saved");
- }
- } catch (IOException e) {
- LOGGER.error("Exception Occured"+e);
- }finally{
- try{
- if(fw != null){
- fw.close();
- }
- }catch(Exception e){
- LOGGER.error("Exception Occured"+e);
- }
- }
- }
-
- //Utility to read json data from the existing file to a string
- static String readFile(String path, Charset encoding) throws IOException {
- byte[] encoded = Files.readAllBytes(Paths.get(path));
- return new String(encoded, encoding);
- }
-
- @Override
- public Map<String, String> savePolicies() throws Exception {
- Map<String, String> successMap = new HashMap<>();
- if(isPolicyExists()){
- successMap.put("EXISTS", "This Policy already exist on the PAP");
- return successMap;
- }
- if(!isPreparedToSave()){
- prepareToSave();
- }
-
- // Until here we prepared the data and here calling the method to create xml.
- Path newPolicyPath = null;
- newPolicyPath = Paths.get(policyAdapter.getNewFileName());
- Boolean dbIsUpdated = false;
- if (policyAdapter.getApiflag() != null && "admin".equalsIgnoreCase(policyAdapter.getApiflag())){
- if (policyAdapter.isEditPolicy()) {
- dbIsUpdated = updateFirewallDictionaryData(policyAdapter.getJsonBody(), policyAdapter.getPrevJsonBody());
- } else {
- dbIsUpdated = insertFirewallDicionaryData(policyAdapter.getJsonBody());
- }
- } else {
- dbIsUpdated = true;
- }
-
- if(dbIsUpdated) {
- successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject());
- } else {
- PolicyLogger.error("Failed to Update the Database Dictionary Tables.");
-
- //remove the new json file
- String jsonBody = policyAdapter.getPrevJsonBody();
- if (jsonBody!=null){
- saveConfigurations(policyName, jsonBody);
- } else {
- saveConfigurations(policyName, "");
- }
- successMap.put("fwdberror", "DB UPDATE");
- }
-
- return successMap;
- }
-
- //This is the method for preparing the policy for saving. We have broken it out
- //separately because the fully configured policy is used for multiple things
- @Override
- public boolean prepareToSave() throws Exception{
-
- if(isPreparedToSave()){
- //we have already done this
- return true;
- }
-
- int version = 0;
- String policyID = policyAdapter.getPolicyID();
- version = policyAdapter.getHighestVersion();
-
- // Create the Instance for pojo, PolicyType object is used in marshaling.
- if ("Config".equals(policyAdapter.getPolicyType())) {
- PolicyType policyConfig = new PolicyType();
-
- policyConfig.setVersion(Integer.toString(version));
- policyConfig.setPolicyId(policyID);
- policyConfig.setTarget(new TargetType());
- policyAdapter.setData(policyConfig);
- }
- policyName = policyAdapter.getNewFileName();
-
- //String oldPolicyName = policyName.replace(".xml", "");
- String scope = policyName.substring(0, policyName.indexOf('.'));
- String dbPolicyName = policyName.substring(policyName.indexOf('.')+1).replace(".xml", "");
-
- int oldversion = Integer.parseInt(dbPolicyName.substring(dbPolicyName.lastIndexOf('.')+1));
- dbPolicyName = dbPolicyName.substring(0, dbPolicyName.lastIndexOf('.')+1);
- if(oldversion > 1){
- oldversion = oldversion - 1;
- dbPolicyName = dbPolicyName + oldversion + ".xml";
- }
- EntityManager em = XACMLPapServlet.getEmf().createEntityManager();
- Query createPolicyQuery = em.createQuery("SELECT p FROM PolicyEntity p WHERE p.scope=:scope AND p.policyName=:policyName");
- createPolicyQuery.setParameter("scope", scope);
- createPolicyQuery.setParameter("policyName", dbPolicyName);
- List<?> createPolicyQueryList = createPolicyQuery.getResultList();
- if(!createPolicyQueryList.isEmpty()){
- PolicyEntity entitydata = (PolicyEntity) createPolicyQueryList.get(0);
- policyAdapter.setPrevJsonBody(entitydata.getConfigurationData().getConfigBody());
- }
- em.close();
- if (policyAdapter.getData() != null) {
- String jsonBody = policyAdapter.getJsonBody();
- saveConfigurations(policyName, jsonBody);
-
- // Make sure the filename ends with an extension
- if (!policyName.endsWith(".xml")) {
- policyName = policyName + ".xml";
- }
-
- PolicyType configPolicy = (PolicyType) policyAdapter.getData();
-
- configPolicy.setDescription(policyAdapter.getPolicyDescription());
-
- configPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId());
-
- AllOfType allOfOne = new AllOfType();
- String fileName = policyAdapter.getNewFileName();
- String name = fileName.substring(fileName.lastIndexOf('\\') + 1, fileName.length());
- if ((name == null) || (name.equals(""))) {
- name = fileName.substring(fileName.lastIndexOf('/') + 1, fileName.length());
- }
- allOfOne.getMatch().add(createMatch("PolicyName", name));
- AllOfType allOf = new AllOfType();
-
- // Match for ConfigName
- allOf.getMatch().add(createMatch("ConfigName", policyAdapter.getConfigName()));
- // Match for riskType
- allOf.getMatch().add(createDynamicMatch("RiskType", policyAdapter.getRiskType()));
- // Match for riskLevel
- allOf.getMatch().add(createDynamicMatch("RiskLevel", String.valueOf(policyAdapter.getRiskLevel())));
- // Match for riskguard
- allOf.getMatch().add(createDynamicMatch("guard", policyAdapter.getGuard()));
- // Match for ttlDate
- allOf.getMatch().add(createDynamicMatch("TTLDate", policyAdapter.getTtlDate()));
- AnyOfType anyOf = new AnyOfType();
- anyOf.getAllOf().add(allOfOne);
- anyOf.getAllOf().add(allOf);
-
- TargetType target = new TargetType();
- target.getAnyOf().add(anyOf);
-
- // Adding the target to the policy element
- configPolicy.setTarget((TargetType) target);
-
- RuleType rule = new RuleType();
- rule.setRuleId(policyAdapter.getRuleID());
- rule.setEffect(EffectType.PERMIT);
-
- // Create Target in Rule
- AllOfType allOfInRule = new AllOfType();
-
- // Creating match for ACCESS in rule target
- MatchType accessMatch = new MatchType();
- AttributeValueType accessAttributeValue = new AttributeValueType();
- accessAttributeValue.setDataType(STRING_DATATYPE);
- accessAttributeValue.getContent().add("ACCESS");
- accessMatch.setAttributeValue(accessAttributeValue);
- AttributeDesignatorType accessAttributeDesignator = new AttributeDesignatorType();
- URI accessURI = null;
- try {
- accessURI = new URI(ACTION_ID);
- } catch (URISyntaxException e) {
- PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "FirewallConfigPolicy", "Exception creating ACCESS URI");
- }
- accessAttributeDesignator.setCategory(CATEGORY_ACTION);
- accessAttributeDesignator.setDataType(STRING_DATATYPE);
- accessAttributeDesignator.setAttributeId(new IdentifierImpl(accessURI).stringValue());
- accessMatch.setAttributeDesignator(accessAttributeDesignator);
- accessMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE);
-
- // Creating Config Match in rule Target
- MatchType configMatch = new MatchType();
- AttributeValueType configAttributeValue = new AttributeValueType();
- configAttributeValue.setDataType(STRING_DATATYPE);
-
- configAttributeValue.getContent().add("Config");
-
- configMatch.setAttributeValue(configAttributeValue);
- AttributeDesignatorType configAttributeDesignator = new AttributeDesignatorType();
- URI configURI = null;
- try {
- configURI = new URI(RESOURCE_ID);
- } catch (URISyntaxException e) {
- PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "FirewallConfigPolicy", "Exception creating Config URI");
- }
-
- configAttributeDesignator.setCategory(CATEGORY_RESOURCE);
- configAttributeDesignator.setDataType(STRING_DATATYPE);
- configAttributeDesignator.setAttributeId(new IdentifierImpl(configURI).stringValue());
- configMatch.setAttributeDesignator(configAttributeDesignator);
- configMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE);
-
- allOfInRule.getMatch().add(accessMatch);
- allOfInRule.getMatch().add(configMatch);
-
- AnyOfType anyOfInRule = new AnyOfType();
- anyOfInRule.getAllOf().add(allOfInRule);
-
- TargetType targetInRule = new TargetType();
- targetInRule.getAnyOf().add(anyOfInRule);
-
- rule.setTarget(targetInRule);
- rule.setAdviceExpressions(getAdviceExpressions(version, policyName));
-
- configPolicy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().add(rule);
- policyAdapter.setPolicyData(configPolicy);
-
- } else {
- PolicyLogger.error("Unsupported data object." + policyAdapter.getData().getClass().getCanonicalName());
- }
- setPreparedToSave(true);
- return true;
- }
-
- // Data required for Advice part is setting here.
- private AdviceExpressionsType getAdviceExpressions(int version, String fileName) {
-
- //Firewall Config ID Assignment
- AdviceExpressionsType advices = new AdviceExpressionsType();
- AdviceExpressionType advice = new AdviceExpressionType();
- advice.setAdviceId("firewallConfigID");
- advice.setAppliesTo(EffectType.PERMIT);
- // For Configuration
- AttributeAssignmentExpressionType assignment1 = new AttributeAssignmentExpressionType();
- assignment1.setAttributeId("type");
- assignment1.setCategory(CATEGORY_RESOURCE);
- assignment1.setIssuer("");
- AttributeValueType configNameAttributeValue = new AttributeValueType();
- configNameAttributeValue.setDataType(STRING_DATATYPE);
- configNameAttributeValue.getContent().add("Configuration");
- assignment1.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue));
- advice.getAttributeAssignmentExpression().add(assignment1);
-
- // For Config file Url if configurations are provided.
- //URL ID Assignment
- AttributeAssignmentExpressionType assignment2 = new AttributeAssignmentExpressionType();
- assignment2.setAttributeId("URLID");
- assignment2.setCategory(CATEGORY_RESOURCE);
- assignment2.setIssuer("");
- AttributeValueType AttributeValue = new AttributeValueType();
- AttributeValue.setDataType(URI_DATATYPE);
- if (policyName.endsWith(".xml")) {
- policyName = policyName.substring(0, policyName.lastIndexOf(".xml"));
- }
- String content = CONFIG_URL + "/Config/" + policyName + ".json";
-
- AttributeValue.getContent().add(content);
- assignment2.setExpression(new ObjectFactory().createAttributeValue(AttributeValue));
- advice.getAttributeAssignmentExpression().add(assignment2);
-
- //Policy Name Assignment
- AttributeAssignmentExpressionType assignment3 = new AttributeAssignmentExpressionType();
- assignment3.setAttributeId("PolicyName");
- assignment3.setCategory(CATEGORY_RESOURCE);
- assignment3.setIssuer("");
- AttributeValueType attributeValue3 = new AttributeValueType();
- attributeValue3.setDataType(STRING_DATATYPE);
- fileName = FilenameUtils.removeExtension(fileName);
- fileName = fileName + ".xml";
- String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length());
- if ((name == null) || (name.equals(""))) {
- name = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length());
- }
- attributeValue3.getContent().add(name);
- assignment3.setExpression(new ObjectFactory().createAttributeValue(attributeValue3));
- advice.getAttributeAssignmentExpression().add(assignment3);
-
- //Version Number Assignment
- AttributeAssignmentExpressionType assignment4 = new AttributeAssignmentExpressionType();
- assignment4.setAttributeId("VersionNumber");
- assignment4.setCategory(CATEGORY_RESOURCE);
- assignment4.setIssuer("");
- AttributeValueType configNameAttributeValue4 = new AttributeValueType();
- configNameAttributeValue4.setDataType(STRING_DATATYPE);
- configNameAttributeValue4.getContent().add(Integer.toString(version));
- assignment4.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue4));
- advice.getAttributeAssignmentExpression().add(assignment4);
-
- //Ecomp Name Assignment
- AttributeAssignmentExpressionType assignment5 = new AttributeAssignmentExpressionType();
- assignment5.setAttributeId("matching:" + ECOMPID);
- assignment5.setCategory(CATEGORY_RESOURCE);
- assignment5.setIssuer("");
- AttributeValueType configNameAttributeValue5 = new AttributeValueType();
- configNameAttributeValue5.setDataType(STRING_DATATYPE);
- assignment5.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue5));
- advice.getAttributeAssignmentExpression().add(assignment5);
-
- //Config Name Assignment
- AttributeAssignmentExpressionType assignment6 = new AttributeAssignmentExpressionType();
- assignment6.setAttributeId("matching:" + CONFIGID);
- assignment6.setCategory(CATEGORY_RESOURCE);
- assignment6.setIssuer("");
- AttributeValueType configNameAttributeValue6 = new AttributeValueType();
- configNameAttributeValue6.setDataType(STRING_DATATYPE);
- configNameAttributeValue6.getContent().add(policyAdapter.getConfigName());
- assignment6.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue6));
- advice.getAttributeAssignmentExpression().add(assignment6);
-
- //Risk Attributes
- AttributeAssignmentExpressionType assignment7 = new AttributeAssignmentExpressionType();
- assignment7.setAttributeId("RiskType");
- assignment7.setCategory(CATEGORY_RESOURCE);
- assignment7.setIssuer("");
-
- AttributeValueType configNameAttributeValue7 = new AttributeValueType();
- configNameAttributeValue7.setDataType(STRING_DATATYPE);
- configNameAttributeValue7.getContent().add(policyAdapter.getRiskType());
- assignment7.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue7));
-
- advice.getAttributeAssignmentExpression().add(assignment7);
-
- AttributeAssignmentExpressionType assignment8 = new AttributeAssignmentExpressionType();
- assignment8.setAttributeId("RiskLevel");
- assignment8.setCategory(CATEGORY_RESOURCE);
- assignment8.setIssuer("");
-
- AttributeValueType configNameAttributeValue8 = new AttributeValueType();
- configNameAttributeValue8.setDataType(STRING_DATATYPE);
- configNameAttributeValue8.getContent().add(policyAdapter.getRiskLevel());
- assignment8.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue8));
-
- advice.getAttributeAssignmentExpression().add(assignment8);
-
- AttributeAssignmentExpressionType assignment9 = new AttributeAssignmentExpressionType();
- assignment9.setAttributeId("guard");
- assignment9.setCategory(CATEGORY_RESOURCE);
- assignment9.setIssuer("");
-
- AttributeValueType configNameAttributeValue9 = new AttributeValueType();
- configNameAttributeValue9.setDataType(STRING_DATATYPE);
- configNameAttributeValue9.getContent().add(policyAdapter.getGuard());
- assignment9.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue9));
-
- advice.getAttributeAssignmentExpression().add(assignment9);
-
- AttributeAssignmentExpressionType assignment10 = new AttributeAssignmentExpressionType();
- assignment10.setAttributeId("TTLDate");
- assignment10.setCategory(CATEGORY_RESOURCE);
- assignment10.setIssuer("");
-
- AttributeValueType configNameAttributeValue10 = new AttributeValueType();
- configNameAttributeValue10.setDataType(STRING_DATATYPE);
- configNameAttributeValue10.getContent().add(policyAdapter.getTtlDate());
- assignment10.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue10));
-
- advice.getAttributeAssignmentExpression().add(assignment10);
- advices.getAdviceExpression().add(advice);
- return advices;
- }
-
-
- private Boolean insertFirewallDicionaryData (String jsonBody) throws SQLException {
- CommonClassDaoImpl dbConnection = new CommonClassDaoImpl();
- JsonObject json = null;
- if (jsonBody != null) {
-
- //Read jsonBody to JsonObject
- json = stringToJson(jsonBody);
-
- JsonArray firewallRules = null;
- JsonArray serviceGroup = null;
- JsonArray addressGroup = null;
- //insert data into tables
- try {
- firewallRules = json.getJsonArray("firewallRuleList");
- serviceGroup = json.getJsonArray("serviceGroups");
- addressGroup = json.getJsonArray("addressGroups");
- /*
- * Inserting firewallRuleList data into the Terms, SecurityZone, and Action tables
- */
- if (firewallRules != null) {
- for(int i = 0;i<firewallRules.size();i++) {
- /*
- * Populate ArrayLists with values from the JSON
- */
- //create the JSON object from the JSON Array for each iteration through the for loop
- JsonObject ruleListobj = firewallRules.getJsonObject(i);
-
- //get values from JSON fields of firewallRulesList Array
- String ruleName = ruleListobj.get("ruleName").toString();
- String action = ruleListobj.get("action").toString();
- String description = ruleListobj.get("description").toString();
- List<Object> result = dbConnection.getDataById(TermList.class, "termName", ruleName);
- if(result != null && !result.isEmpty()){
- TermList termEntry = (TermList) result.get(0);
- dbConnection.delete(termEntry);
- }
-
- //getting fromZone Array field from the firewallRulesList
- JsonArray fromZoneArray = ruleListobj.getJsonArray("fromZones");
- String fromZoneString = null;
-
- for (int fromZoneIndex = 0;fromZoneIndex<fromZoneArray.size(); fromZoneIndex++) {
- String value = fromZoneArray.get(fromZoneIndex).toString();
- value = value.replace("\"", "");
- if (fromZoneString != null) {
- fromZoneString = fromZoneString.concat(",").concat(value);
- } else {
- fromZoneString = value;
- }
- }
- String fromZoneInsert = "'"+fromZoneString+"'";
-
- //getting toZone Array field from the firewallRulesList
- JsonArray toZoneArray = ruleListobj.getJsonArray("toZones");
- String toZoneString = null;
- for (int toZoneIndex = 0; toZoneIndex<toZoneArray.size(); toZoneIndex++) {
- String value = toZoneArray.get(toZoneIndex).toString();
- value = value.replace("\"", "");
- if (toZoneString != null) {
- toZoneString = toZoneString.concat(",").concat(value);
- } else {
- toZoneString = value;
- }
- }
- String toZoneInsert = "'"+toZoneString+"'";
-
- //getting sourceList Array fields from the firewallRulesList
- JsonArray srcListArray = ruleListobj.getJsonArray("sourceList");
- String srcListString = null;
- for (int srcListIndex = 0; srcListIndex< srcListArray.size(); srcListIndex++) {
- JsonObject srcListObj = srcListArray.getJsonObject(srcListIndex);
- String type = srcListObj.get("type").toString().replace("\"", "");
-
- String value = null;
- if(type.equals("REFERENCE")||type.equals("GROUP")){
- value = srcListObj.get("name").toString();
- } else if (type.equalsIgnoreCase("ANY")){
- value = null;
- } else {
- value = srcListObj.get("value").toString();
- }
-
- if (value!=null){
- value = value.replace("\"", "");
- }
-
- if (srcListString != null) {
- srcListString = srcListString.concat(",").concat(value);
-
- } else {
- srcListString = value;
- }
-
- }
- String srcListInsert = "'"+srcListString+"'";
-
- //getting destinationList Array fields from the firewallRulesList
- JsonArray destListArray = ruleListobj.getJsonArray("destinationList");
- String destListString = null;
- for (int destListIndex = 0; destListIndex <destListArray.size(); destListIndex++) {
- JsonObject destListObj = destListArray.getJsonObject(destListIndex);
- String type = destListObj.get("type").toString().replace("\"", "");
-
- String value = null;
- if(type.equals("REFERENCE")||type.equals("GROUP")){
- value = destListObj.get("name").toString();
- } else if (type.equalsIgnoreCase("ANY")){
- value = null;
- } else {
- value = destListObj.get("value").toString();
- }
-
- if (value!=null){
- value = value.replace("\"", "");
- }
-
- if (destListString != null) {
- destListString = destListString.concat(",").concat(value);
- } else {
- destListString = value;
- }
- }
- String destListInsert = "'"+destListString+"'";
-
- //getting destServices Array fields from the firewallRulesList
- JsonArray destServicesArray = ruleListobj.getJsonArray("destServices");
- String destPortListString = null;
- for (int destPortListIndex = 0; destPortListIndex < destServicesArray.size(); destPortListIndex++) {
- JsonObject destServicesObj = destServicesArray.getJsonObject(destPortListIndex);
- String type = destServicesObj.get("type").toString().replace("\"", "");
-
- String value = null;
- if(type.equals("REFERENCE")||type.equals("GROUP")){
- value = destServicesObj.get("name").toString();
- } else if (type.equalsIgnoreCase("ANY")){
- value = null;
- } else {
- value = destServicesObj.get("value").toString();
- }
-
- if (value!=null){
- value = value.replace("\"", "");
- }
-
- if (destPortListString != null) {
- destPortListString = destPortListString.concat(",").concat(value);
- } else {
- destPortListString = value;
- }
- }
- String destPortListInsert = "'"+destPortListString+"'";
-
- /*
- * Create Queries to INSERT data into database tables and execute
- */
- UserInfo userInfo = new UserInfo();
- userInfo.setUserLoginId("API");
- userInfo.setUserName("API");
-
- TermList termEntry = new TermList();
- termEntry.setTermName(ruleName);
- termEntry.setSrcIPList(srcListInsert);
- termEntry.setDestIPList(destListInsert);
- termEntry.setProtocolList("null");
- termEntry.setPortList("null");
- termEntry.setSrcPortList("null");
- termEntry.setDestPortList(destPortListInsert);
- termEntry.setAction(action);
- termEntry.setDescription(description);
- termEntry.setFromZones(fromZoneInsert);
- termEntry.setToZones(toZoneInsert);
- termEntry.setUserCreatedBy(userInfo);
- dbConnection.save(termEntry);
-
- ActionList actionEntry = new ActionList();
- actionEntry.setActionName(action);
- actionEntry.setDescription(action);
- dbConnection.save(actionEntry);
- }
- }
-
- /*
- * Inserting serviceGroups data into the ServiceGroup, ServiceList, ProtocolList, and PortList tables
- */
- if (serviceGroup != null) {
- for(int i = 0; i < serviceGroup.size() ; i++) {
- /*
- * Populate ArrayLists with values from the JSON
- */
- //create the JSON object from the JSON Array for each iteration through the for loop
- JsonObject svcGroupListobj = serviceGroup.getJsonObject(i);
-
- String serviceListName = svcGroupListobj.get("name").toString();
- String description = null;
- if (svcGroupListobj.containsKey("description")){
- description = svcGroupListobj.get("description").toString();
- }
-
- //getting members Array from the serviceGroup
- JsonArray membersArray = svcGroupListobj.getJsonArray("members");
-
- //String type = svcGroupListobj.get("type").toString();
- Boolean isServiceGroup = false;
- if (membersArray!=null){
- String membersType = membersArray.getJsonObject(0).get("type").toString();
- if (membersType.contains("REFERENCE")) {
- isServiceGroup = true;
- }
- }
-
- //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);
- } else { //Insert JSON data serviceList table, protollist table, and portlist table
- String type = svcGroupListobj.get("type").toString();
- String transportProtocol = svcGroupListobj.get("transportProtocol").toString();
- String ports = svcGroupListobj.get("ports").toString();
-
- /*
- * 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);
- }
- }
- }
-
- /*
- * Inserting addressGroup data into the ADDRESSGROUP table
- */
- if (addressGroup != null) {
- for(int i = 0; i < addressGroup.size(); i++) {
- /*
- * Populate ArrayLists with values from the JSON
- */
- //create the JSON object from the JSON Array for each iteration through the for loop
- JsonObject addressGroupObj = addressGroup.getJsonObject(i);
-
- //create JSON array for members
- JsonArray membersArray = addressGroupObj.getJsonArray("members");
- String addressGroupName = addressGroupObj.get("name").toString();
-
- String description = null;
- if (addressGroupObj.containsKey("description")){
- description = addressGroupObj.get("description").toString();
- }
-
- String prefixIP = null;
- String type = null;
- for (int membersIndex = 0; membersIndex < membersArray.size(); membersIndex++) {
- JsonObject membersObj = membersArray.getJsonObject(membersIndex);
- //String value = membersObj.get("value").toString();
- 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;
- }
- }
- 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);
- } else {
- PrefixList prefixListEntry = new PrefixList();
- prefixListEntry.setPrefixListName(addressGroupName);
- prefixListEntry.setDescription(description);
- prefixListEntry.setPrefixListValue(prefixList);
- dbConnection.save(prefixListEntry);
- }
- }
- }
-
- /*
- * 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);
- }catch (Exception e) {
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "FirewallConfigPolicy", "Exception getting Json values");
- return false;
- }
- return true;
-
- } else {
- return false;
- }
-
- }
-
-
- private Boolean updateFirewallDictionaryData(String jsonBody, String prevJsonBody) {
- CommonClassDaoImpl dbConnection = new CommonClassDaoImpl();
- JsonObject oldJson = null;
- JsonObject newJson = null;
-
- if (jsonBody != null || prevJsonBody != null) {
-
- oldJson = stringToJson(prevJsonBody);
- newJson = stringToJson(jsonBody);
-
- //if no changes to the json then return true
- if (oldJson != null && oldJson.equals(newJson)) {
- return true;
- }
-
- JsonArray firewallRules = null;
- JsonArray serviceGroup = null;
- JsonArray addressGroup = null;
-
- firewallRules = newJson.getJsonArray("firewallRuleList");
- serviceGroup = newJson.getJsonArray("serviceGroups");
- addressGroup = newJson.getJsonArray("addressGroups");
-
- //insert data into tables
- try {
- JsonNode jsonDiff = createPatch(jsonBody, prevJsonBody);
-
- for (int i = 0; i<jsonDiff.size(); i++) {
- //String path = jsonDiff.get(i).asText();
- String jsonpatch = jsonDiff.get(i).toString();
-
- JsonObject patchObj = stringToJson(jsonpatch);
-
- String path = patchObj.get("path").toString().replace('"', ' ').trim();
-
- if (path.contains("firewallRuleList")) {
- /*
- * Inserting firewallRuleList data into the Terms, SecurityZone, and Action tables
- */
- for(int ri = 0; ri < firewallRules.size(); ri++) {
- /*
- * Populate ArrayLists with values from the JSON
- */
- //create the JSON object from the JSON Array for each iteration through the for loop
- JsonObject ruleListobj = firewallRules.getJsonObject(ri);
-
- //get values from JSON fields of firewallRulesList Array
- String ruleName = ruleListobj.get("ruleName").toString().replace('"', '\'');
- String action = ruleListobj.get("action").toString().replace('"', '\'');
- String description = ruleListobj.get("description").toString().replace('"', '\'');
-
- List<Object> result = dbConnection.getDataById(TermList.class, "termName", ruleName);
- if(result != null && !result.isEmpty()){
- TermList termEntry = (TermList) result.get(0);
- dbConnection.delete(termEntry);
- }
-
- //getting fromZone Array field from the firewallRulesList
- JsonArray fromZoneArray = ruleListobj.getJsonArray("fromZones");
- String fromZoneString = null;
-
- for (int fromZoneIndex = 0; fromZoneIndex<fromZoneArray.size() ; fromZoneIndex++) {
- String value = fromZoneArray.get(fromZoneIndex).toString();
- value = value.replace("\"", "");
-
- if (fromZoneString != null) {
- fromZoneString = fromZoneString.concat(",").concat(value);
-
- } else {
- fromZoneString = value;
- }
-
- }
- String fromZoneInsert = "'"+fromZoneString+"'";
-
- //getting toZone Array field from the firewallRulesList
- JsonArray toZoneArray = ruleListobj.getJsonArray("toZones");
- String toZoneString = null;
-
-
- for (int toZoneIndex = 0; toZoneIndex < toZoneArray.size(); toZoneIndex++) {
- String value = toZoneArray.get(toZoneIndex).toString();
- value = value.replace("\"", "");
-
- if (toZoneString != null) {
- toZoneString = toZoneString.concat(",").concat(value);
-
- } else {
- toZoneString = value;
- }
-
- }
- String toZoneInsert = "'"+toZoneString+"'";
- //getting sourceList Array fields from the firewallRulesList
- JsonArray srcListArray = ruleListobj.getJsonArray("sourceList");
- String srcListString = null;
- for (int srcListIndex = 0; srcListIndex<srcListArray.size(); srcListIndex++) {
- JsonObject srcListObj = srcListArray.getJsonObject(srcListIndex);
- String type = srcListObj.get("type").toString().replace("\"", "");
-
- String value = null;
- if(type.equals("REFERENCE")||type.equals("GROUP")){
- value = srcListObj.get("name").toString();
- } else if (type.equalsIgnoreCase("ANY")){
- value = null;
- } else {
- value = srcListObj.get("value").toString();
- }
-
- if(value != null){
- value = value.replace("\"", "");
- }
-
- if (srcListString != null) {
- srcListString = srcListString.concat(",").concat(value);
-
- } else {
- srcListString = value;
- }
-
- }
- String srcListInsert = "'"+srcListString+"'";
-
- //getting destinationList Array fields from the firewallRulesList
- JsonArray destListArray = ruleListobj.getJsonArray("destinationList");
- String destListString = null;
- for (int destListIndex = 0; destListIndex<destListArray.size(); destListIndex ++) {
- JsonObject destListObj = destListArray.getJsonObject(destListIndex);
- String type = destListObj.get("type").toString().replace("\"", "");
-
- String value = null;
- if(type.equals("REFERENCE")||type.equals("GROUP")){
- value = destListObj.get("name").toString();
- } else if (type.equalsIgnoreCase("ANY")){
- value = null;
- } else {
- value = destListObj.get("value").toString();
- }
-
- if(value != null){
- value = value.replace("\"", "");
- }
-
- if (destListString != null) {
- destListString = destListString.concat(",").concat(value);
- } else {
- destListString = value;
- }
- }
- String destListInsert = "'"+destListString+"'";
-
- //getting destServices Array fields from the firewallRulesList
- JsonArray destServicesArray = ruleListobj.getJsonArray("destServices");
- String destPortListString = null;
- for (int destPortListIndex = 0; destPortListIndex < destServicesArray.size(); destPortListIndex++) {
- JsonObject destServicesObj = destServicesArray.getJsonObject(destPortListIndex);
- String type = destServicesObj.get("type").toString().replace("\"", "");
-
- String value = null;
- if(type.equals("REFERENCE")||type.equals("GROUP")){
- value = destServicesObj.get("name").toString();
- } else if (type.equalsIgnoreCase("ANY")){
- value = null;
- } else {
- value = destServicesObj.get("value").toString();
- }
-
- if(value != null){
- value = value.replace("\"", "");
- }
-
- if (destPortListString != null) {
- destPortListString = destPortListString.concat(",").concat(value);
- } else {
- destPortListString = value;
- }
- }
- String destPortListInsert = "'"+destPortListString+"'";
-
- /*
- * Create Queries to INSERT data into database tables and execute
- */
- UserInfo userInfo = new UserInfo();
- userInfo.setUserLoginId("API");
- userInfo.setUserName("API");
-
- TermList termEntry = new TermList();
- termEntry.setTermName(ruleName);
- termEntry.setSrcIPList(srcListInsert);
- termEntry.setDestIPList(destListInsert);
- termEntry.setProtocolList("null");
- termEntry.setPortList("null");
- termEntry.setSrcPortList("null");
- termEntry.setDestPortList(destPortListInsert);
- termEntry.setAction(action);
- termEntry.setDescription(description);
- termEntry.setFromZones(fromZoneInsert);
- termEntry.setToZones(toZoneInsert);
- termEntry.setUserCreatedBy(userInfo);
- dbConnection.save(termEntry);
-
- 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);
- }
- }
- }
-
- if (path.contains("serviceGroups")) {
- /*
- * Inserting serviceGroups data into the ServiceGroup, ServiceList, ProtocolList, and PortList tables
- */
- for(int si = 0; si < serviceGroup.size(); si++) {
- /*
- * Populate ArrayLists with values from the JSON
- */
- //create the JSON object from the JSON Array for each iteration through the for loop
- JsonObject svcGroupListobj = serviceGroup.getJsonObject(si);
-
- String groupName = svcGroupListobj.get("name").toString().replace('"', '\'');
-
- String description = null;
- if (svcGroupListobj.containsKey("description")){
- description = svcGroupListobj.get("description").toString().replace('"', '\'');
- }
-
- JsonArray membersArray = svcGroupListobj.getJsonArray("members");
-
- Boolean isServiceGroup = false;
- if (membersArray!=null){
- String membersType = membersArray.getJsonObject(0).get("type").toString();
- if (membersType.contains("REFERENCE")) {
- isServiceGroup = true;
- }
- }
-
- //Insert values into GROUPSERVICELIST table if name begins with Group
- if (isServiceGroup) {
- List<Object> result = dbConnection.getDataById(GroupServiceList.class, "name", groupName);
- if(result != null && !result.isEmpty()){
- GroupServiceList groupEntry = (GroupServiceList) result.get(0);
- 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);
- } 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('"', '\'');
- String ports = svcGroupListobj.get("ports").toString().replace('"', '\'');
-
- List<Object> result = dbConnection.getDataById(ServiceList.class, "name", groupName);
- if(result != null && !result.isEmpty()){
- ServiceList serviceEntry = (ServiceList) result.get(0);
- 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);
-
- 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);
- }
-
- 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);
- }
- }
- }
- }
-
- if (path.contains("addressGroups")) {
- /*
- * Inserting addressGroup data into the ADDRESSGROUP table
- */
- for(int ai=0; ai < addressGroup.size() ; ai++) {
-
- /*
- * Populate ArrayLists with values from the JSON
- */
- //create the JSON object from the JSON Array for each iteration through the for loop
- JsonObject addressGroupObj = addressGroup.getJsonObject(ai);
-
- //create JSON array for members
- JsonArray membersArray = addressGroupObj.getJsonArray("members");
- String addressGroupName = addressGroupObj.get("name").toString().replace('"', '\'');
-
- String description = null;
- if (addressGroupObj.containsKey("description")){
- description = addressGroupObj.get("description").toString().replace('"', '\'');
- }
-
- String prefixIP = null;
- String type = null;
- for (int membersIndex=0; membersIndex < membersArray.size(); membersIndex++) {
- JsonObject membersObj = membersArray.getJsonObject(membersIndex);
- 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;
- }
- }
-
- String prefixList = "'"+prefixIP+"'";
- Boolean isAddressGroup = type.contains("REFERENCE");
-
- if (isAddressGroup) {
- List<Object> result = dbConnection.getDataById(AddressGroup.class, "name", addressGroupName);
- if(result != null && !result.isEmpty()){
- 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);
- } 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);
- }
- }
- }
- }
-
- /*
- * 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);
- }catch (Exception e) {
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "FirewallConfigPolicy", "Exception executing Firewall queries");
- return false;
- }
- return true;
- } else {
- return false;
- }
-
- }
-
- private JsonObject stringToJson(String jsonString) {
- JsonObject json = null;
- if (jsonString != null) {
- //Read jsonBody to JsonObject
- StringReader in = null;
- in = new StringReader(jsonString);
-
- JsonReader jsonReader = Json.createReader(in);
- json = jsonReader.readObject();
- jsonReader.close();
- }
- return json;
- }
-
- private JsonNode createPatch(String json, String oldJson) {
- JsonNode oldJason = null;
- JsonNode updatedJason = null;
-
- try {
- oldJason = JsonLoader.fromString(oldJson);
- updatedJason = JsonLoader.fromString(json);
- } catch (IOException e) {
- LOGGER.error("Exception Occured"+e);
- }
- return JsonDiff.asJson(oldJason, updatedJason);
- }
-
- @Override
- public Object getCorrectPolicyDataObject() {
- return policyAdapter.getPolicyData();
- }
-
-} \ No newline at end of file
diff --git a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/MicroServiceConfigPolicy.java b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/MicroServiceConfigPolicy.java
deleted file mode 100644
index 5938faa66..000000000
--- a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/MicroServiceConfigPolicy.java
+++ /dev/null
@@ -1,555 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ECOMP-PAP-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.openecomp.policy.pap.xacml.rest.components;
-
-import java.io.File;
-import java.io.PrintWriter;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-
-import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.lang.StringUtils;
-import org.openecomp.policy.common.logging.eelf.MessageCodes;
-import org.openecomp.policy.common.logging.eelf.PolicyLogger;
-import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
-import org.openecomp.policy.common.logging.flexlogger.Logger;
-import org.openecomp.policy.pap.xacml.rest.daoimpl.CommonClassDaoImpl;
-import org.openecomp.policy.rest.adapter.PolicyRestAdapter;
-import org.openecomp.policy.rest.jpa.MicroServiceModels;
-
-import com.att.research.xacml.std.IdentifierImpl;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.base.Splitter;
-
-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;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeValueType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.EffectType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.MatchType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ObjectFactory;
-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;
-
-public class MicroServiceConfigPolicy extends Policy {
-
- private static final Logger LOGGER = FlexLogger.getLogger(MicroServiceConfigPolicy.class);
-
- private static Map<String, String> mapAttribute = new HashMap<>();
- private static Map<String, String> matchMap = new HashMap<>();
-
- public MicroServiceConfigPolicy() {
- super();
- }
-
- public MicroServiceConfigPolicy(PolicyRestAdapter policyAdapter){
- this.policyAdapter = policyAdapter;
- }
-
- //save configuration of the policy based on the policyname
- private void saveConfigurations(String policyName, String jsonBody) {
- try {
- if(policyName.endsWith(".xml")){
- policyName = policyName.replace(".xml", "");
- }
- PrintWriter out = new PrintWriter(CONFIG_HOME + File.separator + policyName +".json");
- out.println(jsonBody);
- out.close();
- } catch (Exception e) {
- LOGGER.error("Exception Occured While writing Configuration data"+e);
- }
- }
-
-
- @Override
- public Map<String, String> savePolicies() throws Exception {
-
- Map<String, String> successMap = new HashMap<>();
- if(isPolicyExists()){
- successMap.put("EXISTS", "This Policy already exist on the PAP");
- return successMap;
- }
-
- if(!isPreparedToSave()){
- //Prep and configure the policy for saving
- prepareToSave();
- }
-
- // Until here we prepared the data and here calling the method to create xml.
- Path newPolicyPath = null;
- newPolicyPath = Paths.get(policyAdapter.getNewFileName());
-
- successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject());
-
- return successMap;
- }
-
- //This is the method for preparing the policy for saving. We have broken it out
- //separately because the fully configured policy is used for multiple things
- @Override
- public boolean prepareToSave() throws Exception{
-
- if(isPreparedToSave()){
- //we have already done this
- return true;
- }
-
- int version = 0;
- String policyID = policyAdapter.getPolicyID();
- version = policyAdapter.getHighestVersion();
-
- // Create the Instance for pojo, PolicyType object is used in marshalling.
- if (policyAdapter.getPolicyType().equals("Config")) {
- PolicyType policyConfig = new PolicyType();
-
- policyConfig.setVersion(Integer.toString(version));
- policyConfig.setPolicyId(policyID);
- policyConfig.setTarget(new TargetType());
- policyAdapter.setData(policyConfig);
- }
- policyName = policyAdapter.getNewFileName();
- if (policyAdapter.getData() != null) {
- // Save the Configurations file with the policy name with extention based on selection.
- String jsonBody = policyAdapter.getJsonBody();
- saveConfigurations(policyName, jsonBody);
-
- // Make sure the filename ends with an extension
- if (policyName.endsWith(".xml") == false) {
- policyName = policyName + ".xml";
- }
-
-
- PolicyType configPolicy = (PolicyType) policyAdapter.getData();
-
- configPolicy.setDescription(policyAdapter.getPolicyDescription());
-
- configPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId());
-
- AllOfType allOfOne = new AllOfType();
- String fileName = policyAdapter.getNewFileName();
- String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length());
- if ((name == null) || (name.equals(""))) {
- name = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length());
- }
-
- //setup values for pulling out matching attributes
- ObjectMapper mapper = new ObjectMapper();
- JsonNode rootNode = mapper.readTree(policyAdapter.getJsonBody());
- String matching = null;
-
- if (policyAdapter.getTtlDate()==null){
- policyAdapter.setTtlDate("NA");
- }
- if (policyAdapter.getServiceType().contains("-v")){
- matching = getValueFromDictionary(policyAdapter.getServiceType());
- } else {
- String jsonVersion = StringUtils.replaceEach(rootNode.get("version").toString(), new String[]{"\""}, new String[]{""});
- matching = getValueFromDictionary(policyAdapter.getServiceType() + "-v" + jsonVersion);
- }
-
- if (matching != null && !matching.isEmpty()){
- matchMap = Splitter.on(",").withKeyValueSeparator("=").split(matching);
- if(policyAdapter.getJsonBody() != null){
- pullMatchValue(rootNode);
- }
- }
-
- // Match for policyName
- allOfOne.getMatch().add(createMatch("PolicyName", name));
-
- AllOfType allOf = new AllOfType();
-
- // Adding the matches to AllOfType element Match for Ecomp
- allOf.getMatch().add(createMatch("ECOMPName", policyAdapter.getEcompName()));
- if (matchMap==null || matchMap.isEmpty()){
- // Match for ConfigName
- allOf.getMatch().add(createMatch("ConfigName", policyAdapter.getConfigName()));
- // Match for Service
- allOf.getMatch().add(createDynamicMatch("service", policyAdapter.getServiceType()));
- // Match for uuid
- allOf.getMatch().add(createDynamicMatch("uuid", policyAdapter.getUuid()));
- // Match for location
- allOf.getMatch().add(createDynamicMatch("location", policyAdapter.getLocation()));
- }else {
- for (Entry<String, String> matchValue : matchMap.entrySet()){
- String value = matchValue.getValue();
- String key = matchValue.getKey().trim();
- if (value.contains("matching-true")){
- if (mapAttribute.containsKey(key)){
- allOf.getMatch().add(createDynamicMatch(key, mapAttribute.get(key)));
- }
- }
- }
- }
- // Match for riskType
- allOf.getMatch().add(
- createDynamicMatch("RiskType", policyAdapter.getRiskType()));
- // Match for riskLevel
- allOf.getMatch().add(
- createDynamicMatch("RiskLevel", String.valueOf(policyAdapter.getRiskLevel())));
- // Match for riskguard
- allOf.getMatch().add(
- createDynamicMatch("guard", policyAdapter.getGuard()));
- // Match for ttlDate
- allOf.getMatch().add(
- createDynamicMatch("TTLDate", policyAdapter.getTtlDate()));
-
- AnyOfType anyOf = new AnyOfType();
- anyOf.getAllOf().add(allOfOne);
- anyOf.getAllOf().add(allOf);
-
- TargetType target = new TargetType();
- ((TargetType) target).getAnyOf().add(anyOf);
-
- // Adding the target to the policy element
- configPolicy.setTarget((TargetType) target);
-
- RuleType rule = new RuleType();
- rule.setRuleId(policyAdapter.getRuleID());
-
- rule.setEffect(EffectType.PERMIT);
-
- // Create Target in Rule
- AllOfType allOfInRule = new AllOfType();
-
- // Creating match for ACCESS in rule target
- MatchType accessMatch = new MatchType();
- AttributeValueType accessAttributeValue = new AttributeValueType();
- accessAttributeValue.setDataType(STRING_DATATYPE);
- accessAttributeValue.getContent().add("ACCESS");
- accessMatch.setAttributeValue(accessAttributeValue);
- AttributeDesignatorType accessAttributeDesignator = new AttributeDesignatorType();
- URI accessURI = null;
- try {
- accessURI = new URI(ACTION_ID);
- } catch (URISyntaxException e) {
- PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "MicroServiceConfigPolicy", "Exception creating ACCESS URI");
- }
- accessAttributeDesignator.setCategory(CATEGORY_ACTION);
- accessAttributeDesignator.setDataType(STRING_DATATYPE);
- accessAttributeDesignator.setAttributeId(new IdentifierImpl(accessURI).stringValue());
- accessMatch.setAttributeDesignator(accessAttributeDesignator);
- accessMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE);
-
- // Creating Config Match in rule Target
- MatchType configMatch = new MatchType();
- AttributeValueType configAttributeValue = new AttributeValueType();
- configAttributeValue.setDataType(STRING_DATATYPE);
- configAttributeValue.getContent().add("Config");
- configMatch.setAttributeValue(configAttributeValue);
- AttributeDesignatorType configAttributeDesignator = new AttributeDesignatorType();
- URI configURI = null;
- try {
- configURI = new URI(RESOURCE_ID);
- } catch (URISyntaxException e) {
- PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "MicroServiceConfigPolicy", "Exception creating Config URI");
- }
- configAttributeDesignator.setCategory(CATEGORY_RESOURCE);
- configAttributeDesignator.setDataType(STRING_DATATYPE);
- configAttributeDesignator.setAttributeId(new IdentifierImpl(configURI).stringValue());
- configMatch.setAttributeDesignator(configAttributeDesignator);
- configMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE);
-
- allOfInRule.getMatch().add(accessMatch);
- allOfInRule.getMatch().add(configMatch);
-
- AnyOfType anyOfInRule = new AnyOfType();
- anyOfInRule.getAllOf().add(allOfInRule);
-
- TargetType targetInRule = new TargetType();
- targetInRule.getAnyOf().add(anyOfInRule);
-
- rule.setTarget(targetInRule);
- rule.setAdviceExpressions(getAdviceExpressions(version, policyName));
-
- configPolicy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().add(rule);
- policyAdapter.setPolicyData(configPolicy);
-
- } else {
- PolicyLogger.error("Unsupported data object." + policyAdapter.getData().getClass().getCanonicalName());
- }
- setPreparedToSave(true);
- return true;
- }
-
- private void pullMatchValue(JsonNode rootNode) {
- Iterator<Map.Entry<String, JsonNode>> fieldsIterator = rootNode.fields();
- String newValue = null;
- while (fieldsIterator.hasNext()) {
- Map.Entry<String, JsonNode> field = fieldsIterator.next();
- final String key = field.getKey();
- final JsonNode value = field.getValue();
- if (value.isContainerNode() && !value.isArray()) {
- pullMatchValue(value); // RECURSIVE CALL
- } else {
- newValue = StringUtils.replaceEach(value.toString(), new String[]{"[", "]", "\""}, new String[]{"", "", ""});
- mapAttribute.put(key, newValue);
- }
- }
-
- }
-
- private String getValueFromDictionary(String service){
- String ruleTemplate=null;
- String modelName = service.split("-v")[0];
- String modelVersion = service.split("-v")[1];
-
- CommonClassDaoImpl dbConnection = new CommonClassDaoImpl();
- List<Object> result = dbConnection.getDataById(MicroServiceModels.class, "modelName:version", modelName+":"+modelVersion);
- if(result != null && !result.isEmpty()){
- MicroServiceModels model = (MicroServiceModels) result.get(0);
- ruleTemplate = model.getAnnotation();
- }
- return ruleTemplate;
- }
-
- // Data required for Advice part is setting here.
- private AdviceExpressionsType getAdviceExpressions(int version, String fileName) {
- AdviceExpressionsType advices = new AdviceExpressionsType();
- AdviceExpressionType advice = new AdviceExpressionType();
- advice.setAdviceId("MSID");
- advice.setAppliesTo(EffectType.PERMIT);
- // For Configuration
- AttributeAssignmentExpressionType assignment1 = new AttributeAssignmentExpressionType();
- assignment1.setAttributeId("type");
- assignment1.setCategory(CATEGORY_RESOURCE);
- assignment1.setIssuer("");
-
- AttributeValueType configNameAttributeValue = new AttributeValueType();
- configNameAttributeValue.setDataType(STRING_DATATYPE);
- configNameAttributeValue.getContent().add("Configuration");
- assignment1.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue));
-
- advice.getAttributeAssignmentExpression().add(assignment1);
- // For Config file Url if configurations are provided.
- AttributeAssignmentExpressionType assignment2 = new AttributeAssignmentExpressionType();
- assignment2.setAttributeId("URLID");
- assignment2.setCategory(CATEGORY_RESOURCE);
- assignment2.setIssuer("");
-
- AttributeValueType AttributeValue = new AttributeValueType();
- AttributeValue.setDataType(URI_DATATYPE);
- String configName;
- if(policyName.endsWith(".xml")){
- configName = policyName.replace(".xml", "");
- }else{
- configName = policyName;
- }
- String content = CONFIG_URL +"/Config/" + configName + ".json";
- AttributeValue.getContent().add(content);
- assignment2.setExpression(new ObjectFactory().createAttributeValue(AttributeValue));
-
- advice.getAttributeAssignmentExpression().add(assignment2);
- AttributeAssignmentExpressionType assignment3 = new AttributeAssignmentExpressionType();
- assignment3.setAttributeId("PolicyName");
- assignment3.setCategory(CATEGORY_RESOURCE);
- assignment3.setIssuer("");
-
- AttributeValueType attributeValue3 = new AttributeValueType();
- attributeValue3.setDataType(STRING_DATATYPE);
- fileName = FilenameUtils.removeExtension(fileName);
- fileName = fileName + ".xml";
- String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length());
- if ((name == null) || (name.equals(""))) {
- name = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length());
- }
- attributeValue3.getContent().add(name);
- assignment3.setExpression(new ObjectFactory().createAttributeValue(attributeValue3));
- advice.getAttributeAssignmentExpression().add(assignment3);
-
- AttributeAssignmentExpressionType assignment4 = new AttributeAssignmentExpressionType();
- assignment4.setAttributeId("VersionNumber");
- assignment4.setCategory(CATEGORY_RESOURCE);
- assignment4.setIssuer("");
-
- AttributeValueType configNameAttributeValue4 = new AttributeValueType();
- configNameAttributeValue4.setDataType(STRING_DATATYPE);
- configNameAttributeValue4.getContent().add(Integer.toString(version));
- assignment4.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue4));
-
- advice.getAttributeAssignmentExpression().add(assignment4);
-
- AttributeAssignmentExpressionType assignment5 = new AttributeAssignmentExpressionType();
- assignment5.setAttributeId("matching:" + ECOMPID);
- assignment5.setCategory(CATEGORY_RESOURCE);
- assignment5.setIssuer("");
-
- AttributeValueType configNameAttributeValue5 = new AttributeValueType();
- configNameAttributeValue5.setDataType(STRING_DATATYPE);
- configNameAttributeValue5.getContent().add(policyAdapter.getEcompName());
- assignment5.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue5));
-
- advice.getAttributeAssignmentExpression().add(assignment5);
-
- AttributeAssignmentExpressionType assignment7 = new AttributeAssignmentExpressionType();
- assignment7.setAttributeId("matching:service");
- assignment7.setCategory(CATEGORY_RESOURCE);
- assignment7.setIssuer("");
-
- AttributeValueType configNameAttributeValue7 = new AttributeValueType();
- configNameAttributeValue7.setDataType(STRING_DATATYPE);
- configNameAttributeValue7.getContent().add(policyAdapter.getServiceType());
- assignment7.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue7));
-
- advice.getAttributeAssignmentExpression().add(assignment7);
-
- if (matchMap==null || matchMap.isEmpty()){
- AttributeAssignmentExpressionType assignment6 = new AttributeAssignmentExpressionType();
- assignment6.setAttributeId("matching:" + CONFIGID);
- assignment6.setCategory(CATEGORY_RESOURCE);
- assignment6.setIssuer("");
-
- AttributeValueType configNameAttributeValue6 = new AttributeValueType();
- configNameAttributeValue6.setDataType(STRING_DATATYPE);
- configNameAttributeValue6.getContent().add(policyAdapter.getConfigName());
- assignment6.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue6));
-
- advice.getAttributeAssignmentExpression().add(assignment6);
-
-
- AttributeAssignmentExpressionType assignment8 = new AttributeAssignmentExpressionType();
- assignment8.setAttributeId("matching:uuid");
- assignment8.setCategory(CATEGORY_RESOURCE);
- assignment8.setIssuer("");
-
- AttributeValueType configNameAttributeValue8 = new AttributeValueType();
- configNameAttributeValue8.setDataType(STRING_DATATYPE);
- configNameAttributeValue8.getContent().add(policyAdapter.getUuid());
- assignment8.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue8));
-
- advice.getAttributeAssignmentExpression().add(assignment8);
-
- AttributeAssignmentExpressionType assignment9 = new AttributeAssignmentExpressionType();
- assignment9.setAttributeId("matching:Location");
- assignment9.setCategory(CATEGORY_RESOURCE);
- assignment9.setIssuer("");
-
- AttributeValueType configNameAttributeValue9 = new AttributeValueType();
- configNameAttributeValue9.setDataType(STRING_DATATYPE);
- configNameAttributeValue9.getContent().add(policyAdapter.getLocation());
- assignment9.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue9));
-
- advice.getAttributeAssignmentExpression().add(assignment9);
- } else {
- for (Entry<String, String> matchValue : matchMap.entrySet()){
- String value = matchValue.getValue();
- String key = matchValue.getKey().trim();
- if (value.contains("matching-true")){
- if (mapAttribute.containsKey(key)){
- AttributeAssignmentExpressionType assignment9 = new AttributeAssignmentExpressionType();
- assignment9.setAttributeId("matching:" + key);
- assignment9.setCategory(CATEGORY_RESOURCE);
- assignment9.setIssuer("");
-
- AttributeValueType configNameAttributeValue9 = new AttributeValueType();
- configNameAttributeValue9.setDataType(STRING_DATATYPE);
- configNameAttributeValue9.getContent().add(mapAttribute.get(key));
- assignment9.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue9));
-
- advice.getAttributeAssignmentExpression().add(assignment9);
-
- }
- }
- }
- }
-
- AttributeAssignmentExpressionType assignment10 = new AttributeAssignmentExpressionType();
- assignment10.setAttributeId("Priority");
- assignment10.setCategory(CATEGORY_RESOURCE);
- assignment10.setIssuer("");
-
- AttributeValueType configNameAttributeValue10 = new AttributeValueType();
- configNameAttributeValue10.setDataType(STRING_DATATYPE);
- configNameAttributeValue10.getContent().add(policyAdapter.getPriority());
- assignment10.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue10));
-
- advice.getAttributeAssignmentExpression().add(assignment10);
-
- //Risk Attributes
- AttributeAssignmentExpressionType assignment11 = new AttributeAssignmentExpressionType();
- assignment11.setAttributeId("RiskType");
- assignment11.setCategory(CATEGORY_RESOURCE);
- assignment11.setIssuer("");
-
- AttributeValueType configNameAttributeValue11 = new AttributeValueType();
- configNameAttributeValue11.setDataType(STRING_DATATYPE);
- configNameAttributeValue11.getContent().add(policyAdapter.getRiskType());
- assignment11.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue11));
-
- advice.getAttributeAssignmentExpression().add(assignment11);
-
- AttributeAssignmentExpressionType assignment12 = new AttributeAssignmentExpressionType();
- assignment12.setAttributeId("RiskLevel");
- assignment12.setCategory(CATEGORY_RESOURCE);
- assignment12.setIssuer("");
-
- AttributeValueType configNameAttributeValue12 = new AttributeValueType();
- configNameAttributeValue12.setDataType(STRING_DATATYPE);
- configNameAttributeValue12.getContent().add(policyAdapter.getRiskLevel());
- assignment12.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue12));
-
- advice.getAttributeAssignmentExpression().add(assignment12);
-
- AttributeAssignmentExpressionType assignment13 = new AttributeAssignmentExpressionType();
- assignment13.setAttributeId("guard");
- assignment13.setCategory(CATEGORY_RESOURCE);
- assignment13.setIssuer("");
-
- AttributeValueType configNameAttributeValue13 = new AttributeValueType();
- configNameAttributeValue13.setDataType(STRING_DATATYPE);
- configNameAttributeValue13.getContent().add(policyAdapter.getGuard());
- assignment13.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue13));
-
- advice.getAttributeAssignmentExpression().add(assignment13);
-
- AttributeAssignmentExpressionType assignment14 = new AttributeAssignmentExpressionType();
- assignment14.setAttributeId("TTLDate");
- assignment14.setCategory(CATEGORY_RESOURCE);
- assignment14.setIssuer("");
-
- AttributeValueType configNameAttributeValue14 = new AttributeValueType();
- configNameAttributeValue14.setDataType(STRING_DATATYPE);
- configNameAttributeValue14.getContent().add(policyAdapter.getTtlDate());
- assignment14.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue14));
-
- advice.getAttributeAssignmentExpression().add(assignment14);
-
- advices.getAdviceExpression().add(advice);
- return advices;
- }
-
- @Override
- public Object getCorrectPolicyDataObject() {
- return policyAdapter.getPolicyData();
- }
-}
diff --git a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/Policy.java b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/Policy.java
deleted file mode 100644
index bdd36123f..000000000
--- a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/Policy.java
+++ /dev/null
@@ -1,416 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ECOMP-PAP-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.openecomp.policy.pap.xacml.rest.components;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.json.Json;
-import javax.json.JsonReader;
-
-import org.apache.commons.io.FilenameUtils;
-import org.json.JSONObject;
-import org.openecomp.policy.common.logging.eelf.MessageCodes;
-import org.openecomp.policy.common.logging.eelf.PolicyLogger;
-import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
-import org.openecomp.policy.common.logging.flexlogger.Logger;
-import org.openecomp.policy.rest.XACMLRestProperties;
-import org.openecomp.policy.rest.adapter.PolicyRestAdapter;
-import org.openecomp.policy.xacml.util.XACMLPolicyWriter;
-
-import com.att.research.xacml.std.IdentifierImpl;
-import com.att.research.xacml.util.XACMLProperties;
-import com.att.research.xacmlatt.pdp.policy.PolicyDef;
-import com.att.research.xacmlatt.pdp.policy.dom.DOMPolicyDef;
-
-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;
-
-public abstract class Policy {
-
- private static final Logger LOGGER = FlexLogger.getLogger(Policy.class);
-
-
- /**
- * Common Fields
- */
- public static final String GET_INT_TYPE = "Integer";
- public static final String GET_STRING_TYPE = "String";
-
- public static final String ECOMPID = "ECOMPName";
- public static final String CONFIGID = "ConfigName";
- public static final String CLOSEDLOOPID = "ServiceType";
-
- public static final String CONFIG_POLICY = "Config";
- public static final String ACTION_POLICY = "Action";
- public static final String DECISION_POLICY = "Decision";
-
- protected String policyName = null;
-
- protected boolean isValidForm = true;
-
- private Path finalPolicyPath = null;
-
- private boolean preparedToSave = false;
-
- private boolean policyExists = false;
-
- public Path getFinalPolicyPath() {
- return finalPolicyPath;
- }
-
- public void setFinalPolicyPath(Path finalPolicyPath) {
- this.finalPolicyPath = finalPolicyPath;
- }
-
- // Constants Used in XML Creation
- public static final String CATEGORY_RECIPIENT_SUBJECT = "urn:oasis:names:tc:xacml:1.0:subject-category:recipient-subject";
- public static final String CATEGORY_RESOURCE = "urn:oasis:names:tc:xacml:3.0:attribute-category:resource";
- public static final String CATEGORY_ACTION = "urn:oasis:names:tc:xacml:3.0:attribute-category:action";
- public static final String CATEGORY_ACCESS_SUBJECT = "urn:oasis:names:tc:xacml:1.0:subject-category:access-subject";
- public static final String ACTION_ID = "urn:oasis:names:tc:xacml:1.0:action:action-id";
- public static final String SUBJECT_ID = "urn:oasis:names:tc:xacml:1.0:subject:subject-id";
- public static final String RESOURCE_ID = "urn:oasis:names:tc:xacml:1.0:resource:resource-id";
- public static final String FUNTION_INTEGER_ONE_AND_ONLY = "urn:oasis:names:tc:xacml:1.0:function:integer-one-and-only";
- public static final String FUNCTION_STRING_ONE_AND_ONLY = "urn:oasis:names:tc:xacml:1.0:function:string-one-and-only";
- public static final String FUNCTION_BOOLEAN_ONE_AND_ONLY = "urn:oasis:names:tc:xacml:1.0:function:boolean-one-and-only";
- public static final String FUNCTION_STRING_EQUAL = "urn:oasis:names:tc:xacml:1.0:function:string-equal";
- public static final String FUNCTION_STRING_REGEX_MATCH = "org.openecomp.function.regex-match";
- public static final String FUNCTION_STRING_REGEXP_MATCH = "urn:oasis:names:tc:xacml:1.0:function:string-regexp-match";
- public static final String FUNCTION_STRING_EQUAL_IGNORE = "urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case";
- public static final String INTEGER_DATATYPE = "http://www.w3.org/2001/XMLSchema#integer";
- public static final String BOOLEAN_DATATYPE = "http://www.w3.org/2001/XMLSchema#boolean";
- public static final String STRING_DATATYPE = "http://www.w3.org/2001/XMLSchema#string";
- public static final String URI_DATATYPE = "http://www.w3.org/2001/XMLSchema#anyURI";
- public static final String RULE_VARIABLE = "var:";
- public static final String EMPTY_STRING = "";
- private static final String String = null;
-
- public static String CONFIG_HOME = null;
- public static String ACTION_HOME = null;
- public static String CONFIG_URL = null;
-
- protected Map<String, String> performer = new HashMap<>();
-
- private static String actionHome = null;
- private static String configHome = null;
-
- public PolicyRestAdapter policyAdapter = null;
- String ruleID = "";
-
- public Policy() {
- CONFIG_HOME = getConfigHome();
- ACTION_HOME = getActionHome();
- CONFIG_URL = "$URL";
- performer.put("PDP", "PDPAction");
- performer.put("PEP", "PEPAction");
- }
-
- //Each policy type seems to either use policyData or data field policy adapter when
- //getting the xml to save the policy. Instead of keep this hardcoded in the save method,
- //this method makes it usable outside.
- /**
- * Return the data field of the PolicyAdapter that will be used when saving this policy
- * with the savePolicies method.
- * @return Either the PolicyAdapter.getData() or PolicyAdapter.getPolicyData()
- */
- public abstract Object getCorrectPolicyDataObject();
- public abstract Map<String, String> savePolicies() throws Exception;
-
- //This is the method for preparing the policy for saving. We have broken it out
- //separately because the fully configured policy is used for multiple things
- public abstract boolean prepareToSave() throws Exception;
-
-
- // create match for ecomp and config name
- protected MatchType createMatch(String key, String value) {
- MatchType match = new MatchType();
-
- AttributeValueType attributeValue = new AttributeValueType();
- attributeValue.setDataType(STRING_DATATYPE);
- attributeValue.getContent().add(value);
- match.setAttributeValue(attributeValue);
- AttributeDesignatorType attributeDesignator = new AttributeDesignatorType();
- URI uri = null;
- try {
- uri = new URI(key);
- } catch (URISyntaxException e) {
- LOGGER.error("Exception Occured"+e);
- }
- attributeDesignator.setCategory(CATEGORY_ACCESS_SUBJECT);
- attributeDesignator.setDataType(STRING_DATATYPE);
- attributeDesignator.setAttributeId(new IdentifierImpl(uri).stringValue());
- match.setAttributeDesignator(attributeDesignator);
- match.setMatchId(FUNCTION_STRING_REGEX_MATCH);
- return match;
- }
-
- // Creating the match for dynamically added components.
- protected MatchType createDynamicMatch(String key, String value) {
- MatchType dynamicMatch = new MatchType();
- AttributeValueType dynamicAttributeValue = new AttributeValueType();
- String dataType = null;
- dataType = STRING_DATATYPE;
- dynamicAttributeValue.setDataType(dataType);
- dynamicAttributeValue.getContent().add(value);
- dynamicMatch.setAttributeValue(dynamicAttributeValue);
-
- AttributeDesignatorType dynamicAttributeDesignator = new AttributeDesignatorType();
-
- URI dynamicURI = null;
- try {
- dynamicURI = new URI(key);
- } catch (URISyntaxException e) {
- LOGGER.error("Exception Occured"+e);// log msg
- }
- dynamicAttributeDesignator.setCategory(CATEGORY_RESOURCE);
- dynamicAttributeDesignator.setDataType(dataType);
- dynamicAttributeDesignator.setAttributeId(new IdentifierImpl(dynamicURI).stringValue());
- dynamicMatch.setAttributeDesignator(dynamicAttributeDesignator);
- dynamicMatch.setMatchId(FUNCTION_STRING_REGEX_MATCH);
-
- return dynamicMatch;
- }
-
- //validation for numeric
- protected boolean isNumeric(String str){
- for (char c : str.toCharArray()){
- if (!Character.isDigit(c)) return false;
- }
- return true;
- }
-
- // Validation for json.
- protected static boolean isJSONValid(String data) {
- JsonReader jsonReader = null;
- try {
- new JSONObject(data);
- InputStream stream = new ByteArrayInputStream(data.getBytes(StandardCharsets.UTF_8));
- jsonReader = Json.createReader(stream);
- LOGGER.info("Json Value is: " + jsonReader.read().toString() );
- } catch (Exception e) {
- LOGGER.error("Exception Occured while reading json"+e);
- return false;
- }finally{
- if(jsonReader != null){
- jsonReader.close();
- }
- }
- return true;
- }
-
- // the Policy Name as Unique One throws error
- @SuppressWarnings("static-access")
- protected Path getNextFilename(Path parent, String policyType, String polcyFileName, Integer version) {
- policyType = FilenameUtils.removeExtension(policyType);
- polcyFileName = FilenameUtils.removeExtension(polcyFileName);
- Path newFile = null;
- String policyDir = EMPTY_STRING;
- String absolutePath = parent.toString();
- if (absolutePath != null && !absolutePath.equals(EMPTY_STRING)) {
- policyDir = absolutePath.substring(absolutePath.lastIndexOf("\\") + 1, absolutePath.length());
- if (policyDir == null || policyDir.equals(EMPTY_STRING)) {
- policyDir = absolutePath.substring(absolutePath.lastIndexOf("/") + 1, absolutePath.length());
- }
- }
-
- String fileName = "default";
- if (policyDir != null && !policyDir.equals(EMPTY_STRING)) {
- fileName = policyType + "_" + String.format(polcyFileName) + "." + version + ".xml";
- }
- if (fileName != null) {
- newFile = Paths.get(parent.toString(), fileName);
- }
- if (Files.notExists(newFile)) {
- return newFile;
- }
- return null;
- }
-
- protected Path getNextLoopFilename(Path parentPath, String policyType, String policyConfigType, String policyFileName, Integer version) {
- policyType = FilenameUtils.removeExtension(policyType);
- policyConfigType = FilenameUtils.removeExtension(policyConfigType);
- policyFileName = FilenameUtils.removeExtension(policyFileName);
- Path newFile = null;
- String policyDir = EMPTY_STRING;
- String absolutePath = parentPath.toString();
- if (absolutePath != null && !absolutePath.equals(EMPTY_STRING)) {
- policyDir = absolutePath.substring(absolutePath.lastIndexOf("\\") + 1, absolutePath.length());
- if (policyDir == null || policyDir.equals(EMPTY_STRING)) {
- policyDir = absolutePath.substring(absolutePath.lastIndexOf("/") + 1, absolutePath.length());
- }
- }
-
- String fileName = "default";
- if (policyDir != null && !policyDir.equals(EMPTY_STRING)) {
- if(policyConfigType.equals("ClosedLoop_PM")){
- fileName = policyType + "_" + "PM" + "_" +java.lang.String.format(policyFileName) + "." +version +".xml";
- }else if(policyConfigType.equals("ClosedLoop_Fault")){
- fileName = policyType + "_" + "Fault" + "_" +java.lang.String.format(policyFileName) + "." + version + ".xml";
- }else if(policyConfigType.equals("ClosedLoop_Fault")){
- fileName = policyType + "_" + "Fault" + "_" +java.lang.String.format(policyFileName) + "." + version + ".xml";
- }else if(policyConfigType.equals("Micro Service")){
- fileName = policyType + "_" + "MS" + "_" + java.lang.String.format(policyFileName) + "." + version + ".xml";
- }
- }
- if (fileName != null) {
- newFile = Paths.get(parentPath.toString(), fileName);
- }
- if (Files.notExists(newFile)) {
- return newFile;
- }
- return null;
- }
-
-
- //create policy once all the validations are completed
- protected Map<String, String> createPolicy(final Path policyPath, final Object policyData) {
- Map<String, String> success = new HashMap<>();
- //
- // Is the root a PolicySet or Policy?
- //
-
- if (policyData instanceof PolicyType) {
- //
- // Write it out
- //
- //Does not need to be XACMLPolicyWriterWithPapNotify since it is already in the PAP
- //and this transaction is intercepted up stream.
- InputStream inputStream = null;
- try {
- inputStream = XACMLPolicyWriter.getXmlAsInputStream((PolicyType) policyData);
- PolicyDef policyDef = DOMPolicyDef.load(inputStream);
- if (policyDef == null) {
- success.put("validation", "PolicyDef Validation Failed");
- }else{
- success.put("success", "success");
- }
- } catch (Exception e) {
- LOGGER.error("PolicyDef Validation failed"+e);
- success.put("error", "Validation Failed");
- }finally{
- try {
- if(inputStream != null)
- inputStream.close();
- } catch (IOException e) {
- LOGGER.error("Exception Occured while closing the input stream"+e);
- }
- }
- } else {
- PolicyLogger.error("Unknown data type sent back.");
- return success;
- }
- return success;
- }
-
- public static String getConfigHome(){
- try {
- loadWebapps();
- } catch (Exception e) {
- return null;
- }
- return configHome;
- }
-
- public static String getActionHome(){
- try {
- loadWebapps();
- } catch (Exception e) {
- return null;
- }
- return actionHome;
- }
-
- private static void loadWebapps() throws Exception{
- if(actionHome == null || configHome == null){
- Path webappsPath = Paths.get(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_WEBAPPS));
- //Sanity Check
- if (webappsPath == null) {
- PolicyLogger.error("Invalid Webapps Path Location property : " + XACMLRestProperties.PROP_PAP_WEBAPPS);
- throw new Exception("Invalid Webapps Path Location property : " + XACMLRestProperties.PROP_PAP_WEBAPPS);
- }
- Path webappsPathConfig;
- Path webappsPathAction;
- if(webappsPath.toString().contains("\\")){
- webappsPathConfig = Paths.get(webappsPath.toString()+"\\Config");
- webappsPathAction = Paths.get(webappsPath.toString()+"\\Action");
- }else{
- webappsPathConfig = Paths.get(webappsPath.toString()+"/Config");
- webappsPathAction = Paths.get(webappsPath.toString()+"/Action");
- }
- if(Files.notExists(webappsPathConfig)){
- try {
- Files.createDirectories(webappsPathConfig);
- } catch (IOException e) {
- PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "Policy", "Failed to create config directory");
- }
- }
- if(Files.notExists(webappsPathAction)){
- try {
- Files.createDirectories(webappsPathAction);
- } catch (IOException e) {
- PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "Policy", "Failed to create config directory");
- }
- }
- actionHome = webappsPathAction.toString();
- configHome = webappsPathConfig.toString();
- }
- }
-
- public boolean validateConfigForm() {
- return true;
- }
-
- /**
- * @return the preparedToSave
- */
- public boolean isPreparedToSave() {
- return preparedToSave;
- }
-
- /**
- * @param preparedToSave the preparedToSave to set
- */
- protected void setPreparedToSave(boolean preparedToSave) {
- this.preparedToSave = preparedToSave;
- }
-
- public boolean isPolicyExists() {
- return policyExists;
- }
-
- public void setPolicyExists(boolean policyExists) {
- this.policyExists = policyExists;
- }
-
-
-}
diff --git a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/PolicyDBDao.java b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/PolicyDBDao.java
deleted file mode 100644
index 2297413e8..000000000
--- a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/PolicyDBDao.java
+++ /dev/null
@@ -1,2798 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ECOMP-PAP-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.openecomp.policy.pap.xacml.rest.components;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.StringReader;
-import java.net.HttpURLConnection;
-import java.net.MalformedURLException;
-import java.net.ProtocolException;
-import java.net.URL;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.InvalidPathException;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.security.Key;
-import java.util.Base64;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.UUID;
-
-import javax.crypto.Cipher;
-import javax.crypto.spec.SecretKeySpec;
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.LockModeType;
-import javax.persistence.PersistenceException;
-import javax.persistence.Query;
-import javax.persistence.RollbackException;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.xpath.XPath;
-import javax.xml.xpath.XPathFactory;
-
-import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.io.IOUtils;
-import org.openecomp.policy.common.logging.eelf.MessageCodes;
-import org.openecomp.policy.common.logging.eelf.PolicyLogger;
-import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
-import org.openecomp.policy.common.logging.flexlogger.Logger;
-import org.openecomp.policy.pap.xacml.rest.XACMLPapServlet;
-import org.openecomp.policy.rest.XACMLRestProperties;
-import org.openecomp.policy.rest.adapter.PolicyRestAdapter;
-import org.openecomp.policy.rest.jpa.ActionBodyEntity;
-import org.openecomp.policy.rest.jpa.ConfigurationDataEntity;
-import org.openecomp.policy.rest.jpa.DatabaseLockEntity;
-import org.openecomp.policy.rest.jpa.GroupEntity;
-import org.openecomp.policy.rest.jpa.PdpEntity;
-import org.openecomp.policy.rest.jpa.PolicyDBDaoEntity;
-import org.openecomp.policy.rest.jpa.PolicyEntity;
-import org.openecomp.policy.rest.util.Webapps;
-import org.openecomp.policy.xacml.api.pap.EcompPDP;
-import org.openecomp.policy.xacml.api.pap.EcompPDPGroup;
-import org.openecomp.policy.xacml.api.pap.PAPPolicyEngine;
-import org.openecomp.policy.xacml.std.pap.StdPDPGroup;
-import org.openecomp.policy.xacml.std.pap.StdPDPPolicy;
-import org.openecomp.policy.xacml.util.XACMLPolicyWriter;
-import org.w3c.dom.Document;
-import org.xml.sax.InputSource;
-
-import com.att.research.xacml.api.pap.PAPException;
-import com.att.research.xacml.api.pap.PDP;
-import com.att.research.xacml.api.pap.PDPPolicy;
-import com.att.research.xacml.util.XACMLProperties;
-
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType;
-
-public class PolicyDBDao {
- private static final Logger logger = FlexLogger.getLogger(PolicyDBDao.class);
- private List<?> otherServers;
- private EntityManagerFactory emf;
- private static PolicyDBDao currentInstance = null;
- private PAPPolicyEngine papEngine;
-
- public static final String JSON_CONFIG = "JSON";
- public static final String XML_CONFIG = "XML";
- public static final String PROPERTIES_CONFIG = "PROPERTIES";
- public static final String OTHER_CONFIG = "OTHER";
- public static final String AUDIT_USER = "audit";
-
- /**
- * Get an instance of a PolicyDBDao. It creates one if it does not exist.
- * Only one instance is allowed to be created per server.
- * @param emf The EntityFactoryManager to be used for database connections
- * @return The new instance of PolicyDBDao or throw exception if the given emf is null.
- * @throws IllegalStateException if a PolicyDBDao has already been constructed. Call getPolicyDBDaoInstance() to get this.
- */
- public static PolicyDBDao getPolicyDBDaoInstance(EntityManagerFactory emf) throws Exception{
- logger.debug("getPolicyDBDaoInstance(EntityManagerFactory emf) as getPolicyDBDaoInstance("+emf+") called");
- if(currentInstance == null){
- if(emf != null){
- currentInstance = new PolicyDBDao(emf);
- return currentInstance;
- }
- throw new IllegalStateException("The EntityManagerFactory is Null");
- }
- return currentInstance;
- }
-
- /**
- * Gets the current instance of PolicyDBDao.
- * @return The instance of PolicyDBDao or throws exception if the given instance is null.
- * @throws IllegalStateException if a PolicyDBDao instance is null. Call createPolicyDBDaoInstance(EntityManagerFactory emf) to get this.
- */
- public static PolicyDBDao getPolicyDBDaoInstance() throws Exception{
- logger.debug("getPolicyDBDaoInstance() as getPolicyDBDaoInstance() called");
- if(currentInstance != null){
- return currentInstance;
- }
- throw new IllegalStateException("The PolicyDBDao.currentInstance is Null. Use getPolicyDBDao(EntityManagerFactory emf)");
- }
- public void setPapEngine(PAPPolicyEngine papEngine2){
- this.papEngine = (PAPPolicyEngine) papEngine2;
- }
- private PolicyDBDao(EntityManagerFactory emf){
- logger.debug("PolicyDBDao(EntityManagerFactory emf) as PolicyDBDao("+emf+") called");
- this.emf = emf;
-
- //not needed in this release
- if(!register()){
- PolicyLogger.error("This server's PolicyDBDao instance could not be registered and may not reveive updates");
- }
-
- otherServers = getRemotePolicyDBDaoList();
- if(logger.isDebugEnabled()){
- logger.debug("Number of remote PolicyDBDao instances: "+otherServers.size());
- }
- if(otherServers.isEmpty()){
- logger.warn("List of PolicyDBDao servers is empty or could not be retrieved");
- }
- }
-
- //not static because we are going to be using the instance's emf
- //waitTime in ms to wait for lock, or -1 to wait forever (no)
- private void startTransactionSynced(EntityManager entityMgr,int waitTime){
- logger.debug("\n\nstartTransactionSynced(EntityManager entityMgr,int waitTime) as "
- + "\n startTransactionSynced("+entityMgr+","+waitTime+") called\n\n");
- DatabaseLockEntity lock = null;
-
- entityMgr.setProperty("javax.persistence.query.timeout", waitTime);
- entityMgr.getTransaction().begin();
-
- if(logger.isDebugEnabled()){
- Map<String,Object> properties = entityMgr.getProperties();
- logger.debug("\n\nstartTransactionSynced():"
- + "\n entityManager.getProperties() = " + properties
- + "\n\n");
- }
- try{
- if(logger.isDebugEnabled()){
- logger.debug("\n\nstartTransactionSynced():"
- + "\n ATTEMPT to get the DB lock"
- + "\n\n");
- }
- lock = entityMgr.find(DatabaseLockEntity.class, 1, LockModeType.PESSIMISTIC_WRITE);
- if(logger.isDebugEnabled()){
- logger.debug("\n\nstartTransactionSynced():"
- + "\n GOT the DB lock"
- + "\n\n");
- }
- } catch(Exception e){
- System.out.println("Could not get lock entity");
- logger.error("Exception Occured"+e);
- }
- if(lock == null){
- throw new IllegalStateException("The lock row does not exist in the table. Please create a primary key with value = 1.");
- }
-
- }
- /**
- * Gets the list of other registered PolicyDBDaos from the database
- * @return List (type PolicyDBDaoEntity) of other PolicyDBDaos
- */
- private List<?> getRemotePolicyDBDaoList(){
- logger.debug("getRemotePolicyDBDaoList() as getRemotePolicyDBDaoList() called");
- List<?> policyDBDaoEntityList = new LinkedList<>();
- EntityManager em = emf.createEntityManager();
- startTransactionSynced(em, 1000);
- try{
- Query getPolicyDBDaoEntityQuery = em.createNamedQuery("PolicyDBDaoEntity.findAll");
- policyDBDaoEntityList = getPolicyDBDaoEntityQuery.getResultList();
-
- } catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Exception querying for other registered PolicyDBDaos");
- logger.warn("List of remote PolicyDBDaos will be empty");
- }
- try{
- em.getTransaction().commit();
- } catch(Exception e){
- try{
- em.getTransaction().rollback();
- } catch(Exception e2){
-
- }
- }
- em.close();
- return policyDBDaoEntityList;
- }
-
- public PolicyDBDaoTransaction getNewTransaction(){
- logger.debug("getNewTransaction() as getNewTransaction() called");
- return (PolicyDBDaoTransaction)(new PolicyDBDaoTransactionInstance());
- }
-
- /*
- * Because the normal transactions are not used in audits, we can use the same transaction
- * mechanism to get a transaction and obtain the emlock and the DB lock. We just need to
- * provide different transaction timeout values in ms because the audit will run longer
- * than normal transactions.
- */
- public PolicyDBDaoTransaction getNewAuditTransaction(){
- logger.debug("getNewAuditTransaction() as getNewAuditTransaction() called");
- //Use the standard transaction wait time in ms
- int auditWaitMs = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_TRANS_WAIT));
- //Use the (extended) audit timeout time in ms
- int auditTimeoutMs = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_AUDIT_TIMEOUT));
- return (PolicyDBDaoTransaction)(new PolicyDBDaoTransactionInstance(auditTimeoutMs, auditWaitMs));
- }
-
-
- /**
- * Checks if two strings are equal. Null strings ARE allowed.
- * @param one A String or null to compare
- * @param two A String or null to compare
- */
- private static boolean stringEquals(String one, String two){
- logger.debug("stringEquals(String one, String two) as stringEquals("+one+", "+two+") called");
- if(one == null && two == null){
- return true;
- }
- if(one == null || two == null){
- return false;
- }
- return one.equals(two);
- }
-
- /**
- * Computes the scope in dotted format based on an absolute path and a path that divides the scope.
- * @param fullPath An absolute path including scope folders and other folders(does not have to be absolute, must just contain scope and other folders before)
- * @param pathToExclude The path that acts as a division between the scope and the other folders
- * @return The scope in dotted format (org.openecomp)
- */
- private static String computeScope(String fullPath, String pathToExclude){
- logger.debug("computeScope(String fullPath, String pathToExclude) as computeScope("+fullPath+", "+pathToExclude+") called");
- int excludeIndex = fullPath.indexOf(pathToExclude);
- String scopePath = fullPath.substring(excludeIndex+pathToExclude.length());
- String scope = scopePath.replace('\\', '.');
- scope = scope.replace('/', '.');
- if(scope.charAt(0) == '.'){
- scope = scope.substring(1);
- }
- if(scope.charAt(scope.length()-1) == '.'){
- scope = scope.substring(0, scope.length()-1);
- }
- return scope;
- }
-
- /**
- * Returns the url of this local pap server, removing the username and password, if they are present
- * @return The url of this local pap server
- */
- private String[] getPapUrlUserPass(){
- logger.debug("getPapUrl() as getPapUrl() called");
- String url = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_URL);
- if(url == null){
- return null;
- }
- return splitPapUrlUserPass(url);
-
-
- }
- private String[] splitPapUrlUserPass(String url){
- String[] urlUserPass = new String[3];
- String[] commaSplit = url.split(",");
- urlUserPass[0] = commaSplit[0];
- if(commaSplit.length > 2){
- urlUserPass[1] = commaSplit[1];
- urlUserPass[2] = commaSplit[2];
- }
- if(urlUserPass[1] == null || urlUserPass[1].equals("")){
- String usernamePropertyValue = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_USERID);
- if(usernamePropertyValue != null){
- urlUserPass[1] = usernamePropertyValue;
- }
- }
- if(urlUserPass[2] == null || urlUserPass[2].equals("")){
- String passwordPropertyValue = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_PASS);
- if(passwordPropertyValue != null){
- urlUserPass[2] = passwordPropertyValue;
- }
- }
- //if there is no comma, for some reason there is no username and password, so don't try to cut them off
- return urlUserPass;
- }
-
- private static String encryptPassword(String password) throws Exception{
- Cipher cipher = Cipher.getInstance("AES");
- cipher.init(Cipher.ENCRYPT_MODE, aesKey());
- byte[] encryption = cipher.doFinal(password.getBytes("UTF-8"));
- System.out.println(encryption);
- return new String(Base64.getMimeEncoder().encode(encryption),"UTF-8");
- }
-
- private static String decryptPassword(String encryptedPassword) throws Exception{
- Cipher cipher = Cipher.getInstance("AES");
- cipher.init(Cipher.DECRYPT_MODE, aesKey());
- byte[] password = cipher.doFinal(Base64.getDecoder().decode(encryptedPassword.getBytes("UTF-8")));
- return new String(password,"UTF-8");
- }
- private static Key aesKey(){
- byte[] aesValue = (new String("njrmbklcxtoplawf")).getBytes();
- return new SecretKeySpec(aesValue,"AES");
- }
- /**
- * Register the PolicyDBDao instance in the PolicyDBDaoEntity table
- * @return Boolean, were we able to register?
- */
- private boolean register(){
- logger.debug("register() as register() called");
- String[] url = getPapUrlUserPass();
- EntityManager em = emf.createEntityManager();
- try{
- startTransactionSynced(em, 1000);
- } catch(IllegalStateException e){
- logger.debug ("\nPolicyDBDao.register() caught an IllegalStateException: \n" +e + "\n");
- DatabaseLockEntity lock;
- lock = em.find(DatabaseLockEntity.class, 1);
- if(lock==null){
- lock = new DatabaseLockEntity();
- em.persist(lock);
- lock.setKey(1);
- try{
- em.flush();
- em.getTransaction().commit();
- em.close();
- } catch(Exception e2){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e2, "PolicyDBDao", "COULD NOT CREATE DATABASELOCK ROW. WILL TRY ONE MORE TIME");
- }
- em = null;
- em = emf.createEntityManager();
- try{
- startTransactionSynced(em, 1000);
- } catch(Exception e3){
- String msg = "DATABASE LOCKING NOT WORKING. CONCURRENCY CONTROL NOT WORKING";
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e3, "PolicyDBDao", msg);
- throw new IllegalStateException("msg" + "\n" + e3);
- }
- }
- }
- logger.debug("\nPolicyDBDao.register. Database locking and concurrency control is initialized\n");
- PolicyDBDaoEntity foundPolicyDBDaoEntity = em.find(PolicyDBDaoEntity.class, url[0]);
- Query getPolicyDBDaoEntityQuery = em.createQuery("SELECT e FROM PolicyDBDaoEntity e WHERE e.policyDBDaoUrl=:url");
- getPolicyDBDaoEntityQuery.setParameter("url", url[0]);
- if(foundPolicyDBDaoEntity == null){
- PolicyDBDaoEntity newPolicyDBDaoEntity = new PolicyDBDaoEntity();
- em.persist(newPolicyDBDaoEntity);
- newPolicyDBDaoEntity.setPolicyDBDaoUrl(url[0]);
- newPolicyDBDaoEntity.setDescription("PAP server at "+url[0]);
- newPolicyDBDaoEntity.setUsername(url[1]);
- try{
- newPolicyDBDaoEntity.setPassword(encryptPassword(url[2]));
- } catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Could not encrypt PAP password");
- }
- try{
- em.getTransaction().commit();
- } catch(Exception e){
- try{
- em.getTransaction().rollback();
- } catch(Exception e2){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e2, "PolicyDBDao", "Could not add new PolicyDBDao to the database");
- }
- }
- } else {
- //just want to update in order to change modified date
- String encryptedPassword = null;
- try{
- encryptedPassword = encryptPassword(url[2]);
- } catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Could not encrypt PAP password");
- }
- if(url[1] != null && !stringEquals(url[1], foundPolicyDBDaoEntity.getUsername())){
- foundPolicyDBDaoEntity.setUsername(url[1]);
- }
- if(encryptedPassword != null && !stringEquals(encryptedPassword, foundPolicyDBDaoEntity.getPassword())){
- foundPolicyDBDaoEntity.setPassword(encryptedPassword);
- }
- foundPolicyDBDaoEntity.preUpdate();
- try{
- em.getTransaction().commit();
- } catch(Exception e){
- try{
- em.getTransaction().rollback();
- } catch(Exception e2){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e2, "PolicyDBDao", "Could not update PolicyDBDao in the database");
- }
- }
- }
- em.close();
- logger.debug("\nPolicyDBDao.register(). Success!!\n");
- return true;
- }
- public void notifyOthers(long entityId,String entityType){
- notifyOthers(entityId,entityType,null);
- }
- public void notifyOthers(long entityId, String entityType, String newGroupId){
- logger.debug("notifyOthers(long entityId, String entityType, long newGroupId) as notifyOthers("+entityId+","+entityType+","+newGroupId+") called");
- LinkedList<Thread> notifyThreads = new LinkedList<>();
-
- //we're going to run notifications in parallel threads to speed things up
- for(Object obj : otherServers){
-
- Thread newNotifyThread = new Thread(new NotifyOtherThread(obj, entityId, entityType, newGroupId));
-
- newNotifyThread.start();
-
- notifyThreads.add(newNotifyThread);
-
- }
- //we want to wait for all notifications to complete or timeout before we unlock the interface and allow more changes
- for(Thread t : notifyThreads){
- try {
- t.join();
- } catch (Exception e) {
- logger.warn("Could not join a notifcation thread" + e);
- }
- }
-
-
- }
-
- private class NotifyOtherThread implements Runnable {
- public NotifyOtherThread(Object obj, long entityId, String entityType, String newGroupId){
- this.obj = obj;
- this.entityId = entityId;
- this.entityType = entityType;
- this.newGroupId = newGroupId;
- }
- private Object obj;
- private long entityId;
- private String entityType;
- private String newGroupId;
- @Override
- public void run(){
- //naming of 'o' is for backwards compatibility with the rest of the function
- PolicyDBDaoEntity dbdEntity = (PolicyDBDaoEntity)obj;
- String o = dbdEntity.getPolicyDBDaoUrl();
- String username = dbdEntity.getUsername();
- String password;
- try{
- password = decryptPassword(dbdEntity.getPassword());
- } catch(Exception e){
- //if we can't decrypt, might as well try it anyway
- password = dbdEntity.getPassword();
- }
- Base64.Encoder encoder = Base64.getEncoder();
- String encoding = encoder.encodeToString((username+":"+password).getBytes(StandardCharsets.UTF_8));
- HttpURLConnection connection = null;
- UUID requestID = UUID.randomUUID();
- URL url;
- try {
- String papUrl = getPapUrlUserPass()[0];
- if(papUrl == null){
- papUrl = "undefined";
- }
- logger.debug("We are going to try to notify "+o);
- //is this our own url?
- String ourUrl = o;
- try{
- ourUrl = splitPapUrlUserPass((String)o)[0];
- }catch(Exception e){
- ourUrl = o;
- }
- if(o == null){
- o = "undefined";
- }
- if(papUrl.equals(ourUrl)){
- logger.debug(((String)o)+" is our url, skipping notify");
- return;
- }
- if(newGroupId == null){
- url = new URL(((String)o)+"?policydbdaourl="+papUrl+"&entityid="+entityId+"&entitytype="+entityType);
- } else {
- url = new URL(((String)o)+"?policydbdaourl="+papUrl+"&entityid="+entityId+"&entitytype="+entityType+"&extradata="+newGroupId);
- }
- } catch (MalformedURLException e) {
- logger.warn("Caught MalformedURLException on: new URL()", e);
- return;
- }
- //
- // Open up the connection
- //
- logger.debug("Connecting with url: "+url);
- try {
- connection = (HttpURLConnection)url.openConnection();
- } catch (Exception e) {
- logger.warn("Caught exception on: url.openConnection()",e);
- return;
- }
- //
- // Setup our method and headers
- //
- try {
- connection.setRequestMethod("PUT");
- } catch (ProtocolException e) {
- //why would this error ever occur?
- logger.warn("Caught ProtocolException on connection.setRequestMethod(\"PUT\");",e);
- return;
- }
- connection.setRequestProperty("Authorization", "Basic " + encoding);
- connection.setRequestProperty("Accept", "text/x-java-properties");
- connection.setRequestProperty("Content-Type", "text/x-java-properties");
- connection.setRequestProperty("requestID", requestID.toString());
- int readTimeout;
- try{
- readTimeout = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_NOTIFY_TIMEOUT));
-
- } catch(Exception e){
- logger.error("xacml.rest.pap.notify.timeoutms property not set, using a default.");
- readTimeout = 10000;
- }
- connection.setReadTimeout(readTimeout);
- connection.setConnectTimeout(readTimeout);
- connection.setUseCaches(false);
- //
- // Adding this in. It seems the HttpUrlConnection class does NOT
- // properly forward our headers for POST re-direction. It does so
- // for a GET re-direction.
- //
- // So we need to handle this ourselves.
- //
- connection.setInstanceFollowRedirects(false);
- connection.setDoOutput(true);
- connection.setDoInput(true);
- try {
- connection.connect();
- } catch (Exception e) {
- logger.warn("Caught exception on: connection.connect()",e);
- return;
- }
- try {
- if (connection.getResponseCode() == 200) {
- logger.info("Received response 200 from pap server on notify");
- //notified = true;
- } else {
- logger.warn("connection response code not 200, received: "+connection.getResponseCode());
- }
- } catch (Exception e) {
- logger.warn("Caught Exception on: connection.getResponseCode() ", e);
- }
-
-
- connection.disconnect();
- }
- }
-
- private static String evaluateXPath(String expression, String xml) {
- InputSource source = new InputSource(new StringReader(xml));
-
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- String description = "";
- try{
- DocumentBuilder db = dbf.newDocumentBuilder();
- Document document = db.parse(source);
-
- XPathFactory xpathFactory = XPathFactory.newInstance();
- XPath xpath = xpathFactory.newXPath();
-
-
- description = xpath.evaluate(expression, document);
- }catch(Exception e){
- logger.error("Exception Occured while evaluating path"+e);
- }
-
- return description;
- }
-
- private static String getDescriptionFromXacml(String xacmlData){
- String openTag = "<Description>";
- String closeTag = "</Description>";
- int descIndex = xacmlData.indexOf(openTag);
- int endDescIndex = xacmlData.indexOf(closeTag);
- String desc = xacmlData.substring(descIndex+openTag.length(),endDescIndex);
- return desc;
- }
-
- private final String POLICY_NOTIFICATION = "policy";
- private final String PDP_NOTIFICATION = "pdp";
- private final String GROUP_NOTIFICATION = "group";
- public void handleIncomingHttpNotification(String url, String entityId, String entityType, String extraData, XACMLPapServlet xacmlPapServlet){
- logger.info("DBDao url: " + url + " has reported an update on "+entityType+" entity "+entityId);
- PolicyDBDaoTransaction transaction = this.getNewTransaction();
- //although its named retries, this is the total number of tries
- int retries;
- try{
- retries = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_INCOMINGNOTIFICATION_TRIES));
-
- } catch(Exception e){
- logger.error("xacml.rest.pap.incomingnotification.tries property not set, using a default of 3."+e);
- retries = 3;
- }
- //if someone sets it to some dumb value, we need to make sure it will try at least once
- if(retries < 1){
- retries = 1;
- }
- int pauseBetweenRetries = 1000;
- switch(entityType){
-
- case POLICY_NOTIFICATION:
- for(int i=0; i<retries;i++){
- try{
- handleIncomingPolicyChange(url, entityId,extraData);
- break;
- } catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught exception on handleIncomingPolicyChange("+url+", "+entityId+", "+extraData+")");
- }
- try{
- Thread.sleep(pauseBetweenRetries);
- }catch(InterruptedException ie){
- break;
- }
- }
- break;
- case PDP_NOTIFICATION:
- for(int i=0; i<retries;i++){
- try{
- handleIncomingPdpChange(url, entityId, transaction);
- break;
- } catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught exception on handleIncomingPdpChange("+url+", "+entityId+", "+transaction+")");
- }
- try{
- Thread.sleep(pauseBetweenRetries);
- }catch(InterruptedException ie){
- break;
- }
- }
- break;
- case GROUP_NOTIFICATION:
- for(int i=0; i<retries;i++){
- try{
- handleIncomingGroupChange(url, entityId, extraData, transaction, xacmlPapServlet);
- break;
- }catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught exception on handleIncomingGroupChange("+url+", "+entityId+", "+extraData+", "+transaction+", "+xacmlPapServlet+")");
- }
- try{
- Thread.sleep(pauseBetweenRetries);
- }catch(InterruptedException ie){
- break;
- }
- }
- break;
- }
- //no changes should be being made in this function, we still need to close
- transaction.rollbackTransaction();
- }
- private void handleIncomingGroupChange(String url, String groupId, String extraData,PolicyDBDaoTransaction transaction,XACMLPapServlet xacmlPapServlet) throws PAPException{
- GroupEntity groupRecord = null;
- long groupIdLong = -1;
- try{
- groupIdLong = Long.parseLong(groupId);
- } catch(NumberFormatException e){
- throw new IllegalArgumentException("groupId "+groupId+" cannot be parsed into a long");
- }
- try{
- groupRecord = transaction.getGroup(groupIdLong);
- } catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to get pdp group record with transaction.getGroup("+groupIdLong+");");
- throw new PAPException("Could not get local group "+groupIdLong);
- }
- if(groupRecord == null){
- throw new PersistenceException("The group record returned is null");
- }
- //compare to local fs
- //does group folder exist
- EcompPDPGroup localGroup = null;
- try {
- localGroup = papEngine.getGroup(groupRecord.getGroupId());
- } catch (Exception e) {
- logger.warn("Caught PAPException trying to get local pdp group with papEngine.getGroup("+groupId+");",e);
- }
- if(localGroup == null && extraData != null){
- //here we can try to load an old group id from the extraData
- try{
- localGroup = papEngine.getGroup(extraData);
- }catch(Exception e){
- logger.warn("Caught PAPException trying to get local pdp group with papEngine.getGroup("+extraData+");",e);
- }
- }
- if(localGroup != null && groupRecord.isDeleted()){
- EcompPDPGroup newLocalGroup = null;
- if(extraData != null){
- try {
- newLocalGroup = papEngine.getGroup(extraData);
- } catch (PAPException e) {
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught PAPException trying to get new pdp group with papEngine.getGroup("+extraData+");");
- }
- }
- try {
- papEngine.removeGroup(localGroup, newLocalGroup);
- } catch (NullPointerException | PAPException e) {
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught PAPException trying to get remove pdp group with papEngine.removeGroup("+localGroup+", "+newLocalGroup+");");
- throw new PAPException("Could not remove group "+groupId);
- }
- }
- else if(localGroup == null){
- //creating a new group
- try {
- papEngine.newGroup(groupRecord.getgroupName(), groupRecord.getDescription());
- } catch (NullPointerException | PAPException e) {
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught PAPException trying to create pdp group with papEngine.newGroup(groupRecord.getgroupName(), groupRecord.getDescription());");
- throw new PAPException("Could not create group "+groupRecord);
- }
- try {
- localGroup = papEngine.getGroup(groupRecord.getGroupId());
- } catch (PAPException e1) {
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e1, "PolicyDBDao", "Caught PAPException trying to get pdp group we just created with papEngine.getGroup(groupRecord.getGroupId());\nAny PDPs or policies in the new group may not have been added");
- return;
- }
- //add possible pdps to group
- List<?> pdpsInGroup = transaction.getPdpsInGroup(Long.parseLong(groupRecord.getGroupId()));
- for(Object pdpO : pdpsInGroup){
- PdpEntity pdp = (PdpEntity)pdpO;
- try {
- papEngine.newPDP(pdp.getPdpId(), localGroup, pdp.getPdpName(), pdp.getDescription(), pdp.getJmxPort());
- } catch (NullPointerException | PAPException e) {
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught PAPException trying to get create pdp with papEngine.newPDP(pdp.getPdpId(), localGroup, pdp.getPdpName(), pdp.getDescription(), pdp.getJmxPort());");
- throw new PAPException("Could not create pdp "+pdp);
- }
- }
- //add possible policies to group (filesystem only, apparently)
- } else {
- if(!(localGroup instanceof StdPDPGroup)){
- throw new PAPException("group is not a StdPDPGroup");
- }
- //clone the object
- //because it will be comparing the new group to its own version
- StdPDPGroup localGroupClone = new StdPDPGroup(localGroup.getId(),localGroup.isDefaultGroup(),localGroup.getName(),localGroup.getDescription(),((StdPDPGroup)localGroup).getDirectory());
- localGroupClone.setEcompPdps(localGroup.getEcompPdps());
- localGroupClone.setPipConfigs(localGroup.getPipConfigs());
- localGroupClone.setStatus(localGroup.getStatus());
- //we are updating a group or adding a policy or changing default
- //set default if it should be
- if(!localGroupClone.isDefaultGroup() && groupRecord.isDefaultGroup()){
- try {
- papEngine.SetDefaultGroup(localGroup);
- return;
- } catch (PAPException e) {
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught PAPException trying to set default group with papEngine.SetDefaultGroup("+localGroupClone+");");
- throw new PAPException("Could not set default group to "+localGroupClone);
- }
- }
- boolean needToUpdate = false;
- if(updateGroupPoliciesInFileSystem(localGroupClone,localGroup, groupRecord, transaction)){
- needToUpdate = true;
- }
- if(!stringEquals(localGroupClone.getId(),groupRecord.getGroupId()) || !stringEquals(localGroupClone.getName(),groupRecord.getgroupName())){
- //changing ids
- //we do not want to change the id, the papEngine will do this for us, it needs to know the old id
- localGroupClone.setName(groupRecord.getgroupName());
- needToUpdate = true;
- }
- if(!stringEquals(localGroupClone.getDescription(),groupRecord.getDescription())){
- localGroupClone.setDescription(groupRecord.getDescription());
- needToUpdate = true;
- }
- if(needToUpdate){
- try {
-
- papEngine.updateGroup(localGroupClone);
- } catch (PAPException e) {
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught PAPException trying to update group with papEngine.updateGroup("+localGroupClone+");");
- throw new PAPException("Could not update group "+localGroupClone);
- }
- }
-
- }
- //call command that corresponds to the change that was made
- }
- //this will also handle removes, since incoming pdpGroup has no policies internally, we are just going to add them all in from the db
- private boolean updateGroupPoliciesInFileSystem(EcompPDPGroup pdpGroup,EcompPDPGroup oldPdpGroup, GroupEntity groupRecord, PolicyDBDaoTransaction transaction) throws PAPException{
- if(!(pdpGroup instanceof StdPDPGroup)){
- throw new PAPException("group is not a StdPDPGroup");
- }
- StdPDPGroup group = (StdPDPGroup)pdpGroup;
- //this must always be true since we don't explicitly know when a delete is occuring
- boolean didUpdate = true;
- HashMap<String,PDPPolicy> currentPolicySet = new HashMap<String,PDPPolicy>(oldPdpGroup.getPolicies().size());
- HashSet<PDPPolicy> newPolicySet = new HashSet<>();
- for(PDPPolicy pdpPolicy : oldPdpGroup.getPolicies()){
- currentPolicySet.put(pdpPolicy.getId(), pdpPolicy);
- }
- for(PolicyEntity policy : groupRecord.getPolicies()){
- String pdpPolicyName = getPdpPolicyName(policy.getPolicyName(), policy.getScope());
- if(group.getPolicy(pdpPolicyName) == null){
- didUpdate = true;
- if(currentPolicySet.containsKey(pdpPolicyName)){
- newPolicySet.add(currentPolicySet.get(pdpPolicyName));
- } else{
- InputStream policyStream = new ByteArrayInputStream(policy.getPolicyData().getBytes());
- group.copyPolicyToFile(pdpPolicyName,policyStream);
- ((StdPDPPolicy)(group.getPolicy(pdpPolicyName))).setName(removeExtensionAndVersionFromPolicyName(policy.getPolicyName()));
- try {
- policyStream.close();
- } catch (IOException e) {
- didUpdate = false;
- PolicyLogger.error(e.getMessage() +e);
- }
- }
- }
- }
- if(didUpdate){
- newPolicySet.addAll(group.getPolicies());
- group.setPolicies(newPolicySet);
- }
- return didUpdate;
-
- }
- private String removeExtensionAndVersionFromPolicyName(String originalPolicyName){
- return getPolicyNameAndVersionFromPolicyFileName(originalPolicyName)[0];
- }
-
- /**
- * Splits apart the policy name and version from a policy file path
- * @param originalPolicyName: a policy file name ex: Config_policy.2.xml
- * @return An array [0]: The policy name, [1]: the policy version, as a string
- */
- private String[] getPolicyNameAndVersionFromPolicyFileName(String originalPolicyName){
- String policyName = originalPolicyName;
- String[] nameAndVersion = new String[2];
- try{
- policyName = removeFileExtension(policyName);
- nameAndVersion[0] = policyName.substring(0,policyName.lastIndexOf('.'));
- if(isNullOrEmpty(nameAndVersion[0])){
- throw new Exception();
- }
- } catch(Exception e){
- nameAndVersion[0] = originalPolicyName;
- }
- try{
- nameAndVersion[1] = policyName.substring(policyName.lastIndexOf('.')+1);
- if(isNullOrEmpty(nameAndVersion[1])){
- throw new Exception();
- }
- } catch(Exception e){
- nameAndVersion[1] = "1";
- }
- return nameAndVersion;
- }
-
- private void handleIncomingPdpChange(String url, String pdpId, PolicyDBDaoTransaction transaction) throws PAPException{
- //get pdp
- long pdpIdLong = -1;
- try{
- pdpIdLong = Long.parseLong(pdpId);
- }catch(NumberFormatException e){
- throw new IllegalArgumentException("pdpId "+pdpId+" cannot be parsed into a long");
- }
- PdpEntity pdpRecord = null;
- try{
- pdpRecord = transaction.getPdp(pdpIdLong);
- }catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to get pdp record with transaction.getPdp("+pdpIdLong+");");
- throw new PAPException("Could not get local pdp "+pdpIdLong);
- }
- if(pdpRecord == null){
- throw new PersistenceException("The pdpRecord returned is null");
- }
- PDP localPdp = null;
- try {
- localPdp = papEngine.getPDP(pdpRecord.getPdpId());
- } catch (PAPException e) {
- logger.warn("Caught PAPException trying to get local pdp with papEngine.getPDP("+pdpId+");",e);
- }
- if(localPdp != null && pdpRecord.isDeleted()){
- try {
- papEngine.removePDP((EcompPDP) localPdp);
- } catch (PAPException e) {
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught PAPException trying to get remove pdp with papEngine.removePDP("+localPdp+");");
- throw new PAPException("Could not remove pdp "+pdpId);
- }
- }
- else if(localPdp == null){
- //add new pdp
- //get group
- EcompPDPGroup localGroup = null;
- try {
- localGroup = papEngine.getGroup(pdpRecord.getGroup().getGroupId());
- } catch (PAPException e1) {
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e1, "PolicyDBDao", "Caught PAPException trying to get local group to add pdp to with papEngine.getGroup(pdpRecord.getGroup().getGroupId());");
- throw new PAPException("Could not get local group");
- }
- try {
- papEngine.newPDP(pdpRecord.getPdpId(), localGroup, pdpRecord.getPdpName(), pdpRecord.getDescription(), pdpRecord.getJmxPort());
- } catch (NullPointerException | PAPException e) {
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught PAPException trying to create pdp with papEngine.newPDP("+pdpRecord.getPdpId()+", "+localGroup+", "+pdpRecord.getPdpName()+", "+pdpRecord.getDescription()+", "+pdpRecord.getJmxPort()+");");
- throw new PAPException("Could not create pdp "+pdpRecord);
- }
- } else {
- boolean needToUpdate = false;
- if(!stringEquals(localPdp.getId(),pdpRecord.getPdpId()) || !stringEquals(localPdp.getName(),pdpRecord.getPdpName())){
- //again, we don't want to change the id, the papEngine will do this
- localPdp.setName(pdpRecord.getPdpName());
- needToUpdate = true;
- }
- if(!stringEquals(localPdp.getDescription(),pdpRecord.getDescription())){
- localPdp.setDescription(pdpRecord.getDescription());
- needToUpdate = true;
- }
- String localPdpGroupId = null;
- try{
- localPdpGroupId = papEngine.getPDPGroup((EcompPDP) localPdp).getId();
- } catch(PAPException e){
- //could be null or something, just warn at this point
- logger.warn("Caught PAPException trying to get id of local group that pdp is in with localPdpGroupId = papEngine.getPDPGroup(localPdp).getId();",e);
- }
- if(!stringEquals(localPdpGroupId,pdpRecord.getGroup().getGroupId())){
- EcompPDPGroup newPdpGroup = null;
- try{
- newPdpGroup = papEngine.getGroup(pdpRecord.getGroup().getGroupId());
- }catch(PAPException e){
- //ok, now we have an issue. Time to stop things
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught PAPException trying to get id of local group to move pdp to with papEngine.getGroup(pdpRecord.getGroup().getGroupId());");
- throw new PAPException("Could not get local group");
- }
- try{
- papEngine.movePDP((EcompPDP) localPdp, newPdpGroup);
- }catch(PAPException e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught PAPException trying to move pdp with papEngine.movePDP(localPdp, newPdpGroup);");
- throw new PAPException("Could not move pdp "+localPdp);
- }
- }
- if(((PdpEntity) localPdp).getJmxPort() != pdpRecord.getJmxPort()){
- ((PdpEntity) localPdp).setJmxPort(pdpRecord.getJmxPort());
- needToUpdate = true;
- }
- if(needToUpdate){
- try {
- papEngine.updatePDP((EcompPDP) localPdp);
- } catch (PAPException e) {
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught PAPException trying to update pdp with papEngine.updatePdp("+localPdp+");");
- throw new PAPException("Could not update pdp "+localPdp);
- }
- }
- }
- //compare to local situation
- //call command to update
- }
- private void handleIncomingPolicyChange(String url, String policyId,String oldPathString){
- String policyName = null;
- EntityManager em = emf.createEntityManager();
- Query getPolicyEntityQuery = em.createNamedQuery("PolicyEntity.FindById");
- getPolicyEntityQuery.setParameter("id", Long.valueOf(policyId));
-
- @SuppressWarnings("unchecked")
- List<PolicyEntity> policies = getPolicyEntityQuery.getResultList();
- PolicyEntity policy = null;
- if (!policies.isEmpty()){
- policy = policies.get(0);
- }
- String action = "unknown action";
- try {
- if(policy != null){
- policyName = policy.getPolicyName();
- logger.debug("Deleting Policy: " + policy.getPolicyName());
- action = "delete";
- Path subFile = null;
-
- if (policy.getConfigurationData()!= null){
- subFile = getPolicySubFile(policy.getConfigurationData().getConfigurationName(), "Config");
- }else if(policy.getActionBodyEntity()!= null){
- subFile = getPolicySubFile(policy.getActionBodyEntity().getActionBodyName(), "Action");
- }
-
- if(subFile != null){
- Files.deleteIfExists(subFile);
- }
- if (policy.getConfigurationData()!= null){
- writePolicySubFile(policy, "Config");
- }else if(policy.getActionBodyEntity()!= null){
- writePolicySubFile(policy, "Action");
- }
- }
- } catch (IOException e1) {
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e1, "PolicyDBDao", "Error occurred while performing [" + action + "] of Policy File: " + policyName);
- }
- }
-
- private String getPdpPolicyName(String name, String scope){
- String finalName = "";
- finalName += scope;
- finalName += ".";
- finalName += removeFileExtension(name);
- finalName += ".xml";
- return finalName;
- }
- private String removeFileExtension(String fileName){
- return fileName.substring(0, fileName.lastIndexOf('.'));
- }
-
- private Path getPolicySubFile(String filename, String subFileType){
- logger.debug("getPolicySubFile(" + filename + ", " + subFileType + ")");
- Path filePath = Paths.get(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_WEBAPPS).toString(), subFileType);
- File file = null;
-
- filename = FilenameUtils.removeExtension(filename);
-
- for(File tmpFile : filePath.toFile().listFiles()){
- if (FilenameUtils.removeExtension(tmpFile.getName()).equals(filename)){
- file = tmpFile;
- }
- }
-
- Path finalPath = null;
- if (file!= null){
- finalPath = Paths.get(file.getAbsolutePath());
- }
-
- logger.debug("end of getPolicySubFile: " + finalPath);
- return finalPath;
- }
-
- private boolean writePolicySubFile(PolicyEntity policy, String policyType){
- logger.info("writePolicySubFile with policyName[" + policy.getPolicyName() + "] and policyType[" + policyType + "]");
- String type = null;
- String subTypeName = null;
- String subTypeBody = null;
- if (policyType.equalsIgnoreCase("config")){
- type = "Config";
- subTypeName = FilenameUtils.removeExtension(policy.getConfigurationData().getConfigurationName());
- subTypeBody = policy.getConfigurationData().getConfigBody();
-
- String configType = policy.getConfigurationData().getConfigType();
-
-
- if (configType != null) {
- if (configType.equals(JSON_CONFIG)) {
- subTypeName = subTypeName + ".json";
- }
- if (configType.equals(XML_CONFIG)) {
- subTypeName = subTypeName + ".xml";
- }
- if (configType.equals(PROPERTIES_CONFIG)) {
- subTypeName = subTypeName + ".properties";
- }
- if (configType.equals(OTHER_CONFIG)) {
- subTypeName = subTypeName + ".txt";
- }
- }
-
- }else if (policyType.equalsIgnoreCase("action")){
- type = "Action";
- subTypeName = policy.getActionBodyEntity().getActionBodyName();
- subTypeBody = policy.getActionBodyEntity().getActionBody();
-
-
- }
- Path filePath = Paths.get(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_WEBAPPS).toString(), type);
-
- if(subTypeBody == null){
- subTypeBody = "";
- }
- boolean success = false;
- try {
- Files.deleteIfExists(Paths.get(filePath.toString(), subTypeName));
- File file = Paths.get(filePath.toString(),subTypeName).toFile();
- file.createNewFile();
- FileWriter fileWriter = new FileWriter(file, false); // false to overwrite
- fileWriter.write(subTypeBody);
- fileWriter.close();
- success = true;
-
- } catch (Exception e) {
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Exception occured while creating Configuration File for Policy : " + policy.getPolicyName());
- }
-
- return success;
-
- }
-
- public void auditLocalDatabase(PAPPolicyEngine papEngine2){
- logger.debug("PolicyDBDao.auditLocalDatabase() is called");
- try{
- deleteAllGroupTables();
- auditGroups(papEngine2);
- } catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "auditLocalDatabase() error");
- logger.error("Exception Occured"+e);
- }
- }
-
- public void deleteAllGroupTables(){
- logger.debug("PolicyDBDao.deleteAllGroupTables() called");
- EntityManager em = emf.createEntityManager();
- em.getTransaction().begin();
-
- Query deletePdpEntityEntityTableUpdate = em.createNamedQuery("PdpEntity.deleteAll");
- deletePdpEntityEntityTableUpdate.executeUpdate();
-
- Query deleteGroupEntityTableUpdate = em.createNamedQuery("GroupEntity.deleteAll");
- deleteGroupEntityTableUpdate.executeUpdate();
-
- em.getTransaction().commit();
- em.close();
- }
-
- @SuppressWarnings("unchecked")
- public void auditGroups(PAPPolicyEngine papEngine2){
- logger.debug("PolicyDBDao.auditGroups() called");
-
- EntityManager em = emf.createEntityManager();
- em.getTransaction().begin();
- final String AUDIT_STR = "Audit";
- try{
-
- Set<EcompPDPGroup> groups = papEngine2.getEcompPDPGroups();
-
- for (EcompPDPGroup grp : groups){
- try{
- GroupEntity groupEntity = new GroupEntity();
- em.persist(groupEntity);
- groupEntity.setGroupName(grp.getName());
- groupEntity.setDescription(grp.getDescription());
- groupEntity.setDefaultGroup(grp.isDefaultGroup());
- groupEntity.setCreatedBy(AUDIT_STR);
- groupEntity.setGroupId(createNewPDPGroupId(grp.getId()));
- groupEntity.setModifiedBy(AUDIT_STR);
- Set<EcompPDP> pdps = grp.getEcompPdps();
-
- for(EcompPDP pdp : pdps){
- PdpEntity pdpEntity = new PdpEntity();
- em.persist(pdpEntity);
- pdpEntity.setGroup(groupEntity);
- pdpEntity.setJmxPort(pdp.getJmxPort());
- pdpEntity.setPdpId(pdp.getId());
- pdpEntity.setPdpName(pdp.getName());
- pdpEntity.setModifiedBy(AUDIT_STR);
- pdpEntity.setCreatedBy(AUDIT_STR);
-
- }
-
- Set<PDPPolicy> policies = grp.getPolicies();
-
- for(PDPPolicy policy : policies){
- try{
- String[] stringArray = getNameScopeAndVersionFromPdpPolicy(policy.getId());
- List<PolicyEntity> policyEntityList;
- Query getPolicyEntitiesQuery = em.createNamedQuery("PolicyEntity.findByNameAndScope");
- getPolicyEntitiesQuery.setParameter("name", stringArray[0]);
- getPolicyEntitiesQuery.setParameter("scope", stringArray[1]);
-
- policyEntityList = getPolicyEntitiesQuery.getResultList();
- PolicyEntity policyEntity = null;
- if(!policyEntityList.isEmpty()){
- policyEntity = policyEntityList.get(0);
- }
- if(policyEntity != null){
- groupEntity.addPolicyToGroup(policyEntity);
- }
- }catch(Exception e2){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e2, "PolicyDBDao", "Exception auditGroups inner catch");
- }
- }
- }catch(Exception e1){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e1, "PolicyDBDao", "Exception auditGroups middle catch");
- }
- }
- }catch(Exception e){
- em.getTransaction().rollback();
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Exception auditGroups outer catch");
- em.close();
- return;
- }
-
- em.getTransaction().commit();
- em.close();
-
- }
-
- private String getConfigFile(String filename, PolicyRestAdapter policy){
- if(policy == null){
- return getConfigFile(filename, (String)null);
- }
- return getConfigFile(filename, policy.getConfigType());
- }
- //copied from ConfigPolicy.java and modified
- // Here we are adding the extension for the configurations file based on the
- // config type selection for saving.
- private String getConfigFile(String filename, String configType) {
- logger.debug("getConfigFile(String filename, String scope, String configType) as getConfigFile("+filename+", "+configType+") called");
- filename = FilenameUtils.removeExtension(filename);
- String id = configType;
-
- if (id != null) {
- if (id.equals(ConfigPolicy.JSON_CONFIG) || id.contains("Firewall")) {
- filename = filename + ".json";
- }
- if (id.equals(ConfigPolicy.XML_CONFIG)) {
- filename = filename + ".xml";
- }
- if (id.equals(ConfigPolicy.PROPERTIES_CONFIG)) {
- filename = filename + ".properties";
- }
- if (id.equals(ConfigPolicy.OTHER_CONFIG)) {
- filename = filename + ".txt";
- }
- }
- return filename;
- }
-
- private String[] getNameScopeAndVersionFromPdpPolicy(String fileName){
- String[] splitByDots = fileName.split("\\.");
- if(splitByDots.length < 3){
- //should we throw something
- return null;
- }
- String policyName = splitByDots[splitByDots.length-3];
- String version = splitByDots[splitByDots.length-2];
- //policy names now include version
- String scope = "";
- for(int i=0;i<splitByDots.length-3;i++){
- scope += ".".concat(splitByDots[i]);
- }
- //remove the first dot
- if(scope.length() > 0){
- scope = scope.substring(1);
- }
- String[] returnArray = new String[3];
- returnArray[0] = policyName + "." + version + ".xml";
- returnArray[2] = version;
- returnArray[1] = scope;
- return returnArray;
- }
-
- //copied from StdEngine.java
- public static String createNewPDPGroupId(String name) {
- String id = name;
- // replace "bad" characters with sequences that will be ok for file names and properties keys.
- id = id.replace(" ", "_sp_");
- id = id.replace("\t", "_tab_");
- id = id.replace("\\", "_bksl_");
- id = id.replace("/", "_sl_");
- id = id.replace(":", "_col_");
- id = id.replace("*", "_ast_");
- id = id.replace("?", "_q_");
- id = id.replace("\"", "_quo_");
- id = id.replace("<", "_lt_");
- id = id.replace(">", "_gt_");
- id = id.replace("|", "_bar_");
- id = id.replace("=", "_eq_");
- id = id.replace(",", "_com_");
- id = id.replace(";", "_scom_");
-
- return id;
- }
-
- /**
- * Checks if any of the given strings are empty or null
- * @param strings One or more Strings (or nulls) to check if they are null or empty
- * @return true if one or more of the given strings are empty or null
- */
- private static boolean isNullOrEmpty(String... strings){
- for(String s : strings){
- if(!(s instanceof String)){
- return true;
- }
- if(s.equals("")){
- return true;
- }
- }
- return false;
- }
-
-
- private class PolicyDBDaoTransactionInstance implements PolicyDBDaoTransaction {
- private EntityManager em;
- private final Object emLock = new Object();
- long policyId;
- long groupId;
- long pdpId;
- String newGroupId;
- private boolean operationRun = false;
- private final Thread transactionTimer;
-
- private PolicyDBDaoTransactionInstance(){
- //call the constructor with arguments
- this(Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_TRANS_TIMEOUT)),
- Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_TRANS_WAIT)));
- }
- //timeout is how long the transaction can sit before rolling back
- //wait time is how long to wait for the transaction to start before throwing an exception
- private PolicyDBDaoTransactionInstance(int transactionTimeout, int transactionWaitTime){
- if(logger.isDebugEnabled()){
- logger.debug("\n\nPolicyDBDaoTransactionInstance() as PolicyDBDaoTransactionInstance() called:"
- + "\n transactionTimeout = " + transactionTimeout
- + "\n transactionWaitTime = " + transactionWaitTime + "\n\n");
- }
- this.em = emf.createEntityManager();
- policyId = -1;
- groupId = -1;
- pdpId = -1;
- newGroupId = null;
- synchronized(emLock){
- try{
- startTransactionSynced(this.em,transactionWaitTime);
- } catch(Exception e){
- throw new PersistenceException("Could not lock transaction within "+transactionWaitTime+" milliseconds");
- }
- }
- class TransactionTimer implements Runnable {
-
- private int sleepTime;
- public TransactionTimer(int timeout){
- this.sleepTime = timeout;
- }
- @Override
- public void run() {
- if(logger.isDebugEnabled()){
- Date date= new java.util.Date();
- logger.debug("\n\nTransactionTimer.run() - SLEEPING: "
- + "\n sleepTime (ms) = " + sleepTime
- + "\n TimeStamp = " + date.getTime()
- + "\n\n");
- }
- try {
- Thread.sleep(sleepTime);
- } catch (InterruptedException e) {
- //probably, the transaction was completed, the last thing we want to do is roll back
- if(logger.isDebugEnabled()){
- Date date= new java.util.Date();
- logger.debug("\n\nTransactionTimer.run() - WAKE Interrupt: "
- + "\n TimeStamp = " + date.getTime()
- + "\n\n");
- }
- return;
- }
- if(logger.isDebugEnabled()){
- Date date= new java.util.Date();
- logger.debug("\n\nTransactionTimer.run() - WAKE Timeout: "
- + "\n TimeStamp = " + date.getTime()
- + "\n\n");
- }
- rollbackTransaction();
- }
-
- }
-
- transactionTimer = new Thread(new TransactionTimer(transactionTimeout),"transactionTimerThread");
- transactionTimer.start();
-
-
- }
-
- private void checkBeforeOperationRun(){
- checkBeforeOperationRun(false);
- }
- private void checkBeforeOperationRun(boolean justCheckOpen){
- if(!isTransactionOpen()){
- PolicyLogger.error("There is no transaction currently open");
- throw new IllegalStateException("There is no transaction currently open");
- }
- if(operationRun && !justCheckOpen){
- PolicyLogger.error("An operation has already been performed and the current transaction should be committed");
- throw new IllegalStateException("An operation has already been performed and the current transaction should be committed");
- }
- operationRun = true;
- }
- @Override
- public void commitTransaction() {
- synchronized(emLock){
- logger.debug("commitTransaction() as commitTransaction() called");
- if(!isTransactionOpen()){
- logger.warn("There is no open transaction to commit");
- try{
- em.close();
- } catch(Exception e){
- logger.error("Exception Occured"+e);
- }
- return;
- }
- try{
- em.getTransaction().commit();
- } catch(RollbackException e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught RollbackException on em.getTransaction().commit()");
- throw new PersistenceException("The commit failed. Message:\n"+e.getMessage());
- }
- em.close();
- // need to revisit
- if(policyId >= 0){
- if(newGroupId != null){
- try{
- notifyOthers(policyId,POLICY_NOTIFICATION,newGroupId);
- } catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception on notifyOthers("+policyId+","+POLICY_NOTIFICATION+","+newGroupId+")");
- }
- } else {
- try{
- notifyOthers(policyId,POLICY_NOTIFICATION);
- } catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception on notifyOthers("+policyId+","+POLICY_NOTIFICATION+")");
- }
- }
- }
- if(groupId >= 0){
- //we don't want commit to fail just because this does
- if(newGroupId != null){
- try{
- notifyOthers(groupId,GROUP_NOTIFICATION,newGroupId);
- } catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception on notifyOthers("+groupId+","+GROUP_NOTIFICATION+","+newGroupId+")");
- }
- } else {
- try{
- notifyOthers(groupId,GROUP_NOTIFICATION);
- } catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception on notifyOthers("+groupId+","+GROUP_NOTIFICATION+")");
- }
- }
- }
- if(pdpId >= 0){
- //we don't want commit to fail just because this does
- try{
- notifyOthers(pdpId,PDP_NOTIFICATION);
- } catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception on notifyOthers("+pdpId+","+PDP_NOTIFICATION+")");
- }
- }
- }
- if(transactionTimer instanceof Thread){
- transactionTimer.interrupt();
- }
- }
-
- @Override
- public void rollbackTransaction() {
- logger.debug("rollbackTransaction() as rollbackTransaction() called");
- synchronized(emLock){
- if(isTransactionOpen()){
-
- try{
- em.getTransaction().rollback();
- } catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Could not rollback transaction");
- }
- try{
- em.close();
- }catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Could not close EntityManager");
- }
-
- } else {
- try{
- em.close();
- }catch(Exception e){
- logger.warn("Could not close already closed transaction");
- }
- }
-
- }
- if(transactionTimer instanceof Thread){
- transactionTimer.interrupt();
- }
-
-
- }
-
- private void createPolicy(PolicyRestAdapter policy, String username, String policyScope, String policyName, String policyDataString) {
- logger.debug("createPolicy(PolicyRestAdapter policy, String username, String policyScope, String policyName, String policyDataString) as createPolicy("+policy+", "+username+", "+policyScope+", "+policyName+", "+policyDataString+") called");
- synchronized(emLock){
- checkBeforeOperationRun();
- String configName = policyName;
- if(policyName.contains("Config_")){
- policyName = policyName.replace(".Config_", ":Config_");
- }else if(policyName.contains("Action_")){
- policyName = policyName.replace(".Action_", ":Action_");
- }else if(policyName.contains("Decision_")){
- policyName = policyName.replace(".Decision_", ":Decision_");
- }
- policyName = policyName.split(":")[1];
- Query createPolicyQuery = em.createQuery("SELECT p FROM PolicyEntity p WHERE p.scope=:scope AND p.policyName=:policyName");
- createPolicyQuery.setParameter("scope", policyScope);
- createPolicyQuery.setParameter("policyName", policyName);
- List<?> createPolicyQueryList = createPolicyQuery.getResultList();
- PolicyEntity newPolicyEntity;
- boolean update;
- if(createPolicyQueryList.size() < 1){
- newPolicyEntity = new PolicyEntity();
- update = false;
- } else if(createPolicyQueryList.size() > 1){
- PolicyLogger.error("Somehow, more than one policy with the same scope, name, and deleted status were found in the database");
- throw new PersistenceException("Somehow, more than one policy with the same scope, name, and deleted status were found in the database");
- } else {
- newPolicyEntity = (PolicyEntity)createPolicyQueryList.get(0);
- update = true;
- }
-
- ActionBodyEntity newActionBodyEntity = null;
- if(policy.getPolicyType().equals("Action")){
- boolean abupdate = false;
- if(newPolicyEntity.getActionBodyEntity() == null){
- newActionBodyEntity = new ActionBodyEntity();
- }else{
- newActionBodyEntity = em.find(ActionBodyEntity.class, newPolicyEntity.getActionBodyEntity().getActionBodyId());
- abupdate = true;
- }
-
- if(newActionBodyEntity != null){
- if(!abupdate){
- em.persist(newActionBodyEntity);
- }
- //build the file path
- //trim the .xml off the end
- String policyNameClean = FilenameUtils.removeExtension(configName);
- String actionBodyName = policyNameClean + ".json";
- Path actionBodyPath = Paths.get(Webapps.getActionHome(), actionBodyName);
- if(logger.isDebugEnabled()){
- logger.debug("\nPolicyDBDao.createPolicy"
- + "\n actionBodyPath = " + actionBodyPath);
- }
- //get the action body
- String actionBodyString = null;
- String actionBodyPathStr = null;
- InputStream fileContentStream = null;
-
- if (Files.exists(actionBodyPath)) {
- try {
- actionBodyPathStr = (actionBodyPath != null ? actionBodyPath.toString() : null);
- fileContentStream = new FileInputStream(actionBodyPathStr);
- actionBodyString = IOUtils.toString(fileContentStream);
- if(logger.isDebugEnabled()){
- logger.debug("\nPolicyDBDao.createPolicy"
- + "\n actionBodyPathStr = " + actionBodyPathStr
- + "\n actionBodyString = " + actionBodyString);
- }
- } catch (FileNotFoundException e) {
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught FileNotFoundException on new actionBodyPathStr FileInputStream("+actionBodyPathStr+")");
- throw new IllegalArgumentException("The actionBodyPathStr file path " + actionBodyPathStr + " does not exist"
- + "\nEXCEPTION: " + e);
- } catch(IOException e2){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e2, "PolicyDBDao", "Caught IOException on actionBodyPath newIOUtils.toString("+fileContentStream+")");
- throw new IllegalArgumentException("The actionBodyPath file path cannot be read" + fileContentStream
- + "\nEXCEPTION: " + e2);
- } finally {
- IOUtils.closeQuietly(fileContentStream);
- }
-
- if(actionBodyString == null){
- throw new IllegalArgumentException("The file path (" + actionBodyPathStr + ") cannot be read");
- }
- } else {
- actionBodyString = "{}";
- }
-
- newActionBodyEntity.setActionBody(actionBodyString);
- newActionBodyEntity.setActionBodyName(actionBodyName);
- newActionBodyEntity.setModifiedBy("PolicyDBDao.createPolicy()");
- newActionBodyEntity.setDeleted(false);
- if(!abupdate){
- newActionBodyEntity.setCreatedBy("PolicyDBDao.createPolicy()");
- }
- if(logger.isDebugEnabled()){
- logger.debug("\nPolicyDBDao.createPolicy"
- + "\n newActionBodyEntity.getActionBody() = " + newActionBodyEntity.getActionBody()
- + "\n newActionBodyEntity.getActionBodyName() = " + newActionBodyEntity.getActionBodyName()
- + "\n newActionBodyEntity.getModifiedBy() = " + newActionBodyEntity.getModifiedBy()
- + "\n newActionBodyEntity.getCreatedBy() = " + newActionBodyEntity.getCreatedBy()
- + "\n newActionBodyEntity.isDeleted() = " + newActionBodyEntity.isDeleted()
- + "\n FLUSHING to DB");
- }
- //push the actionBodyEntity to the DB
- em.flush();
- }else{
- //newActionBodyEntity == null
- //We have a actionBody in the policy but we found no actionBody in the DB
- String msg = "\n\nPolicyDBDao.createPolicy - Incoming Action policy had an "
- + "actionBody, but it could not be found in the DB for update."
- + "\n policyScope = " + policyScope
- + "\n policyName = " + policyName + "\n\n";
- PolicyLogger.error("PolicyDBDao.createPolicy - Incoming Action policy had an actionBody, but it could not be found in the DB for update: policyName = " + policyName);
- throw new IllegalArgumentException(msg);
- }
- }
-
- ConfigurationDataEntity newConfigurationDataEntity;
- if(policy.getPolicyType().equals("Config")){
- boolean configUpdate;
- if(newPolicyEntity.getConfigurationData() == null){
- newConfigurationDataEntity = new ConfigurationDataEntity();
- configUpdate = false;
- } else {
- newConfigurationDataEntity = em.find(ConfigurationDataEntity.class, newPolicyEntity.getConfigurationData().getConfigurationDataId());
- configUpdate = true;
- }
-
- if(newConfigurationDataEntity != null){
- if(!configUpdate){
- em.persist(newConfigurationDataEntity);
- }
- if(!stringEquals(newConfigurationDataEntity.getConfigurationName(),getConfigFile(configName,policy))){
- newConfigurationDataEntity.setConfigurationName(getConfigFile(configName,policy));
- }
- if(newConfigurationDataEntity.getConfigType() == null || !newConfigurationDataEntity.getConfigType().equals(policy.getConfigType())){
- newConfigurationDataEntity.setConfigType(policy.getConfigType());
- }
- if(!configUpdate){
- newConfigurationDataEntity.setCreatedBy(username);
- }
- if(newConfigurationDataEntity.getModifiedBy() == null || !newConfigurationDataEntity.getModifiedBy().equals(username)){
- newConfigurationDataEntity.setModifiedBy(username);
- }
- if(newConfigurationDataEntity.getDescription() == null || !newConfigurationDataEntity.getDescription().equals("")){
- newConfigurationDataEntity.setDescription("");
- }
- if(newConfigurationDataEntity.getConfigBody() == null || newConfigurationDataEntity.getConfigBody().isEmpty() ||
- (!newConfigurationDataEntity.getConfigBody().equals(policy.getConfigBodyData()))){
- //hopefully one of these won't be null
- if(policy.getConfigBodyData() == null || policy.getConfigBodyData().isEmpty()){
- newConfigurationDataEntity.setConfigBody(policy.getJsonBody());
- }else{
- newConfigurationDataEntity.setConfigBody(policy.getConfigBodyData());
- }
- }
- if(newConfigurationDataEntity.isDeleted() == true){
- newConfigurationDataEntity.setDeleted(false);
- }
-
- em.flush();
- }else{
- //We have a configurationData body in the policy but we found no configurationData body in the DB
- String msg = "\n\nPolicyDBDao.createPolicy - Incoming Config policy had a "
- + "configurationData body, but it could not be found in the DB for update."
- + "\n policyScope = " + policyScope
- + "\n policyName = " + policyName + "\n\n";
- PolicyLogger.error("PolicyDBDao.createPolicy - Incoming Config policy had a configurationData body, but it could not be found in the DB for update: policyName = " + policyName);
- throw new IllegalArgumentException(msg);
- }
-
- } else {
- newConfigurationDataEntity = null;
- }
- if(!update){
- em.persist(newPolicyEntity);
- }
-
- policyId = newPolicyEntity.getPolicyId();
-
- if(!stringEquals(newPolicyEntity.getPolicyName(),policyName)){
- newPolicyEntity.setPolicyName(policyName);
- }
- if(!stringEquals(newPolicyEntity.getCreatedBy(),username)){
- newPolicyEntity.setCreatedBy(username);
- }
- if(!stringEquals(newPolicyEntity.getDescription(),policy.getPolicyDescription())){
- newPolicyEntity.setDescription(policy.getPolicyDescription());
- }
- if(!stringEquals(newPolicyEntity.getModifiedBy(),username)){
- newPolicyEntity.setModifiedBy(username);
- }
- if(!stringEquals(newPolicyEntity.getPolicyData(),policyDataString)){
- newPolicyEntity.setPolicyData(policyDataString);
- }
- if(!stringEquals(newPolicyEntity.getScope(),policyScope)){
- newPolicyEntity.setScope(policyScope);
- }
- if(newPolicyEntity.isDeleted() == true){
- newPolicyEntity.setDeleted(false);
- }
- newPolicyEntity.setConfigurationData(newConfigurationDataEntity);
- newPolicyEntity.setActionBodyEntity(newActionBodyEntity);
-
-
- em.flush();
- this.policyId = newPolicyEntity.getPolicyId();
- }
-
- return;
- }
-
- @SuppressWarnings("unused")
- public PolicyEntity getPolicy(int policyID){
- return getPolicy(policyID,null,null);
- }
- public PolicyEntity getPolicy(String policyName,String scope){
- return getPolicy(-1,policyName,scope);
- }
- private PolicyEntity getPolicy(int policyID, String policyName,String scope){
- logger.debug("getPolicy(int policyId, String policyName) as getPolicy("+policyID+","+policyName+") called");
- if(policyID < 0 && isNullOrEmpty(policyName,scope)){
- throw new IllegalArgumentException("policyID must be at least 0 or policyName must be not null or blank");
- }
-
- synchronized(emLock){
- checkBeforeOperationRun(true);
- //check if group exists
- String policyId;
- Query policyQuery;
- if(!isNullOrEmpty(policyName,scope)){
- policyId = policyName;
- policyQuery = em.createQuery("SELECT p FROM PolicyEntity p WHERE p.policyName=:name AND p.scope=:scope");
- policyQuery.setParameter("name", policyId);
- policyQuery.setParameter("scope", scope);
- } else{
- policyId = String.valueOf(policyID);
- policyQuery = em.createNamedQuery("PolicyEntity.FindById");
- policyQuery.setParameter("id", policyId);
- }
- List<?> policyQueryList;
- try{
- policyQueryList = policyQuery.getResultList();
- }catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to get policy with policyQuery.getResultList()");
- throw new PersistenceException("Query failed trying to get policy "+policyId);
- }
- if(policyQueryList.size() < 1){
- PolicyLogger.error("Policy does not exist with id "+policyId);
- throw new PersistenceException("Group policy is being added to does not exist with id "+policyId);
- } else if(policyQueryList.size() > 1){
- PolicyLogger.error("Somehow, more than one policy with the id "+policyId+" were found in the database");
- throw new PersistenceException("Somehow, more than one policy with the id "+policyId+" were found in the database");
- }
- return (PolicyEntity)policyQueryList.get(0);
- }
- }
-
- @Override
- public void renamePolicy(String oldPath, String newPath,String username){
-/* String[] oldPolicy = getScopeAndNameAndType(oldPath);
- String[] newPolicy = getScopeAndNameAndType(newPath);
- if(oldPolicy == null || newPolicy == null){
- PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW+"Could not parse one or more of the path names: "
- +oldPath+", "+newPath);
- throw new IllegalArgumentException("Could not parse one or more of the path names");
- }
- synchronized (emLock) {
- checkBeforeOperationRun();
-
- PolicyEntity existingPolicy;
- boolean existingPolicyDeleted = false;
- List<?> groups = null;
- try{
- existingPolicy = getPolicy(newPolicy[1],newPolicy[0]);
- } catch(Exception e){
- existingPolicy = null;
- }
- if(existingPolicy != null && !existingPolicy.isDeleted()){
- logger.error("The policy named "+existingPolicy.getPolicyName()+" already exists, cannot rename policy: "+newPolicy);
- throw new IllegalArgumentException("The policy named "+existingPolicy.getPolicyName()+" already exists, cannot rename policy: "+newPolicy);
- } else if(existingPolicy != null && existingPolicy.isDeleted()){
- try{
- Query getGroups = em.createQuery("SELECT g FROM GroupEntity g JOIN g.policies p WHERE p.policyId=:pid");
-
- getGroups.setParameter("pid", existingPolicy.getPolicyId());
- groups = getGroups.getResultList();
- }catch(Exception e){
- groups = new LinkedList<>();
- }
- for(Object o : groups){
- GroupEntity group = (GroupEntity)o;
- group.removePolicyFromGroup(existingPolicy);
- }
- try{
- em.flush();
- }catch(Exception e){
- logger.error("Error while removing the policy from groups: "+existingPolicy.getPolicyName());
- }
- try{
- em.remove(existingPolicy);
- em.flush();
- }catch(Exception e){
- logger.error("Could not remove the existing deleted policy: "+existingPolicy.getPolicyName());
- }
- existingPolicyDeleted = true;
- //create the new policy
- //for each of the groups, add the new policy
- }
-
- PolicyEntity policyToRename;
- try{
- policyToRename = getPolicy(oldPolicy[1],oldPolicy[0]);
- } catch(Exception e){
- PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "PolicyDBDao", "Could not get policy record to rename: "
- +oldPolicy[1]);
- throw new PersistenceException("Could not get policy record to rename");
- }
- String policyDataString = null;
- InputStream fileContentStream = null;
- String policyFilePath = Paths.get(oldPath).toAbsolutePath().toString();
- //I want to try the old path first, then if it doesn't work, try the new path
- for(int i=0;i<2;i++){
- try {
- fileContentStream = new FileInputStream(policyFilePath);
- policyDataString = IOUtils.toString(fileContentStream);
- } catch (FileNotFoundException e) {
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught FileNotFoundException on new FileInputStream("+policyFilePath+")");
- //if we can't find the oldPath, we'll try the new path
- if(i == 0){
- policyFilePath = Paths.get(newPath).toAbsolutePath().toString();
- continue;
- }
- throw new IllegalArgumentException("The file path does not exist");
- } catch(IOException e2){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e2, "PolicyDBDao", "Caught IOException on newIOUtils.toString("+fileContentStream+")");
- throw new IllegalArgumentException("The file path cannot be read");
- } finally {
- IOUtils.closeQuietly(fileContentStream);
- }
- if(policyDataString == null){
- throw new IllegalArgumentException("The file path cannot be read");
- }
- //escape the loop
- i=2;
- }
- policyToRename.setPolicyName(newPolicy[1]);
- policyToRename.setPolicyData(policyDataString);
- policyToRename.setScope(newPolicy[0]);
- policyToRename.setModifiedBy(username);
- if(policyToRename.getConfigurationData() != null){
- String configType = policyToRename.getConfigurationData().getConfigType();
- policyToRename.getConfigurationData().setConfigurationName(getConfigFile(newPolicy[1], configType));
- policyToRename.getConfigurationData().setModifiedBy(username);
- }
- if(policyToRename.getActionBodyEntity() != null){
- String newActionName = newPolicy[0]+"."+removeFileExtension(newPolicy[1])+".json";
- policyToRename.getActionBodyEntity().setActionBodyName(newActionName);
- policyToRename.getActionBodyEntity().setModifiedBy(username);
- }
- if(existingPolicyDeleted){
- for(Object o : groups){
-
- GroupEntity group = (GroupEntity)o;
- group.addPolicyToGroup(policyToRename);
- }
- }
- em.flush();
- this.policyId = policyToRename.getPolicyId();
- this.newGroupId = oldPath;
- }*/
- }
-
- @Override
- public GroupEntity getGroup(long groupKey){
- logger.debug("getGroup(int groupKey) as getGroup("+groupKey+") called");
- if(groupKey < 0){
- throw new IllegalArgumentException("groupKey must be at least 0");
- }
- synchronized(emLock){
- checkBeforeOperationRun(true);
- //check if group exists
- Query groupQuery = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupKey=:groupKey");
- groupQuery.setParameter("groupKey", groupKey);
- List<?> groupQueryList;
- try{
- groupQueryList = groupQuery.getResultList();
- }catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to get group with groupQuery.getResultList()");
- throw new PersistenceException("Query failed trying to get group "+groupKey);
- }
- if(groupQueryList.size() < 1){
- PolicyLogger.error("Group does not exist with groupKey "+groupKey);
- throw new PersistenceException("Group does not exist with groupKey "+groupKey);
- } else if(groupQueryList.size() > 1){
- PolicyLogger.error("Somehow, more than one group with the groupKey "+groupKey+" were found in the database");
- throw new PersistenceException("Somehow, more than one group with the groupKey "+groupKey+" were found in the database");
- }
- return (GroupEntity)groupQueryList.get(0);
- }
- }
-
- @Override
- public GroupEntity getGroup(String groupId){
- logger.debug("getGroup(String groupId) as getGroup("+groupId+") called");
- if(isNullOrEmpty(groupId)){
- throw new IllegalArgumentException("groupId must not be null or empty");
- }
- synchronized(emLock){
- checkBeforeOperationRun(true);
- //check if group exists
- Query groupQuery = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId");
- groupQuery.setParameter("groupId", groupId);
- List<?> groupQueryList;
- try{
- groupQueryList = groupQuery.getResultList();
- }catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to get group with groupQuery.getResultList()");
- throw new PersistenceException("Query failed trying to get group "+groupId);
- }
- if(groupQueryList.size() < 1){
- PolicyLogger.error("Group does not exist with id "+groupId);
- throw new PersistenceException("Group does not exist with id "+groupId);
- } else if(groupQueryList.size() > 1){
- PolicyLogger.error("Somehow, more than one group with the id "+groupId+" were found in the database");
- throw new PersistenceException("Somehow, more than one group with the id "+groupId+" were found in the database");
- }
- return (GroupEntity)groupQueryList.get(0);
- }
- }
- @Override
- public List<?> getPdpsInGroup(long groupKey){
- logger.debug("getPdpsInGroup(int groupKey) as getPdpsInGroup("+groupKey+") called");
- if(groupKey < 0){
- throw new IllegalArgumentException("groupId must not be < 0");
- }
- synchronized(emLock){
- checkBeforeOperationRun(true);
- Query pdpsQuery = em.createQuery("SELECT p FROM PdpEntity p WHERE p.groupEntity=:group");
- pdpsQuery.setParameter("group", getGroup(groupKey));
- return pdpsQuery.getResultList();
- }
- }
- @Override
- public PdpEntity getPdp(long pdpKey){
- logger.debug("getPdp(int pdpKey) as getPdp("+pdpKey+") called");
- if(pdpKey < 0){
- throw new IllegalArgumentException("pdpKey must be at least 0");
- }
- synchronized(emLock){
- checkBeforeOperationRun(true);
- //check if group exists
- Query pdpQuery = em.createQuery("SELECT p FROM PdpEntity p WHERE p.pdpKey=:pdpKey");
- pdpQuery.setParameter("pdpKey", pdpKey);
- List<?> pdpQueryList;
- try{
- pdpQueryList = pdpQuery.getResultList();
- }catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to get pdp with pdpQuery.getResultList()");
- throw new PersistenceException("Query failed trying to get pdp "+pdpKey);
- }
- if(pdpQueryList.size() < 1){
- PolicyLogger.error("Pdp does not exist with pdpKey "+pdpKey);
- throw new PersistenceException("Pdp does not exist with pdpKey "+pdpKey);
- } else if(pdpQueryList.size() > 1){
- PolicyLogger.error("Somehow, more than one pdp with the pdpKey "+pdpKey+" were found in the database");
- throw new PersistenceException("Somehow, more than one pdp with the pdpKey "+pdpKey+" were found in the database");
- }
- return (PdpEntity)pdpQueryList.get(0);
- }
- }
-
- public void deletePolicy(String policyToDeletes){
- /*synchronized(emLock){
- checkBeforeOperationRun();
- logger.debug("deletePolicy(String policyToDeletes) as deletePolicy("+policyToDeletes+") called");
- String[] scopeNameAndType = getScopeAndNameAndType(policyToDeletes);
- if(scopeNameAndType == null){
- throw new IllegalArgumentException("Could not parse file path");
- }
- String realScope = scopeNameAndType[0];
- String realName = scopeNameAndType[1];
- Query deletePolicyQuery = em.createQuery("SELECT p FROM PolicyEntity p WHERE p.scope=:scope AND p.policyName=:policyName AND p.deleted=:deleted");
- deletePolicyQuery.setParameter("scope",realScope);
- deletePolicyQuery.setParameter("policyName", realName);
- deletePolicyQuery.setParameter("deleted", false);
- List<?> deletePolicyQueryList = deletePolicyQuery.getResultList();
- if(deletePolicyQueryList.size() < 1){
- logger.warn("The policy being deleted could not be found.");
- return;
- } else if(deletePolicyQueryList.size() > 1){
- PolicyLogger.error("Somehow, more than one policy with the same scope, name, and deleted status were found in the database");
- throw new PersistenceException("Somehow, more than one policy with the same scope, name, and deleted status were found in the database");
- } else {
- PolicyEntity policyToDelete = (PolicyEntity)deletePolicyQueryList.get(0);
- policyToDelete.setDeleted(true);
- if(policyToDelete.getConfigurationData() != null){
- ConfigurationDataEntity cde = em.find(ConfigurationDataEntity.class,policyToDelete.getConfigurationData().getConfigurationDataId());
- if(cde != null){
- cde.setDeleted(true);
- }
- }
- if(policyToDelete.getActionBodyEntity() != null){
- ActionBodyEntity abe = em.find(ActionBodyEntity.class,policyToDelete.getActionBodyEntity().getActionBodyId());
- if(abe != null){
- abe.setDeleted(true);
- }
- }
-
- em.flush();
- this.policyId = policyToDelete.getPolicyId();
-
- }
- }
-*/
- }
-
-
- @Override
- public boolean isTransactionOpen() {
- logger.debug("isTransactionOpen() as isTransactionOpen() called");
- synchronized(emLock){
- return em.isOpen() && em.getTransaction().isActive();
- }
- }
-
-
- @Override
- public void clonePolicy(String oldPolicyPath, String newPolicyPath, String username){
- /*String[] oldPolicyData = getScopeAndNameAndType(oldPolicyPath);
- String[] newPolicyData = getScopeAndNameAndType(newPolicyPath);
- if(oldPolicyData == null || newPolicyData == null){
- PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW+"Could not parse one or more of the path names: "
- +oldPolicyPath+", "+newPolicyPath);
- throw new IllegalArgumentException("Could not parse the oldPolicyPath or newPolicyPath");
- }
- PolicyEntity oldPolicy;
- try{
- oldPolicy = getPolicy(oldPolicyData[1],oldPolicyData[0]);
- }catch(Exception e){
- PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "PolicyDBDao", "Could not get policy record to clone: "
- +oldPolicyData[1]);
- throw new PersistenceException("Could not get policy record to clone");
- }
- ConfigurationDataEntity clonedConfig = null;
- if(oldPolicy.getConfigurationData() != null){
- clonedConfig = new ConfigurationDataEntity();
- em.persist(clonedConfig);
- clonedConfig.setConfigBody(oldPolicy.getConfigurationData().getConfigBody());
- clonedConfig.setConfigType(oldPolicy.getConfigurationData().getConfigType());
- clonedConfig.setCreatedBy(username);
- clonedConfig.setConfigurationName(getConfigFile(newPolicyData[1], oldPolicy.getConfigurationData().getConfigType()));
- clonedConfig.setDescription(oldPolicy.getConfigurationData().getDescription());
- clonedConfig.setModifiedBy(username);
- em.flush();
- }
- ActionBodyEntity clonedAction = null;
- if(oldPolicy.getActionBodyEntity() != null){
- clonedAction = new ActionBodyEntity();
- em.persist(clonedAction);
- clonedAction.setActionBody(oldPolicy.getActionBodyEntity().getActionBody());
- clonedAction.setActionBodyName(newPolicyData[0]+"."+newPolicyData[1]+".json");
- clonedAction.setCreatedBy(username);
- clonedAction.setModifiedBy(username);
- em.flush();
- }
-
-*/
- }
-
- private String processConfigPath(String configPath){
- String webappsPath = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_WEBAPPS);
- if(webappsPath == null){
- logger.error("Webapps property does not exist");
- throw new IllegalArgumentException("Webapps property does not exist");
- }
- configPath = configPath.replace("$URL", webappsPath);
- //make sure the correct slashes are in
- try{
- configPath = Paths.get(configPath).toString();
- } catch(InvalidPathException e){
- logger.error("Invalid config path: "+configPath);
- throw new IllegalArgumentException("Invalid config path: "+configPath);
- }
- return configPath;
- }
- private String readConfigFile(String configPath){
- String configDataString = null;
- InputStream configContentStream = null;
- try {
- configContentStream = new FileInputStream(configPath);
- configDataString = IOUtils.toString(configContentStream);
- } catch (FileNotFoundException e) {
- logger.error("Caught FileNotFoundException on new FileInputStream("+configPath+")",e);
- throw new IllegalArgumentException("The config file path does not exist");
- } catch(IOException e2){
- logger.error("Caught IOException on newIOUtils.toString("+configContentStream+")",e2);
- throw new IllegalArgumentException("The config file path cannot be read");
- } finally {
- IOUtils.closeQuietly(configContentStream);
- }
- if(configDataString == null){
- throw new IllegalArgumentException("The config file path cannot be read");
- }
- return configDataString;
- }
-
- @Override
- public void createPolicy(Policy policy, String username){
- InputStream policyXmlStream = null;
- try{
- logger.debug("createPolicy(PolicyRestAdapter policy, String username) as createPolicy("+policy+","+username+") called");
- String policyScope = policy.policyAdapter.getDomainDir().replace(File.separator, ".");
- //Does not need to be XACMLPolicyWriterWithPapNotify since it is already in the PAP
- //and this transaction is intercepted up stream.
- String policyDataString;
- try {
- policyXmlStream = XACMLPolicyWriter.getXmlAsInputStream((PolicyType)policy.getCorrectPolicyDataObject());
- policyDataString = IOUtils.toString(policyXmlStream);
- } catch (IOException e) {
- policyDataString = "could not read";
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught IOException on IOUtils.toString("+policyXmlStream+")");
- throw new IllegalArgumentException("Cannot parse the policy xml from the PolicyRestAdapter.");
- }
- IOUtils.closeQuietly(policyXmlStream);
- String configPath = "";
- if (policy.policyAdapter.getPolicyType().equalsIgnoreCase("Config")) {
- configPath = evaluateXPath("/Policy/Rule/AdviceExpressions/AdviceExpression[contains(@AdviceId,'ID')]/AttributeAssignmentExpression[@AttributeId='URLID']/AttributeValue/text()", policyDataString);
- } else if (policy.policyAdapter.getPolicyType().equalsIgnoreCase("Action")) {
- configPath = evaluateXPath("/Policy/Rule/ObligationExpressions/ObligationExpression[contains(@ObligationId, " +policy.policyAdapter.getActionAttribute()+ ")]/AttributeAssignmentExpression[@AttributeId='body']/AttributeValue/text()", policyDataString);
- }
-
- String prefix = null;
- if (policy.policyAdapter.getPolicyType().equalsIgnoreCase("Config")) {
-
- prefix = configPath.substring(configPath.indexOf(policyScope+".")+policyScope.concat(".").length(), configPath.indexOf(policy.policyAdapter.getPolicyName()));
- if(isNullOrEmpty(policy.policyAdapter.getConfigBodyData())){
- String configData = "";
- try{
- String newConfigPath = configPath;
- try{
- newConfigPath = processConfigPath(newConfigPath);
- }catch(Exception e2){
- logger.error("Could not process config path: "+newConfigPath,e2);
- }
- configData = readConfigFile(newConfigPath);
- }catch(Exception e){
- logger.error("Could not read config body data for "+configPath,e);
- }
- policy.policyAdapter.setConfigBodyData(configData);
- }
- } else if (policy.policyAdapter.getPolicyType().equalsIgnoreCase("Action")) {
- prefix = "Action_";
- } else if (policy.policyAdapter.getPolicyType().equalsIgnoreCase("Decision")) {
- prefix = "Decision_";
- }
-
- if(!(policy.policyAdapter.getData() instanceof PolicyType)){
- PolicyLogger.error("The data field is not an instance of PolicyType");
- throw new IllegalArgumentException("The data field is not an instance of PolicyType");
- }
- String finalName = policyScope + "." + prefix+policy.policyAdapter.getPolicyName()+"."+((PolicyType)policy.policyAdapter.getData()).getVersion()+".xml";
- if(policy.policyAdapter.getConfigType() == null || policy.policyAdapter.getConfigType().equals("")){
- //get the config file extension
- String ext = "";
- if (configPath != null) {
- if (!configPath.equalsIgnoreCase("")) {
- ext = configPath.substring(configPath.lastIndexOf('.'), configPath.length());;
- }
- }
-
- if(ext.contains("txt")){
- policy.policyAdapter.setConfigType(OTHER_CONFIG);
- } else if(ext.contains("json")){
- policy.policyAdapter.setConfigType(JSON_CONFIG);
- } else if(ext.contains("xml")){
- policy.policyAdapter.setConfigType(XML_CONFIG);
- } else if(ext.contains("properties")){
- policy.policyAdapter.setConfigType(PROPERTIES_CONFIG);
- } else {
- if (policy.policyAdapter.getPolicyType().equalsIgnoreCase("Action")){
- policy.policyAdapter.setConfigType(JSON_CONFIG);
- }
- }
- }
-
- createPolicy(policy.policyAdapter, username, policyScope,finalName,policyDataString);
- }finally{
- if(policyXmlStream != null){
- try {
- policyXmlStream.close();
- } catch (IOException e) {
- logger.error("Exception Occured while closing input stream"+e);
- }
- }
- }
- }
-
- @Override
- public void close(){
- synchronized(emLock){
- if(em.isOpen()){
- if(em.getTransaction().isActive()){
- em.getTransaction().rollback();
- }
- em.close();
- }
- if(transactionTimer instanceof Thread){
- transactionTimer.interrupt();
- }
- }
- }
-
-
-
- @Override
- public void createGroup(String groupId, String groupName, String groupDescription, String username) {
- logger.debug("deletePolicy(String policyToDeletes) as createGroup("+groupId+", "+groupName+", "+groupDescription+") called");
- if(isNullOrEmpty(groupId, groupName, username)){
- throw new IllegalArgumentException("groupId, groupName, and username must not be null or empty");
- }
- if(!(groupDescription instanceof String)){
- groupDescription = "";
- }
-
- synchronized(emLock){
- checkBeforeOperationRun();
- Query checkGroupQuery = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted");
- checkGroupQuery.setParameter("groupId", groupId);
- checkGroupQuery.setParameter("deleted", false);
- List<?> checkGroupQueryList;
- try{
- checkGroupQueryList = checkGroupQuery.getResultList();
- } catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception on checkGroupQuery.getResultList()");
- throw new PersistenceException("Query failed trying to check for existing group");
- }
- if(checkGroupQueryList.size() > 0){
- PolicyLogger.error("The group being added already exists with id "+groupId);
- throw new PersistenceException("The group being added already exists with id "+groupId);
- }
- GroupEntity newGroup = new GroupEntity();
- em.persist(newGroup);
- newGroup.setCreatedBy(username);
- newGroup.setModifiedBy(username);
- newGroup.setGroupName(groupName);
- newGroup.setGroupId(groupId);
- newGroup.setDescription(groupDescription);
-
- em.flush();
- this.groupId = newGroup.getGroupKey();
- }
- }
-
- @Override
- public void updateGroup(EcompPDPGroup group, String username){
- logger.debug("updateGroup(PDPGroup group) as updateGroup("+group+","+username+") called");
- if(group == null){
- throw new IllegalArgumentException("PDPGroup group must not be null");
- }
- if(isNullOrEmpty(group.getId(), username)){
- throw new IllegalArgumentException("group.getId() and username must not be null or empty");
- }
-
- synchronized(emLock){
- checkBeforeOperationRun();
- Query getGroupQuery = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted");
- getGroupQuery.setParameter("groupId", group.getId());
- getGroupQuery.setParameter("deleted", false);
- List<?> getGroupQueryList;
- try{
- getGroupQueryList = getGroupQuery.getResultList();
- } catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception on getGroupQuery.getResultList()");
- throw new PersistenceException("Query failed trying to get group "+group.getId()+" for editing");
- }
- if(getGroupQueryList.size() < 1){
- PolicyLogger.error("The group cannot be found to update with id "+group.getId());
- throw new PersistenceException("The group cannot be found to update with id "+group.getId());
- } else if(getGroupQueryList.size() > 1){
- PolicyLogger.error("Somehow, more than one group with the same id "+group.getId()+" and deleted status were found in the database");
- throw new PersistenceException("Somehow, more than one group with the same id "+group.getId()+" and deleted status were found in the database");
- }
- GroupEntity groupToUpdate = (GroupEntity)getGroupQueryList.get(0);
- if(!stringEquals(groupToUpdate.getModifiedBy(), username)){
- groupToUpdate.setModifiedBy(username);
- }
- if(group.getDescription() != null && !stringEquals(group.getDescription(),groupToUpdate.getDescription())){
- groupToUpdate.setDescription(group.getDescription());
- }
- //let's find out what policies have been deleted
- StdPDPGroup oldGroup = null;
- try {
- oldGroup = (StdPDPGroup) papEngine.getGroup(group.getId());
- } catch (PAPException e1) {
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e1, "PolicyDBDao", "We cannot get the group from the papEngine to delete policies");
- }
- if(oldGroup == null){
- PolicyLogger.error("We cannot get the group from the papEngine to delete policies");
- } else {
-
- Set<String> newPolicySet = new HashSet<>(group.getPolicies().size());
- //a multiple of n runtime is faster than n^2, so I am using a hashset to do the comparison
- for(PDPPolicy pol: group.getPolicies()){
- newPolicySet.add(pol.getId());
- }
- for(PDPPolicy pol : oldGroup.getPolicies()){
- //should be fast since getPolicies uses a HashSet in StdPDPGroup
- if(!newPolicySet.contains(pol.getId())){
- String[] scopeAndName = getNameScopeAndVersionFromPdpPolicy(pol.getId());
- PolicyEntity policyToDelete;
- try{
- policyToDelete = getPolicy(scopeAndName[0],scopeAndName[1]);
- }catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Could not get policy to remove: "+pol.getId());
- throw new PersistenceException("Could not get policy to remove: "+pol.getId());
- }
- groupToUpdate.getPolicies().remove(policyToDelete);
-
- }
- }
- }
- if(group.getName() != null && !stringEquals(group.getName(),groupToUpdate.getgroupName())){
- //we need to check if the new id exists in the database
- String newGroupId = createNewPDPGroupId(group.getName());
- Query checkGroupQuery = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted");
- checkGroupQuery.setParameter("groupId", newGroupId);
- checkGroupQuery.setParameter("deleted", false);
- List<?> checkGroupQueryList;
- try{
- checkGroupQueryList = checkGroupQuery.getResultList();
- } catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception on checkGroupQuery.getResultList()");
- throw new PersistenceException("Query failed trying to check for existing group");
- }
- if(checkGroupQueryList.size() != 0){
- PolicyLogger.error("The new group name already exists, group id "+newGroupId);
- throw new PersistenceException("The new group name already exists, group id "+newGroupId);
- }
- groupToUpdate.setGroupId(newGroupId);
- groupToUpdate.setGroupName(group.getName());
- this.newGroupId = group.getId();
- }
-
- em.flush();
- this.groupId = groupToUpdate.getGroupKey();
- }
- }
-
- @Override
- public void addPdpToGroup(String pdpID, String groupID, String pdpName, String pdpDescription, int pdpJmxPort, String username) {
- logger.debug("addPdpToGroup(String pdpID, String groupID, String pdpName, String pdpDescription, int pdpJmxPort, String username) as addPdpToGroup("+pdpID+", "+groupID+", "+pdpName+", "+pdpDescription+", "+pdpJmxPort+", "+username+") called");
- if(isNullOrEmpty(pdpID, groupID,pdpName,username)){
- throw new IllegalArgumentException("pdpID, groupID, pdpName, and username must not be null or empty");
- }
- if(!(pdpDescription instanceof String)){
- pdpDescription = "";
- }
- synchronized(emLock){
- checkBeforeOperationRun();
- Query checkGroupQuery = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted");
- checkGroupQuery.setParameter("groupId", groupID);
- checkGroupQuery.setParameter("deleted", false);
- List<?> checkGroupQueryList;
- try{
- checkGroupQueryList = checkGroupQuery.getResultList();
- } catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to check for existing group on checkGroupQuery.getResultList()");
- throw new PersistenceException("Query failed trying to check for existing group");
- }
- if(checkGroupQueryList.size() != 1){
- PolicyLogger.error("The group does not exist");
- throw new PersistenceException("The group does not exist");
- }
- Query checkDuplicateQuery = em.createQuery("SELECT p FROM PdpEntity p WHERE p.pdpId=:pdpId AND p.deleted=:deleted");
- checkDuplicateQuery.setParameter("pdpId", pdpID);
- checkDuplicateQuery.setParameter("deleted", false);
- List<?> checkDuplicateList;
- try{
- checkDuplicateList = checkDuplicateQuery.getResultList();
- } catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to check for duplicate PDP "+pdpID+" on checkDuplicateQuery.getResultList()");
- throw new PersistenceException("Query failed trying to check for duplicate PDP "+pdpID);
- }
- PdpEntity newPdp;
- if(checkDuplicateList.size() > 0){
- logger.warn("PDP already exists with id "+pdpID);
- newPdp = (PdpEntity)checkDuplicateList.get(0);
- } else {
- newPdp = new PdpEntity();
- em.persist(newPdp);
- }
-
- newPdp.setCreatedBy(username);
- newPdp.setDeleted(false);
- newPdp.setDescription(pdpDescription);
- newPdp.setGroup((GroupEntity)checkGroupQueryList.get(0));
- newPdp.setJmxPort(pdpJmxPort);
- newPdp.setModifiedBy(username);
- newPdp.setPdpId(pdpID);
- newPdp.setPdpName(pdpName);
-
- em.flush();
- this.pdpId = newPdp.getPdpKey();
-
- }
- }
-
-
- @Override
- public void updatePdp(EcompPDP pdp, String username){
- logger.debug("updatePdp(PDP pdp, String username) as updatePdp("+pdp+","+username+") called");
- if(pdp == null){
- throw new IllegalArgumentException("PDP pdp must not be null");
- }
- if(isNullOrEmpty(pdp.getId(),username)){
- throw new IllegalArgumentException("pdp.getId() and username must not be null or empty");
- }
-
- synchronized(emLock){
- checkBeforeOperationRun();
- Query getPdpQuery = em.createQuery("SELECT p FROM PdpEntity p WHERE p.pdpId=:pdpId AND p.deleted=:deleted");
- getPdpQuery.setParameter("pdpId", pdp.getId());
- getPdpQuery.setParameter("deleted", false);
- List<?> getPdpQueryList;
- try{
- getPdpQueryList = getPdpQuery.getResultList();
- } catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception on getPdpQuery.getResultList()");
- throw new PersistenceException("Query failed trying to get PDP "+pdp.getId());
- }
- if(getPdpQueryList.size() < 1){
- PolicyLogger.error("The pdp cannot be found to update with id "+pdp.getId());
- throw new PersistenceException("The pdp cannot be found to update with id "+pdp.getId());
- } else if(getPdpQueryList.size() > 1){
- PolicyLogger.error("Somehow, more than one pdp with the same id "+pdp.getId()+" and deleted status were found in the database");
- throw new PersistenceException("Somehow, more than one pdp with the same id "+pdp.getId()+" and deleted status were found in the database");
- }
- PdpEntity pdpToUpdate = (PdpEntity)getPdpQueryList.get(0);
- if(!stringEquals(pdpToUpdate.getModifiedBy(), username)){
- pdpToUpdate.setModifiedBy(username);
- }
- if(pdp.getDescription() != null && !stringEquals(pdp.getDescription(),pdpToUpdate.getDescription())){
- pdpToUpdate.setDescription(pdp.getDescription());
- }
- if(pdp.getName() != null && !stringEquals(pdp.getName(),pdpToUpdate.getPdpName())){
- pdpToUpdate.setPdpName(pdp.getName());
- }
- if(pdp.getJmxPort() != null && !pdp.getJmxPort().equals(pdpToUpdate.getJmxPort())){
- pdpToUpdate.setJmxPort(pdp.getJmxPort());
- }
-
- em.flush();
- this.pdpId = pdpToUpdate.getPdpKey();
- }
- }
-
- @Override
- public void movePdp(EcompPDP pdp, EcompPDPGroup group, String username){
- logger.debug("movePdp(PDP pdp, PDPGroup group, String username) as movePdp("+pdp+","+group+","+username+") called");
- if(pdp == null || group == null){
- throw new IllegalArgumentException("PDP pdp and PDPGroup group must not be null");
- }
- if(isNullOrEmpty(username,pdp.getId(),group.getId())){
- throw new IllegalArgumentException("pdp.getId(), group.getId(), and username must not be null or empty");
- }
-
- synchronized(emLock){
- checkBeforeOperationRun();
- //check if pdp exists
- Query getPdpQuery = em.createQuery("SELECT p FROM PdpEntity p WHERE p.pdpId=:pdpId AND p.deleted=:deleted");
- getPdpQuery.setParameter("pdpId", pdp.getId());
- getPdpQuery.setParameter("deleted", false);
- List<?> getPdpQueryList;
- try{
- getPdpQueryList = getPdpQuery.getResultList();
- } catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception on getPdpQuery.getResultList()");
- throw new PersistenceException("Query failed trying to get pdp to move with id "+pdp.getId());
- }
- if(getPdpQueryList.size() < 1){
- PolicyLogger.error("The pdp cannot be found to move with id "+pdp.getId());
- throw new PersistenceException("The pdp cannot be found to move with id "+pdp.getId());
- } else if(getPdpQueryList.size() > 1){
- PolicyLogger.error("Somehow, more than one pdp with the same id "+pdp.getId()+" and deleted status were found in the database");
- throw new PersistenceException("Somehow, more than one pdp with the same id "+pdp.getId()+" and deleted status were found in the database");
- }
-
- //check if new group exists
- Query checkGroupQuery = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted");
- checkGroupQuery.setParameter("groupId", group.getId());
- checkGroupQuery.setParameter("deleted", false);
- List<?> checkGroupQueryList;
- try{
- checkGroupQueryList = checkGroupQuery.getResultList();
- } catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to get group on checkGroupQuery.getResultList()");
- throw new PersistenceException("Query failed trying to get new group "+group.getId());
- }
- if(checkGroupQueryList.size() != 1){
- PolicyLogger.error("The group "+group.getId()+" does not exist");
- throw new PersistenceException("The group "+group.getId()+" does not exist");
- }
- GroupEntity groupToMoveInto = (GroupEntity)checkGroupQueryList.get(0);
- PdpEntity pdpToUpdate = (PdpEntity)getPdpQueryList.get(0);
- pdpToUpdate.setGroup(groupToMoveInto);
- if(!stringEquals(pdpToUpdate.getModifiedBy(), username)){
- pdpToUpdate.setModifiedBy(username);
- }
-
- em.flush();
- this.pdpId = pdpToUpdate.getPdpKey();
- }
- }
-
- @Override
- public void changeDefaultGroup(EcompPDPGroup group, String username){
- logger.debug("changeDefaultGroup(PDPGroup group, String username) as changeDefaultGroup("+group+","+username+") called");
- if(group == null){
- throw new IllegalArgumentException("PDPGroup group must not be null");
- }
- if(isNullOrEmpty(group.getId(),username)){
- throw new IllegalArgumentException("group.getId() and username must not be null or empty");
- }
-
- synchronized(emLock){
- checkBeforeOperationRun();
- Query getGroupQuery = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted");
- getGroupQuery.setParameter("groupId", group.getId());
- getGroupQuery.setParameter("deleted", false);
- List<?> getGroupQueryList;
- try{
- getGroupQueryList = getGroupQuery.getResultList();
- } catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception on getGroupQuery.getResultList()");
- throw new PersistenceException("Query failed trying to get group "+group.getId());
- }
- if(getGroupQueryList.size() < 1){
- PolicyLogger.error("The group cannot be found to set default with id "+group.getId());
- throw new PersistenceException("The group cannot be found to set default with id "+group.getId());
- } else if(getGroupQueryList.size() > 1){
- PolicyLogger.error("Somehow, more than one group with the same id "+group.getId()+" and deleted status were found in the database");
- throw new PersistenceException("Somehow, more than one group with the same id "+group.getId()+" and deleted status were found in the database");
- }
- GroupEntity newDefaultGroup = (GroupEntity)getGroupQueryList.get(0);
- newDefaultGroup.setDefaultGroup(true);
- if(!stringEquals(newDefaultGroup.getModifiedBy(), username)){
- newDefaultGroup.setModifiedBy(username);
- }
-
- em.flush();
- this.groupId = newDefaultGroup.getGroupKey();
- Query setAllGroupsNotDefault = em.createQuery("UPDATE GroupEntity g SET g.defaultGroup=:defaultGroup WHERE g.deleted=:deleted AND g.groupKey<>:groupKey");
- //not going to set modified by for all groups
- setAllGroupsNotDefault.setParameter("defaultGroup", false);
- setAllGroupsNotDefault.setParameter("deleted", false);
- setAllGroupsNotDefault.setParameter("groupKey", newDefaultGroup.getGroupKey());
- try{
- logger.info("set " + setAllGroupsNotDefault.executeUpdate() + " groups as not default");
- } catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception on setAllGroupsNotDefault.executeUpdate()");
- throw new PersistenceException("Could not set all other groups default to false");
- }
-
- em.flush();
- }
- }
-
-
- @Override
- public void deleteGroup(EcompPDPGroup group, EcompPDPGroup moveToGroup, String username) throws PAPException {
- logger.debug("deleteGroup(PDPGroup group, PDPGroup moveToGroup, String username) as deleteGroup("+group+", "+moveToGroup+","+username+") called");
- if(group == null){
- throw new IllegalArgumentException("PDPGroup group cannot be null");
- }
- if(isNullOrEmpty(username,group.getId())){
- throw new IllegalArgumentException("group.getId() and and username must not be null or empty");
- }
-
- if(group.isDefaultGroup()){
- PolicyLogger.error("The default group "+group.getId()+" was attempted to be deleted. It cannot be.");
- throw new PAPException("You cannot delete the default group.");
- }
- synchronized(emLock){
- checkBeforeOperationRun();
- Query deleteGroupQuery = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted");
- deleteGroupQuery.setParameter("groupId", group.getId());
- deleteGroupQuery.setParameter("deleted", false);
- List<?> deleteGroupQueryList;
- try{
- deleteGroupQueryList = deleteGroupQuery.getResultList();
- } catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to check if group exists deleteGroupQuery.getResultList()");
- throw new PersistenceException("Query failed trying to check if group exists");
- }
- if(deleteGroupQueryList.size() < 1){
- logger.warn("The group could not be found with id " + group.getId());
- return;
- } else if(deleteGroupQueryList.size() > 1){
- PolicyLogger.error("Somehow, more than one group with the id "+group.getId()+" were found in the database that are not deleted");
- throw new PersistenceException("Somehow, more than one group with the id "+group.getId()+" were found in the database that are not deleted");
- }
-
- Query pdpsInGroupQuery = em.createQuery("SELECT p FROM PdpEntity p WHERE p.groupEntity=:group and p.deleted=:deleted");
- pdpsInGroupQuery.setParameter("group", ((GroupEntity)deleteGroupQueryList.get(0)));
- pdpsInGroupQuery.setParameter("deleted", false);
- List<?> pdpsInGroupList;
- try{
- pdpsInGroupList = pdpsInGroupQuery.getResultList();
- } catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to get PDPs in group on pdpsInGroupQuery.getResultList()");
- throw new PersistenceException("Query failed trying to get PDPs in group");
- }
- if(pdpsInGroupList.size() > 0){
- if(moveToGroup != null){
- Query checkMoveToGroupQuery = em.createQuery("SELECT o FROM GroupEntity o WHERE o.groupId=:groupId AND o.deleted=:deleted");
- checkMoveToGroupQuery.setParameter("groupId", moveToGroup.getId());
- checkMoveToGroupQuery.setParameter("deleted", false);
- List<?> checkMoveToGroupList;
- try{
- checkMoveToGroupList = checkMoveToGroupQuery.getResultList();
- } catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to check if group exists checkMoveToGroupQuery.getResultList()");
- throw new PersistenceException("Query failed trying to check if group exists");
- }
- if(checkMoveToGroupList.size() < 1){
- PolicyLogger.error("The group could not be found with id " + moveToGroup.getId());
- throw new PersistenceException("The group could not be found with id " + moveToGroup.getId());
- } else if(checkMoveToGroupList.size() > 1){
- PolicyLogger.error("Somehow, more than one group with the id "+moveToGroup.getId()+" were found in the database that are not deleted");
- throw new PersistenceException("Somehow, more than one group with the id "+moveToGroup.getId()+" were found in the database that are not deleted");
- } else {
- GroupEntity newGroup = (GroupEntity)checkMoveToGroupList.get(0);
- for(Object pdpObject : pdpsInGroupList){
- PdpEntity pdp = (PdpEntity)pdpObject;
- pdp.setGroup(newGroup);
- if(!stringEquals(pdp.getModifiedBy(),username)){
- pdp.setModifiedBy(username);
- }
- try{
-
- em.flush();
- this.newGroupId = newGroup.getGroupId();
- } catch(PersistenceException e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught PersistenceException trying to set pdp group to null on em.flush()");
- throw new PersistenceException("Query failed trying to set pdp group to ");
- }
- }
- }
- } else {
- PolicyLogger.error("Group "+group.getId()+" is trying to be delted with PDPs. No group was provided to move them to");
- throw new PAPException("Group has PDPs. Must provide a group for them to move to");
- }
- }
-
- //delete group here
- GroupEntity groupToDelete = (GroupEntity)deleteGroupQueryList.get(0);
- groupToDelete.setDeleted(true);
- if(!stringEquals(groupToDelete.getModifiedBy(), username)){
- groupToDelete.setModifiedBy(username);
- }
- em.flush();
- this.groupId = groupToDelete.getGroupKey();
- }
- }
-
- @Override
- public void addPolicyToGroup(String groupID, String policyID, String username) {
- logger.debug("addPolicyToGroup(String groupID, String policyID, String username) as addPolicyToGroup("+groupID+", "+policyID+","+username+") called");
- if(isNullOrEmpty(groupID, policyID, username)){
- throw new IllegalArgumentException("groupID, policyID, and username must not be null or empty");
- }
- synchronized(emLock){
- checkBeforeOperationRun();
- //check if group exists
- Query groupQuery = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted");
- groupQuery.setParameter("groupId", groupID);
- groupQuery.setParameter("deleted", false);
- List<?> groupQueryList;
- try{
- groupQueryList = groupQuery.getResultList();
- }catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to check if group exists groupQuery.getResultList()");
- throw new PersistenceException("Query failed trying to check if group "+groupID+" exists");
- }
- if(groupQueryList.size() < 1){
- PolicyLogger.error("Group policy is being added to does not exist with id "+groupID);
- throw new PersistenceException("Group policy is being added to does not exist with id "+groupID);
- } else if(groupQueryList.size() > 1){
- PolicyLogger.error("Somehow, more than one group with the id "+groupID+" were found in the database that are not deleted");
- throw new PersistenceException("Somehow, more than one group with the id "+groupID+" were found in the database that are not deleted");
- }
- //we need to convert the form of the policy id that is used groups into the form that is used
- //for the database. (com.Config_mypol.1.xml) to (Config_mypol.xml)
- String[] policyNameScopeAndVersion = getNameScopeAndVersionFromPdpPolicy(policyID);
- Query policyQuery = em.createQuery("SELECT p FROM PolicyEntity p WHERE p.policyName=:policyName AND p.scope=:scope AND p.deleted=:deleted");
- policyQuery.setParameter("policyName", policyNameScopeAndVersion[0]);
- policyQuery.setParameter("scope", policyNameScopeAndVersion[1]);
- policyQuery.setParameter("deleted", false);
- List<?> policyQueryList;
- try{
- policyQueryList = policyQuery.getResultList();
- } catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to check if policy exists policyQuery.getResultList()");
- throw new PersistenceException("Query failed trying to check if policy "+policyNameScopeAndVersion[0]+" exists");
- }
- if(policyQueryList.size() < 1){
- PolicyLogger.error("Policy being added to the group does not exist with policy id "+policyNameScopeAndVersion[0]);
- throw new PersistenceException("Policy being added to the group does not exist with policy id "+policyNameScopeAndVersion[0]);
- } else if(policyQueryList.size() > 1){
- PolicyLogger.error("Somehow, more than one policy with the id "+policyNameScopeAndVersion[0]+" were found in the database that are not deleted");
- throw new PersistenceException("Somehow, more than one group with the id "+policyNameScopeAndVersion[0]+" were found in the database that are not deleted");
- }
- GroupEntity group = (GroupEntity)groupQueryList.get(0);
- PolicyEntity policy = (PolicyEntity)policyQueryList.get(0);
- Iterator<PolicyEntity> policyIt = group.getPolicies().iterator();
- String policyName = getPolicyNameAndVersionFromPolicyFileName(policy.getPolicyName())[0];
- try{
- while(policyIt.hasNext()){
- PolicyEntity pol = policyIt.next();
- if(getPolicyNameAndVersionFromPolicyFileName(pol.getPolicyName())[0].equals(policyName)){
- policyIt.remove();
- }
- }
- }catch(Exception e){
- PolicyLogger.error("Could not delete old versions for policy "+policy.getPolicyName()+", ID: "+policy.getPolicyId());
- }
- group.addPolicyToGroup(policy);
- em.flush();
- }
- }
-
- //this means delete pdp not just remove from group
- @Override
- public void removePdpFromGroup(String pdpID, String username) {
- logger.debug("removePdpFromGroup(String pdpID, String username) as removePdpFromGroup("+pdpID+","+username+") called");
- if(isNullOrEmpty(pdpID,username)){
- throw new IllegalArgumentException("pdpID and username must not be null or empty");
- }
- synchronized(emLock){
- checkBeforeOperationRun();
- Query pdpQuery = em.createQuery("SELECT p FROM PdpEntity p WHERE p.pdpId=:pdpId AND p.deleted=:deleted");
- pdpQuery.setParameter("pdpId", pdpID);
- pdpQuery.setParameter("deleted", false);
- List<?> pdpList;
- try{
- pdpList = pdpQuery.getResultList();
- } catch(Exception e){
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to check if pdp exists pdpQuery.getResultList()");
- throw new PersistenceException("Query failed trying to check if pdp "+pdpID+" exists");
- }
- if(pdpList.size() > 1){
- PolicyLogger.error("Somehow, more than one pdp with the id "+pdpID+" were found in the database that are not deleted");
- throw new PersistenceException("Somehow, more than one pdp with the id "+pdpID+" were found in the database that are not deleted");
- } else if(pdpList.size() < 1){
- PolicyLogger.error("Pdp being removed does not exist with id "+pdpID);
- return;
- }
- PdpEntity pdp = (PdpEntity)pdpList.get(0);
- pdp.setGroup(null);
- if(!stringEquals(pdp.getModifiedBy(),username)){
- pdp.setModifiedBy(username);
- }
- pdp.setDeleted(true);
-
- em.flush();
- this.pdpId = pdp.getPdpKey();
- }
- }
- }
-
- private PolicyDBDao(){
-
- }
-
- public static PolicyDBDaoTestClass getPolicyDBDaoTestClass(){
- return new PolicyDBDao().new PolicyDBDaoTestClass();
- }
-
- final class PolicyDBDaoTestClass {
- String getConfigFile(String filename, String scope, PolicyRestAdapter policy){
- return scope + "." + PolicyDBDao.this.getConfigFile(filename, policy);
- }
- String computeScope(String fullPath, String pathToExclude){
- return PolicyDBDao.computeScope(fullPath, pathToExclude);
- }
- String encryptPassword(String password) throws Exception{
- return PolicyDBDao.encryptPassword(password);
- }
- String decryptPassword(String password) throws Exception{
- return PolicyDBDao.decryptPassword(password);
- }
- String getDescriptionFromXacml(String xacmlData){
- return PolicyDBDao.getDescriptionFromXacml(xacmlData);
- }
- String[] getPolicyNameAndVersionFromPolicyFileName(String originalPolicyName){
- return PolicyDBDao.this.getPolicyNameAndVersionFromPolicyFileName(originalPolicyName);
- }
- }
-
-} \ No newline at end of file
diff --git a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/PolicyDBDaoTransaction.java b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/PolicyDBDaoTransaction.java
deleted file mode 100644
index 7b8801cd8..000000000
--- a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/PolicyDBDaoTransaction.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ECOMP-PAP-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.openecomp.policy.pap.xacml.rest.components;
-
-import java.util.List;
-
-import javax.persistence.PersistenceException;
-
-import org.openecomp.policy.rest.jpa.GroupEntity;
-import org.openecomp.policy.rest.jpa.PdpEntity;
-import org.openecomp.policy.xacml.api.pap.EcompPDP;
-import org.openecomp.policy.xacml.api.pap.EcompPDPGroup;
-
-import com.att.research.xacml.api.pap.PAPException;
-
-public interface PolicyDBDaoTransaction {
-
- /**
- * Commits (makes permanent) the current transaction. Also, notifies other PolicyDBDao instances on other PAP servers of the update.
- * @throws IllegalStateException if the PolicyDBDao transaction has not been used or has been committed already.
- * @throws PersistenceException if the commit fails for some reason
- */
- public void commitTransaction();
-
- /**
- * Create or update a policy
- * @param policy A Policy object representing the policy to store or update
- * @param username A string of the username you want to be stored for doing this operation
- * @throws IllegalStateException If a transaction is open that has not yet been committed
- * @throws PersistenceException If a database error occurs
- * @throws IllegalArgumentException If the Policy's PolicyRestAdapter contains incorrect data.
- */
- public void createPolicy(Policy policy, String username) throws IllegalStateException, PersistenceException, IllegalArgumentException;
-
- /**
- * Check if the PolicyDBDaoTransaction is currently open
- * @return False if the PolicyDBDao transaction has not been used or has been committed already, true if it is open.
- */
- public boolean isTransactionOpen();
-
-
-
- /**
- * Delete an existing policy
- * @param policyToDelete The file path of the policy to delete
- * @throws IllegalArgumentException If the file path given can not be parsed
- * @throws IllegalStateException If a transaction is open that has not yet been committed
- * @throws PersistenceException If a database error occurs
- */
- public void deletePolicy(String policyToDelete) throws IllegalStateException, PersistenceException, IllegalArgumentException;
-
- /**
- * Rollback (undo) the current transaction.
- */
- public void rollbackTransaction();
-
- /**
- * Close the PolicyDBDaoTransaction without rolling back or doing anything. Just used to close the EntityManager
- */
- public void close();
-
-
- /**
- * Create a new PDP group in the database
- * @param groupID The ID to name the new group (use PolicyDBDao.createNewPDPGroupId)
- * @param groupName The name to use for the new group
- * @param groupDescription Description of the new group (optional)
- * @param username Username of the user performing the operation
- * @throws IllegalArgumentException If non-optional parameters are null or empty strings
- * @throws IllegalStateException If a transaction is already open
- * @throws PersistenceException If a database error occurs
- */
- public void createGroup(String groupID, String groupName, String groupDescription, String username) throws IllegalArgumentException, IllegalStateException, PersistenceException;
-
- /**
- * Updates a group in the database with a new name of description
- * @param group The group with updated information. The id must match an existing group, but the name and description can be changed.
- * @param username Username of the user performing the operation
- * @throws IllegalArgumentException If non-optional parameters are null or empty strings
- * @throws IllegalStateException If a transaction is already open
- * @throws PersistenceException If a database error occurs or if the group can not be found
- */
- public void updateGroup(EcompPDPGroup group, String username) throws IllegalArgumentException, IllegalStateException, PersistenceException;
-
- /**
- * Updates a PDP in the database with new information
- * @param pdp The PDP to update
- * @param username Username of the user performing the operation
- * @throws IllegalArgumentException If non-optional parameters are null or empty strings
- * @throws IllegalStateException If a transaction is already open
- * @throws PersistenceException If a database error occurs or if the pdp can not be found
- */
- public void updatePdp(EcompPDP pdp, String username) throws IllegalArgumentException, IllegalStateException, PersistenceException;
-
- /**
- * Change the default group in the database to the group provided.
- * @param group The new group which should be set as default in the database
- * @param username Username of the user performing the operation
- * @throws IllegalArgumentException If non-optional parameters are null or empty strings
- * @throws IllegalStateException If a transaction is already open
- * @throws PersistenceException If a database error occurs
- */
- public void changeDefaultGroup(EcompPDPGroup group, String username) throws IllegalArgumentException, IllegalStateException, PersistenceException;
-
- /**
- * Moves a PDP to a new group.
- * @param pdp The PDP which is to be moved to a new group
- * @param group The new group which the PDP should be added to
- * @param username Username of the user performing the operation
- * @throws IllegalArgumentException If non-optional parameters are null or empty strings
- * @throws IllegalStateException If a transaction is already open
- * @throws PersistenceException If a database error occurs
- */
- public void movePdp(EcompPDP pdp, EcompPDPGroup group, String username) throws IllegalArgumentException, IllegalStateException, PersistenceException;
-
- /**
- * Add a new PDP to an existing group
- * @param pdpID The ID to name the new PDP
- * @param groupID The ID of the existing group to add the PDP to
- * @param pdpName The name to use for the new PDP
- * @param pdpDescription Description of the new PDP (optional)
- * @param pdpJmxPort
- * @param username Username of the user performing the operation
- * @throws IllegalArgumentException If non-optional parameters are null or empty strings
- * @throws IllegalStateException If a transaction is already open
- * @throws PersistenceException If a database error occurs
- */
- public void addPdpToGroup(String pdpID, String groupID, String pdpName, String pdpDescription, int pdpJmxPort, String username) throws IllegalArgumentException, IllegalStateException, PersistenceException;
-
- /**
- * Add an existing policy to an existing group
- * @param group The ID of the existing group to add the policy to
- * @param policyID The ID of an existing policy
- * @throws IllegalArgumentException If non-optional parameters are null or empty strings
- * @throws IllegalStateException If a transaction is already open
- * @throws PersistenceException If a database error occurs
- */
- public void addPolicyToGroup(String group, String policyID, String username) throws IllegalArgumentException, IllegalStateException, PersistenceException;
-
-
- /**
- * Delete an existing PDP group
- * @param group A PDPGroup object representing the group to delete
- * @param moveToGroup A PDPGroup object representing another existing group which PDPs in the group being deleted should be moved to
- * @throws IllegalArgumentException If non-optional parameters are null or empty strings
- * @throws IllegalStateException If a transaction is already open
- * @throws PersistenceException If a database error occurs
- * @throws PAPException If an error relating to how groups are handled occurs
- */
- public void deleteGroup(EcompPDPGroup group, EcompPDPGroup moveToGroup, String username)throws IllegalArgumentException, IllegalStateException, PersistenceException, PAPException;
-
- /**
- * Removes an existing PDP from its group and deletes it.
- * @param pdpID The ID of the existing PDP which should be deleted
- * @throws IllegalArgumentException If non-optional parameters are null or empty strings
- * @throws IllegalStateException If a transaction is already open
- * @throws PersistenceException If a database error occurs
- */
- public void removePdpFromGroup(String pdpID, String username) throws IllegalArgumentException, IllegalStateException, PersistenceException;
-
- public GroupEntity getGroup(long groupKey);
- public GroupEntity getGroup(String groupId);
- public List<?> getPdpsInGroup(long groupKey);
- public PdpEntity getPdp(long pdpKey);
-
- void renamePolicy(String oldPath, String newPath,String username);
-
- void clonePolicy(String oldPolicyPath, String newPolicyPath, String username);
-
-}
diff --git a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/SafePolicyBuilder.java b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/SafePolicyBuilder.java
deleted file mode 100644
index bd69a8808..000000000
--- a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/SafePolicyBuilder.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ECOMP-PAP-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.openecomp.policy.pap.xacml.rest.components;
-
-import java.util.List;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.openecomp.policy.common.logging.eelf.PolicyLogger;
-import org.openecomp.policy.controlloop.policy.guard.ControlLoopGuard;
-import org.yaml.snakeyaml.Yaml;
-import org.yaml.snakeyaml.constructor.Constructor;
-
-public class SafePolicyBuilder {
-
- private SafePolicyBuilder(){
- //Private Constructor.
- }
-
- public static ControlLoopGuard loadYamlGuard(String specification) {
- //
- // Read the yaml into our Java Object
- //
- PolicyLogger.info("Requested YAML to convert : " + specification);
- Yaml yaml = new Yaml(new Constructor(ControlLoopGuard.class));
- Object obj = yaml.load(specification);
- return (ControlLoopGuard) obj;
- }
-
- public static String generateXacmlGuard(String xacmlFileContent,Map<String, String> generateMap, List<String> blacklist, List<String> targets) {
- //Setup default values and Targets.
- StringBuilder targetRegex= new StringBuilder(".*|");
- if(targets!=null && !targets.isEmpty()){
- targetRegex = new StringBuilder();
- for(String t : targets){
- targetRegex.append(t + "|");
- }
- }
- if(generateMap.get("clname")==null|| generateMap.get("clname").isEmpty()){
- generateMap.put("clname",".*");
- }
- generateMap.put("targets", targetRegex.toString().substring(0, targetRegex.length()-1));
- // Replace values.
- for(Map.Entry<String,String> map: generateMap.entrySet()){
- Pattern p = Pattern.compile("\\$\\{" +map.getKey() +"\\}");
- Matcher m = p.matcher(xacmlFileContent);
- String finalInput = map.getValue();
- if(finalInput.contains("$")){
- finalInput = finalInput.replace("$", "\\$");
- }
- xacmlFileContent=m.replaceAll(finalInput);
- }
- if(blacklist!=null && !blacklist.isEmpty()){
- StringBuilder rule = new StringBuilder();
- for(String blackListName : blacklist){
- if(blackListName.contains("$")){
- blackListName = blackListName.replace("$", "\\$");
- }
- rule.append("<AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">"+blackListName+"</AttributeValue>");
- }
- Pattern p = Pattern.compile("\\$\\{blackListElement\\}");
- Matcher m = p.matcher(xacmlFileContent);
- xacmlFileContent=m.replaceAll(rule.toString());
- }
- PolicyLogger.info("Generated XACML from the YAML Spec: \n" + xacmlFileContent);
- return xacmlFileContent;
- }
-}
diff --git a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/package-info.java b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/package-info.java
deleted file mode 100644
index 007f08d36..000000000
--- a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/package-info.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ECOMP-PAP-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.openecomp.policy.pap.xacml.rest.components;