diff options
Diffstat (limited to 'ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components')
6 files changed, 1273 insertions, 1019 deletions
diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/ActionPolicy.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/ActionPolicy.java index 9f84a4eac..571a82036 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/ActionPolicy.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/ActionPolicy.java @@ -7,9 +7,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -30,6 +30,7 @@ import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.Objects; import org.onap.policy.common.logging.eelf.MessageCodes; import org.onap.policy.common.logging.eelf.PolicyLogger; @@ -56,17 +57,17 @@ 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 oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType; 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"; @@ -81,46 +82,46 @@ public class ActionPolicy extends Policy { public static final String HEADERS_ATTRIBUTEID = "headers"; public static final String URL_ATTRIBUTEID = "url"; public static final String BODY_ATTRIBUTEID = "body"; - + List<String> dynamicLabelRuleAlgorithms = new LinkedList<>(); List<String> dynamicFieldFunctionRuleAlgorithms = new LinkedList<>(); List<String> dynamicFieldOneRuleAlgorithms = new LinkedList<>(); List<String> dynamicFieldTwoRuleAlgorithms = new LinkedList<>(); - - + private CommonClassDao commonClassDao; - + private static boolean isAttribute = false; - private synchronized static boolean getAttribute () { + + private synchronized static boolean getAttribute() { return isAttribute; } - + public ActionPolicy() { super(); } - - public ActionPolicy(PolicyRestAdapter policyAdapter, CommonClassDao commonClassDao){ + + public ActionPolicy(PolicyRestAdapter policyAdapter, CommonClassDao commonClassDao) { this.policyAdapter = policyAdapter; this.commonClassDao = commonClassDao; } @Override public Map<String, String> savePolicies() throws PAPException { - + Map<String, String> successMap = new HashMap<>(); - if(isPolicyExists()){ + if (isPolicyExists()) { successMap.put("EXISTS", "This Policy already exist on the PAP"); return successMap; } - - if(!ActionPolicy.getAttribute()) { + + if (!ActionPolicy.getAttribute()) { successMap.put("invalidAttribute", "Action Attrbute was not in the database."); return successMap; } - - if(!isPreparedToSave()){ + + if (!isPreparedToSave()) { //Prep and configure the policy for saving prepareToSave(); } @@ -128,24 +129,24 @@ public class ActionPolicy extends Policy { // 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; + 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 PAPException{ + public boolean prepareToSave() throws PAPException { - if(isPreparedToSave()){ + 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(); @@ -155,34 +156,36 @@ public class ActionPolicy extends Policy { 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 = policyAdapter.getActionBody(); setAttribute(false); - //if actionBody is null or empty then we know the ActionAttribute in the request does not exist in the dictionary - if(!(actionBody==null || "".equals(actionBody))){ + //if actionBody is null or empty then we know the ActionAttribute in the request does not exist in the + // dictionary + if (!(actionBody == null || "".equals(actionBody))) { saveActionBody(policyName, actionBody); setAttribute(true); } else { - if(!getAttribute()){ - LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "Could not find " + comboDictValue + " in the ActionPolicyDict table."); + if (!getAttribute()) { + 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; @@ -196,21 +199,21 @@ public class ActionPolicy extends Policy { 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(); - + // Rule attributes are optional and dynamic so check and add them to condition. if (dynamicLabelRuleAlgorithms != null && !dynamicLabelRuleAlgorithms.isEmpty()) { boolean isCompound = false; @@ -222,7 +225,7 @@ public class ActionPolicy extends Policy { if (dynamicFieldOneRuleAlgorithms.get(index).equals(labelAttr)) { ApplyType actionApply = new ApplyType(); - String selectedFunction = dynamicFieldFunctionRuleAlgorithms.get(index).toString(); + String selectedFunction = dynamicFieldFunctionRuleAlgorithms.get(index); String value1 = dynamicFieldOneRuleAlgorithms.get(index); String value2 = dynamicFieldTwoRuleAlgorithms.get(index); actionApply.setFunctionId(getFunctionDefinitionId(selectedFunction)); @@ -234,7 +237,8 @@ public class ActionPolicy extends Policy { } // if rule algorithm not a compound if (!isCompound) { - condition.setExpression(new ObjectFactory().createApply(getInnerActionApply(dynamicLabelRuleAlgorithms.get(index).toString()))); + condition.setExpression(new ObjectFactory().createApply(getInnerActionApply( + dynamicLabelRuleAlgorithms.get(index)))); } rule.setCondition(condition); } @@ -242,34 +246,35 @@ public class ActionPolicy extends Policy { rule.setObligationExpressions(getObligationExpressions()); actionPolicy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().add(rule); policyAdapter.setPolicyData(actionPolicy); - } else { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + "Unsupported data object." + policyAdapter.getData().getClass().getCanonicalName()); - } + } else { + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + "Unsupported data object." + Objects + .requireNonNull(policyAdapter.getData()).getClass().getCanonicalName()); + } setPreparedToSave(true); return true; } - + private static synchronized void setAttribute(boolean b) { isAttribute = b; } // Saving the json Configurations file if exists at server location for action policy. private void saveActionBody(String policyName, String actionBodyData) { - if(policyName.endsWith(".xml")){ - policyName = policyName.replace(".xml", ""); - } - File file = new File(ACTION_HOME+ File.separator + policyName + ".json"); - try(BufferedWriter bw = new BufferedWriter(new FileWriter(file.getAbsoluteFile()))) { + if (policyName.endsWith(".xml")) { + policyName = policyName.replace(".xml", ""); + } + File file = new File(ACTION_HOME + File.separator + policyName + ".json"); + try (BufferedWriter bw = new BufferedWriter(new FileWriter(file.getAbsoluteFile()))) { bw.write(actionBodyData); if (LOGGER.isInfoEnabled()) { LOGGER.info("Action Body is succesfully saved at " + file.getAbsolutePath()); } } catch (IOException e) { - LOGGER.error("Exception Occured"+e); + LOGGER.error("Exception Occured" + e); } } - + // Data required for obligation part is setting here. private ObligationExpressionsType getObligationExpressions() { ObligationExpressionsType obligations = new ObligationExpressionsType(); @@ -331,7 +336,7 @@ public class ActionPolicy extends Policy { obligation.getAttributeAssignmentExpression().add(assignmentMethod); // Add JSON_URL Assignment: - String actionBody = policyAdapter.getActionBody(); + String actionBody = policyAdapter.getActionBody(); if (actionBody != null) { AttributeAssignmentExpressionType assignmentJsonURL = new AttributeAssignmentExpressionType(); assignmentJsonURL.setAttributeId(BODY_ATTRIBUTEID); @@ -339,28 +344,29 @@ public class ActionPolicy extends Policy { AttributeValueType jsonURLAttributeValue = new AttributeValueType(); jsonURLAttributeValue.setDataType(URI_DATATYPE); - jsonURLAttributeValue.getContent().add(CONFIG_URL + "/Action/" + policyName + ".json"); + jsonURLAttributeValue.getContent().add(CONFIG_URL + "/Action/" + policyName + ".json"); assignmentJsonURL.setExpression(new ObjectFactory().createAttributeValue(jsonURLAttributeValue)); obligation.getAttributeAssignmentExpression().add(assignmentJsonURL); } String headerVal = policyAdapter.getActionDictHeader(); - if(headerVal != null && !headerVal.trim().isEmpty()){ + if (headerVal != null && !headerVal.trim().isEmpty()) { // parse it on : to get number of headers String[] result = headerVal.split(":"); - for (String eachString : result){ + for (String eachString : result) { // parse each value on = String[] textFieldVals = eachString.split("="); - obligation.getAttributeAssignmentExpression().add(addDynamicHeaders(textFieldVals[0], textFieldVals[1])); + 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(); @@ -368,7 +374,7 @@ public class ActionPolicy extends Policy { // check the index for the label. for (String labelAttr : dynamicLabelRuleAlgorithms) { if (labelAttr.equals(value1Label)) { - String value1 = dynamicFieldOneRuleAlgorithms.get(index).toString(); + String value1 = dynamicFieldOneRuleAlgorithms.get(index); // check if the row contains label again for (String labelValue : dynamicLabelRuleAlgorithms) { if (labelValue.equals(value1)) { @@ -404,11 +410,15 @@ public class ActionPolicy extends Policy { 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)); + 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)); + 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)); @@ -440,13 +450,16 @@ public class ActionPolicy extends Policy { attributeDesignator.setAttributeId(attributeId); } actionConditionAttributeValue.getContent().add(attributeValue); - innerActionApply.getExpression().add(new ObjectFactory().createAttributeDesignator(attributeDesignator)); + 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)); + actionApply.getExpression() + .add(new ObjectFactory().createAttributeValue(actionConditionAttributeValue)); } else { - actionApply.getExpression().add(new ObjectFactory().createAttributeValue(actionConditionAttributeValue)); + actionApply.getExpression() + .add(new ObjectFactory().createAttributeValue(actionConditionAttributeValue)); actionApply.getExpression().add(new ObjectFactory().createApply(innerActionApply)); } } @@ -467,7 +480,7 @@ public class ActionPolicy extends Policy { 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(); @@ -486,10 +499,11 @@ public class ActionPolicy extends Policy { public Object getCorrectPolicyDataObject() { return policyAdapter.getPolicyData(); } - - public String getFunctionDefinitionId(String key){ - FunctionDefinition object = (FunctionDefinition) commonClassDao.getDataById(FunctionDefinition.class, "short_name", key); - if(object != null){ + + public String getFunctionDefinitionId(String key) { + FunctionDefinition object = + (FunctionDefinition) commonClassDao.getDataById(FunctionDefinition.class, "short_name", key); + if (object != null) { return object.getXacmlid(); } return null; diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/ClosedLoopPolicy.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/ClosedLoopPolicy.java index e446c2af3..8ca4dfa01 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/ClosedLoopPolicy.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/ClosedLoopPolicy.java @@ -7,9 +7,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -54,7 +54,7 @@ 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.TargetType; public class ClosedLoopPolicy extends Policy { @@ -64,24 +64,24 @@ public class ClosedLoopPolicy extends Policy { super(); } - public ClosedLoopPolicy(PolicyRestAdapter policyAdapter){ + public ClosedLoopPolicy(PolicyRestAdapter policyAdapter) { this.policyAdapter = policyAdapter; } //save configuration of the policy based on the policyname private void saveConfigurations(String policyName, String jsonBody) { - if(policyName.endsWith(".xml")){ - policyName = policyName.replace(".xml", ""); - } - try (PrintWriter out = new PrintWriter(CONFIG_HOME + File.separator+ policyName +".json")){ + if (policyName.endsWith(".xml")) { + policyName = policyName.replace(".xml", ""); + } + try (PrintWriter out = new PrintWriter(CONFIG_HOME + File.separator + policyName + ".json")) { String body = jsonBody; //Remove the trapMaxAge in Verification Signature body = body.replace(",\"trapMaxAge\":null", ""); this.policyAdapter.setJsonBody(body); out.println(body); } catch (Exception e) { - LOGGER.error("Exception Occured while writing Configuration Data"+e); + LOGGER.error("Exception Occured while writing Configuration Data" + e); } } @@ -107,12 +107,12 @@ public class ClosedLoopPolicy extends Policy { public Map<String, String> savePolicies() throws PAPException { Map<String, String> successMap = new HashMap<>(); - if(isPolicyExists()){ + if (isPolicyExists()) { successMap.put("EXISTS", "This Policy already exist on the PAP"); return successMap; } - if(!isPreparedToSave()){ + if (!isPreparedToSave()) { prepareToSave(); } @@ -120,16 +120,16 @@ public class ClosedLoopPolicy extends Policy { Path newPolicyPath = null; newPolicyPath = Paths.get(policyAdapter.getNewFileName()); - successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject()); + 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 PAPException{ + public boolean prepareToSave() throws PAPException { - if(isPreparedToSave()){ + if (isPreparedToSave()) { //we have already done this return true; } @@ -166,9 +166,9 @@ public class ClosedLoopPolicy extends Policy { AllOfType allOfOne = new AllOfType(); String fileName = policyAdapter.getNewFileName(); - String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length()); + String name = fileName.substring(fileName.lastIndexOf("\\") + 1); if ((name == null) || (name.equals(""))) { - name = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length()); + name = fileName.substring(fileName.lastIndexOf("/") + 1); } allOfOne.getMatch().add(createMatch("PolicyName", name)); AllOfType allOf = new AllOfType(); @@ -215,7 +215,8 @@ public class ClosedLoopPolicy extends Policy { try { accessURI = new URI(ACTION_ID); } catch (URISyntaxException e) { - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "CreateClosedLoopPolicy", "Exception creating ACCESS URI"); + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "CreateClosedLoopPolicy", + "Exception creating ACCESS URI"); } accessAttributeDesignator.setCategory(CATEGORY_ACTION); accessAttributeDesignator.setDataType(STRING_DATATYPE); @@ -234,7 +235,8 @@ public class ClosedLoopPolicy extends Policy { try { closedURI = new URI(RESOURCE_ID); } catch (URISyntaxException e) { - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "CreateClosedLoopPolicy", "Exception creating closed URI"); + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "CreateClosedLoopPolicy", + "Exception creating closed URI"); } closedAttributeDesignator.setCategory(CATEGORY_RESOURCE); closedAttributeDesignator.setDataType(STRING_DATATYPE); @@ -291,7 +293,7 @@ public class ClosedLoopPolicy extends Policy { AttributeValueType AttributeValue = new AttributeValueType(); AttributeValue.setDataType(URI_DATATYPE); - String content = CONFIG_URL +"/Config/" + getConfigFile(policyName); + String content = CONFIG_URL + "/Config/" + getConfigFile(policyName); System.out.println("URL value :" + content); AttributeValue.getContent().add(content); assignment2.setExpression(new ObjectFactory().createAttributeValue(AttributeValue)); @@ -306,9 +308,9 @@ public class ClosedLoopPolicy extends Policy { attributeValue3.setDataType(STRING_DATATYPE); fileName = FilenameUtils.removeExtension(fileName); fileName = fileName + ".xml"; - String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length()); + String name = fileName.substring(fileName.lastIndexOf("\\") + 1); if ((name == null) || (name.equals(""))) { - name = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length()); + name = fileName.substring(fileName.lastIndexOf("/") + 1); } attributeValue3.getContent().add(name); assignment3.setExpression(new ObjectFactory().createAttributeValue(attributeValue3)); @@ -388,7 +390,6 @@ public class ClosedLoopPolicy extends Policy { advice.getAttributeAssignmentExpression().add(assignment9); - advices.getAdviceExpression().add(advice); return advices; } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/ConfigPolicy.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/ConfigPolicy.java index 6c66898e3..0cd263800 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/ConfigPolicy.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/ConfigPolicy.java @@ -8,9 +8,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -75,20 +75,20 @@ public class ConfigPolicy extends Policy { super(); } - public ConfigPolicy(PolicyRestAdapter policyAdapter){ + public ConfigPolicy(PolicyRestAdapter policyAdapter) { this.policyAdapter = policyAdapter; } // Saving the Configurations file at server location for config policy. protected void saveConfigurations(String policyName) { String fileName = getConfigFile(policyName); - try(BufferedWriter bw = new BufferedWriter(new FileWriter(CONFIG_HOME + File.separator + fileName))) { + try (BufferedWriter bw = new BufferedWriter(new FileWriter(CONFIG_HOME + File.separator + fileName))) { bw.write(configBodyData); if (LOGGER.isDebugEnabled()) { LOGGER.debug("Configuration is succesfully saved"); } } catch (IOException e) { - LOGGER.error("Exception Occured while writing Configuration Data"+e); + LOGGER.error("Exception Occured while writing Configuration Data" + e); } } @@ -144,7 +144,7 @@ public class ConfigPolicy extends Policy { isValidForm = false; } } else if (id.equals(PROPERTIES_CONFIG)) { - if (!PolicyUtils.isPropValid(configBodyData)||configBodyData.equals("")) { + if (!PolicyUtils.isPropValid(configBodyData) || configBodyData.equals("")) { isValidForm = false; } } else if (id.equals(OTHER_CONFIG)) { @@ -161,12 +161,12 @@ public class ConfigPolicy extends Policy { public Map<String, String> savePolicies() throws PAPException { Map<String, String> successMap = new HashMap<>(); - if(isPolicyExists()){ + if (isPolicyExists()) { successMap.put("EXISTS", "This Policy already exist on the PAP"); return successMap; } - if(!isPreparedToSave()){ + if (!isPreparedToSave()) { //Prep and configure the policy for saving prepareToSave(); } @@ -174,16 +174,16 @@ public class ConfigPolicy extends Policy { // 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()); + 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 PAPException{ + public boolean prepareToSave() throws PAPException { - if(isPreparedToSave()){ + if (isPreparedToSave()) { return true; } @@ -214,9 +214,9 @@ public class ConfigPolicy extends Policy { AllOfType allOfOne = new AllOfType(); String fileName = policyAdapter.getNewFileName(); - String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length()); + String name = fileName.substring(fileName.lastIndexOf("\\") + 1); if ((name == null) || (name.equals(""))) { - name = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length()); + name = fileName.substring(fileName.lastIndexOf("/") + 1); } allOfOne.getMatch().add(createMatch("PolicyName", name)); AllOfType allOf = new AllOfType(); @@ -269,9 +269,9 @@ public class ConfigPolicy extends Policy { accessMatch.setAttributeValue(accessAttributeValue); AttributeDesignatorType accessAttributeDesignator = new AttributeDesignatorType(); URI accessURI = null; - try{ + try { accessURI = new URI(ACTION_ID); - }catch(URISyntaxException e){ + } catch (URISyntaxException e) { PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "ConfigPolicy", "Exception creating ACCESS URI"); } accessAttributeDesignator.setCategory(CATEGORY_ACTION); @@ -288,9 +288,9 @@ public class ConfigPolicy extends Policy { configMatch.setAttributeValue(configAttributeValue); AttributeDesignatorType configAttributeDesignator = new AttributeDesignatorType(); URI configURI = null; - try{ + try { configURI = new URI(RESOURCE_ID); - }catch(URISyntaxException e){ + } catch (URISyntaxException e) { PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "ConfigPolicy", "Exception creating Config URI"); } configAttributeDesignator.setCategory(CATEGORY_RESOURCE); @@ -365,9 +365,9 @@ public class ConfigPolicy extends Policy { fileName = FilenameUtils.removeExtension(fileName); fileName = fileName + ".xml"; - String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length()); + String name = fileName.substring(fileName.lastIndexOf("\\") + 1); if ((name == null) || (name.equals(""))) { - name = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length()); + name = fileName.substring(fileName.lastIndexOf("/") + 1); } attributeValue3.getContent().add(name); assignment3.setExpression(new ObjectFactory().createAttributeValue(attributeValue3)); diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateBrmsParamPolicy.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateBrmsParamPolicy.java index 3d9a779e3..6a0c92650 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateBrmsParamPolicy.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateBrmsParamPolicy.java @@ -7,9 +7,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -66,7 +66,7 @@ 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.TargetType; public class CreateBrmsParamPolicy extends Policy { @@ -84,37 +84,36 @@ public class CreateBrmsParamPolicy extends Policy { public String expandConfigBody(String ruleContents, Map<String, String> brmsParamBody) { - Map<String,String> copyMap=new HashMap<>(); + 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]", "")); + 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()) { + 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)) + + 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); + 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("$")){ + if (finalInput.contains("$")) { finalInput = finalInput.replace("$", "\\$"); } - ruleContents=m.replaceAll(finalInput); + 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)); @@ -127,13 +126,14 @@ public class CreateBrmsParamPolicy extends Policy { policyName = policyName.substring(0, policyName.lastIndexOf(".xml")); } try (PrintWriter out = new PrintWriter(CONFIG_HOME + File.separator + policyName + ".txt")) { - String expandedBody=expandConfigBody(ruleBody,policyAdapter.getBrmsParamBody()); + 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"); + PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "CreateBrmsParamPolicy", + "Exception saving configuration file"); } } @@ -163,7 +163,7 @@ public class CreateBrmsParamPolicy extends Policy { public Map<String, String> savePolicies() throws PAPException { Map<String, String> successMap = new HashMap<>(); - if(isPolicyExists()){ + if (isPolicyExists()) { successMap.put("EXISTS", "This Policy already exist on the PAP"); return successMap; } @@ -175,8 +175,8 @@ public class CreateBrmsParamPolicy extends Policy { // xml. Path newPolicyPath = null; newPolicyPath = Paths.get(policyAdapter.getNewFileName()); - successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject()); - if(successMap == null){ + successMap = createPolicy(newPolicyPath, getCorrectPolicyDataObject()); + if (successMap == null) { successMap = new HashMap<>(); PolicyLogger.error("Failed to Update the Database Dictionary Tables."); successMap.put("error", "DB UPDATE"); @@ -184,14 +184,14 @@ public class CreateBrmsParamPolicy extends Policy { return successMap; } - private String getValueFromDictionary(String templateName){ + private String getValueFromDictionary(String templateName) { String ruleTemplate = null; CommonClassDaoImpl dbConnection = new CommonClassDaoImpl(); - String queryString="from BRMSParamTemplate where param_template_name= :templateName"; + String queryString = "from BRMSParamTemplate where param_template_name= :templateName"; SimpleBindings params = new SimpleBindings(); params.put("templateName", templateName); List<Object> result = dbConnection.getDataByQuery(queryString, params); - if(!result.isEmpty()){ + if (!result.isEmpty()) { BRMSParamTemplate template = (BRMSParamTemplate) result.get(0); ruleTemplate = template.getRule(); } @@ -199,14 +199,14 @@ public class CreateBrmsParamPolicy extends Policy { } protected Map<String, String> findType(String rule) { - Map<String, String> mapFieldType= new HashMap<>(); - if(rule!=null){ + Map<String, String> mapFieldType = new HashMap<>(); + if (rule != null) { try { StringBuilder params = new StringBuilder(); Boolean flag = false; Boolean comment = false; String lines[] = rule.split("\n"); - for(String line : lines){ + for (String line : lines) { if (line.isEmpty() || line.startsWith("//")) { continue; } @@ -214,8 +214,8 @@ public class CreateBrmsParamPolicy extends Policy { comment = true; continue; } - if (line.contains("//") && !(line.contains("http://") || line.contains("https://"))){ - line = line.split("\\/\\/")[0]; + if (line.contains("//") && !(line.contains("http://") || line.contains("https://"))) { + line = line.split("\\/\\/")[0]; } if (line.contains("/*")) { comment = true; @@ -264,7 +264,7 @@ public class CreateBrmsParamPolicy extends Policy { if (i == 0) { caption = components[i]; } - if(caption.equals("")){ + if (caption.equals("")) { break; } String nextComponent = ""; @@ -286,7 +286,8 @@ public class CreateBrmsParamPolicy extends Policy { } } } catch (Exception e) { - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "CreateBrmsParamPolicy", "Exception parsing file in findType"); + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "CreateBrmsParamPolicy", + "Exception parsing file in findType"); } } return mapFieldType; @@ -322,30 +323,32 @@ public class CreateBrmsParamPolicy extends Policy { policyName = policyAdapter.getNewFileName(); if (policyAdapter.getData() != null) { - Map<String,String> ruleAndUIValue= policyAdapter.getBrmsParamBody(); - String templateValue= ruleAndUIValue.get("templateName"); - String valueFromDictionary= getValueFromDictionary(templateValue); + Map<String, String> ruleAndUIValue = policyAdapter.getBrmsParamBody(); + String templateValue = ruleAndUIValue.get("templateName"); + String valueFromDictionary = getValueFromDictionary(templateValue); StringBuilder body = new StringBuilder(); try { - body.append("/* Autogenerated Code Please Don't change/remove this comment section. This is for the UI purpose. \n\t " + - "<$%BRMSParamTemplate=" + templateValue + "%$> \n"); + body.append( + "/* Autogenerated Code Please Don't change/remove this comment section. This is for the UI " + + "purpose. \n\t " + + "<$%BRMSParamTemplate=" + templateValue + "%$> \n"); body.append("<%$Values="); for (Map.Entry<String, String> entry : ruleAndUIValue.entrySet()) { String uiKey = entry.getKey(); - if(!"templateName".equals(uiKey)) { - body.append(uiKey+":-:"+entry.getValue()+":|:"); + if (!"templateName".equals(uiKey)) { + body.append(uiKey + ":-:" + entry.getValue() + ":|:"); } } body.append("$%> \n*/ \n"); body.append(valueFromDictionary + "\n"); - } - 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.toString()); + saveConfigurations(policyName, body.toString()); // Make sure the filename ends with an extension if (!policyName.endsWith(".xml")) { @@ -361,10 +364,10 @@ public class CreateBrmsParamPolicy extends Policy { AllOfType allOfOne = new AllOfType(); String fileName = policyAdapter.getNewFileName(); - String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length()); + String name = fileName.substring(fileName.lastIndexOf("\\") + 1); if ((name == null) || (name.equals(""))) { - name = fileName.substring(fileName.lastIndexOf("/") + 1, - fileName.length()); + name = fileName.substring(fileName.lastIndexOf("/") + 1 + ); } allOfOne.getMatch().add(createMatch("PolicyName", name)); @@ -411,7 +414,8 @@ public class CreateBrmsParamPolicy extends Policy { try { accessURI = new URI(ACTION_ID); } catch (URISyntaxException e) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "CreateBrmsParamPolicy", "Exception creating ACCESS URI"); + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "CreateBrmsParamPolicy", + "Exception creating ACCESS URI"); } accessAttributeDesignator.setCategory(CATEGORY_ACTION); accessAttributeDesignator.setDataType(STRING_DATATYPE); @@ -433,7 +437,8 @@ public class CreateBrmsParamPolicy extends Policy { try { configURI = new URI(RESOURCE_ID); } catch (URISyntaxException e) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "CreateBrmsParamPolicy", "Exception creating Config URI"); + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "CreateBrmsParamPolicy", + "Exception creating Config URI"); } configAttributeDesignator.setCategory(CATEGORY_RESOURCE); @@ -469,7 +474,7 @@ public class CreateBrmsParamPolicy extends Policy { // Data required for Advice part is setting here. private AdviceExpressionsType getAdviceExpressions(int version, - String fileName) { + String fileName) { //Policy Config ID Assignment AdviceExpressionsType advices = new AdviceExpressionsType(); @@ -497,7 +502,7 @@ public class CreateBrmsParamPolicy extends Policy { AttributeValueType attributeValue = new AttributeValueType(); attributeValue.setDataType(URI_DATATYPE); - String content = CONFIG_URL + "/Config/"+ getConfigFile(policyName); + String content = CONFIG_URL + "/Config/" + getConfigFile(policyName); attributeValue.getContent().add(content); assignment2.setExpression(new ObjectFactory() @@ -513,11 +518,11 @@ public class CreateBrmsParamPolicy extends Policy { attributeValue3.setDataType(STRING_DATATYPE); fileName = FilenameUtils.removeExtension(fileName); fileName = fileName + ".xml"; - String name = fileName.substring(fileName.lastIndexOf("\\") + 1, - fileName.length()); + String name = fileName.substring(fileName.lastIndexOf("\\") + 1 + ); if ((name == null) || (name.equals(""))) { - name = fileName.substring(fileName.lastIndexOf("/") + 1, - fileName.length()); + name = fileName.substring(fileName.lastIndexOf("/") + 1 + ); } attributeValue3.getContent().add(name); assignment3.setExpression(new ObjectFactory() @@ -551,7 +556,7 @@ public class CreateBrmsParamPolicy extends Policy { //Config Name Assignment AttributeAssignmentExpressionType assignment6 = new AttributeAssignmentExpressionType(); - assignment6.setAttributeId("matching:" +CONFIGID); + assignment6.setAttributeId("matching:" + CONFIGID); assignment6.setCategory(CATEGORY_RESOURCE); assignment6.setIssuer(""); AttributeValueType configNameAttributeValue6 = new AttributeValueType(); @@ -560,30 +565,32 @@ public class CreateBrmsParamPolicy extends Policy { assignment6.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue6)); advice.getAttributeAssignmentExpression().add(assignment6); // Adding Controller Information. - if(policyAdapter.getBrmsController()!=null){ + if (policyAdapter.getBrmsController() != null) { BRMSDictionaryController brmsDicitonaryController = new BRMSDictionaryController(); advice.getAttributeAssignmentExpression().add( - createResponseAttributes("controller:"+ policyAdapter.getBrmsController(), - brmsDicitonaryController.getControllerDataByID(policyAdapter.getBrmsController()).getController())); + createResponseAttributes("controller:" + policyAdapter.getBrmsController(), + brmsDicitonaryController.getControllerDataByID(policyAdapter.getBrmsController()) + .getController())); } - + // Adding Dependencies. - if(policyAdapter.getBrmsDependency()!=null){ + if (policyAdapter.getBrmsDependency() != null) { BRMSDictionaryController brmsDicitonaryController = new BRMSDictionaryController(); ArrayList<String> dependencies = new ArrayList<>(); StringBuilder key = new StringBuilder(); - for(String dependencyName: policyAdapter.getBrmsDependency()){ + for (String dependencyName : policyAdapter.getBrmsDependency()) { dependencies.add(brmsDicitonaryController.getDependencyDataByID(dependencyName).getDependency()); key.append(dependencyName + ","); } advice.getAttributeAssignmentExpression().add( - createResponseAttributes("dependencies:"+key.toString(), dependencies.toString())); + createResponseAttributes("dependencies:" + key.toString(), dependencies.toString())); } - + // Dynamic Field Config Attributes. Map<String, String> dynamicFieldConfigAttributes = policyAdapter.getDynamicFieldConfigAttributes(); for (Entry<String, String> map : dynamicFieldConfigAttributes.entrySet()) { - advice.getAttributeAssignmentExpression().add(createResponseAttributes("key:"+map.getKey(), map.getValue())); + advice.getAttributeAssignmentExpression() + .add(createResponseAttributes("key:" + map.getKey(), map.getValue())); } //Risk Attributes @@ -644,7 +651,7 @@ public class CreateBrmsParamPolicy extends Policy { return policyAdapter.getData(); } - private AttributeAssignmentExpressionType createResponseAttributes(String key, String value){ + private AttributeAssignmentExpressionType createResponseAttributes(String key, String value) { AttributeAssignmentExpressionType assignment7 = new AttributeAssignmentExpressionType(); assignment7.setAttributeId(key); assignment7.setCategory(CATEGORY_RESOURCE); diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateBrmsRawPolicy.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateBrmsRawPolicy.java index 7290f4cd8..efa28b2bb 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateBrmsRawPolicy.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateBrmsRawPolicy.java @@ -7,9 +7,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -60,6 +60,8 @@ import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType; public class CreateBrmsRawPolicy extends Policy { + private static final String EMPTY_STRING = ""; + public CreateBrmsRawPolicy() { super(); } @@ -73,14 +75,15 @@ public class CreateBrmsRawPolicy extends Policy { // Saving the Configurations file at server location for CreateBrmsRawPolicy policy. protected void saveConfigurations(String policyName, String jsonBody) { - if (policyName.endsWith(".xml")) { - policyName = policyName.substring(0, - policyName.lastIndexOf(".xml")); - } - try (PrintWriter out = new PrintWriter(CONFIG_HOME + File.separator + policyName + ".txt")){ + if (policyName.endsWith(".xml")) { + policyName = policyName.substring(0, + policyName.lastIndexOf(".xml")); + } + try (PrintWriter out = new PrintWriter(CONFIG_HOME + File.separator + policyName + ".txt")) { out.println(jsonBody); } catch (Exception e) { - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "CreateBrmsRawPolicy", "Exception saving configurations file"); + PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "CreateBrmsRawPolicy", + "Exception saving configurations file"); } } @@ -117,7 +120,7 @@ public class CreateBrmsRawPolicy extends Policy { public Map<String, String> savePolicies() throws PAPException { Map<String, String> successMap = new HashMap<>(); - if(isPolicyExists()){ + if (isPolicyExists()) { successMap.put("EXISTS", "This Policy already exist on the PAP"); return successMap; } @@ -145,7 +148,7 @@ public class CreateBrmsRawPolicy extends Policy { // separately because the fully configured policy is used for multiple // things @Override - public boolean prepareToSave() throws PAPException { + public boolean prepareToSave() { if (isPreparedToSave()) { // we have already done this @@ -158,7 +161,7 @@ public class CreateBrmsRawPolicy extends Policy { // Create the Instance for pojo, PolicyType object is used in // marshalling. - if (policyAdapter.getPolicyType().equals("Config")) { + if ("Config".equals(policyAdapter.getPolicyType())) { PolicyType policyConfig = new PolicyType(); policyConfig.setVersion(Integer.toString(version)); @@ -170,12 +173,11 @@ public class CreateBrmsRawPolicy extends Policy { policyName = policyAdapter.getNewFileName(); if (policyAdapter.getData() != null) { - //String jsonBody = policyAdapter.getJsonBody(); - String configBody=policyAdapter.getConfigBodyData(); + String configBody = policyAdapter.getConfigBodyData(); saveConfigurations(policyName, configBody); // Make sure the filename ends with an extension - if (policyName.endsWith(".xml") == false) { + if (!policyName.endsWith(".xml")) { policyName = policyName + ".xml"; } @@ -187,10 +189,9 @@ public class CreateBrmsRawPolicy extends Policy { 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()); + String name = fileName.substring(fileName.lastIndexOf("\\") + 1); + if (EMPTY_STRING.equals(name)) { + name = fileName.substring(fileName.lastIndexOf("/") + 1); } allOfOne.getMatch().add(createMatch("PolicyName", name)); @@ -213,10 +214,10 @@ public class CreateBrmsRawPolicy extends Policy { anyOf.getAllOf().add(allOf); TargetType target = new TargetType(); - ((TargetType) target).getAnyOf().add(anyOf); + target.getAnyOf().add(anyOf); // Adding the target to the policy element - configPolicy.setTarget((TargetType) target); + configPolicy.setTarget(target); RuleType rule = new RuleType(); rule.setRuleId(policyAdapter.getRuleID()); @@ -237,7 +238,8 @@ public class CreateBrmsRawPolicy extends Policy { try { accessURI = new URI(ACTION_ID); } catch (URISyntaxException e) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "CreateBrmsRawPolicy", "Exception creating ACCESS URI"); + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "CreateBrmsRawPolicy", + "Exception creating ACCESS URI"); } accessAttributeDesignator.setCategory(CATEGORY_ACTION); accessAttributeDesignator.setDataType(STRING_DATATYPE); @@ -259,7 +261,8 @@ public class CreateBrmsRawPolicy extends Policy { try { configURI = new URI(RESOURCE_ID); } catch (URISyntaxException e) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "CreateBrmsRawPolicy", "Exception creating Config URI"); + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "CreateBrmsRawPolicy", + "Exception creating Config URI"); } configAttributeDesignator.setCategory(CATEGORY_RESOURCE); @@ -296,7 +299,7 @@ public class CreateBrmsRawPolicy extends Policy { // Data required for Advice part is setting here. private AdviceExpressionsType getAdviceExpressions(int version, - String fileName) { + String fileName) { // Policy Config ID Assignment AdviceExpressionsType advices = new AdviceExpressionsType(); @@ -307,7 +310,7 @@ public class CreateBrmsRawPolicy extends Policy { AttributeAssignmentExpressionType assignment1 = new AttributeAssignmentExpressionType(); assignment1.setAttributeId("type"); assignment1.setCategory(CATEGORY_RESOURCE); - assignment1.setIssuer(""); + assignment1.setIssuer(EMPTY_STRING); AttributeValueType configNameAttributeValue = new AttributeValueType(); configNameAttributeValue.setDataType(STRING_DATATYPE); configNameAttributeValue.getContent().add("Configuration"); @@ -320,7 +323,7 @@ public class CreateBrmsRawPolicy extends Policy { AttributeAssignmentExpressionType assignment2 = new AttributeAssignmentExpressionType(); assignment2.setAttributeId("URLID"); assignment2.setCategory(CATEGORY_RESOURCE); - assignment2.setIssuer(""); + assignment2.setIssuer(EMPTY_STRING); AttributeValueType AttributeValue = new AttributeValueType(); AttributeValue.setDataType(URI_DATATYPE); @@ -335,17 +338,15 @@ public class CreateBrmsRawPolicy extends Policy { AttributeAssignmentExpressionType assignment3 = new AttributeAssignmentExpressionType(); assignment3.setAttributeId("PolicyName"); assignment3.setCategory(CATEGORY_RESOURCE); - assignment3.setIssuer(""); + assignment3.setIssuer(EMPTY_STRING); 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()); + String name = fileName.substring(fileName.lastIndexOf("\\") + 1); + if (EMPTY_STRING.equals(name)) { + name = fileName.substring(fileName.lastIndexOf("/") + 1); } System.out.println(name); attributeValue3.getContent().add(name); @@ -357,7 +358,7 @@ public class CreateBrmsRawPolicy extends Policy { AttributeAssignmentExpressionType assignment4 = new AttributeAssignmentExpressionType(); assignment4.setAttributeId("VersionNumber"); assignment4.setCategory(CATEGORY_RESOURCE); - assignment4.setIssuer(""); + assignment4.setIssuer(EMPTY_STRING); AttributeValueType configNameAttributeValue4 = new AttributeValueType(); configNameAttributeValue4.setDataType(STRING_DATATYPE); configNameAttributeValue4.getContent().add(Integer.toString(version)); @@ -369,7 +370,7 @@ public class CreateBrmsRawPolicy extends Policy { AttributeAssignmentExpressionType assignment5 = new AttributeAssignmentExpressionType(); assignment5.setAttributeId("matching:" + ONAPID); assignment5.setCategory(CATEGORY_RESOURCE); - assignment5.setIssuer(""); + assignment5.setIssuer(EMPTY_STRING); AttributeValueType configNameAttributeValue5 = new AttributeValueType(); configNameAttributeValue5.setDataType(STRING_DATATYPE); configNameAttributeValue5.getContent().add(policyAdapter.getOnapName()); @@ -382,7 +383,7 @@ public class CreateBrmsRawPolicy extends Policy { AttributeAssignmentExpressionType assignment6 = new AttributeAssignmentExpressionType(); assignment6.setAttributeId("matching:" + CONFIGID); assignment6.setCategory(CATEGORY_RESOURCE); - assignment6.setIssuer(""); + assignment6.setIssuer(EMPTY_STRING); AttributeValueType configNameAttributeValue6 = new AttributeValueType(); configNameAttributeValue6.setDataType(STRING_DATATYPE); configNameAttributeValue6.getContent().add(policyAdapter.getConfigName()); @@ -390,37 +391,40 @@ public class CreateBrmsRawPolicy extends Policy { advice.getAttributeAssignmentExpression().add(assignment6); // Adding Controller Information. - if(policyAdapter.getBrmsController()!=null){ + if (policyAdapter.getBrmsController() != null) { BRMSDictionaryController brmsDicitonaryController = new BRMSDictionaryController(); advice.getAttributeAssignmentExpression().add( - createResponseAttributes("controller:"+ policyAdapter.getBrmsController(), - brmsDicitonaryController.getControllerDataByID(policyAdapter.getBrmsController()).getController())); + createResponseAttributes("controller:" + policyAdapter.getBrmsController(), + brmsDicitonaryController.getControllerDataByID(policyAdapter.getBrmsController()) + .getController())); } - + // Adding Dependencies. - if(policyAdapter.getBrmsDependency()!=null){ + if (policyAdapter.getBrmsDependency() != null) { BRMSDictionaryController brmsDicitonaryController = new BRMSDictionaryController(); ArrayList<String> dependencies = new ArrayList<>(); StringBuilder key = new StringBuilder(); - for(String dependencyName: policyAdapter.getBrmsDependency()){ + for (String dependencyName : policyAdapter.getBrmsDependency()) { dependencies.add(brmsDicitonaryController.getDependencyDataByID(dependencyName).getDependency()); - key.append(dependencyName + ","); + key.append(dependencyName).append(","); } advice.getAttributeAssignmentExpression().add( - createResponseAttributes("dependencies:"+key.toString(), dependencies.toString())); + 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))); + for (Map.Entry<String, String> entry : dynamicFieldConfigAttributes.entrySet()) { + String keyField = entry.getKey(); + advice.getAttributeAssignmentExpression() + .add(createResponseAttributes("key:" + keyField, entry.getValue())); } //Risk Attributes AttributeAssignmentExpressionType assignment8 = new AttributeAssignmentExpressionType(); assignment8.setAttributeId("RiskType"); assignment8.setCategory(CATEGORY_RESOURCE); - assignment8.setIssuer(""); + assignment8.setIssuer(EMPTY_STRING); AttributeValueType configNameAttributeValue8 = new AttributeValueType(); configNameAttributeValue8.setDataType(STRING_DATATYPE); @@ -432,7 +436,7 @@ public class CreateBrmsRawPolicy extends Policy { AttributeAssignmentExpressionType assignment9 = new AttributeAssignmentExpressionType(); assignment9.setAttributeId("RiskLevel"); assignment9.setCategory(CATEGORY_RESOURCE); - assignment9.setIssuer(""); + assignment9.setIssuer(EMPTY_STRING); AttributeValueType configNameAttributeValue9 = new AttributeValueType(); configNameAttributeValue9.setDataType(STRING_DATATYPE); @@ -444,7 +448,7 @@ public class CreateBrmsRawPolicy extends Policy { AttributeAssignmentExpressionType assignment10 = new AttributeAssignmentExpressionType(); assignment10.setAttributeId("guard"); assignment10.setCategory(CATEGORY_RESOURCE); - assignment10.setIssuer(""); + assignment10.setIssuer(EMPTY_STRING); AttributeValueType configNameAttributeValue10 = new AttributeValueType(); configNameAttributeValue10.setDataType(STRING_DATATYPE); @@ -456,7 +460,7 @@ public class CreateBrmsRawPolicy extends Policy { AttributeAssignmentExpressionType assignment11 = new AttributeAssignmentExpressionType(); assignment11.setAttributeId("TTLDate"); assignment11.setCategory(CATEGORY_RESOURCE); - assignment11.setIssuer(""); + assignment11.setIssuer(EMPTY_STRING); AttributeValueType configNameAttributeValue11 = new AttributeValueType(); configNameAttributeValue11.setDataType(STRING_DATATYPE); @@ -474,11 +478,11 @@ public class CreateBrmsRawPolicy extends Policy { return policyAdapter.getData(); } - private AttributeAssignmentExpressionType createResponseAttributes(String key, String value){ + private AttributeAssignmentExpressionType createResponseAttributes(String key, String value) { AttributeAssignmentExpressionType assignment7 = new AttributeAssignmentExpressionType(); assignment7.setAttributeId(key); assignment7.setCategory(CATEGORY_RESOURCE); - assignment7.setIssuer(""); + assignment7.setIssuer(EMPTY_STRING); AttributeValueType configNameAttributeValue7 = new AttributeValueType(); configNameAttributeValue7.setDataType(STRING_DATATYPE); configNameAttributeValue7.getContent().add(value); diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/PolicyDBDao.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/PolicyDBDao.java index 1b786ed6a..cedefb04e 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/PolicyDBDao.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/PolicyDBDao.java @@ -95,7 +95,7 @@ import com.att.research.xacml.api.pap.PDPPolicy; import com.att.research.xacml.util.XACMLProperties; public class PolicyDBDao { - private static final Logger logger = FlexLogger.getLogger(PolicyDBDao.class); + private static final Logger logger = FlexLogger.getLogger(PolicyDBDao.class); private List<?> otherServers; private EntityManagerFactory emf; private static PolicyDBDao currentInstance = null; @@ -111,8 +111,10 @@ public class PolicyDBDao { public static final String action = "Action"; private static final String groupIdVar = "groupId"; private static final String deletedVar = "deleted"; - private static final String groupEntitySelectQuery = "SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted"; - private static final String pdpEntitySelectQuery = "SELECT p FROM PdpEntity p WHERE p.pdpId=:pdpId AND p.deleted=:deleted"; + private static final String groupEntitySelectQuery = + "SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted"; + private static final String pdpEntitySelectQuery = + "SELECT p FROM PdpEntity p WHERE p.pdpId=:pdpId AND p.deleted=:deleted"; private static final String groupCannotBeFound = "The group could not be found with id "; private static final String foundInDBNotDeleted = " were found in the database that are not deleted"; private static final String moreThanOnePDP = "Somehow, more than one pdp with the same id "; @@ -135,14 +137,16 @@ public class PolicyDBDao { /** * 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. + * @throws IllegalStateException if a PolicyDBDao has already been constructed. Call getPolicyDBDaoInstance() to + * get this. */ - public static PolicyDBDao getPolicyDBDaoInstance(EntityManagerFactory emf){ - logger.debug("getPolicyDBDaoInstance(EntityManagerFactory emf) as getPolicyDBDaoInstance("+emf+") called"); - if(currentInstance == null){ - if(emf != null){ + public static PolicyDBDao getPolicyDBDaoInstance(EntityManagerFactory emf) { + logger.debug("getPolicyDBDaoInstance(EntityManagerFactory emf) as getPolicyDBDaoInstance(" + emf + ") called"); + if (currentInstance == null) { + if (emf != null) { currentInstance = new PolicyDBDao(emf); return currentInstance; } @@ -153,100 +157,108 @@ public class PolicyDBDao { /** * 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. + * @throws IllegalStateException if a PolicyDBDao instance is null. Call createPolicyDBDaoInstance + * (EntityManagerFactory emf) to get this. */ - public static PolicyDBDao getPolicyDBDaoInstance(){ + public static PolicyDBDao getPolicyDBDaoInstance() { logger.debug("getPolicyDBDaoInstance() as getPolicyDBDaoInstance() called"); - if(currentInstance != null){ + if (currentInstance != null) { return currentInstance; } - throw new IllegalStateException("The PolicyDBDao.currentInstance is Null. Use getPolicyDBDao(EntityManagerFactory emf)"); + throw new IllegalStateException( + "The PolicyDBDao.currentInstance is Null. Use getPolicyDBDao(EntityManagerFactory emf)"); } - public void setPapEngine(PAPPolicyEngine papEngine2){ + public void setPapEngine(PAPPolicyEngine papEngine2) { this.papEngine = papEngine2; } - private PolicyDBDao(EntityManagerFactory emf){ - logger.debug("PolicyDBDao(EntityManagerFactory emf) as PolicyDBDao("+emf+") called"); + 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"); + 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 (logger.isDebugEnabled()) { + logger.debug("Number of remote PolicyDBDao instances: " + otherServers.size()); } - if(otherServers.isEmpty()){ + 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){ + private void startTransactionSynced(EntityManager entityMgr, int waitTime) { logger.debug("\n\nstartTransactionSynced(EntityManager entityMgr,int waitTime) as " - + "\n startTransactionSynced("+entityMgr+","+waitTime+") called\n\n"); + + "\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(); + if (logger.isDebugEnabled()) { + Map<String, Object> properties = entityMgr.getProperties(); logger.debug("\n\nstartTransactionSynced():" + "\n entityManager.getProperties() = " + properties + "\n\n"); } - try{ - if(logger.isDebugEnabled()){ + 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()){ + if (logger.isDebugEnabled()) { logger.debug("\n\nstartTransactionSynced():" + "\n GOT the DB lock" + "\n\n"); } - } catch(Exception e){ + } catch (Exception e) { System.out.println("Could not get lock entity"); - logger.error("Exception Occured"+e); + 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."); + 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(){ + private List<?> getRemotePolicyDBDaoList() { logger.debug("getRemotePolicyDBDaoList() as getRemotePolicyDBDaoList() called"); List<?> policyDBDaoEntityList = new LinkedList<>(); EntityManager em = emf.createEntityManager(); startTransactionSynced(em, 1000); - try{ + try { Query getPolicyDBDaoEntityQuery = em.createNamedQuery("PolicyDBDaoEntity.findAll"); policyDBDaoEntityList = getPolicyDBDaoEntityQuery.getResultList(); - } catch(Exception e){ - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Exception querying for other registered PolicyDBDaos"); + } catch (Exception e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "Exception querying for other registered PolicyDBDaos"); logger.warn("List of remote PolicyDBDaos will be empty", e); } - try{ + try { em.getTransaction().commit(); - } catch(Exception e){ + } catch (Exception e) { logger.warn("List of remote PolicyDBDaos will be empty", e); - try{ + try { em.getTransaction().rollback(); - } catch(Exception e2){ + } catch (Exception e2) { logger.debug("List of remote PolicyDBDaos will be empty", e2); } } @@ -254,7 +266,7 @@ public class PolicyDBDao { return policyDBDaoEntityList; } - public PolicyDBDaoTransaction getNewTransaction(){ + public PolicyDBDaoTransaction getNewTransaction() { logger.debug("getNewTransaction() as getNewTransaction() called"); return new PolicyDBDaoTransactionInstance(); } @@ -265,7 +277,7 @@ public class PolicyDBDao { * provide different transaction timeout values in ms because the audit will run longer * than normal transactions. */ - public PolicyDBDaoTransaction getNewAuditTransaction(){ + 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)); @@ -277,15 +289,16 @@ public class PolicyDBDao { /** * 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){ + 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){ + if (one == null || two == null) { return false; } return one.equals(two); @@ -293,34 +306,35 @@ public class PolicyDBDao { /** * 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(){ + private String[] getPapUrlUserPass() { logger.debug("getPapUrl() as getPapUrl() called"); String url = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_URL); - if(url == null){ + if (url == null) { return null; } return splitPapUrlUserPass(url); } - private String[] splitPapUrlUserPass(String url){ + private String[] splitPapUrlUserPass(String url) { String[] urlUserPass = new String[3]; String[] commaSplit = url.split(","); urlUserPass[0] = commaSplit[0]; - if(commaSplit.length > 2){ + if (commaSplit.length > 2) { urlUserPass[1] = commaSplit[1]; urlUserPass[2] = commaSplit[2]; } - if(urlUserPass[1] == null || "".equals(urlUserPass[1])){ + if (urlUserPass[1] == null || "".equals(urlUserPass[1])) { String usernamePropertyValue = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_USERID); - if(usernamePropertyValue != null){ + if (usernamePropertyValue != null) { urlUserPass[1] = usernamePropertyValue; } } - if(urlUserPass[2] == null || "".equals(urlUserPass[2])){ + if (urlUserPass[2] == null || "".equals(urlUserPass[2])) { String passwordPropertyValue = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_PASS); - if(passwordPropertyValue != null){ + if (passwordPropertyValue != null) { urlUserPass[2] = passwordPropertyValue; } } @@ -330,38 +344,40 @@ public class PolicyDBDao { /** * Register the PolicyDBDao instance in the PolicyDBDaoEntity table + * * @return Boolean, were we able to register? */ - private boolean register(){ + private boolean register() { logger.debug("register() as register() called"); String[] url = getPapUrlUserPass(); //--- check URL length - if(url == null || url.length<3){ + if (url == null || url.length < 3) { return false; } EntityManager em = emf.createEntityManager(); - try{ + try { startTransactionSynced(em, 1000); - } catch(IllegalStateException e){ - logger.debug ("\nPolicyDBDao.register() caught an IllegalStateException: \n" +e + "\n"); + } catch (IllegalStateException e) { + logger.debug("\nPolicyDBDao.register() caught an IllegalStateException: \n" + e + "\n"); DatabaseLockEntity lock; lock = em.find(DatabaseLockEntity.class, 1); - if(lock==null){ + if (lock == null) { lock = new DatabaseLockEntity(); em.persist(lock); lock.setKey(1); - try{ + try { em.flush(); em.getTransaction().commit(); em.close(); - } catch(Exception e2){ - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e2, policyDBDaoVar, "COULD NOT CREATE DATABASELOCK ROW. WILL TRY ONE MORE TIME"); + } catch (Exception e2) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e2, policyDBDaoVar, + "COULD NOT CREATE DATABASELOCK ROW. WILL TRY ONE MORE TIME"); } em = emf.createEntityManager(); - try{ + try { startTransactionSynced(em, 1000); - } catch(Exception e3){ + } catch (Exception e3) { String msg = "DATABASE LOCKING NOT WORKING. CONCURRENCY CONTROL NOT WORKING"; PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e3, policyDBDaoVar, msg); throw new IllegalStateException("msg" + "\n" + e3); @@ -370,52 +386,55 @@ public class PolicyDBDao { } 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"); + Query getPolicyDBDaoEntityQuery = + em.createQuery("SELECT e FROM PolicyDBDaoEntity e WHERE e.policyDBDaoUrl=:url"); getPolicyDBDaoEntityQuery.setParameter("url", url[0]); // encrypt the password String txt = null; - try{ + try { txt = CryptoUtils.encryptTxt(url[2].getBytes(StandardCharsets.UTF_8)); - } catch(Exception e){ + } catch (Exception e) { logger.debug(e); PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Could not encrypt PAP password"); } - if(foundPolicyDBDaoEntity == null){ + if (foundPolicyDBDaoEntity == null) { PolicyDBDaoEntity newPolicyDBDaoEntity = new PolicyDBDaoEntity(); em.persist(newPolicyDBDaoEntity); newPolicyDBDaoEntity.setPolicyDBDaoUrl(url[0]); - newPolicyDBDaoEntity.setDescription("PAP server at "+url[0]); + newPolicyDBDaoEntity.setDescription("PAP server at " + url[0]); newPolicyDBDaoEntity.setUsername(url[1]); newPolicyDBDaoEntity.setPassword(txt); - try{ + try { em.getTransaction().commit(); - } catch(Exception e){ + } catch (Exception e) { logger.debug(e); - try{ + try { em.getTransaction().rollback(); - } catch(Exception e2){ + } catch (Exception e2) { logger.debug(e2); - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e2, policyDBDaoVar, "Could not add new PolicyDBDao to the database"); + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e2, policyDBDaoVar, + "Could not add new PolicyDBDao to the database"); } } } else { //just want to update in order to change modified date - if(url[1] != null && !stringEquals(url[1], foundPolicyDBDaoEntity.getUsername())){ + if (url[1] != null && !stringEquals(url[1], foundPolicyDBDaoEntity.getUsername())) { foundPolicyDBDaoEntity.setUsername(url[1]); } - if(txt != null && !stringEquals(txt, foundPolicyDBDaoEntity.getPassword())){ + if (txt != null && !stringEquals(txt, foundPolicyDBDaoEntity.getPassword())) { foundPolicyDBDaoEntity.setPassword(txt); } foundPolicyDBDaoEntity.preUpdate(); - try{ + try { em.getTransaction().commit(); - } catch(Exception e){ + } catch (Exception e) { logger.debug(e); - try{ + try { em.getTransaction().rollback(); - } catch(Exception e2){ + } catch (Exception e2) { logger.debug(e2); - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e2, policyDBDaoVar, "Could not update PolicyDBDao in the database"); + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e2, policyDBDaoVar, + "Could not update PolicyDBDao in the database"); } } } @@ -425,62 +444,66 @@ public class PolicyDBDao { } private class NotifyOtherThread implements Runnable { - public NotifyOtherThread(Object obj, long entityId, String entityType, String newGroupId){ + 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(){ + public void run() { //naming of 'o' is for backwards compatibility with the rest of the function - PolicyDBDaoEntity dbdEntity = (PolicyDBDaoEntity)obj; + PolicyDBDaoEntity dbdEntity = (PolicyDBDaoEntity) obj; String o = dbdEntity.getPolicyDBDaoUrl(); String username = dbdEntity.getUsername(); String txt; - try{ + try { txt = new String(CryptoUtils.decryptTxt(dbdEntity.getPassword()), StandardCharsets.UTF_8); - } catch(Exception e){ + } catch (Exception e) { logger.debug(e); //if we can't decrypt, might as well try it anyway txt = dbdEntity.getPassword(); } Base64.Encoder encoder = Base64.getEncoder(); - String encoding = encoder.encodeToString((username+":"+txt).getBytes(StandardCharsets.UTF_8)); + String encoding = encoder.encodeToString((username + ":" + txt).getBytes(StandardCharsets.UTF_8)); HttpURLConnection connection = null; UUID requestID = UUID.randomUUID(); URL url; String papUrl; try { String[] papUrlUserPass = getPapUrlUserPass(); - if(papUrlUserPass == null ){ + if (papUrlUserPass == null) { papUrl = "undefined"; } else { papUrl = papUrlUserPass[0]; } - logger.debug("We are going to try to notify "+o); + 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){ + try { + ourUrl = splitPapUrlUserPass((String) o)[0]; + } catch (Exception e) { logger.debug(e); } - if(o == null){ + if (o == null) { o = "undefined"; } - if(papUrl.equals(ourUrl)){ - logger.debug(o+" is our url, skipping notify"); + if (papUrl.equals(ourUrl)) { + logger.debug(o + " is our url, skipping notify"); return; } - if(newGroupId == null){ - url = new URL(o+"?policydbdaourl="+papUrl+"&entityid="+entityId+"&entitytype="+entityType); + if (newGroupId == null) { + url = new URL(o + "?policydbdaourl=" + papUrl + "&entityid=" + entityId + "&entitytype=" + + entityType); } else { - url = new URL(o+"?policydbdaourl="+papUrl+"&entityid="+entityId+"&entitytype="+entityType+"&extradata="+newGroupId); + url = new URL(o + "?policydbdaourl=" + papUrl + "&entityid=" + entityId + "&entitytype=" + + entityType + "&extradata=" + newGroupId); } } catch (MalformedURLException e) { logger.warn("Caught MalformedURLException on: new URL()", e); @@ -490,11 +513,11 @@ public class PolicyDBDao { // Open up the connection // logger.info("PolicyDBDao: NotifyOtherThread: notifying other PAPs of an update"); - logger.info("Connecting with url: "+url); + logger.info("Connecting with url: " + url); try { - connection = (HttpURLConnection)url.openConnection(); + connection = (HttpURLConnection) url.openConnection(); } catch (Exception e) { - logger.warn("Caught exception on: url.openConnection()",e); + logger.warn("Caught exception on: url.openConnection()", e); return; } // @@ -504,7 +527,7 @@ public class PolicyDBDao { connection.setRequestMethod("PUT"); } catch (ProtocolException e) { //why would this error ever occur? - logger.warn("Caught ProtocolException on connection.setRequestMethod(\"PUT\");",e); + logger.warn("Caught ProtocolException on connection.setRequestMethod(\"PUT\");", e); return; } connection.setRequestProperty("Authorization", "Basic " + encoding); @@ -512,9 +535,10 @@ public class PolicyDBDao { 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){ + 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.", e); readTimeout = 10000; } @@ -534,14 +558,15 @@ public class PolicyDBDao { try { connection.connect(); } catch (Exception e) { - logger.warn("Caught exception on: connection.connect()",e); + logger.warn("Caught exception on: connection.connect()", e); return; } try { if (connection.getResponseCode() == 200) { logger.info("PolicyDBDao: NotifyOtherThread received response 200 from pap server on notify"); } else { - logger.warn("PolicyDBDao: NotifyOtherThread connection response code not 200, received: "+connection.getResponseCode()); + logger.warn("PolicyDBDao: NotifyOtherThread connection response code not 200, received: " + + connection.getResponseCode()); } } catch (Exception e) { logger.warn("Caught Exception on: connection.getResponseCode() ", e); @@ -556,7 +581,7 @@ public class PolicyDBDao { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); String description = ""; - try{ + try { DocumentBuilder db = dbf.newDocumentBuilder(); Document document = db.parse(source); @@ -564,8 +589,8 @@ public class PolicyDBDao { XPath xpath = xpathFactory.newXPath(); description = xpath.evaluate(expression, document); - }catch(Exception e){ - logger.error("Exception Occured while evaluating path"+e); + } catch (Exception e) { + logger.error("Exception Occured while evaluating path" + e); } return description; } @@ -573,70 +598,79 @@ public class PolicyDBDao { private static final String POLICY_NOTIFICATION = "policy"; private static final String PDP_NOTIFICATION = "pdp"; private static 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); + + 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); + 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){ + if (retries < 1) { retries = 1; } int pauseBetweenRetries = 1000; - switch(entityType){ + switch (entityType) { case POLICY_NOTIFICATION: - for(int i=0; i<retries;i++){ - try{ + for (int i = 0; i < retries; i++) { + try { handleIncomingPolicyChange(entityId); break; - } catch(Exception e){ + } catch (Exception e) { logger.debug(e); - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught exception on handleIncomingPolicyChange("+url+", "+entityId+", "+extraData+")"); + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "Caught exception on handleIncomingPolicyChange(" + url + ", " + entityId + ", " + + extraData + ")"); } - try{ + try { Thread.sleep(pauseBetweenRetries); - }catch(InterruptedException ie){ + } catch (InterruptedException ie) { Thread.currentThread().interrupt(); break; } } break; case PDP_NOTIFICATION: - for(int i=0; i<retries;i++){ - try{ + for (int i = 0; i < retries; i++) { + try { handleIncomingPdpChange(entityId, transaction); break; - } catch(Exception e){ + } catch (Exception e) { logger.debug(e); - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught exception on handleIncomingPdpChange("+url+", "+entityId+", "+transaction+")"); + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "Caught exception on handleIncomingPdpChange(" + url + ", " + entityId + ", " + + transaction + ")"); } - try{ + try { Thread.sleep(pauseBetweenRetries); - }catch(InterruptedException ie){ + } catch (InterruptedException ie) { Thread.currentThread().interrupt(); break; } } break; case GROUP_NOTIFICATION: - for(int i=0; i<retries;i++){ - try{ + for (int i = 0; i < retries; i++) { + try { handleIncomingGroupChange(entityId, extraData, transaction); break; - }catch(Exception e){ + } catch (Exception e) { logger.debug(e); - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught exception on handleIncomingGroupChange("+url+", "+entityId+", "+extraData+", "+transaction+", "+xacmlPapServlet+")"); + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "Caught exception on handleIncomingGroupChange(" + url + ", " + entityId + ", " + + extraData + ", " + transaction + ", " + xacmlPapServlet + ")"); } - try{ + try { Thread.sleep(pauseBetweenRetries); - }catch(InterruptedException ie){ + } catch (InterruptedException ie) { Thread.currentThread().interrupt(); break; } @@ -647,21 +681,23 @@ public class PolicyDBDao { transaction.rollbackTransaction(); } - private void handleIncomingGroupChange(String groupId, String extraData,PolicyDBDaoTransaction transaction) throws PAPException, PolicyDBException{ + private void handleIncomingGroupChange(String groupId, String extraData, PolicyDBDaoTransaction transaction) + throws PAPException, PolicyDBException { GroupEntity groupRecord = null; long groupIdLong = -1; - try{ + try { groupIdLong = Long.parseLong(groupId); - } catch(NumberFormatException e){ - throw new IllegalArgumentException("groupId "+groupId+" cannot be parsed into a long"); + } catch (NumberFormatException e) { + throw new IllegalArgumentException("groupId " + groupId + " cannot be parsed into a long"); } - try{ + try { groupRecord = transaction.getGroup(groupIdLong); - } catch(Exception e){ - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception trying to get pdp group record with transaction.getGroup("+groupIdLong+");"); - throw new PAPException("Could not get local group "+groupIdLong); + } catch (Exception e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "Caught Exception trying to get pdp group record with transaction.getGroup(" + groupIdLong + ");"); + throw new PAPException("Could not get local group " + groupIdLong); } - if(groupRecord == null){ + if (groupRecord == null) { throw new PersistenceException("The group record returned is null"); } //compare to local fs @@ -670,139 +706,164 @@ public class PolicyDBDao { try { localGroup = papEngine.getGroup(groupRecord.getGroupId()); } catch (Exception e) { - logger.warn("Caught PAPException trying to get local pdp group with papEngine.getGroup("+groupId+");",e); + logger.warn("Caught PAPException trying to get local pdp group with papEngine.getGroup(" + groupId + ");", + e); } - if(localGroup == null && extraData != null){ + if (localGroup == null && extraData != null) { //here we can try to load an old group id from the extraData - try{ + try { localGroup = papEngine.getGroup(extraData); - }catch(Exception e){ - logger.warn("Caught PAPException trying to get local pdp group with papEngine.getGroup("+extraData+");",e); + } catch (Exception e) { + logger.warn( + "Caught PAPException trying to get local pdp group with papEngine.getGroup(" + extraData + ");", + e); } } - if(localGroup != null && groupRecord.isDeleted()){ + if (localGroup != null && groupRecord.isDeleted()) { OnapPDPGroup newLocalGroup = null; - if(extraData != null){ + if (extraData != null) { try { newLocalGroup = papEngine.getGroup(extraData); } catch (PAPException e) { - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught PAPException trying to get new pdp group with papEngine.getGroup("+extraData+");"); + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "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, policyDBDaoVar, "Caught PAPException trying to get remove pdp group with papEngine.removeGroup("+localGroup+", "+newLocalGroup+");"); - throw new PAPException("Could not remove group "+groupId); + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "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){ + } 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, policyDBDaoVar, "Caught PAPException trying to create pdp group with papEngine.newGroup(groupRecord.getgroupName(), groupRecord.getDescription());"); - throw new PAPException("Could not create group "+groupRecord); + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "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, policyDBDaoVar, "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"); + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e1, policyDBDaoVar, + "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; + for (Object pdpO : pdpsInGroup) { + PdpEntity pdp = (PdpEntity) pdpO; try { - papEngine.newPDP(pdp.getPdpId(), localGroup, pdp.getPdpName(), pdp.getDescription(), pdp.getJmxPort()); + papEngine.newPDP(pdp.getPdpId(), localGroup, pdp.getPdpName(), pdp.getDescription(), + pdp.getJmxPort()); } catch (NullPointerException | PAPException e) { - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "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); + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "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)){ + 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()); + StdPDPGroup localGroupClone = + new StdPDPGroup(localGroup.getId(), localGroup.isDefaultGroup(), localGroup.getName(), + localGroup.getDescription(), ((StdPDPGroup) localGroup).getDirectory()); localGroupClone.setOnapPdps(localGroup.getOnapPdps()); 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()){ + if (!localGroupClone.isDefaultGroup() && groupRecord.isDefaultGroup()) { try { papEngine.setDefaultGroup(localGroup); return; } catch (PAPException e) { - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught PAPException trying to set default group with papEngine.SetDefaultGroup("+localGroupClone+");"); - throw new PAPException("Could not set default group to "+localGroupClone); + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "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)){ + if (updateGroupPoliciesInFileSystem(localGroupClone, localGroup, groupRecord, transaction)) { needToUpdate = true; } - if(!stringEquals(localGroupClone.getId(),groupRecord.getGroupId()) || !stringEquals(localGroupClone.getName(),groupRecord.getgroupName())){ + 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())){ + if (!stringEquals(localGroupClone.getDescription(), groupRecord.getDescription())) { localGroupClone.setDescription(groupRecord.getDescription()); needToUpdate = true; } - if(needToUpdate){ + if (needToUpdate) { try { papEngine.updateGroup(localGroupClone); } catch (PAPException e) { - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught PAPException trying to update group with papEngine.updateGroup("+localGroupClone+");"); - throw new PAPException("Could not update group "+localGroupClone); + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "Caught PAPException trying to update group with papEngine.updateGroup(" + localGroupClone + + ");"); + throw new PAPException("Could not update group " + localGroupClone); } } } } - //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(OnapPDPGroup pdpGroup,OnapPDPGroup oldPdpGroup, GroupEntity groupRecord, PolicyDBDaoTransaction transaction) throws PAPException, PolicyDBException{ - if(!(pdpGroup instanceof StdPDPGroup)){ + //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(OnapPDPGroup pdpGroup, OnapPDPGroup oldPdpGroup, + GroupEntity groupRecord, PolicyDBDaoTransaction transaction) + throws PAPException, PolicyDBException { + if (!(pdpGroup instanceof StdPDPGroup)) { throw new PAPException("group is not a StdPDPGroup"); } - StdPDPGroup group = (StdPDPGroup)pdpGroup; + 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<>(oldPdpGroup.getPolicies().size()); + HashMap<String, PDPPolicy> currentPolicySet = new HashMap<>(oldPdpGroup.getPolicies().size()); HashSet<PDPPolicy> newPolicySet = new HashSet<>(); - for(PDPPolicy pdpPolicy : oldPdpGroup.getPolicies()){ + for (PDPPolicy pdpPolicy : oldPdpGroup.getPolicies()) { currentPolicySet.put(pdpPolicy.getId(), pdpPolicy); } - for(PolicyEntity policy : groupRecord.getPolicies()){ + for (PolicyEntity policy : groupRecord.getPolicies()) { String pdpPolicyName = getPdpPolicyName(policy.getPolicyName(), policy.getScope()); - if(group.getPolicy(pdpPolicyName) == null){ + if (group.getPolicy(pdpPolicyName) == null) { didUpdate = true; - if(currentPolicySet.containsKey(pdpPolicyName)){ + if (currentPolicySet.containsKey(pdpPolicyName)) { newPolicySet.add(currentPolicySet.get(pdpPolicyName)); - } else{ - logger.info("PolicyDBDao: Adding the new policy to the PDP group after notification: " + pdpPolicyName); + } else { + logger.info( + "PolicyDBDao: Adding the new policy to the PDP group after notification: " + pdpPolicyName); InputStream policyStream = new ByteArrayInputStream(policy.getPolicyData().getBytes()); - group.copyPolicyToFile(pdpPolicyName,policyStream); - ((StdPDPPolicy)(group.getPolicy(pdpPolicyName))).setName(removeExtensionAndVersionFromPolicyName(pdpPolicyName)); + group.copyPolicyToFile(pdpPolicyName, policyStream); + ((StdPDPPolicy) (group.getPolicy(pdpPolicyName))) + .setName(removeExtensionAndVersionFromPolicyName(pdpPolicyName)); try { policyStream.close(); } catch (IOException e) { didUpdate = false; - PolicyLogger.error(e.getMessage() +e); + PolicyLogger.error(e.getMessage() + e); } } } } logger.info("PolicyDBDao: Adding updated policies to group after notification."); - if(didUpdate){ + if (didUpdate) { newPolicySet.addAll(group.getPolicies()); group.setPolicies(newPolicySet); } @@ -813,47 +874,55 @@ public class PolicyDBDao { * This method is called during all pushPolicy transactions and makes sure the file system * group is in sync with the database groupentity */ - private StdPDPGroup synchronizeGroupPoliciesInFileSystem(StdPDPGroup pdpGroup, GroupEntity groupentity) throws PAPException, PolicyDBException{ + private StdPDPGroup synchronizeGroupPoliciesInFileSystem(StdPDPGroup pdpGroup, GroupEntity groupentity) + throws PAPException, PolicyDBException { - HashMap<String,PDPPolicy> currentPolicyMap = new HashMap<>(); + HashMap<String, PDPPolicy> currentPolicyMap = new HashMap<>(); HashSet<String> newPolicyIdSet = new HashSet<>(); HashSet<PDPPolicy> newPolicySet = new HashSet<>(); - for(PDPPolicy pdpPolicy : pdpGroup.getPolicies()){ + for (PDPPolicy pdpPolicy : pdpGroup.getPolicies()) { currentPolicyMap.put(pdpPolicy.getId(), pdpPolicy); } - for(PolicyEntity policy : groupentity.getPolicies()){ + for (PolicyEntity policy : groupentity.getPolicies()) { String pdpPolicyId = getPdpPolicyName(policy.getPolicyName(), policy.getScope()); newPolicyIdSet.add(pdpPolicyId); - if(currentPolicyMap.containsKey(pdpPolicyId)){ + if (currentPolicyMap.containsKey(pdpPolicyId)) { newPolicySet.add(currentPolicyMap.get(pdpPolicyId)); } else { //convert PolicyEntity object to PDPPolicy String name = pdpPolicyId.replace(".xml", ""); name = name.substring(0, name.lastIndexOf('.')); InputStream policyStream = new ByteArrayInputStream(policy.getPolicyData().getBytes()); - pdpGroup.copyPolicyToFile(pdpPolicyId,name,policyStream); + pdpGroup.copyPolicyToFile(pdpPolicyId, name, policyStream); URI location = Paths.get(pdpGroup.getDirectory().toAbsolutePath().toString(), pdpPolicyId).toUri(); StdPDPPolicy newPolicy = null; try { - newPolicy = new StdPDPPolicy(pdpPolicyId, true, removeExtensionAndVersionFromPolicyName(pdpPolicyId),location); + newPolicy = + new StdPDPPolicy(pdpPolicyId, true, removeExtensionAndVersionFromPolicyName(pdpPolicyId), + location); newPolicySet.add(newPolicy); } catch (Exception e) { logger.debug(e); - PolicyLogger.error("PolicyDBDao: Exception occurred while creating the StdPDPPolicy newPolicy object " + e.getMessage()); + PolicyLogger + .error("PolicyDBDao: Exception occurred while creating the StdPDPPolicy newPolicy object " + + e.getMessage()); } } } - for(String id : currentPolicyMap.keySet()) { - if(!newPolicyIdSet.contains(id)){ + for (String id : currentPolicyMap.keySet()) { + if (!newPolicyIdSet.contains(id)) { try { Files.delete(Paths.get(currentPolicyMap.get(id).getLocation())); } catch (Exception e) { logger.debug(e); - PolicyLogger.error("PolicyDBDao: Exception occurred while attempting to delete the old version of the policy file from the group. " + e.getMessage()); + PolicyLogger + .error("PolicyDBDao: Exception occurred while attempting to delete the old version of the" + + " policy file from the group. " + + e.getMessage()); } } } @@ -864,139 +933,156 @@ public class PolicyDBDao { return pdpGroup; } - private String removeExtensionAndVersionFromPolicyName(String originalPolicyName) throws PolicyDBException{ + private String removeExtensionAndVersionFromPolicyName(String originalPolicyName) throws PolicyDBException { 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) throws PolicyDBException{ + private String[] getPolicyNameAndVersionFromPolicyFileName(String originalPolicyName) throws PolicyDBException { String policyName = originalPolicyName; String[] nameAndVersion = new String[2]; - try{ + try { policyName = removeFileExtension(policyName); - nameAndVersion[0] = policyName.substring(0,policyName.lastIndexOf('.')); - if(isNullOrEmpty(nameAndVersion[0])){ + nameAndVersion[0] = policyName.substring(0, policyName.lastIndexOf('.')); + if (isNullOrEmpty(nameAndVersion[0])) { throw new PolicyDBException(); } - } catch(Exception e){ + } catch (Exception e) { nameAndVersion[0] = originalPolicyName; logger.debug(e); } - try{ - nameAndVersion[1] = policyName.substring(policyName.lastIndexOf('.')+1); - if(isNullOrEmpty(nameAndVersion[1])){ + try { + nameAndVersion[1] = policyName.substring(policyName.lastIndexOf('.') + 1); + if (isNullOrEmpty(nameAndVersion[1])) { throw new PolicyDBException(); } - } catch(Exception e){ + } catch (Exception e) { nameAndVersion[1] = "1"; logger.debug(e); } return nameAndVersion; } - private void handleIncomingPdpChange(String pdpId, PolicyDBDaoTransaction transaction) throws PAPException{ + private void handleIncomingPdpChange(String pdpId, PolicyDBDaoTransaction transaction) throws PAPException { //get pdp long pdpIdLong = -1; - try{ + try { pdpIdLong = Long.parseLong(pdpId); - }catch(NumberFormatException e){ - throw new IllegalArgumentException("pdpId "+pdpId+" cannot be parsed into a long"); + } catch (NumberFormatException e) { + throw new IllegalArgumentException("pdpId " + pdpId + " cannot be parsed into a long"); } PdpEntity pdpRecord = null; - try{ + try { pdpRecord = transaction.getPdp(pdpIdLong); - }catch(Exception e){ - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception trying to get pdp record with transaction.getPdp("+pdpIdLong+");"); - throw new PAPException("Could not get local pdp "+pdpIdLong); + } catch (Exception e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "Caught Exception trying to get pdp record with transaction.getPdp(" + pdpIdLong + ");"); + throw new PAPException("Could not get local pdp " + pdpIdLong); } - if(pdpRecord == null){ + 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); + logger.warn("Caught PAPException trying to get local pdp with papEngine.getPDP(" + pdpId + ");", e); } - if(localPdp != null && pdpRecord.isDeleted()){ + if (localPdp != null && pdpRecord.isDeleted()) { try { papEngine.removePDP((OnapPDP) localPdp); } catch (PAPException e) { - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught PAPException trying to get remove pdp with papEngine.removePDP("+localPdp+");"); - throw new PAPException("Could not remove pdp "+pdpId); + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "Caught PAPException trying to get remove pdp with papEngine.removePDP(" + localPdp + ");"); + throw new PAPException("Could not remove pdp " + pdpId); } - } - else if(localPdp == null){ + } else if (localPdp == null) { //add new pdp //get group OnapPDPGroup localGroup = null; try { localGroup = papEngine.getGroup(pdpRecord.getGroup().getGroupId()); } catch (PAPException e1) { - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e1, policyDBDaoVar, "Caught PAPException trying to get local group to add pdp to with papEngine.getGroup(pdpRecord.getGroup().getGroupId());"); + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e1, policyDBDaoVar, + "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()); + papEngine.newPDP(pdpRecord.getPdpId(), localGroup, pdpRecord.getPdpName(), pdpRecord.getDescription(), + pdpRecord.getJmxPort()); } catch (NullPointerException | PAPException e) { - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "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); + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "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())){ + 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())){ + if (!stringEquals(localPdp.getDescription(), pdpRecord.getDescription())) { localPdp.setDescription(pdpRecord.getDescription()); needToUpdate = true; } String localPdpGroupId = null; - try{ + try { localPdpGroupId = papEngine.getPDPGroup((OnapPDP) localPdp).getId(); - } catch(PAPException e){ + } 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); + 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())){ + if (!stringEquals(localPdpGroupId, pdpRecord.getGroup().getGroupId())) { OnapPDPGroup newPdpGroup = null; - try{ + try { newPdpGroup = papEngine.getGroup(pdpRecord.getGroup().getGroupId()); - }catch(PAPException e){ + } catch (PAPException e) { //ok, now we have an issue. Time to stop things - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught PAPException trying to get id of local group to move pdp to with papEngine.getGroup(pdpRecord.getGroup().getGroupId());"); + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "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{ + try { papEngine.movePDP((OnapPDP) localPdp, newPdpGroup); - }catch(PAPException e){ - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught PAPException trying to move pdp with papEngine.movePDP(localPdp, newPdpGroup);"); - throw new PAPException("Could not move pdp "+localPdp); + } catch (PAPException e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "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()){ + if (((PdpEntity) localPdp).getJmxPort() != pdpRecord.getJmxPort()) { ((PdpEntity) localPdp).setJmxPort(pdpRecord.getJmxPort()); needToUpdate = true; } - if(needToUpdate){ + if (needToUpdate) { try { papEngine.updatePDP((OnapPDP) localPdp); } catch (PAPException e) { - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught PAPException trying to update pdp with papEngine.updatePdp("+localPdp+");"); - throw new PAPException("Could not update pdp "+localPdp); + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "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 policyId){ + + private void handleIncomingPolicyChange(String policyId) { String policyName = null; EntityManager em = emf.createEntityManager(); Query getPolicyEntityQuery = em.createNamedQuery("PolicyEntity.FindById"); @@ -1005,38 +1091,39 @@ public class PolicyDBDao { @SuppressWarnings("unchecked") List<PolicyEntity> policies = getPolicyEntityQuery.getResultList(); PolicyEntity policy = null; - if (!policies.isEmpty()){ + if (!policies.isEmpty()) { policy = policies.get(0); } String action = "unknown action"; try { - if(policy != null){ + if (policy != null) { policyName = policy.getPolicyName(); logger.info("Deleting old Policy Config File for " + policy.getPolicyName()); action = "delete"; Path subFile = null; - if (policy.getConfigurationData()!= null){ + if (policy.getConfigurationData() != null) { subFile = getPolicySubFile(policy.getConfigurationData().getConfigurationName(), config); - }else if(policy.getActionBodyEntity()!= null){ + } else if (policy.getActionBodyEntity() != null) { subFile = getPolicySubFile(policy.getActionBodyEntity().getActionBodyName(), action); } - if(subFile != null){ + if (subFile != null) { Files.deleteIfExists(subFile); } - if (policy.getConfigurationData()!= null){ + if (policy.getConfigurationData() != null) { writePolicySubFile(policy, config); - }else if(policy.getActionBodyEntity()!= null){ + } else if (policy.getActionBodyEntity() != null) { writePolicySubFile(policy, action); } } } catch (IOException e1) { - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e1, policyDBDaoVar, "Error occurred while performing [" + action + "] of Policy File: " + policyName); + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e1, policyDBDaoVar, + "Error occurred while performing [" + action + "] of Policy File: " + policyName); } } - private String getPdpPolicyName(String name, String scope){ + private String getPdpPolicyName(String name, String scope) { String finalName = ""; finalName += scope; finalName += "."; @@ -1044,11 +1131,12 @@ public class PolicyDBDao { finalName += ".xml"; return finalName; } - private String removeFileExtension(String fileName){ + + private String removeFileExtension(String fileName) { return fileName.substring(0, fileName.lastIndexOf('.')); } - private Path getPolicySubFile(String inputFileName, String subFileType){ + private Path getPolicySubFile(String inputFileName, String subFileType) { String filename = inputFileName; logger.info("getPolicySubFile(" + filename + ", " + subFileType + ")"); Path filePath = Paths.get(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_WEBAPPS), subFileType); @@ -1056,14 +1144,14 @@ public class PolicyDBDao { filename = FilenameUtils.removeExtension(filename); - for(File tmpFile : filePath.toFile().listFiles()){ - if (FilenameUtils.removeExtension(tmpFile.getName()).equals(filename)){ + for (File tmpFile : filePath.toFile().listFiles()) { + if (FilenameUtils.removeExtension(tmpFile.getName()).equals(filename)) { file = tmpFile; } } Path finalPath = null; - if (file!= null){ + if (file != null) { finalPath = Paths.get(file.getAbsolutePath()); } @@ -1071,12 +1159,13 @@ public class PolicyDBDao { return finalPath; } - private boolean writePolicySubFile(PolicyEntity policy, String policyType){ - logger.info("writePolicySubFile with policyName[" + policy.getPolicyName() + "] and policyType[" + policyType + "]"); + 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 (config.equalsIgnoreCase(policyType)){ + if (config.equalsIgnoreCase(policyType)) { type = config; subTypeName = FilenameUtils.removeExtension(policy.getConfigurationData().getConfigurationName()); subTypeBody = policy.getConfigurationData().getConfigBody(); @@ -1097,47 +1186,48 @@ public class PolicyDBDao { subTypeName = subTypeName + ".txt"; } } - }else if (action.equalsIgnoreCase(policyType)){ + } else if (action.equalsIgnoreCase(policyType)) { 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){ + if (subTypeBody == null) { subTypeBody = ""; } boolean success = false; try { Files.deleteIfExists(Paths.get(filePath.toString(), subTypeName)); - File file = Paths.get(filePath.toString(),subTypeName).toFile(); + File file = Paths.get(filePath.toString(), subTypeName).toFile(); boolean value = file.createNewFile(); - logger.debug("New file created successfully"+value); - try(FileWriter fileWriter = new FileWriter(file, false)){ + logger.debug("New file created successfully" + value); + try (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, policyDBDaoVar, "Exception occured while creating Configuration File for Policy : " + policy.getPolicyName()); + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "Exception occured while creating Configuration File for Policy : " + policy.getPolicyName()); } return success; } - public void auditLocalDatabase(PAPPolicyEngine papEngine2){ + public void auditLocalDatabase(PAPPolicyEngine papEngine2) { logger.debug("PolicyDBDao.auditLocalDatabase() is called"); - try{ + try { deleteAllGroupTables(); auditGroups(papEngine2); - } catch(Exception e){ + } catch (Exception e) { PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "auditLocalDatabase() error"); - logger.error("Exception Occured"+e); + logger.error("Exception Occured" + e); } } - public StdPDPGroup auditLocalFileSystem(StdPDPGroup group){ + public StdPDPGroup auditLocalFileSystem(StdPDPGroup group) { logger.info("Starting Local File System group audit"); EntityManager em = emf.createEntityManager(); @@ -1149,8 +1239,8 @@ public class PolicyDBDao { groupQuery.setParameter(groupIdVar, group.getId()); groupQuery.setParameter(deletedVar, false); List<?> groupQueryList = groupQuery.getResultList(); - if(groupQueryList!=null && !groupQueryList.isEmpty()){ - GroupEntity dbgroup = (GroupEntity)groupQueryList.get(0); + if (groupQueryList != null && !groupQueryList.isEmpty()) { + GroupEntity dbgroup = (GroupEntity) groupQueryList.get(0); updatedGroup = synchronizeGroupPoliciesInFileSystem(group, dbgroup); logger.info("Group was updated during file system audit: " + updatedGroup.toString()); } @@ -1158,8 +1248,9 @@ public class PolicyDBDao { logger.error(e); } catch (Exception e) { logger.error(e); - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception trying to check if group exists groupQuery.getResultList()"); - throw new PersistenceException("Query failed trying to check if group "+group.getId()+" exists"); + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "Caught Exception trying to check if group exists groupQuery.getResultList()"); + throw new PersistenceException("Query failed trying to check if group " + group.getId() + " exists"); } em.getTransaction().commit(); @@ -1169,7 +1260,7 @@ public class PolicyDBDao { } - public void deleteAllGroupTables(){ + public void deleteAllGroupTables() { logger.debug("PolicyDBDao.deleteAllGroupTables() called"); EntityManager em = emf.createEntityManager(); em.getTransaction().begin(); @@ -1185,18 +1276,18 @@ public class PolicyDBDao { } @SuppressWarnings("unchecked") - public void auditGroups(PAPPolicyEngine papEngine2){ + public void auditGroups(PAPPolicyEngine papEngine2) { logger.debug("PolicyDBDao.auditGroups() called"); EntityManager em = emf.createEntityManager(); em.getTransaction().begin(); final String AUDIT_STR = "Audit"; - try{ + try { Set<OnapPDPGroup> groups = papEngine2.getOnapPDPGroups(); - for (OnapPDPGroup grp : groups){ - try{ + for (OnapPDPGroup grp : groups) { + try { GroupEntity groupEntity = new GroupEntity(); em.persist(groupEntity); groupEntity.setGroupName(grp.getName()); @@ -1205,9 +1296,9 @@ public class PolicyDBDao { groupEntity.setCreatedBy(AUDIT_STR); groupEntity.setGroupId(createNewPDPGroupId(grp.getId())); groupEntity.setModifiedBy(AUDIT_STR); - Set<OnapPDP> pdps = grp.getOnapPdps(); + Set<OnapPDP> pdps = grp.getOnapPdps(); - for(OnapPDP pdp : pdps){ + for (OnapPDP pdp : pdps) { PdpEntity pdpEntity = new PdpEntity(); em.persist(pdpEntity); pdpEntity.setGroup(groupEntity); @@ -1221,11 +1312,12 @@ public class PolicyDBDao { Set<PDPPolicy> policies = grp.getPolicies(); - for(PDPPolicy policy : policies){ - try{ + for (PDPPolicy policy : policies) { + try { String[] stringArray = getNameScopeAndVersionFromPdpPolicy(policy.getId()); - if(stringArray == null) { - throw new IllegalArgumentException("Invalid input - policyID must contain name, scope and version"); + if (stringArray == null) { + throw new IllegalArgumentException( + "Invalid input - policyID must contain name, scope and version"); } List<PolicyEntity> policyEntityList; Query getPolicyEntitiesQuery = em.createNamedQuery("PolicyEntity.findByNameAndScope"); @@ -1234,21 +1326,23 @@ public class PolicyDBDao { policyEntityList = getPolicyEntitiesQuery.getResultList(); PolicyEntity policyEntity = null; - if(!policyEntityList.isEmpty()){ + if (!policyEntityList.isEmpty()) { policyEntity = policyEntityList.get(0); } - if(policyEntity != null){ + if (policyEntity != null) { groupEntity.addPolicyToGroup(policyEntity); } - }catch(Exception e2){ - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e2, policyDBDaoVar, "Exception auditGroups inner catch"); + } catch (Exception e2) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e2, policyDBDaoVar, + "Exception auditGroups inner catch"); } } - }catch(Exception e1){ - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e1, policyDBDaoVar, "Exception auditGroups middle catch"); + } catch (Exception e1) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e1, policyDBDaoVar, + "Exception auditGroups middle catch"); } } - }catch(Exception e){ + } catch (Exception e) { em.getTransaction().rollback(); PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Exception auditGroups outer catch"); em.close(); @@ -1260,18 +1354,21 @@ public class PolicyDBDao { } - private String getConfigFile(String filename, PolicyRestAdapter policy){ - if(policy == null){ - return getConfigFile(filename, (String)null); + 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 inputFilename, String configType) { String filename = inputFilename; - logger.debug("getConfigFile(String filename, String scope, String configType) as getConfigFile("+filename+", "+configType+") called"); + logger.debug( + "getConfigFile(String filename, String scope, String configType) as getConfigFile(" + filename + ", " + + configType + ") called"); filename = FilenameUtils.removeExtension(filename); String id = configType; @@ -1292,20 +1389,20 @@ public class PolicyDBDao { return filename; } - private String[] getNameScopeAndVersionFromPdpPolicy(String fileName){ + private String[] getNameScopeAndVersionFromPdpPolicy(String fileName) { String[] splitByDots = fileName.split("\\."); - if(splitByDots.length < 3){ + if (splitByDots.length < 3) { return null; } - String policyName = splitByDots[splitByDots.length-3]; - String version = splitByDots[splitByDots.length-2]; + 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++){ + for (int i = 0; i < splitByDots.length - 3; i++) { scope += ".".concat(splitByDots[i]); } //remove the first dot - if(scope.length() > 0){ + if (scope.length() > 0) { scope = scope.substring(1); } String[] returnArray = new String[3]; @@ -1338,12 +1435,13 @@ public class PolicyDBDao { /** * 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 */ - public static boolean isNullOrEmpty(String... strings){ - for(String s : strings){ - if(s == null || "".equals(s)){ + public static boolean isNullOrEmpty(String... strings) { + for (String s : strings) { + if (s == null || "".equals(s)) { return true; } } @@ -1361,15 +1459,16 @@ public class PolicyDBDao { private boolean operationRun = false; private final Thread transactionTimer; - private PolicyDBDaoTransactionInstance(){ + 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()){ + private PolicyDBDaoTransactionInstance(int transactionTimeout, int transactionWaitTime) { + if (logger.isDebugEnabled()) { logger.debug("\n\nPolicyDBDaoTransactionInstance() as PolicyDBDaoTransactionInstance() called:" + "\n transactionTimeout = " + transactionTimeout + "\n transactionWaitTime = " + transactionWaitTime + "\n\n"); @@ -1379,24 +1478,27 @@ public class PolicyDBDao { groupId = -1; pdpId = -1; newGroupId = null; - synchronized(emLock){ - try{ - startTransactionSynced(this.em,transactionWaitTime); - } catch(Exception e){ + synchronized (emLock) { + try { + startTransactionSynced(this.em, transactionWaitTime); + } catch (Exception e) { logger.debug(e); - throw new PersistenceException("Could not lock transaction within "+transactionWaitTime+" milliseconds"); + throw new PersistenceException( + "Could not lock transaction within " + transactionWaitTime + " milliseconds"); } } class TransactionTimer implements Runnable { private int sleepTime; - public TransactionTimer(int timeout){ + + public TransactionTimer(int timeout) { this.sleepTime = timeout; } + @Override public void run() { - if(logger.isDebugEnabled()){ - Date date= new java.util.Date(); + if (logger.isDebugEnabled()) { + Date date = new java.util.Date(); logger.debug("\n\nTransactionTimer.run() - SLEEPING: " + "\n sleepTime (ms) = " + sleepTime + "\n TimeStamp = " + date.getTime() @@ -1406,8 +1508,8 @@ public class PolicyDBDao { 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(); + if (logger.isDebugEnabled()) { + Date date = new java.util.Date(); logger.debug("\n\nTransactionTimer.run() - WAKE Interrupt: " + "\n TimeStamp = " + date.getTime() + "\n\n"); @@ -1415,8 +1517,8 @@ public class PolicyDBDao { Thread.currentThread().interrupt(); return; } - if(logger.isDebugEnabled()){ - Date date= new java.util.Date(); + if (logger.isDebugEnabled()) { + Date date = new java.util.Date(); logger.debug("\n\nTransactionTimer.run() - WAKE Timeout: " + "\n TimeStamp = " + date.getTime() + "\n\n"); @@ -1426,88 +1528,101 @@ public class PolicyDBDao { } - transactionTimer = new Thread(new TransactionTimer(transactionTimeout),"transactionTimerThread"); + transactionTimer = new Thread(new TransactionTimer(transactionTimeout), "transactionTimerThread"); transactionTimer.start(); } - private void checkBeforeOperationRun(){ + private void checkBeforeOperationRun() { checkBeforeOperationRun(false); } - private void checkBeforeOperationRun(boolean justCheckOpen){ - if(!isTransactionOpen()){ + + 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"); + 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){ + synchronized (emLock) { logger.debug("commitTransaction() as commitTransaction() called"); - if(!isTransactionOpen()){ + if (!isTransactionOpen()) { logger.warn("There is no open transaction to commit"); - try{ + try { em.close(); - } catch(Exception e){ - logger.error("Exception Occured"+e); + } catch (Exception e) { + logger.error("Exception Occured" + e); } return; } - try{ + try { em.getTransaction().commit(); - } catch(RollbackException e){ - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught RollbackException on em.getTransaction().commit()"); - throw new PersistenceException("The commit failed. Message:\n"+e.getMessage()); + } catch (RollbackException e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "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, policyDBDaoVar, "Caught Exception on notifyOthers("+policyId+","+POLICY_NOTIFICATION+","+newGroupId+")"); + if (policyId >= 0) { + if (newGroupId != null) { + try { + notifyOthers(policyId, POLICY_NOTIFICATION, newGroupId); + } catch (Exception e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "Caught Exception on notifyOthers(" + policyId + "," + POLICY_NOTIFICATION + "," + + newGroupId + ")"); } } else { - try{ - notifyOthers(policyId,POLICY_NOTIFICATION); - } catch(Exception e){ - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception on notifyOthers("+policyId+","+POLICY_NOTIFICATION+")"); + try { + notifyOthers(policyId, POLICY_NOTIFICATION); + } catch (Exception e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "Caught Exception on notifyOthers(" + policyId + "," + POLICY_NOTIFICATION + ")"); } } } - if(groupId >= 0){ + 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, policyDBDaoVar, "Caught Exception on notifyOthers("+groupId+","+GROUP_NOTIFICATION+","+newGroupId+")"); + if (newGroupId != null) { + try { + notifyOthers(groupId, GROUP_NOTIFICATION, newGroupId); + } catch (Exception e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "Caught Exception on notifyOthers(" + groupId + "," + GROUP_NOTIFICATION + "," + + newGroupId + ")"); } } else { - try{ - notifyOthers(groupId,GROUP_NOTIFICATION); - } catch(Exception e){ - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception on notifyOthers("+groupId+","+GROUP_NOTIFICATION+")"); + try { + notifyOthers(groupId, GROUP_NOTIFICATION); + } catch (Exception e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "Caught Exception on notifyOthers(" + groupId + "," + GROUP_NOTIFICATION + ")"); } } } - if(pdpId >= 0){ + 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, policyDBDaoVar, "Caught Exception on notifyOthers("+pdpId+","+PDP_NOTIFICATION+")"); + try { + notifyOthers(pdpId, PDP_NOTIFICATION); + } catch (Exception e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "Caught Exception on notifyOthers(" + pdpId + "," + PDP_NOTIFICATION + ")"); } } } - if(transactionTimer != null){ + if (transactionTimer != null) { transactionTimer.interrupt(); } } @@ -1515,201 +1630,230 @@ public class PolicyDBDao { @Override public void rollbackTransaction() { logger.debug("rollbackTransaction() as rollbackTransaction() called"); - synchronized(emLock){ - if(isTransactionOpen()){ + synchronized (emLock) { + if (isTransactionOpen()) { - try{ + try { em.getTransaction().rollback(); - } catch(Exception e){ - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Could not rollback transaction"); + } catch (Exception e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "Could not rollback transaction"); } - try{ + try { em.close(); - }catch(Exception e){ - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Could not close EntityManager"); + } catch (Exception e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "Could not close EntityManager"); } } else { - try{ + try { em.close(); - }catch(Exception e){ + } catch (Exception e) { logger.warn("Could not close already closed transaction", e); } } } - if(transactionTimer != null){ + if (transactionTimer != null) { transactionTimer.interrupt(); } } - private void createPolicy(PolicyRestAdapter policy, String username, String policyScope, String inputPolicyName, String policyDataString) { + private void createPolicy(PolicyRestAdapter policy, String username, String policyScope, String inputPolicyName, + String policyDataString) { String policyName = inputPolicyName; - logger.debug("createPolicy(PolicyRestAdapter policy, String username, String policyScope, String policyName, String policyDataString) as createPolicy("+policy+", "+username+", "+policyScope+", "+policyName+", "+policyDataString+") called"); - synchronized(emLock){ + 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_")){ + if (policyName.contains("Config_")) { policyName = policyName.replace(".Config_", ":Config_"); - }else if(policyName.contains("Action_")){ + } else if (policyName.contains("Action_")) { policyName = policyName.replace(".Action_", ":Action_"); - }else if(policyName.contains("Decision_")){ + } 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"); + 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.isEmpty()){ + if (createPolicyQueryList.isEmpty()) { 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 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); + newPolicyEntity = (PolicyEntity) createPolicyQueryList.get(0); update = true; } ActionBodyEntity newActionBodyEntity = null; - if(policy.getPolicyType().equals(action)){ + if (policy.getPolicyType().equals(action)) { boolean abupdate = false; - if(newPolicyEntity.getActionBodyEntity() == null){ + if (newPolicyEntity.getActionBodyEntity() == null) { newActionBodyEntity = new ActionBodyEntity(); - }else{ - newActionBodyEntity = em.find(ActionBodyEntity.class, newPolicyEntity.getActionBodyEntity().getActionBodyId()); + } else { + newActionBodyEntity = em.find(ActionBodyEntity.class, + newPolicyEntity.getActionBodyEntity().getActionBodyId()); abupdate = true; } - if(newActionBodyEntity != null){ - if(!abupdate){ + 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"; + String actionBodyName = policyNameClean + ".json"; //get the action body String actionBodyString = policy.getActionBody(); - if(actionBodyString == null){ + if (actionBodyString == null) { actionBodyString = "{}"; } newActionBodyEntity.setActionBody(actionBodyString); newActionBodyEntity.setActionBodyName(actionBodyName); newActionBodyEntity.setModifiedBy("PolicyDBDao.createPolicy()"); newActionBodyEntity.setDeleted(false); - if(!abupdate){ + if (!abupdate) { newActionBodyEntity.setCreatedBy("PolicyDBDao.createPolicy()"); } - if(logger.isDebugEnabled()){ + if (logger.isDebugEnabled()) { logger.debug("\nPolicyDBDao.createPolicy" - + "\n newActionBodyEntity.getActionBody() = " + newActionBodyEntity.getActionBody() - + "\n newActionBodyEntity.getActionBodyName() = " + newActionBodyEntity.getActionBodyName() - + "\n newActionBodyEntity.getModifiedBy() = " + newActionBodyEntity.getModifiedBy() + + "\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{ + } 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); + 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)){ + if (policy.getPolicyType().equals(config)) { boolean configUpdate; - if(newPolicyEntity.getConfigurationData() == null){ + if (newPolicyEntity.getConfigurationData() == null) { newConfigurationDataEntity = new ConfigurationDataEntity(); configUpdate = false; } else { - newConfigurationDataEntity = em.find(ConfigurationDataEntity.class, newPolicyEntity.getConfigurationData().getConfigurationDataId()); + newConfigurationDataEntity = em.find(ConfigurationDataEntity.class, + newPolicyEntity.getConfigurationData().getConfigurationDataId()); configUpdate = true; } - if(newConfigurationDataEntity != null){ - if(!configUpdate){ + if (newConfigurationDataEntity != null) { + if (!configUpdate) { em.persist(newConfigurationDataEntity); } - if(!stringEquals(newConfigurationDataEntity.getConfigurationName(),getConfigFile(configName,policy))){ - newConfigurationDataEntity.setConfigurationName(getConfigFile(configName,policy)); + if (!stringEquals(newConfigurationDataEntity.getConfigurationName(), + getConfigFile(configName, policy))) { + newConfigurationDataEntity.setConfigurationName(getConfigFile(configName, policy)); } - if(newConfigurationDataEntity.getConfigType() == null || !newConfigurationDataEntity.getConfigType().equals(policy.getConfigType())){ + if (newConfigurationDataEntity.getConfigType() == null || + !newConfigurationDataEntity.getConfigType().equals(policy.getConfigType())) { newConfigurationDataEntity.setConfigType(policy.getConfigType()); } - if(!configUpdate){ + if (!configUpdate) { newConfigurationDataEntity.setCreatedBy(username); } - if(newConfigurationDataEntity.getModifiedBy() == null || !newConfigurationDataEntity.getModifiedBy().equals(username)){ + if (newConfigurationDataEntity.getModifiedBy() == null || + !newConfigurationDataEntity.getModifiedBy().equals(username)) { newConfigurationDataEntity.setModifiedBy(username); } - if(newConfigurationDataEntity.getDescription() == null || !newConfigurationDataEntity.getDescription().equals("")){ + if (newConfigurationDataEntity.getDescription() == null || + !newConfigurationDataEntity.getDescription().equals("")) { newConfigurationDataEntity.setDescription(""); } - if(newConfigurationDataEntity.getConfigBody() == null || newConfigurationDataEntity.getConfigBody().isEmpty() || - (!newConfigurationDataEntity.getConfigBody().equals(policy.getConfigBodyData()))){ + 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()){ + if (policy.getConfigBodyData() == null || policy.getConfigBodyData().isEmpty()) { newConfigurationDataEntity.setConfigBody(policy.getJsonBody()); - }else{ + } else { newConfigurationDataEntity.setConfigBody(policy.getConfigBodyData()); } } - if(newConfigurationDataEntity.isDeleted()){ + if (newConfigurationDataEntity.isDeleted()) { newConfigurationDataEntity.setDeleted(false); } em.flush(); - }else{ - //We have a configurationData body in the policy but we found no configurationData body in the DB + } 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); + 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){ + if (!update) { em.persist(newPolicyEntity); } policyId = newPolicyEntity.getPolicyId(); - if(!stringEquals(newPolicyEntity.getPolicyName(),policyName)){ + if (!stringEquals(newPolicyEntity.getPolicyName(), policyName)) { newPolicyEntity.setPolicyName(policyName); } - if(!stringEquals(newPolicyEntity.getCreatedBy(),username)){ + if (!stringEquals(newPolicyEntity.getCreatedBy(), username)) { newPolicyEntity.setCreatedBy(username); } - if(!stringEquals(newPolicyEntity.getDescription(),policy.getPolicyDescription())){ + if (!stringEquals(newPolicyEntity.getDescription(), policy.getPolicyDescription())) { newPolicyEntity.setDescription(policy.getPolicyDescription()); } - if(!stringEquals(newPolicyEntity.getModifiedBy(),username)){ + if (!stringEquals(newPolicyEntity.getModifiedBy(), username)) { newPolicyEntity.setModifiedBy(username); } - if(!stringEquals(newPolicyEntity.getPolicyData(),policyDataString)){ + if (!stringEquals(newPolicyEntity.getPolicyData(), policyDataString)) { newPolicyEntity.setPolicyData(policyDataString); } - if(!stringEquals(newPolicyEntity.getScope(),policyScope)){ + if (!stringEquals(newPolicyEntity.getScope(), policyScope)) { newPolicyEntity.setScope(policyScope); } - if(newPolicyEntity.isDeleted() == true){ + if (newPolicyEntity.isDeleted() == true) { newPolicyEntity.setDeleted(false); } newPolicyEntity.setConfigurationData(newConfigurationDataEntity); @@ -1718,120 +1862,128 @@ public class PolicyDBDao { em.flush(); this.policyId = newPolicyEntity.getPolicyId(); } - return; } @SuppressWarnings("unused") - public PolicyEntity getPolicy(int policyID){ - return getPolicy(policyID,null,null); + public PolicyEntity getPolicy(int policyID) { + return getPolicy(policyID, null, null); } - public PolicyEntity getPolicy(String policyName,String scope){ - return getPolicy(-1,policyName,scope); + + 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"); + + 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){ + synchronized (emLock) { checkBeforeOperationRun(true); //check if group exists String policyId; Query policyQuery; - if(!isNullOrEmpty(policyName,scope)){ + if (!isNullOrEmpty(policyName, scope)) { policyId = policyName; - policyQuery = em.createQuery("SELECT p FROM PolicyEntity p WHERE p.policyName=:name AND p.scope=:scope"); + 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{ + } else { policyId = String.valueOf(policyID); policyQuery = em.createNamedQuery("PolicyEntity.FindById"); policyQuery.setParameter("id", policyId); } List<?> policyQueryList; - try{ + try { policyQueryList = policyQuery.getResultList(); - }catch(Exception e){ - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception trying to get policy with policyQuery.getResultList()"); - throw new PersistenceException("Query failed trying to get policy "+policyId); + } catch (Exception e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "Caught Exception trying to get policy with policyQuery.getResultList()"); + throw new PersistenceException("Query failed trying to get policy " + policyId); } - if(policyQueryList.isEmpty()){ - 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(duplicatePolicyId+policyId+foundInDB); - throw new PersistenceException(duplicatePolicyId+policyId+foundInDB); + if (policyQueryList.isEmpty()) { + 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(duplicatePolicyId + policyId + foundInDB); + throw new PersistenceException(duplicatePolicyId + policyId + foundInDB); } - return (PolicyEntity)policyQueryList.get(0); + return (PolicyEntity) policyQueryList.get(0); } } @Override - public GroupEntity getGroup(long groupKey){ - logger.debug("getGroup(int groupKey) as getGroup("+groupKey+") called"); - if(groupKey < 0){ + 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){ + 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{ + try { groupQueryList = groupQuery.getResultList(); - }catch(Exception e){ - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception trying to get group with groupQuery.getResultList()"); - throw new PersistenceException(queryFailedToGetGroup+groupKey); + } catch (Exception e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "Caught Exception trying to get group with groupQuery.getResultList()"); + throw new PersistenceException(queryFailedToGetGroup + groupKey); } - if(groupQueryList.isEmpty()){ - 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+foundInDB); - throw new PersistenceException("Somehow, more than one group with the groupKey "+groupKey+foundInDB); + if (groupQueryList.isEmpty()) { + 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 + foundInDB); + throw new PersistenceException( + "Somehow, more than one group with the groupKey " + groupKey + foundInDB); } - return (GroupEntity)groupQueryList.get(0); + return (GroupEntity) groupQueryList.get(0); } } @Override - public GroupEntity getGroup(String groupId){ - logger.debug("getGroup(String groupId) as getGroup("+groupId+") called"); - if(isNullOrEmpty(groupId)){ + 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){ + synchronized (emLock) { checkBeforeOperationRun(true); //check if group exists Query groupQuery = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId"); groupQuery.setParameter(groupIdVar, groupId); List<?> groupQueryList; - try{ + try { groupQueryList = groupQuery.getResultList(); - }catch(Exception e){ - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception trying to get group with groupQuery.getResultList()"); - throw new PersistenceException(queryFailedToGetGroup+groupId); + } catch (Exception e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "Caught Exception trying to get group with groupQuery.getResultList()"); + throw new PersistenceException(queryFailedToGetGroup + groupId); } - if(groupQueryList.isEmpty()){ - 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(duplicateGroupId +groupId+foundInDB); - throw new PersistenceException(duplicateGroupId+groupId+foundInDB); + if (groupQueryList.isEmpty()) { + 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(duplicateGroupId + groupId + foundInDB); + throw new PersistenceException(duplicateGroupId + groupId + foundInDB); } - return (GroupEntity)groupQueryList.get(0); + return (GroupEntity) groupQueryList.get(0); } } @Override - public List<?> getPdpsInGroup(long groupKey){ - logger.debug("getPdpsInGroup(int groupKey) as getPdpsInGroup("+groupKey+") called"); - if(groupKey < 0){ + 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){ + synchronized (emLock) { checkBeforeOperationRun(true); Query pdpsQuery = em.createQuery("SELECT p FROM PdpEntity p WHERE p.groupEntity=:group"); pdpsQuery.setParameter("group", getGroup(groupKey)); @@ -1840,103 +1992,114 @@ public class PolicyDBDao { } @Override - public PdpEntity getPdp(long pdpKey){ - logger.debug("getPdp(int pdpKey) as getPdp("+pdpKey+") called"); - if(pdpKey < 0){ + 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){ + 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{ + try { pdpQueryList = pdpQuery.getResultList(); - }catch(Exception e){ - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception trying to get pdp with pdpQuery.getResultList()"); - throw new PersistenceException("Query failed trying to get pdp "+pdpKey); + } catch (Exception e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "Caught Exception trying to get pdp with pdpQuery.getResultList()"); + throw new PersistenceException("Query failed trying to get pdp " + pdpKey); } - if(pdpQueryList.isEmpty()){ - 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+foundInDB); - throw new PersistenceException("Somehow, more than one pdp with the pdpKey "+pdpKey+foundInDB); + if (pdpQueryList.isEmpty()) { + 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 + foundInDB); + throw new PersistenceException("Somehow, more than one pdp with the pdpKey " + pdpKey + foundInDB); } - return (PdpEntity)pdpQueryList.get(0); + return (PdpEntity) pdpQueryList.get(0); } } @Override public boolean isTransactionOpen() { logger.debug("isTransactionOpen() as isTransactionOpen() called"); - synchronized(emLock){ + synchronized (emLock) { return em.isOpen() && em.getTransaction().isActive(); } } - private String processConfigPath(String inputConfigPath){ + private String processConfigPath(String inputConfigPath) { String configPath = inputConfigPath; String webappsPath = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_WEBAPPS); - if(webappsPath == null){ + 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{ + try { configPath = Paths.get(configPath).toString(); - } catch(InvalidPathException e){ - logger.error("Invalid config path: "+configPath, e); - throw new IllegalArgumentException("Invalid config path: "+configPath); + } catch (InvalidPathException e) { + logger.error("Invalid config path: " + configPath, e); + throw new IllegalArgumentException("Invalid config path: " + configPath); } return configPath; } - private String readConfigFile(String configPath){ + private String readConfigFile(String configPath) { String configDataString = null; - try(InputStream configContentStream = new FileInputStream(configPath);) { + try (InputStream configContentStream = new FileInputStream(configPath);) { configDataString = IOUtils.toString(configContentStream); } catch (FileNotFoundException e) { - logger.error("Caught FileNotFoundException on new FileInputStream("+configPath+")",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); + } catch (IOException e2) { + logger.error("Caught IOException on newIOUtils.toString(configContentStream)", e2); throw new IllegalArgumentException("The config file path cannot be read"); } - if(configDataString == null){ + if (configDataString == null) { throw new IllegalArgumentException("The config file path cannot be read"); } return configDataString; } @Override - public void createPolicy(Policy policy, String username){ + public void createPolicy(Policy policy, String username) { - try{ - logger.debug("createPolicy(PolicyRestAdapter policy, String username) as createPolicy("+policy+","+username+") called"); + 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 = getPolicyDataString((PolicyType)policy.getCorrectPolicyDataObject()); - if(isJunit){ + String policyDataString = getPolicyDataString((PolicyType) policy.getCorrectPolicyDataObject()); + if (isJunit) { //Using parentPath object to set policy data. policyDataString = policy.policyAdapter.getParentPath(); } String configPath = ""; if (policy.policyAdapter.getPolicyType().equalsIgnoreCase(config)) { - configPath = evaluateXPath("/Policy/Rule/AdviceExpressions/AdviceExpression[contains(@AdviceId,'ID')]/AttributeAssignmentExpression[@AttributeId='URLID']/AttributeValue/text()", policyDataString); + 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); + 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.lastIndexOf(policy.policyAdapter.getPolicyName())); - if(isNullOrEmpty(policy.policyAdapter.getConfigBodyData())){ + prefix = configPath + .substring(configPath.indexOf(policyScope + ".") + policyScope.concat(".").length(), + configPath.lastIndexOf(policy.policyAdapter.getPolicyName())); + if (isNullOrEmpty(policy.policyAdapter.getConfigBodyData())) { policy.policyAdapter.setConfigBodyData(getConfigData(configPath)); } } else if (action.equalsIgnoreCase(policy.policyAdapter.getPolicyType())) { @@ -1945,55 +2108,57 @@ public class PolicyDBDao { prefix = "Decision_"; } - if(!(policy.policyAdapter.getData() instanceof PolicyType)){ + 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 || "".equals(policy.policyAdapter.getConfigType())){ + String finalName = policyScope + "." + prefix + policy.policyAdapter.getPolicyName() + "." + + ((PolicyType) policy.policyAdapter.getData()).getVersion() + ".xml"; + if (policy.policyAdapter.getConfigType() == null || "".equals(policy.policyAdapter.getConfigType())) { //get the config file extension String ext = ""; if (configPath != null && !"".equalsIgnoreCase(configPath)) { - ext = configPath.substring(configPath.lastIndexOf('.'), configPath.length());; + ext = configPath.substring(configPath.lastIndexOf('.'), configPath.length()); + ; } - if(ext.contains("txt")){ + if (ext.contains("txt")) { policy.policyAdapter.setConfigType(OTHER_CONFIG); - } else if(ext.contains("json")){ + } else if (ext.contains("json")) { policy.policyAdapter.setConfigType(JSON_CONFIG); - } else if(ext.contains("xml")){ + } else if (ext.contains("xml")) { policy.policyAdapter.setConfigType(XML_CONFIG); - } else if(ext.contains("properties")){ + } else if (ext.contains("properties")) { policy.policyAdapter.setConfigType(PROPERTIES_CONFIG); } else { - if (policy.policyAdapter.getPolicyType().equalsIgnoreCase(action)){ + if (policy.policyAdapter.getPolicyType().equalsIgnoreCase(action)) { policy.policyAdapter.setConfigType(JSON_CONFIG); } } } - createPolicy(policy.policyAdapter, username, policyScope,finalName,policyDataString); + createPolicy(policy.policyAdapter, username, policyScope, finalName, policyDataString); } catch (Exception e) { - logger.error("Could not create policy for "+policy,e); + logger.error("Could not create policy for " + policy, e); throw e; } } private String getConfigData(String configPath) { String configData = ""; - try{ + try { configData = getConfigPath(configPath); - }catch(Exception e){ - logger.error("Could not read config body data for "+configPath,e); + } catch (Exception e) { + logger.error("Could not read config body data for " + configPath, e); } return configData; } private String getConfigPath(String configPath) { - try{ + try { String newConfigPath = processConfigPath(configPath); return readConfigFile(newConfigPath); - } catch(IllegalArgumentException e2){ - logger.error("Could not process config path: "+configPath,e2); + } catch (IllegalArgumentException e2) { + logger.error("Could not process config path: " + configPath, e2); } return ""; } @@ -2002,21 +2167,22 @@ public class PolicyDBDao { try (InputStream policyXmlStream = XACMLPolicyWriter.getXmlAsInputStream(policyType)) { return IOUtils.toString(policyXmlStream, StandardCharsets.UTF_8); } catch (IOException e) { - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught IOException on IOUtils.toString(policyXmlStream)"); + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "Caught IOException on IOUtils.toString(policyXmlStream)"); throw new IllegalArgumentException("Cannot parse the policy xml from the PolicyRestAdapter.", e); } } @Override - public void close(){ - synchronized(emLock){ - if(em.isOpen()){ - if(em.getTransaction().isActive()){ + public void close() { + synchronized (emLock) { + if (em.isOpen()) { + if (em.getTransaction().isActive()) { em.getTransaction().rollback(); } em.close(); } - if(transactionTimer != null){ + if (transactionTimer != null) { transactionTimer.interrupt(); } } @@ -2025,29 +2191,31 @@ public class PolicyDBDao { @Override public void createGroup(String groupId, String groupName, String inputGroupDescription, String username) { String groupDescription = inputGroupDescription; - logger.debug("deletePolicy(String policyToDeletes) as createGroup("+groupId+", "+groupName+", "+groupDescription+") called"); - if(isNullOrEmpty(groupId, groupName, 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 == null){ + if (groupDescription == null) { groupDescription = ""; } - synchronized(emLock){ + synchronized (emLock) { checkBeforeOperationRun(); Query checkGroupQuery = em.createQuery(groupEntitySelectQuery); checkGroupQuery.setParameter(groupIdVar, groupId); checkGroupQuery.setParameter(deletedVar, false); List<?> checkGroupQueryList; - try{ + try { checkGroupQueryList = checkGroupQuery.getResultList(); - } catch(Exception e){ - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception on checkGroupQuery.getResultList()"); + } catch (Exception e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "Caught Exception on checkGroupQuery.getResultList()"); throw new PersistenceException(queryFailedToCheckExisting); } - if(!checkGroupQueryList.isEmpty()){ - PolicyLogger.error("The group being added already exists with id "+groupId); - throw new PersistenceException("The group being added already exists with id "+groupId); + if (!checkGroupQueryList.isEmpty()) { + 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); @@ -2063,39 +2231,42 @@ public class PolicyDBDao { } @Override - public void updateGroup(OnapPDPGroup group, String username){ - logger.info("PolicyDBDao: updateGroup(PDPGroup group) as updateGroup("+group+","+username+") called"); - if(group == null){ + public void updateGroup(OnapPDPGroup group, String username) { + logger.info( + "PolicyDBDao: 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)){ + if (isNullOrEmpty(group.getId(), username)) { throw new IllegalArgumentException("group.getId() and username must not be null or empty"); } - synchronized(emLock){ + synchronized (emLock) { checkBeforeOperationRun(); Query getGroupQuery = em.createQuery(groupEntitySelectQuery); getGroupQuery.setParameter(groupIdVar, group.getId()); getGroupQuery.setParameter(deletedVar, false); List<?> getGroupQueryList; - try{ + try { getGroupQueryList = getGroupQuery.getResultList(); - } catch(Exception e){ - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception on getGroupQuery.getResultList()"); - throw new PersistenceException(queryFailedToGetGroup+group.getId()+" for editing"); - } - if(getGroupQueryList.isEmpty()){ - 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(duplicateGroupId+group.getId()+deletedStatusFound); - throw new PersistenceException(duplicateGroupId+group.getId()+deletedStatusFound); - } - GroupEntity groupToUpdateInDB = (GroupEntity)getGroupQueryList.get(0); - if(!stringEquals(groupToUpdateInDB.getModifiedBy(), username)){ + } catch (Exception e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "Caught Exception on getGroupQuery.getResultList()"); + throw new PersistenceException(queryFailedToGetGroup + group.getId() + " for editing"); + } + if (getGroupQueryList.isEmpty()) { + 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(duplicateGroupId + group.getId() + deletedStatusFound); + throw new PersistenceException(duplicateGroupId + group.getId() + deletedStatusFound); + } + GroupEntity groupToUpdateInDB = (GroupEntity) getGroupQueryList.get(0); + if (!stringEquals(groupToUpdateInDB.getModifiedBy(), username)) { groupToUpdateInDB.setModifiedBy(username); } - if(group.getDescription() != null && !stringEquals(group.getDescription(),groupToUpdateInDB.getDescription())){ + if (group.getDescription() != null && + !stringEquals(group.getDescription(), groupToUpdateInDB.getDescription())) { groupToUpdateInDB.setDescription(group.getDescription()); } //let's find out what policies have been deleted @@ -2103,41 +2274,43 @@ public class PolicyDBDao { try { oldGroup = (StdPDPGroup) papEngine.getGroup(group.getId()); } catch (PAPException e1) { - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e1, policyDBDaoVar, "We cannot get the group from the papEngine to delete policies"); + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e1, policyDBDaoVar, + "We cannot get the group from the papEngine to delete policies"); } - if(oldGroup == null){ + 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()){ + for (PDPPolicy pol : group.getPolicies()) { newPolicySet.add(pol.getId()); } - for(PDPPolicy pol : oldGroup.getPolicies()){ + for (PDPPolicy pol : oldGroup.getPolicies()) { //should be fast since getPolicies uses a HashSet in StdPDPGroup - if(!newPolicySet.contains(pol.getId())){ + if (!newPolicySet.contains(pol.getId())) { String[] scopeAndName = getNameScopeAndVersionFromPdpPolicy(pol.getId()); deletePolicyInScope(username, groupToUpdateInDB, pol, scopeAndName); } } } - if(group.getName() != null && !stringEquals(group.getName(),groupToUpdateInDB.getgroupName())){ + if (group.getName() != null && !stringEquals(group.getName(), groupToUpdateInDB.getgroupName())) { //we need to check if the new id exists in the database String newGroupId = createNewPDPGroupId(group.getName()); Query checkGroupQuery = em.createQuery(groupEntitySelectQuery); checkGroupQuery.setParameter(groupIdVar, newGroupId); checkGroupQuery.setParameter(deletedVar, false); List<?> checkGroupQueryList; - try{ + try { checkGroupQueryList = checkGroupQuery.getResultList(); - } catch(Exception e){ - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception on checkGroupQuery.getResultList()"); + } catch (Exception e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "Caught Exception on checkGroupQuery.getResultList()"); throw new PersistenceException(queryFailedToCheckExisting); } - if(!checkGroupQueryList.isEmpty()){ - PolicyLogger.error("The new group name already exists, group id "+newGroupId); - throw new PersistenceException("The new group name already exists, group id "+newGroupId); + if (!checkGroupQueryList.isEmpty()) { + PolicyLogger.error("The new group name already exists, group id " + newGroupId); + throw new PersistenceException("The new group name already exists, group id " + newGroupId); } groupToUpdateInDB.setGroupId(newGroupId); groupToUpdateInDB.setGroupName(group.getName()); @@ -2148,13 +2321,14 @@ public class PolicyDBDao { } } - private void deletePolicyInScope(String username, GroupEntity groupToUpdateInDB, PDPPolicy pol, String[] scopeAndName) { + private void deletePolicyInScope(String username, GroupEntity groupToUpdateInDB, PDPPolicy pol, + String[] scopeAndName) { PolicyEntity policyToDelete; if (scopeAndName == null) { return; } - try{ - policyToDelete = getPolicy(scopeAndName[0],scopeAndName[1]); + try { + policyToDelete = getPolicy(scopeAndName[0], scopeAndName[1]); if ("XACMLPapServlet.doDelete".equals(username)) { Iterator<PolicyEntity> dbPolicyIt = groupToUpdateInDB.getPolicies().iterator(); String policyName = getPolicyNameAndVersionFromPolicyFileName(policyToDelete.getPolicyName())[0]; @@ -2162,50 +2336,60 @@ public class PolicyDBDao { logger.info("PolicyDBDao: delete policy from GroupEntity"); deletePolicyFromGroupEntity(groupToUpdateInDB, policyToDelete, dbPolicyIt, policyName); } - }catch(Exception e){ - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Could not get policy to remove: "+pol.getId()); - throw new PersistenceException("Could not get policy to remove: "+pol.getId()); + } catch (Exception e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "Could not get policy to remove: " + pol.getId()); + throw new PersistenceException("Could not get policy to remove: " + pol.getId()); } } - private void deletePolicyFromGroupEntity(GroupEntity groupToUpdateInDB, PolicyEntity policyToDelete, Iterator<PolicyEntity> dbPolicyIt, String policyName) { - try{ - while(dbPolicyIt.hasNext()){ + private void deletePolicyFromGroupEntity(GroupEntity groupToUpdateInDB, PolicyEntity policyToDelete, + Iterator<PolicyEntity> dbPolicyIt, String policyName) { + try { + while (dbPolicyIt.hasNext()) { PolicyEntity dbpolicy = dbPolicyIt.next(); - if(policyToDelete.getScope().equals(dbpolicy.getScope()) && + if (policyToDelete.getScope().equals(dbpolicy.getScope()) && getPolicyNameAndVersionFromPolicyFileName(dbpolicy.getPolicyName())[0].equals(policyName)) { dbPolicyIt.remove(); logger.info("PolicyDBDao: deleting policy from the existing group:\n " - + "policyName is " + policyToDelete.getScope()+"."+policyToDelete.getPolicyName() + "\n" + + "policyName is " + policyToDelete.getScope() + "." + policyToDelete.getPolicyName() + + "\n" + "group is " + groupToUpdateInDB.getGroupId()); } } - }catch(Exception e){ + } catch (Exception e) { logger.debug(e); - PolicyLogger.error("Could not delete policy with name: "+ policyToDelete.getScope()+"."+policyToDelete.getPolicyName()+"\n ID: "+ policyToDelete.getPolicyId()); + PolicyLogger.error("Could not delete policy with name: " + policyToDelete.getScope() + "." + + policyToDelete.getPolicyName() + "\n ID: " + policyToDelete.getPolicyId()); } } @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)){ + 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"); } - synchronized(emLock){ + synchronized (emLock) { checkBeforeOperationRun(); Query checkGroupQuery = em.createQuery(groupEntitySelectQuery); checkGroupQuery.setParameter(groupIdVar, groupID); checkGroupQuery.setParameter(deletedVar, false); List<?> checkGroupQueryList; - try{ + try { checkGroupQueryList = checkGroupQuery.getResultList(); - } catch(Exception e){ - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception trying to check for existing group on checkGroupQuery.getResultList()"); + } catch (Exception e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "Caught Exception trying to check for existing group on checkGroupQuery.getResultList()"); throw new PersistenceException(queryFailedToCheckExisting); } - if(checkGroupQueryList.size() != 1){ + if (checkGroupQueryList.size() != 1) { PolicyLogger.error("The group does not exist"); throw new PersistenceException("The group does not exist"); } @@ -2213,16 +2397,18 @@ public class PolicyDBDao { checkDuplicateQuery.setParameter(pdpIdVariable, pdpID); checkDuplicateQuery.setParameter(deletedVar, false); List<?> checkDuplicateList; - try{ + try { checkDuplicateList = checkDuplicateQuery.getResultList(); - } catch(Exception e){ - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception trying to check for duplicate PDP "+pdpID+" on checkDuplicateQuery.getResultList()"); - throw new PersistenceException("Query failed trying to check for duplicate PDP "+pdpID); + } catch (Exception e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "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.isEmpty()){ - logger.warn("PDP already exists with id "+pdpID); - newPdp = (PdpEntity)checkDuplicateList.get(0); + if (!checkDuplicateList.isEmpty()) { + logger.warn("PDP already exists with id " + pdpID); + newPdp = (PdpEntity) checkDuplicateList.get(0); } else { newPdp = new PdpEntity(); em.persist(newPdp); @@ -2231,7 +2417,7 @@ public class PolicyDBDao { newPdp.setCreatedBy(username); newPdp.setDeleted(false); newPdp.setDescription(pdpDescription); - newPdp.setGroup((GroupEntity)checkGroupQueryList.get(0)); + newPdp.setGroup((GroupEntity) checkGroupQueryList.get(0)); newPdp.setJmxPort(pdpJmxPort); newPdp.setModifiedBy(username); newPdp.setPdpId(pdpID); @@ -2244,45 +2430,46 @@ public class PolicyDBDao { @Override - public void updatePdp(OnapPDP pdp, String username){ - logger.debug("updatePdp(PDP pdp, String username) as updatePdp("+pdp+","+username+") called"); - if(pdp == null){ + public void updatePdp(OnapPDP 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)){ + if (isNullOrEmpty(pdp.getId(), username)) { throw new IllegalArgumentException("pdp.getId() and username must not be null or empty"); } - synchronized(emLock){ + synchronized (emLock) { checkBeforeOperationRun(); Query getPdpQuery = em.createQuery(pdpEntitySelectQuery); getPdpQuery.setParameter(pdpIdVariable, pdp.getId()); getPdpQuery.setParameter(deletedVar, false); List<?> getPdpQueryList; - try{ + try { getPdpQueryList = getPdpQuery.getResultList(); - } catch(Exception e){ - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception on getPdpQuery.getResultList()"); - throw new PersistenceException("Query failed trying to get PDP "+pdp.getId()); - } - if(getPdpQueryList.isEmpty()){ - 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(moreThanOnePDP+pdp.getId()+deletedStatusFound); - throw new PersistenceException(moreThanOnePDP+pdp.getId()+deletedStatusFound); - } - PdpEntity pdpToUpdate = (PdpEntity)getPdpQueryList.get(0); - if(!stringEquals(pdpToUpdate.getModifiedBy(), username)){ + } catch (Exception e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "Caught Exception on getPdpQuery.getResultList()"); + throw new PersistenceException("Query failed trying to get PDP " + pdp.getId()); + } + if (getPdpQueryList.isEmpty()) { + 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(moreThanOnePDP + pdp.getId() + deletedStatusFound); + throw new PersistenceException(moreThanOnePDP + pdp.getId() + deletedStatusFound); + } + PdpEntity pdpToUpdate = (PdpEntity) getPdpQueryList.get(0); + if (!stringEquals(pdpToUpdate.getModifiedBy(), username)) { pdpToUpdate.setModifiedBy(username); } - if(pdp.getDescription() != null && !stringEquals(pdp.getDescription(),pdpToUpdate.getDescription())){ + if (pdp.getDescription() != null && !stringEquals(pdp.getDescription(), pdpToUpdate.getDescription())) { pdpToUpdate.setDescription(pdp.getDescription()); } - if(pdp.getName() != null && !stringEquals(pdp.getName(),pdpToUpdate.getPdpName())){ + if (pdp.getName() != null && !stringEquals(pdp.getName(), pdpToUpdate.getPdpName())) { pdpToUpdate.setPdpName(pdp.getName()); } - if(pdp.getJmxPort() != null && !pdp.getJmxPort().equals(pdpToUpdate.getJmxPort())){ + if (pdp.getJmxPort() != null && !pdp.getJmxPort().equals(pdpToUpdate.getJmxPort())) { pdpToUpdate.setJmxPort(pdp.getJmxPort()); } @@ -2292,34 +2479,37 @@ public class PolicyDBDao { } @Override - public void movePdp(OnapPDP pdp, OnapPDPGroup group, String username){ - logger.debug("movePdp(PDP pdp, PDPGroup group, String username) as movePdp("+pdp+","+group+","+username+") called"); - if(pdp == null || group == null){ + public void movePdp(OnapPDP pdp, OnapPDPGroup 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"); + if (isNullOrEmpty(username, pdp.getId(), group.getId())) { + throw new IllegalArgumentException( + "pdp.getId(), group.getId(), and username must not be null or empty"); } - synchronized(emLock){ + synchronized (emLock) { checkBeforeOperationRun(); //check if pdp exists Query getPdpQuery = em.createQuery(pdpEntitySelectQuery); getPdpQuery.setParameter(pdpIdVariable, pdp.getId()); getPdpQuery.setParameter(deletedVar, false); List<?> getPdpQueryList; - try{ + try { getPdpQueryList = getPdpQuery.getResultList(); - } catch(Exception e){ - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception on getPdpQuery.getResultList()"); - throw new PersistenceException("Query failed trying to get pdp to move with id "+pdp.getId()); + } catch (Exception e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "Caught Exception on getPdpQuery.getResultList()"); + throw new PersistenceException("Query failed trying to get pdp to move with id " + pdp.getId()); } - if(getPdpQueryList.isEmpty()){ - 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(moreThanOnePDP+pdp.getId()+deletedStatusFound); - throw new PersistenceException(moreThanOnePDP+pdp.getId()+deletedStatusFound); + if (getPdpQueryList.isEmpty()) { + 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(moreThanOnePDP + pdp.getId() + deletedStatusFound); + throw new PersistenceException(moreThanOnePDP + pdp.getId() + deletedStatusFound); } //check if new group exists @@ -2327,20 +2517,21 @@ public class PolicyDBDao { checkGroupQuery.setParameter(groupIdVar, group.getId()); checkGroupQuery.setParameter(deletedVar, false); List<?> checkGroupQueryList; - try{ + try { checkGroupQueryList = checkGroupQuery.getResultList(); - } catch(Exception e){ - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception trying to get group on checkGroupQuery.getResultList()"); - throw new PersistenceException("Query failed trying to get new group "+group.getId()); + } catch (Exception e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "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"); + 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); + GroupEntity groupToMoveInto = (GroupEntity) checkGroupQueryList.get(0); + PdpEntity pdpToUpdate = (PdpEntity) getPdpQueryList.get(0); pdpToUpdate.setGroup(groupToMoveInto); - if(!stringEquals(pdpToUpdate.getModifiedBy(), username)){ + if (!stringEquals(pdpToUpdate.getModifiedBy(), username)) { pdpToUpdate.setModifiedBy(username); } @@ -2350,51 +2541,56 @@ public class PolicyDBDao { } @Override - public void changeDefaultGroup(OnapPDPGroup group, String username){ - logger.debug("changeDefaultGroup(PDPGroup group, String username) as changeDefaultGroup("+group+","+username+") called"); - if(group == null){ + public void changeDefaultGroup(OnapPDPGroup 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)){ + if (isNullOrEmpty(group.getId(), username)) { throw new IllegalArgumentException("group.getId() and username must not be null or empty"); } - synchronized(emLock){ + synchronized (emLock) { checkBeforeOperationRun(); Query getGroupQuery = em.createQuery(groupEntitySelectQuery); getGroupQuery.setParameter(groupIdVar, group.getId()); getGroupQuery.setParameter(deletedVar, false); List<?> getGroupQueryList; - try{ + try { getGroupQueryList = getGroupQuery.getResultList(); - } catch(Exception e){ - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception on getGroupQuery.getResultList()"); - throw new PersistenceException(queryFailedToGetGroup+group.getId()); - } - if(getGroupQueryList.isEmpty()){ - 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(duplicateGroupId+group.getId()+deletedStatusFound); - throw new PersistenceException(duplicateGroupId+group.getId()+deletedStatusFound); - } - GroupEntity newDefaultGroup = (GroupEntity)getGroupQueryList.get(0); + } catch (Exception e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "Caught Exception on getGroupQuery.getResultList()"); + throw new PersistenceException(queryFailedToGetGroup + group.getId()); + } + if (getGroupQueryList.isEmpty()) { + 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(duplicateGroupId + group.getId() + deletedStatusFound); + throw new PersistenceException(duplicateGroupId + group.getId() + deletedStatusFound); + } + GroupEntity newDefaultGroup = (GroupEntity) getGroupQueryList.get(0); newDefaultGroup.setDefaultGroup(true); - if(!stringEquals(newDefaultGroup.getModifiedBy(), username)){ + 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"); + 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(deletedVar, false); setAllGroupsNotDefault.setParameter("groupKey", newDefaultGroup.getGroupKey()); - try{ + try { logger.info("set " + setAllGroupsNotDefault.executeUpdate() + " groups as not default"); - } catch(Exception e){ - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception on setAllGroupsNotDefault.executeUpdate()"); + } catch (Exception e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "Caught Exception on setAllGroupsNotDefault.executeUpdate()"); throw new PersistenceException("Could not set all other groups default to false"); } em.flush(); @@ -2403,94 +2599,107 @@ public class PolicyDBDao { @Override - public void deleteGroup(OnapPDPGroup group, OnapPDPGroup moveToGroup, String username) throws PolicyDBException { - logger.debug("deleteGroup(PDPGroup group, PDPGroup moveToGroup, String username) as deleteGroup("+group+", "+moveToGroup+","+username+") called"); - if(group == null){ + public void deleteGroup(OnapPDPGroup group, OnapPDPGroup moveToGroup, String username) + throws PolicyDBException { + 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())){ + 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."); + if (group.isDefaultGroup()) { + PolicyLogger + .error("The default group " + group.getId() + " was attempted to be deleted. It cannot be."); throw new PolicyDBException("You cannot delete the default group."); } - synchronized(emLock){ + synchronized (emLock) { checkBeforeOperationRun(); Query deleteGroupQuery = em.createQuery(groupEntitySelectQuery); deleteGroupQuery.setParameter(groupIdVar, group.getId()); deleteGroupQuery.setParameter(deletedVar, false); List<?> deleteGroupQueryList; - try{ + try { deleteGroupQueryList = deleteGroupQuery.getResultList(); - } catch(Exception e){ - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception trying to check if group exists deleteGroupQuery.getResultList()"); + } catch (Exception e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "Caught Exception trying to check if group exists deleteGroupQuery.getResultList()"); throw new PersistenceException("Query failed trying to check if group exists"); } - if(deleteGroupQueryList.isEmpty()){ + if (deleteGroupQueryList.isEmpty()) { logger.warn(groupCannotBeFound + group.getId()); return; - } else if(deleteGroupQueryList.size() > 1){ - PolicyLogger.error(duplicateGroupId+group.getId()+foundInDBNotDeleted); - throw new PersistenceException(duplicateGroupId+group.getId()+foundInDBNotDeleted); + } else if (deleteGroupQueryList.size() > 1) { + PolicyLogger.error(duplicateGroupId + group.getId() + foundInDBNotDeleted); + throw new PersistenceException(duplicateGroupId + group.getId() + foundInDBNotDeleted); } - Query pdpsInGroupQuery = em.createQuery("SELECT p FROM PdpEntity p WHERE p.groupEntity=:group and p.deleted=:deleted"); - pdpsInGroupQuery.setParameter("group", ((GroupEntity)deleteGroupQueryList.get(0))); + 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(deletedVar, false); List<?> pdpsInGroupList; - try{ + try { pdpsInGroupList = pdpsInGroupQuery.getResultList(); - } catch(Exception e){ - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception trying to get PDPs in group on pdpsInGroupQuery.getResultList()"); + } catch (Exception e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "Caught Exception trying to get PDPs in group on pdpsInGroupQuery.getResultList()"); throw new PersistenceException("Query failed trying to get PDPs in group"); } - if(!pdpsInGroupList.isEmpty()){ - if(moveToGroup != null){ - Query checkMoveToGroupQuery = em.createQuery("SELECT o FROM GroupEntity o WHERE o.groupId=:groupId AND o.deleted=:deleted"); + if (!pdpsInGroupList.isEmpty()) { + if (moveToGroup != null) { + Query checkMoveToGroupQuery = em.createQuery( + "SELECT o FROM GroupEntity o WHERE o.groupId=:groupId AND o.deleted=:deleted"); checkMoveToGroupQuery.setParameter(groupIdVar, moveToGroup.getId()); checkMoveToGroupQuery.setParameter(deletedVar, false); List<?> checkMoveToGroupList; - try{ + try { checkMoveToGroupList = checkMoveToGroupQuery.getResultList(); - } catch(Exception e){ - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception trying to check if group exists checkMoveToGroupQuery.getResultList()"); + } catch (Exception e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "Caught Exception trying to check if group exists checkMoveToGroupQuery" + + ".getResultList()"); throw new PersistenceException("Query failed trying to check if group exists"); } - if(checkMoveToGroupList.isEmpty()){ + if (checkMoveToGroupList.isEmpty()) { PolicyLogger.error(groupCannotBeFound + moveToGroup.getId()); throw new PersistenceException(groupCannotBeFound + moveToGroup.getId()); - } else if(checkMoveToGroupList.size() > 1){ - PolicyLogger.error(duplicateGroupId+moveToGroup.getId()+foundInDBNotDeleted); - throw new PersistenceException(duplicateGroupId+moveToGroup.getId()+foundInDBNotDeleted); + } else if (checkMoveToGroupList.size() > 1) { + PolicyLogger.error(duplicateGroupId + moveToGroup.getId() + foundInDBNotDeleted); + throw new PersistenceException( + duplicateGroupId + moveToGroup.getId() + foundInDBNotDeleted); } else { - GroupEntity newGroup = (GroupEntity)checkMoveToGroupList.get(0); - for(Object pdpObject : pdpsInGroupList){ - PdpEntity pdp = (PdpEntity)pdpObject; + GroupEntity newGroup = (GroupEntity) checkMoveToGroupList.get(0); + for (Object pdpObject : pdpsInGroupList) { + PdpEntity pdp = (PdpEntity) pdpObject; pdp.setGroup(newGroup); - if(!stringEquals(pdp.getModifiedBy(),username)){ + if (!stringEquals(pdp.getModifiedBy(), username)) { pdp.setModifiedBy(username); } - try{ + try { em.flush(); this.newGroupId = newGroup.getGroupId(); - } catch(PersistenceException e){ - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught PersistenceException trying to set pdp group to null on em.flush()"); + } catch (PersistenceException e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "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"); + PolicyLogger.error("Group " + group.getId() + + " is trying to be delted with PDPs. No group was provided to move them to"); throw new PolicyDBException("Group has PDPs. Must provide a group for them to move to"); } } //delete group here - GroupEntity groupToDelete = (GroupEntity)deleteGroupQueryList.get(0); + GroupEntity groupToDelete = (GroupEntity) deleteGroupQueryList.get(0); groupToDelete.setDeleted(true); - if(!stringEquals(groupToDelete.getModifiedBy(), username)){ + if (!stringEquals(groupToDelete.getModifiedBy(), username)) { groupToDelete.setModifiedBy(username); } em.flush(); @@ -2500,74 +2709,86 @@ public class PolicyDBDao { @Override public StdPDPGroup addPolicyToGroup(String groupID, String policyID, String username) throws PolicyDBException { - logger.info("PolicyDBDao: addPolicyToGroup(String groupID, String policyID, String username) as addPolicyToGroup("+groupID+", "+policyID+","+username+") called"); - if(isNullOrEmpty(groupID, policyID, username)){ + logger.info( + "PolicyDBDao: 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){ + synchronized (emLock) { checkBeforeOperationRun(); //check if group exists Query groupQuery = em.createQuery(groupEntitySelectQuery); groupQuery.setParameter(groupIdVar, groupID); groupQuery.setParameter(deletedVar, false); List<?> groupQueryList; - try{ + try { groupQueryList = groupQuery.getResultList(); - }catch(Exception e){ - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception trying to check if group exists groupQuery.getResultList()"); - throw new PersistenceException("Query failed trying to check if group "+groupID+" exists"); + } catch (Exception e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "Caught Exception trying to check if group exists groupQuery.getResultList()"); + throw new PersistenceException("Query failed trying to check if group " + groupID + " exists"); } - if(groupQueryList.isEmpty()){ - 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(duplicateGroupId+groupID+foundInDBNotDeleted); - throw new PersistenceException(duplicateGroupId+groupID+foundInDBNotDeleted); + if (groupQueryList.isEmpty()) { + 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(duplicateGroupId + groupID + foundInDBNotDeleted); + throw new PersistenceException(duplicateGroupId + groupID + foundInDBNotDeleted); } //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); - if(policyNameScopeAndVersion == null) { + if (policyNameScopeAndVersion == null) { throw new IllegalArgumentException("Invalid input - policyID must contain name, scope and version"); } - Query policyQuery = em.createQuery("SELECT p FROM PolicyEntity p WHERE p.policyName=:policyName AND p.scope=:scope AND p.deleted=:deleted"); + 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(deletedVar, false); List<?> policyQueryList; - try{ + try { policyQueryList = policyQuery.getResultList(); - } catch(Exception e){ + } catch (Exception e) { logger.debug(e); - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "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.isEmpty()){ - 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(duplicatePolicyId+policyNameScopeAndVersion[0]+foundInDBNotDeleted); - throw new PersistenceException(duplicateGroupId+policyNameScopeAndVersion[0]+foundInDBNotDeleted); + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "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.isEmpty()) { + 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(duplicatePolicyId + policyNameScopeAndVersion[0] + foundInDBNotDeleted); + throw new PersistenceException( + duplicateGroupId + policyNameScopeAndVersion[0] + foundInDBNotDeleted); } logger.info("PolicyDBDao: Getting group and policy from database"); - GroupEntity group = (GroupEntity)groupQueryList.get(0); - PolicyEntity policy = (PolicyEntity)policyQueryList.get(0); + GroupEntity group = (GroupEntity) groupQueryList.get(0); + PolicyEntity policy = (PolicyEntity) policyQueryList.get(0); Iterator<PolicyEntity> policyIt = group.getPolicies().iterator(); String policyName = getPolicyNameAndVersionFromPolicyFileName(policy.getPolicyName())[0]; logger.info("PolicyDBDao: policyName retrieved is " + policyName); - try{ - while(policyIt.hasNext()){ + try { + while (policyIt.hasNext()) { PolicyEntity pol = policyIt.next(); - if(policy.getScope().equals(pol.getScope()) && + if (policy.getScope().equals(pol.getScope()) && getPolicyNameAndVersionFromPolicyFileName(pol.getPolicyName())[0].equals(policyName)) { policyIt.remove(); } } - }catch(Exception e){ + } catch (Exception e) { logger.debug(e); - PolicyLogger.error("Could not delete old versions for policy "+policy.getPolicyName()+", ID: "+policy.getPolicyId()); + PolicyLogger.error("Could not delete old versions for policy " + policy.getPolicyName() + ", ID: " + + policy.getPolicyId()); } group.addPolicyToGroup(policy); em.flush(); @@ -2578,7 +2799,9 @@ public class PolicyDBDao { return synchronizeGroupPoliciesInFileSystem(pdpGroup, group); } catch (PAPException e) { logger.debug(e); - PolicyLogger.error("PolicyDBDao: Could not synchronize the filesystem group with the database group. " + e.getMessage()); + PolicyLogger + .error("PolicyDBDao: Could not synchronize the filesystem group with the database group. " + + e.getMessage()); } return null; } @@ -2587,32 +2810,35 @@ public class PolicyDBDao { //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)){ + 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){ + synchronized (emLock) { checkBeforeOperationRun(); Query pdpQuery = em.createQuery(pdpEntitySelectQuery); pdpQuery.setParameter(pdpIdVariable, pdpID); pdpQuery.setParameter(deletedVar, false); List<?> pdpList; - try{ + try { pdpList = pdpQuery.getResultList(); - } catch(Exception e){ - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "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+foundInDBNotDeleted); - throw new PersistenceException("Somehow, more than one pdp with the id "+pdpID+foundInDBNotDeleted); - } else if(pdpList.isEmpty()){ - PolicyLogger.error("Pdp being removed does not exist with id "+pdpID); + } catch (Exception e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, + "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 + foundInDBNotDeleted); + throw new PersistenceException( + "Somehow, more than one pdp with the id " + pdpID + foundInDBNotDeleted); + } else if (pdpList.isEmpty()) { + PolicyLogger.error("Pdp being removed does not exist with id " + pdpID); return; } - PdpEntity pdp = (PdpEntity)pdpList.get(0); + PdpEntity pdp = (PdpEntity) pdpList.get(0); pdp.setGroup(null); - if(!stringEquals(pdp.getModifiedBy(),username)){ + if (!stringEquals(pdp.getModifiedBy(), username)) { pdp.setModifiedBy(username); } pdp.setDeleted(true); @@ -2622,22 +2848,23 @@ public class PolicyDBDao { } } - private void notifyOthers(long entityId,String entityType){ - notifyOthers(entityId,entityType,null); + private void notifyOthers(long entityId, String entityType) { + notifyOthers(entityId, entityType, null); } - private void notifyOthers(long entityId, String entityType, String newGroupId){ - logger.debug("notifyOthers(long entityId, String entityType, long newGroupId) as notifyOthers("+entityId+","+entityType+","+newGroupId+") called"); + private 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){ + 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){ + for (Thread t : notifyThreads) { try { t.join(); } catch (Exception e) { @@ -2647,19 +2874,20 @@ public class PolicyDBDao { } } - private PolicyDBDao(){ + private PolicyDBDao() { //empty constructor } - public static PolicyDBDaoTestClass getPolicyDBDaoTestClass(){ + public static PolicyDBDaoTestClass getPolicyDBDaoTestClass() { return new PolicyDBDao().new PolicyDBDaoTestClass(); } final class PolicyDBDaoTestClass { - String getConfigFile(String filename, String scope, PolicyRestAdapter policy){ + String getConfigFile(String filename, String scope, PolicyRestAdapter policy) { return scope + "." + PolicyDBDao.this.getConfigFile(filename, policy); } - String[] getPolicyNameAndVersionFromPolicyFileName(String originalPolicyName) throws PolicyDBException{ + + String[] getPolicyNameAndVersionFromPolicyFileName(String originalPolicyName) throws PolicyDBException { return PolicyDBDao.this.getPolicyNameAndVersionFromPolicyFileName(originalPolicyName); } } |