aboutsummaryrefslogtreecommitdiffstats
path: root/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components
diff options
context:
space:
mode:
authorITSERVICES\rb7147 <rb7147@att.com>2017-04-25 11:46:00 -0400
committerITSERVICES\rb7147 <rb7147@att.com>2017-05-03 09:58:17 -0400
commite0addf5b588a1244f9679becd90999dfcb4c3a94 (patch)
tree1212772d6366730266ff0e093c874b07aa716c29 /ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components
parent39fb0f30472777e4b60d6a7ac8aa4eb9773961ff (diff)
Policy 1707 commit to LF
Change-Id: Ibe6f01d92f9a434c040abb05d5386e89d675ae65 Signed-off-by: ITSERVICES\rb7147 <rb7147@att.com>
Diffstat (limited to 'ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components')
-rw-r--r--ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/ActionPolicy.java164
-rw-r--r--ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/AutoPushPolicy.java25
-rw-r--r--ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/ClosedLoopPolicy.java191
-rw-r--r--ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/ConfigPolicy.java198
-rw-r--r--ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateBRMSRuleTemplate.java73
-rw-r--r--ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateBrmsParamPolicy.java362
-rw-r--r--ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateBrmsRawPolicy.java316
-rw-r--r--ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateClosedLoopPerformanceMetrics.java138
-rw-r--r--ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateNewMicroSerivceModel.java61
-rw-r--r--ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/DecisionPolicy.java109
-rw-r--r--ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/FirewallConfigPolicy.java437
-rw-r--r--ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/MicroServiceConfigPolicy.java438
-rw-r--r--ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/Policy.java635
-rw-r--r--ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/PolicyDBDao.java2864
-rw-r--r--ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/PolicyDBDaoTransaction.java4
-rw-r--r--ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/package-info.java6
16 files changed, 2312 insertions, 3709 deletions
diff --git a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/ActionPolicy.java b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/ActionPolicy.java
index b6e003c91..b6a959bfc 100644
--- a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/ActionPolicy.java
+++ b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/ActionPolicy.java
@@ -26,14 +26,12 @@ import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
-import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
import javax.persistence.Query;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.AllOfType;
@@ -52,17 +50,13 @@ import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.RuleType;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType;
-import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.openecomp.policy.pap.xacml.rest.adapters.PolicyRestAdapter;
+import org.openecomp.policy.pap.xacml.rest.XACMLPapServlet;
import org.openecomp.policy.pap.xacml.rest.util.JPAUtils;
+import org.openecomp.policy.rest.adapter.PolicyRestAdapter;
import org.openecomp.policy.rest.jpa.ActionPolicyDict;
import org.openecomp.policy.rest.jpa.Datatype;
import org.openecomp.policy.rest.jpa.FunctionDefinition;
-
import org.openecomp.policy.xacml.api.XACMLErrorConstants;
-
import org.openecomp.policy.common.logging.eelf.MessageCodes;
import org.openecomp.policy.common.logging.eelf.PolicyLogger;
import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
@@ -71,14 +65,11 @@ import org.openecomp.policy.common.logging.flexlogger.Logger;
public class ActionPolicy extends Policy {
/**
- * Config Fields
+ * ActionPolicy Fields
*/
- private static final Logger logger = FlexLogger.getLogger(ConfigPolicy.class);
-
+ private static final Logger LOGGER = FlexLogger.getLogger(ActionPolicy.class);
+
public static final String JSON_CONFIG = "JSON";
- public static final String XML_CONFIG = "XML";
- public static final String PROPERTIES_CONFIG = "PROPERTIES";
- public static final String OTHER_CONFIG = "OTHER";
public static final String PDP_ACTION = "PDP";
public static final String PEP_ACTION = "PEP";
@@ -95,6 +86,9 @@ public class ActionPolicy extends Policy {
public static final String URL_ATTRIBUTEID = "url";
public static final String BODY_ATTRIBUTEID = "body";
+ public static boolean isAttribute = false;
+
+
List<String> dynamicLabelRuleAlgorithms = new LinkedList<String>();
List<String> dynamicFieldFunctionRuleAlgorithms = new LinkedList<String>();
List<String> dynamicFieldOneRuleAlgorithms = new LinkedList<String>();
@@ -102,6 +96,7 @@ public class ActionPolicy extends Policy {
protected Map<String, String> dropDownMap = new HashMap<String, String>();
+
public ActionPolicy() {
super();
}
@@ -119,6 +114,11 @@ public class ActionPolicy extends Policy {
return successMap;
}
+ if(!ActionPolicy.isAttribute) {
+ successMap.put("invalidAttribute", "Action Attrbute was not in the database.");
+ return successMap;
+ }
+
if(!isPreparedToSave()){
//Prep and configure the policy for saving
prepareToSave();
@@ -126,12 +126,8 @@ 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.getParentPath().toString(), policyName);
+ newPolicyPath = Paths.get(policyAdapter.getNewFileName());
successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject() );
- if (successMap.containsKey("success")) {
- Path finalPolicyPath = getFinalPolicyPath();
- policyAdapter.setFinalPolicyPath(finalPolicyPath.toString());
- }
return successMap;
}
@@ -147,12 +143,7 @@ public class ActionPolicy extends Policy {
int version = 0;
String policyID = policyAdapter.getPolicyID();
-
- if (policyAdapter.isEditPolicy()) {
- version = policyAdapter.getHighestVersion() + 1;
- } else {
- version = 1;
- }
+ version = policyAdapter.getHighestVersion();
// Create the Instance for pojo, PolicyType object is used in marshalling.
if (policyAdapter.getPolicyType().equals("Action")) {
@@ -164,38 +155,23 @@ public class ActionPolicy extends Policy {
policyAdapter.setData(policyConfig);
}
+ policyName = policyAdapter.getNewFileName();
+
if (policyAdapter.getData() != null) {
-
- // Save off everything
- // making ready all the required elements to generate the action policy xml.
- // Get the uniqueness for policy name.
- Path newFile = getNextFilename(Paths.get(policyAdapter.getParentPath().toString()), policyAdapter.getPolicyType(), policyAdapter.getPolicyName(), version);
- if (newFile == null) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Policy already Exists, cannot create the policy.");
- PolicyLogger.error("Policy already Exists, cannot create the policy.");
- setPolicyExists(true);
- return false;
- }
- policyName = newFile.getFileName().toString();
-
// Action body is optional so checking value provided or not
- //String actionBodyString = policyAdapter.getActionBody();
String comboDictValue = policyAdapter.getActionAttribute();
String actionBody = getActionPolicyDict(comboDictValue).getBody();
- if(!(actionBody==null || "".equals(actionBody))){
+ if(!(actionBody==null || "".equals(actionBody))){
saveActionBody(policyName, actionBody);
- }
-
- // Make sure the filename ends with an extension
- if (policyName.endsWith(".xml") == false) {
- policyName = policyName + ".xml";
+ } else {
+ if(!isAttribute){
+ LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "Could not find " + comboDictValue + " in the ActionPolicyDict table.");
+ return false;
+ }
}
PolicyType actionPolicy = (PolicyType) policyAdapter.getData();
-
actionPolicy.setDescription(policyAdapter.getPolicyDescription());
-
actionPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId());
AllOfType allOf = new AllOfType();
@@ -252,7 +228,6 @@ public class ActionPolicy extends Policy {
condition.setExpression(new ObjectFactory().createApply(actionApply));
isCompound = true;
}
-
}
// if rule algorithm not a compound
if (!isCompound) {
@@ -265,8 +240,6 @@ public class ActionPolicy extends Policy {
actionPolicy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().add(rule);
policyAdapter.setPolicyData(actionPolicy);
} else {
- //TODO:EELF Cleanup - Remove logger
- //logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "Unsupported data object." + policyAdapter.getData().getClass().getCanonicalName());
PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + "Unsupported data object." + policyAdapter.getData().getClass().getCanonicalName());
}
@@ -276,69 +249,25 @@ public class ActionPolicy extends Policy {
// Saving the json Configurations file if exists at server location for action policy.
private void saveActionBody(String policyName, String actionBodyData) {
- int version = 0;
- int highestVersion = 0;
- String domain = getParentPathSubScopeDir();
- String path = domain.replace('\\', '.');
- String removeExtension = policyName.substring(0, policyName.indexOf(".xml"));
- String removeVersion = removeExtension.substring(0, removeExtension.indexOf("."));
- if (policyAdapter.isEditPolicy()) {
- highestVersion = policyAdapter.getHighestVersion();
- if(highestVersion != 0){
- version = highestVersion + 1;
- }
- } else {
- version = 1;
- }
- if(path.contains("/")){
- path = domain.replace('/', '.');
- logger.info("print the path:" +path);
- }
try {
-
- File file = new File(ACTION_HOME + File.separator + path + "." + removeVersion + "." + version + ".json");
-
- if (logger.isDebugEnabled())
- logger.debug("The action body is at " + file.getAbsolutePath());
-
- // if file doesn't exists, then create it
- if (!file.exists()) {
- file.createNewFile();
- }
- File configHomeDir = new File(ACTION_HOME);
- File[] listOfFiles = configHomeDir.listFiles();
- if (listOfFiles != null){
- for(File eachFile : listOfFiles){
- if(eachFile.isFile()){
- String fileNameWithoutExtension = FilenameUtils.removeExtension(eachFile.getName());
- String actionFileNameWithoutExtension = FilenameUtils.removeExtension(path + "." + policyName);
- if (fileNameWithoutExtension.equals(actionFileNameWithoutExtension)){
- //delete the file
- if (logger.isInfoEnabled())
- logger.info("Deleting action body is at " + eachFile.getAbsolutePath());
- eachFile.delete();
- }
- }
- }
+ if(policyName.endsWith(".xml")){
+ policyName = policyName.replace(".xml", "");
}
+ File file = new File(ACTION_HOME+ File.separator + policyName + ".json");
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.write(actionBodyData);
bw.close();
-
- if (logger.isInfoEnabled()) {
- logger.info("Action Body is succesfully saved at " + file.getAbsolutePath());
+ if (LOGGER.isInfoEnabled()) {
+ LOGGER.info("Action Body is succesfully saved at " + file.getAbsolutePath());
}
} catch (IOException e) {
e.printStackTrace();
}
-
}
// Data required for obligation part is setting here.
private ObligationExpressionsType getObligationExpressions() {
-
- // TODO: add code to get all these values from dictionary
ObligationExpressionsType obligations = new ObligationExpressionsType();
ObligationExpressionType obligation = new ObligationExpressionType();
@@ -407,17 +336,7 @@ public class ActionPolicy extends Policy {
AttributeValueType jsonURLAttributeValue = new AttributeValueType();
jsonURLAttributeValue.setDataType(URI_DATATYPE);
- final Path gitPath = Paths.get(policyAdapter.getUserGitPath().toString());;
- String policyDir = policyAdapter.getParentPath().toString();
- int startIndex1 = policyDir.indexOf(gitPath.toString()) + gitPath.toString().length() + 1;
- policyDir = policyDir.substring(startIndex1, policyDir.length());
- logger.info("print the main domain value"+policyDir);
- String path = policyDir.replace('\\', '.');
- if(path.contains("/")){
- path = policyDir.replace('/', '.');
- logger.info("print the path:" +path);
- }
- jsonURLAttributeValue.getContent().add(CONFIG_URL + "/Action/" + path + "." +FilenameUtils.removeExtension(policyName) + ".json");
+ jsonURLAttributeValue.getContent().add(CONFIG_URL + "/Action/" + policyName + ".json");
assignmentJsonURL.setExpression(new ObjectFactory().createAttributeValue(jsonURLAttributeValue));
obligation.getAttributeAssignmentExpression().add(assignmentJsonURL);
@@ -428,7 +347,6 @@ public class ActionPolicy extends Policy {
if(headerVal != null && !headerVal.equals("")){
// parse it on : to get number of headers
String[] result = headerVal.split(":");
- System.out.println(Arrays.toString(result));
for (String eachString : result){
// parse each value on =
String[] textFieldVals = eachString.split("=");
@@ -567,9 +485,8 @@ public class ActionPolicy extends Policy {
private Map<String,String> createDropDownMap(){
JPAUtils jpaUtils = null;
try {
- jpaUtils = JPAUtils.getJPAUtilsInstance(policyAdapter.getEntityManagerFactory());
+ jpaUtils = JPAUtils.getJPAUtilsInstance(XACMLPapServlet.getEmf());
} catch (Exception e) {
- // TODO Auto-generated catch block
e.printStackTrace();
}
Map<Datatype, List<FunctionDefinition>> functionMap = jpaUtils.getFunctionDatatypeMap();
@@ -587,32 +504,19 @@ public class ActionPolicy extends Policy {
private ActionPolicyDict getActionPolicyDict(String attributeName){
ActionPolicyDict retObj = new ActionPolicyDict();
- //EntityManagerFactory emf = policyAdapter.getEntityManagerFactory();
- //EntityManager em = emf.createEntityManager();
- EntityManager em = policyAdapter.getEntityManagerFactory().createEntityManager();
+ EntityManager em = XACMLPapServlet.getEmf().createEntityManager();
Query getActionPolicyDicts = em.createNamedQuery("ActionPolicyDict.findAll");
List<?> actionPolicyDicts = getActionPolicyDicts.getResultList();
for (Object id : actionPolicyDicts) {
- //ActionPolicyDict actionPolicyList = actionPolicyDicts.getItem(id).getEntity();
ActionPolicyDict actionPolicy = (ActionPolicyDict) id;
if(attributeName.equals(actionPolicy.getAttributeName())){
+ isAttribute = true;
retObj = actionPolicy;
break;
}
}
-
- try{
- em.getTransaction().commit();
- } catch(Exception e){
- try{
- em.getTransaction().rollback();
- } catch(Exception e2){
- e2.printStackTrace();
- }
- }
em.close();
-
return retObj;
}
@@ -621,6 +525,4 @@ public class ActionPolicy extends Policy {
return policyAdapter.getPolicyData();
}
-
-
}
diff --git a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/AutoPushPolicy.java b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/AutoPushPolicy.java
index 61498e2ac..4d4859349 100644
--- a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/AutoPushPolicy.java
+++ b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/AutoPushPolicy.java
@@ -28,21 +28,16 @@ import java.util.Iterator;
import java.util.Properties;
import java.util.Set;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.openecomp.policy.common.logging.eelf.MessageCodes;
import org.openecomp.policy.common.logging.eelf.PolicyLogger;
-import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
+import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
import org.openecomp.policy.common.logging.flexlogger.Logger;
-
-import org.openecomp.policy.xacml.api.XACMLErrorConstants;
import org.openecomp.policy.xacml.api.pap.EcompPDPGroup;
import org.openecomp.policy.xacml.api.pap.PAPPolicyEngine;
-
-import com.att.research.xacml.api.pap.PAPEngine;
-import com.att.research.xacml.api.pap.PDPPolicy;
import org.openecomp.policy.xacml.std.pap.StdPDPGroup;
import org.openecomp.policy.xacml.std.pap.StdPDPPolicy;
+
+import com.att.research.xacml.api.pap.PDPPolicy;
/**
* Auto Push Policy based on the property file properties.
*
@@ -50,7 +45,7 @@ import org.openecomp.policy.xacml.std.pap.StdPDPPolicy;
*/
public class AutoPushPolicy {
- private static final Logger logger = FlexLogger.getLogger(AutoPushPolicy.class);
+ private static final Logger LOGGER = FlexLogger.getLogger(AutoPushPolicy.class);
private String filePath = null;
private Properties properties;
@@ -94,8 +89,8 @@ public class AutoPushPolicy {
if(policyId.contains("\\")){
policyId = policyId.replace("\\", ".");
}
- logger.info("Policy ID : " + policyId);
- logger.info("Policy Name : " + policyName);
+ LOGGER.info("Policy ID : " + policyId);
+ LOGGER.info("Policy Name : " + policyName);
// Read in Groups
for(EcompPDPGroup pdpGroup: papEngine.getEcompPDPGroups()){
String groupName = pdpGroup.getName();
@@ -121,8 +116,6 @@ public class AutoPushPolicy {
}
}
} catch (Exception e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error while processing the auto push for " + policyToCreateUpdate +"\n " + e.getMessage());
PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "AutoPushPolicy", "Error while processing the auto push for " + policyToCreateUpdate);
}
return changedGroups;
@@ -133,15 +126,13 @@ public class AutoPushPolicy {
properties.load(new FileInputStream(propFile));
oldModified = propFile.lastModified();
} catch (Exception e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error while loading in the auto push properties file. " + propFile.toString());
PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "AutoPushPolicy", "Error while loading in the auto push properties file.");
}
}
private StdPDPGroup addToGroup(String policyId, String policyName, String policyToCreateUpdate, StdPDPGroup pdpGroup) throws Exception{
// Add to group. Send Notification.
- StdPDPPolicy policy = new StdPDPPolicy(policyId, true, policyName, Paths.get(policyToCreateUpdate).toUri());
+ StdPDPPolicy policy = new StdPDPPolicy(policyId, true, policyName, null);
//Get the current policies from the Group and Add the new one
Set<PDPPolicy> currentPoliciesInGroup = pdpGroup.getPolicies();
Set<PDPPolicy> policies = new HashSet<PDPPolicy>();
@@ -156,7 +147,7 @@ public class AutoPushPolicy {
for (PDPPolicy existingPolicy : currentPoliciesInGroup) {
if (existingPolicy.getId().equals(selPolicy.getId())) {
pdpGroup.removePolicyFromGroup(existingPolicy);
- logger.debug("Removing policy: " + existingPolicy);
+ LOGGER.debug("Removing policy: " + existingPolicy);
break;
}
}
diff --git a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/ClosedLoopPolicy.java b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/ClosedLoopPolicy.java
index 8c3e34d6e..c2ab845ae 100644
--- a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/ClosedLoopPolicy.java
+++ b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/ClosedLoopPolicy.java
@@ -31,9 +31,15 @@ import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
-import java.util.StringTokenizer;
-import javax.json.stream.JsonGenerationException;
+import org.apache.commons.io.FilenameUtils;
+import org.openecomp.policy.common.logging.eelf.MessageCodes;
+import org.openecomp.policy.common.logging.eelf.PolicyLogger;
+import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
+import org.openecomp.policy.common.logging.flexlogger.Logger;
+import org.openecomp.policy.rest.adapter.PolicyRestAdapter;
+
+import com.att.research.xacml.std.IdentifierImpl;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionType;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionsType;
@@ -47,26 +53,11 @@ import oasis.names.tc.xacml._3_0.core.schema.wd_17.MatchType;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.ObjectFactory;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.RuleType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType;
-
-import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.openecomp.policy.pap.xacml.rest.adapters.PolicyRestAdapter;
-
-import com.att.research.xacml.std.IdentifierImpl;
-
-import org.openecomp.policy.common.logging.eelf.MessageCodes;
-import org.openecomp.policy.common.logging.eelf.PolicyLogger;
-import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
-import org.openecomp.policy.common.logging.flexlogger.Logger;
+import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType;
public class ClosedLoopPolicy extends Policy {
-
- /**
- * Config Fields
- */
- private static final Logger logger = FlexLogger.getLogger(ConfigPolicy.class);
+
+ private static final Logger LOGGER = FlexLogger.getLogger(ClosedLoopPolicy.class);
public ClosedLoopPolicy() {
super();
@@ -77,13 +68,7 @@ public class ClosedLoopPolicy extends Policy {
}
//save configuration of the policy based on the policyname
- private void saveConfigurations(String policyName, String prevPolicyName, String jsonBody) {
- String domain = getParentPathSubScopeDir();
- String path = domain.replace('\\', '.');
- if(path.contains("/")){
- path = domain.replace('/', '.');
- logger.info("print the path:" +path);
- }
+ private void saveConfigurations(String policyName, String jsonBody) {
try {
String body = jsonBody;
try {
@@ -91,27 +76,24 @@ public class ClosedLoopPolicy extends Policy {
//Remove the trapMaxAge in Verification Signature
body = body.replace(",\"trapMaxAge\":null", "");
}catch(Exception e){
- logger.debug("No Trap Max Age in JSON body");
+ LOGGER.debug("No Trap Max Age in JSON body");
}
this.policyAdapter.setJsonBody(body);
} catch (Exception e) {
e.printStackTrace();
}
- System.out.println(body);
if(policyName.endsWith(".xml")){
- policyName = policyName.substring(0, policyName.lastIndexOf(".xml"));
+ policyName = policyName.replace(".xml", "");
}
- PrintWriter out = new PrintWriter(CONFIG_HOME + File.separator+path + "."+ policyName +".json");
+ PrintWriter out = new PrintWriter(CONFIG_HOME + File.separator+ policyName +".json");
out.println(body);
out.close();
- } catch (JsonGenerationException e) {
+ } catch (Exception e) {
+ LOGGER.error("Exception Occured while writing Configuration Data"+e);
e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
-
+ }
}
//Utility to read json data from the existing file to a string
@@ -147,13 +129,9 @@ public class ClosedLoopPolicy extends Policy {
// Until here we prepared the data and here calling the method to create xml.
Path newPolicyPath = null;
- newPolicyPath = Paths.get(policyAdapter.getParentPath().toString(), policyName);
+ newPolicyPath = Paths.get(policyAdapter.getNewFileName());
successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject());
- if (successMap.containsKey("success")) {
- Path finalPolicyPath = getFinalPolicyPath();
- policyAdapter.setFinalPolicyPath(finalPolicyPath.toString());
- }
return successMap;
}
@@ -169,12 +147,7 @@ public class ClosedLoopPolicy extends Policy {
int version = 0;
String policyID = policyAdapter.getPolicyID();
-
- if (policyAdapter.isEditPolicy()) {
- version = policyAdapter.getHighestVersion() + 1;
- } else {
- version = 1;
- }
+ version = policyAdapter.getHighestVersion();
// Create the Instance for pojo, PolicyType object is used in marshalling.
if (policyAdapter.getPolicyType().equals("Config")) {
@@ -185,86 +158,11 @@ public class ClosedLoopPolicy extends Policy {
policyConfig.setTarget(new TargetType());
policyAdapter.setData(policyConfig);
}
-
+ policyName = policyAdapter.getNewFileName();
if (policyAdapter.getData() != null) {
-
- //delete the closed loop draft file and configuration file, if validation is success after editing the draft policy
- String prevPolicyName = null;
- if(policyAdapter.isEditPolicy()){
- prevPolicyName = "Config_Fault_" + policyAdapter.getPolicyName() + "." + policyAdapter.getHighestVersion() + ".xml";
-
- if (policyAdapter.isDraft()) {
- policyName = "Config_Fault_" + policyAdapter.getPolicyName() + "_Draft";
- } else {
- policyName = "Config_Fault_" + policyAdapter.getPolicyName();
- }
-
- //delete the closed loop draft configuration file, if validation is success after editing the draft policy
- final Path gitPath = Paths.get(policyAdapter.getUserGitPath());
- String policyDir = policyAdapter.getParentPath();
- int startIndex = policyDir.indexOf(gitPath.toString()) + gitPath.toString().length() + 1;
- policyDir = policyDir.substring(startIndex, policyDir.length());
- logger.info("print the main domain value"+policyDir);
- String path = policyDir.replace('\\', '.');
- if(path.contains("/")){
- path = policyDir.replace('/', '.');
- logger.info("print the path:" +path);
- }
- String fileName = FilenameUtils.removeExtension(policyName);
-
- final String tempPath = path;
- String fileLocation = null;
- if (fileName != null && fileName.contains("Config_Fault_")) {
- fileLocation = CONFIG_HOME;
- }
- // Get the file from the saved location
- File dir = new File(fileLocation);
- File[] listOfFiles = dir.listFiles();
- for (File file : listOfFiles) {
- String configFile = null;
- if(!policyAdapter.isDraft()){
- configFile = fileName + "_Draft";
- }else{
- configFile = fileName;
- }
- if (file.isFile() && file.getName().contains( tempPath + "." + configFile)) {
- try {
- if (file.delete() == false) {
- throw new Exception(
- "No known error, Delete failed");
- }
- } catch (Exception e) {
- logger.error("Failed to Delete file: "
- + e.getLocalizedMessage());
- }
- }
- }
- }
-
- // Save off everything
- // making ready all the required elements to generate the action policy xml.
- // Get the uniqueness for policy name.
- String policyName1 = null;
- if(policyAdapter.isDraft()){
- policyName1 = policyAdapter.getPolicyName() + "_Draft";
- }else{
- policyName1 = policyAdapter.getPolicyName();
- }
-
- Path newFile = this.getNextLoopFilename(Paths.get(policyAdapter.getParentPath()), policyAdapter.getPolicyType(), policyAdapter.getConfigPolicyType(), policyName1, version);
- if (newFile == null) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("File already exists, cannot create the policy.");
- PolicyLogger.error("File already exists, cannot create the policy.");
- setPolicyExists(true);
- return false;
- }
-
- policyName = newFile.getFileName().toString();
-
// Save the Configurations file with the policy name with extention based on selection.
String jsonBody = policyAdapter.getJsonBody();
- saveConfigurations(policyName, prevPolicyName, jsonBody);
+ saveConfigurations(policyName, jsonBody);
// Make sure the filename ends with an extension
if (policyName.endsWith(".xml") == false) {
@@ -278,10 +176,7 @@ public class ClosedLoopPolicy extends Policy {
faultPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId());
AllOfType allOfOne = new AllOfType();
- File policyFilePath = new File(policyAdapter.getParentPath().toString(), policyName);
- String policyDir = policyFilePath.getParentFile().getName();
- String fileName = FilenameUtils.removeExtension(policyName);
- fileName = policyDir + "." + fileName + ".xml";
+ 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());
@@ -331,8 +226,6 @@ public class ClosedLoopPolicy extends Policy {
try {
accessURI = new URI(ACTION_ID);
} catch (URISyntaxException e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error(e.getStackTrace());
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "CreateClosedLoopPolicy", "Exception creating ACCESS URI");
}
accessAttributeDesignator.setCategory(CATEGORY_ACTION);
@@ -352,8 +245,6 @@ public class ClosedLoopPolicy extends Policy {
try {
closedURI = new URI(RESOURCE_ID);
} catch (URISyntaxException e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error(e.getStackTrace());
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "CreateClosedLoopPolicy", "Exception creating closed URI");
}
closedAttributeDesignator.setCategory(CATEGORY_RESOURCE);
@@ -378,8 +269,6 @@ public class ClosedLoopPolicy extends Policy {
policyAdapter.setPolicyData(faultPolicy);
} else {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Unsupported data object." + policyAdapter.getData().getClass().getCanonicalName());
PolicyLogger.error("Unsupported data object." + policyAdapter.getData().getClass().getCanonicalName());
}
@@ -405,7 +294,6 @@ public class ClosedLoopPolicy extends Policy {
assignment1.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue));
advice.getAttributeAssignmentExpression().add(assignment1);
- final Path gitPath = Paths.get(policyAdapter.getUserGitPath().toString());
// For Config file Url if configurations are provided.
AttributeAssignmentExpressionType assignment2 = new AttributeAssignmentExpressionType();
assignment2.setAttributeId("URLID");
@@ -414,17 +302,7 @@ public class ClosedLoopPolicy extends Policy {
AttributeValueType AttributeValue = new AttributeValueType();
AttributeValue.setDataType(URI_DATATYPE);
- String policyDir1 = policyAdapter.getParentPath().toString();
- int startIndex1 = policyDir1.indexOf(gitPath.toString()) + gitPath.toString().length() + 1;
- policyDir1 = policyDir1.substring(startIndex1, policyDir1.length());
- logger.info("print the main domain value"+policyDir1);
- String path = policyDir1.replace('\\', '.');
- if(path.contains("/")){
- path = policyDir1.replace('/', '.');
- logger.info("print the path:" +path);
- }
-
- String content = CONFIG_URL +"/Config/" + path + "." + 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));
@@ -437,25 +315,8 @@ public class ClosedLoopPolicy extends Policy {
AttributeValueType attributeValue3 = new AttributeValueType();
attributeValue3.setDataType(STRING_DATATYPE);
- String policyDir = policyAdapter.getParentPath().toString();
- int startIndex = policyDir.indexOf(gitPath.toString()) + gitPath.toString().length() + 1;
- policyDir = policyDir.substring(startIndex, policyDir.length());
- StringTokenizer tokenizer = null;
- StringBuffer buffer = new StringBuffer();
- if (policyDir.contains("\\")) {
- tokenizer = new StringTokenizer(policyDir, "\\");
- } else {
- tokenizer = new StringTokenizer(policyDir, "/");
- }
- if (tokenizer != null) {
- while (tokenizer.hasMoreElements()) {
- String value = tokenizer.nextToken();
- buffer.append(value);
- buffer.append(".");
- }
- }
fileName = FilenameUtils.removeExtension(fileName);
- fileName = buffer.toString() + fileName + ".xml";
+ fileName = fileName + ".xml";
String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length());
if ((name == null) || (name.equals(""))) {
name = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length());
@@ -477,7 +338,7 @@ public class ClosedLoopPolicy extends Policy {
advice.getAttributeAssignmentExpression().add(assignment4);
AttributeAssignmentExpressionType assignment5 = new AttributeAssignmentExpressionType();
- assignment5.setAttributeId("matching:" + this.ECOMPID);
+ assignment5.setAttributeId("matching:" + ECOMPID);
assignment5.setCategory(CATEGORY_RESOURCE);
assignment5.setIssuer("");
diff --git a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/ConfigPolicy.java b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/ConfigPolicy.java
index a339b1564..ff8045890 100644
--- a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/ConfigPolicy.java
+++ b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/ConfigPolicy.java
@@ -32,7 +32,6 @@ import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
-import java.util.StringTokenizer;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
@@ -53,30 +52,25 @@ import oasis.names.tc.xacml._3_0.core.schema.wd_17.RuleType;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType;
import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.openecomp.policy.pap.xacml.rest.adapters.PolicyRestAdapter;
import org.openecomp.policy.common.logging.eelf.MessageCodes;
import org.openecomp.policy.common.logging.eelf.PolicyLogger;
-
+import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
+import org.openecomp.policy.common.logging.flexlogger.Logger;
+import org.openecomp.policy.rest.adapter.PolicyRestAdapter;
import org.xml.sax.ErrorHandler;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.XMLReader;
-import org.openecomp.policy.xacml.api.XACMLErrorConstants;
import com.att.research.xacml.std.IdentifierImpl;
-import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
-import org.openecomp.policy.common.logging.flexlogger.Logger;
-
public class ConfigPolicy extends Policy {
/**
* Config Fields
*/
- private static final Logger logger = FlexLogger.getLogger(ConfigPolicy.class);
+ private static final Logger LOGGER = FlexLogger.getLogger(ConfigPolicy.class);
public static final String JSON_CONFIG = "JSON";
public static final String XML_CONFIG = "XML";
@@ -92,65 +86,25 @@ public class ConfigPolicy extends Policy {
public ConfigPolicy(PolicyRestAdapter policyAdapter){
this.policyAdapter = policyAdapter;
}
-
+
// Saving the Configurations file at server location for config policy.
protected void saveConfigurations(String policyName) {
- final Path gitPath = Paths.get(policyAdapter.getUserGitPath().toString());
- String policyDir = policyAdapter.getParentPath().toString();
- int startIndex = policyDir.indexOf(gitPath.toString()) + gitPath.toString().length() + 1;
- policyDir = policyDir.substring(startIndex, policyDir.length());
- logger.info("print the main domain value"+policyDir);
- String path = policyDir.replace('\\', '.');
- if(path.contains("/")){
- path = policyDir.replace('/', '.');
- logger.info("print the path:" +path);
- }
-
try {
- File file;
- String configFileName = getConfigFile(policyName);
- if(CONFIG_HOME.contains("\\"))
- {
- file = new File(CONFIG_HOME + "\\" + path + "."+ configFileName);
- }
- else
- {
- file = new File(CONFIG_HOME + "/" + path + "."+ configFileName);
- }
-
- // if file doesnt exists, then create it
- if (!file.exists()) {
- file.createNewFile();
- }
-
-
- File configHomeDir = new File(CONFIG_HOME);
- File[] listOfFiles = configHomeDir.listFiles();
- if (listOfFiles != null){
- for(File eachFile : listOfFiles){
- if(eachFile.isFile()){
- String fileNameWithoutExtension = FilenameUtils.removeExtension(eachFile.getName());
- String configFileNameWithoutExtension = FilenameUtils.removeExtension(path + "." + configFileName);
- if (fileNameWithoutExtension.equals(configFileNameWithoutExtension)){
- //delete the file
- eachFile.delete();
- }
- }
- }
- }
-
- FileWriter fw = new FileWriter(file.getAbsoluteFile());
+ String fileName = getConfigFile(policyName);
+ FileWriter fw = new FileWriter(CONFIG_HOME + File.separator + fileName);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(configBodyData);
bw.close();
- if (logger.isDebugEnabled()) {
- logger.debug("Configuration is succesfully saved");
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.debug("Configuration is succesfully saved");
}
} catch (IOException e) {
+ LOGGER.error("Exception Occured while writing Configuration Data"+e);
e.printStackTrace();
}
}
+
// Here we are adding the extension for the configurations file based on the
// config type selection for saving.
private String getConfigFile(String filename) {
@@ -177,6 +131,7 @@ public class ConfigPolicy extends Policy {
return filename;
}
+
// Validations for Config form
/*
* FORM VALIDATION WILL BE DONE BY THE PAP-ADMIN before creating JSON object...
@@ -295,12 +250,8 @@ 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.getParentPath().toString(), policyName);
- successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject() );
- if (successMap.containsKey("success")) {
- Path finalPolicyPath = getFinalPolicyPath();
- policyAdapter.setFinalPolicyPath(finalPolicyPath.toString());
- }
+ newPolicyPath = Paths.get(policyAdapter.getNewFileName());
+ successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject());
return successMap;
}
@@ -310,18 +261,12 @@ public class ConfigPolicy extends Policy {
public boolean prepareToSave() throws Exception{
if(isPreparedToSave()){
- //we have already done this
return true;
}
-
+
int version = 0;
String policyID = policyAdapter.getPolicyID();
-
- if (policyAdapter.isEditPolicy()) {
- version = policyAdapter.getHighestVersion() + 1;
- } else {
- version = 1;
- }
+ version = policyAdapter.getHighestVersion();
// Create the Instance for pojo, PolicyType object is used in marshalling.
if (policyAdapter.getPolicyType().equals("Config")) {
@@ -333,52 +278,19 @@ public class ConfigPolicy extends Policy {
policyAdapter.setData(policyConfig);
}
+ policyName = policyAdapter.getNewFileName();
+ configBodyData = policyAdapter.getConfigBodyData();
+ saveConfigurations(policyName);
+
if (policyAdapter.getData() != null) {
-
- // Save off everything
- // making ready all the required elements to generate the action policy xml.
- // Get the uniqueness for policy name.
- Path newFile = getNextFilename(Paths.get(policyAdapter.getParentPath().toString()), policyAdapter.getPolicyType(), policyAdapter.getPolicyName(), version);
- if (newFile == null) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("File already exists");
- PolicyLogger.error("File alrady exists");
- setPolicyExists(true);
- return false;
- }
- policyName = newFile.getFileName().toString();
-
- // Body is optional so checking.
- configBodyData = policyAdapter.getConfigBodyData();
- if (!configBodyData.equals("")) {
- // Save the Configurations file with the policy name with extention based on selection.
- saveConfigurations(policyName);
- }
-
- // Make sure the filename ends with an extension
- if (policyName.endsWith(".xml") == false) {
- policyName = policyName + ".xml";
- }
-
-
PolicyType configPolicy = (PolicyType) policyAdapter.getData();
configPolicy.setDescription(policyAdapter.getPolicyDescription());
configPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId());
AllOfType allOfOne = new AllOfType();
- final Path gitPath = Paths.get(policyAdapter.getUserGitPath().toString());
- String policyDir = policyAdapter.getParentPath().toString();
- int startIndex = policyDir.indexOf(gitPath.toString()) + gitPath.toString().length() + 1;
- policyDir = policyDir.substring(startIndex, policyDir.length());
- logger.info("print the main domain value "+policyDir);
- String path = policyDir.replace('\\', '.');
- if(path.contains("/")){
- path = policyDir.replace('/', '.');
- logger.info("print the path:" +path);
- }
- String fileName = FilenameUtils.removeExtension(policyName);
- fileName = path + "." + fileName + ".xml";
+
+ 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());
@@ -389,17 +301,13 @@ public class ConfigPolicy extends Policy {
// Adding the matches to AllOfType element Match for Ecomp
allOf.getMatch().add(createMatch("ECOMPName", policyAdapter.getEcompName()));
// Match for riskType
- allOf.getMatch().add(
- createDynamicMatch("RiskType", policyAdapter.getRiskType()));
+ allOf.getMatch().add(createDynamicMatch("RiskType", policyAdapter.getRiskType()));
// Match for riskLevel
- allOf.getMatch().add(
- createDynamicMatch("RiskLevel", String.valueOf(policyAdapter.getRiskLevel())));
+ allOf.getMatch().add(createDynamicMatch("RiskLevel", String.valueOf(policyAdapter.getRiskLevel())));
// Match for riskguard
- allOf.getMatch().add(
- createDynamicMatch("guard", policyAdapter.getGuard()));
+ allOf.getMatch().add(createDynamicMatch("guard", policyAdapter.getGuard()));
// Match for ttlDate
- allOf.getMatch().add(
- createDynamicMatch("TTLDate", policyAdapter.getTtlDate()));
+ allOf.getMatch().add(createDynamicMatch("TTLDate", policyAdapter.getTtlDate()));
// Match for ConfigName
allOf.getMatch().add(createMatch("ConfigName", policyAdapter.getConfigName()));
@@ -425,7 +333,6 @@ public class ConfigPolicy extends Policy {
RuleType rule = new RuleType();
rule.setRuleId(policyAdapter.getRuleID());
-
rule.setEffect(EffectType.PERMIT);
// Create Target in Rule
@@ -439,11 +346,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) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e.getStackTrace());
+ }catch(URISyntaxException e){
PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "ConfigPolicy", "Exception creating ACCESS URI");
}
accessAttributeDesignator.setCategory(CATEGORY_ACTION);
@@ -460,11 +365,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) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e.getStackTrace());
+ }catch(URISyntaxException e){
PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "ConfigPolicy", "Exception creating Config URI");
}
configAttributeDesignator.setCategory(CATEGORY_RESOURCE);
@@ -489,8 +392,6 @@ public class ConfigPolicy extends Policy {
policyAdapter.setPolicyData(configPolicy);
} else {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Unsupported data object." + policyAdapter.getData().getClass().getCanonicalName());
PolicyLogger.error("Unsupported data object." + policyAdapter.getData().getClass().getCanonicalName());
}
setPreparedToSave(true);
@@ -516,7 +417,6 @@ public class ConfigPolicy extends Policy {
assignment1.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue));
advice.getAttributeAssignmentExpression().add(assignment1);
- final Path gitPath = Paths.get(policyAdapter.getUserGitPath().toString());
// For Config file Url if configurations are provided.
if (policyAdapter.getConfigType() != null) {
@@ -527,18 +427,7 @@ public class ConfigPolicy extends Policy {
AttributeValueType AttributeValue = new AttributeValueType();
AttributeValue.setDataType(URI_DATATYPE);
- String policyDir1 = policyAdapter.getParentPath().toString();
- int startIndex1 = policyDir1.indexOf(gitPath.toString()) + gitPath.toString().length() + 1;
- policyDir1 = policyDir1.substring(startIndex1, policyDir1.length());
- logger.info("print the main domain value"+policyDir1);
- String path = policyDir1.replace('\\', '.');
- if(path.contains("/")){
- path = policyDir1.replace('/', '.');
- logger.info("print the path:" +path);
- }
-
- String content = "$URL" + "/Config/" + path + "." + getConfigFile(policyName);
- System.out.println("URL value :" + content);
+ String content = "$URL" + "/Config/" + getConfigFile(policyName);
AttributeValue.getContent().add(content);
assignment2.setExpression(new ObjectFactory().createAttributeValue(AttributeValue));
@@ -550,25 +439,9 @@ public class ConfigPolicy extends Policy {
AttributeValueType attributeValue3 = new AttributeValueType();
attributeValue3.setDataType(STRING_DATATYPE);
- String policyDir = policyAdapter.getParentPath().toString();
- int startIndex = policyDir.indexOf(gitPath.toString()) + gitPath.toString().length() + 1;
- policyDir = policyDir.substring(startIndex, policyDir.length());
- StringTokenizer tokenizer = null;
- StringBuffer buffer = new StringBuffer();
- if (policyDir.contains("\\")) {
- tokenizer = new StringTokenizer(policyDir, "\\");
- } else {
- tokenizer = new StringTokenizer(policyDir, "/");
- }
- if (tokenizer != null) {
- while (tokenizer.hasMoreElements()) {
- String value = tokenizer.nextToken();
- buffer.append(value);
- buffer.append(".");
- }
- }
+
fileName = FilenameUtils.removeExtension(fileName);
- fileName = buffer.toString() + fileName + ".xml";
+ fileName = fileName + ".xml";
String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length());
if ((name == null) || (name.equals(""))) {
name = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length());
@@ -590,7 +463,7 @@ public class ConfigPolicy extends Policy {
advice.getAttributeAssignmentExpression().add(assignment4);
AttributeAssignmentExpressionType assignment5 = new AttributeAssignmentExpressionType();
- assignment5.setAttributeId("matching:" + this.ECOMPID);
+ assignment5.setAttributeId("matching:" + ECOMPID);
assignment5.setCategory(CATEGORY_RESOURCE);
assignment5.setIssuer("");
@@ -602,7 +475,7 @@ public class ConfigPolicy extends Policy {
advice.getAttributeAssignmentExpression().add(assignment5);
AttributeAssignmentExpressionType assignment6 = new AttributeAssignmentExpressionType();
- assignment6.setAttributeId("matching:" + this.CONFIGID);
+ assignment6.setAttributeId("matching:" + CONFIGID);
assignment6.setCategory(CATEGORY_RESOURCE);
assignment6.setIssuer("");
@@ -680,7 +553,6 @@ public class ConfigPolicy extends Policy {
advice.getAttributeAssignmentExpression().add(assignment11);
-
advices.getAdviceExpression().add(advice);
return advices;
}
diff --git a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateBRMSRuleTemplate.java b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateBRMSRuleTemplate.java
new file mode 100644
index 000000000..2f122647d
--- /dev/null
+++ b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateBRMSRuleTemplate.java
@@ -0,0 +1,73 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ECOMP-PAP-REST
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.openecomp.policy.pap.xacml.rest.components;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
+import org.openecomp.policy.common.logging.flexlogger.Logger;
+import org.openecomp.policy.rest.dao.CommonClassDao;
+import org.openecomp.policy.rest.jpa.BRMSParamTemplate;
+import org.openecomp.policy.rest.jpa.UserInfo;
+import org.openecomp.policy.utils.PolicyUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class CreateBRMSRuleTemplate {
+ private static final Logger LOGGER = FlexLogger.getLogger(CreateBRMSRuleTemplate.class);
+ private static CommonClassDao commonClassDao;
+
+ @Autowired
+ public CreateBRMSRuleTemplate(CommonClassDao commonClassDao){
+ CreateBRMSRuleTemplate.commonClassDao = commonClassDao;
+ }
+
+ public CreateBRMSRuleTemplate() {}
+
+ public Map<String, String> addRule(String rule, String ruleName, String description, String userID) {
+ Map<String,String> responseMap = new HashMap<String,String>();
+ if(rule!=null && !PolicyUtils.brmsRawValidate(rule).contains("[ERR")){
+ List<Object> duplicateData = commonClassDao.checkDuplicateEntry(ruleName, "ruleName", BRMSParamTemplate.class);
+ if(duplicateData!=null && !duplicateData.isEmpty()){
+ LOGGER.error("Import new service failed. Service already exists");
+ responseMap.put("DBError", "EXISTS");
+ return responseMap;
+ }else{
+ BRMSParamTemplate brmsParamTemplate = new BRMSParamTemplate();
+ brmsParamTemplate.setDescription(description);
+ brmsParamTemplate.setRuleName(ruleName);
+ brmsParamTemplate.setRule(rule);
+ UserInfo userCreatedBy = (UserInfo) commonClassDao.getEntityItem(UserInfo.class, "userLoginId", userID);
+ brmsParamTemplate.setUserCreatedBy(userCreatedBy);
+ commonClassDao.save(brmsParamTemplate);
+ LOGGER.info("Template created with " + ruleName + " by " + userID);
+ }
+ responseMap.put("success", "success");
+ }else{
+ LOGGER.debug("Error during validating the rule for creating record for BRMS Param Template");
+ responseMap.put("error", "VALIDATION");
+ }
+ return responseMap;
+ }
+
+}
diff --git a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateBrmsParamPolicy.java b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateBrmsParamPolicy.java
index 6e18da524..0aaf1b1d2 100644
--- a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateBrmsParamPolicy.java
+++ b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateBrmsParamPolicy.java
@@ -26,7 +26,6 @@ import java.io.PrintWriter;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.charset.Charset;
-import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
@@ -35,14 +34,26 @@ import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
-import java.util.StringTokenizer;
+import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import java.util.regex.Matcher;
+
+import org.apache.commons.io.FilenameUtils;
+import org.openecomp.policy.common.logging.eelf.MessageCodes;
+import org.openecomp.policy.common.logging.eelf.PolicyLogger;
+import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
+import org.openecomp.policy.common.logging.flexlogger.Logger;
+import org.openecomp.policy.pap.xacml.rest.controller.BRMSDictionaryController;
+import org.openecomp.policy.rest.XACMLRestProperties;
+import org.openecomp.policy.rest.adapter.PolicyRestAdapter;
+
+import com.att.research.xacml.std.IdentifierImpl;
+import com.att.research.xacml.util.XACMLProperties;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionType;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionsType;
@@ -56,26 +67,11 @@ import oasis.names.tc.xacml._3_0.core.schema.wd_17.MatchType;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.ObjectFactory;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.RuleType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType;
-
-import org.apache.commons.io.FilenameUtils;
-import org.openecomp.policy.pap.xacml.rest.adapters.PolicyRestAdapter;
-import org.openecomp.policy.rest.XACMLRestProperties;
-
-import com.att.research.xacml.std.IdentifierImpl;
-import com.att.research.xacml.util.XACMLProperties;
-
-import org.openecomp.policy.common.logging.eelf.MessageCodes;
-import org.openecomp.policy.common.logging.eelf.PolicyLogger;
-import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
-import org.openecomp.policy.common.logging.flexlogger.Logger;
+import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType;
public class CreateBrmsParamPolicy extends Policy {
- /**
- * Config Fields
- */
- private static final Logger logger = FlexLogger
- .getLogger(CreateBrmsParamPolicy.class);
+
+ private static final Logger LOGGER = FlexLogger.getLogger(CreateBrmsParamPolicy.class);
/*
* These are the parameters needed for DB access from the PAP
@@ -95,16 +91,14 @@ public class CreateBrmsParamPolicy extends Policy {
}
- public String expandConfigBody(String ruleContents,
- Map<String, String> brmsParamBody
- ) {
+ public String expandConfigBody(String ruleContents, Map<String, String> brmsParamBody) {
Set<String> keySet= new HashSet<String>();
Map<String,String> copyMap=new HashMap<>();
copyMap.putAll(brmsParamBody);
- copyMap.put("policyName", policyAdapter.getPolicyName());
- copyMap.put("policyScope", policyAdapter.getPolicyScope());
+ copyMap.put("policyName", policyName.substring(0, policyName.replace(".xml", "").lastIndexOf(".")));
+ copyMap.put("policyScope", policyAdapter.getDomainDir());
copyMap.put("policyVersion",policyAdapter.getHighestVersion().toString());
//Finding all the keys in the Map data-structure.
@@ -127,90 +121,11 @@ public class CreateBrmsParamPolicy extends Policy {
}
ruleContents=m.replaceAll(finalInput);
}
- System.out.println(ruleContents);
return ruleContents;
}
- // Saving the Configurations file at server location for config policy.
- protected void saveConfigurations(String policyName, String prevPolicyName,
- String ruleBody) {
- final Path gitPath = Paths.get(policyAdapter.getUserGitPath()
- .toString());
- String policyDir = policyAdapter.getParentPath().toString();
- int startIndex = policyDir.indexOf(gitPath.toString())
- + gitPath.toString().length() + 1;
- policyDir = policyDir.substring(startIndex, policyDir.length());
- logger.info("print the main domain value" + policyDir);
- String path = policyDir.replace('\\', '.');
- if (path.contains("/")) {
- path = policyDir.replace('/', '.');
- logger.info("print the path:" + path);
- }
-
-
- String configFileName = getConfigFile(policyName);
- try{
- // Getting the previous policy Config Json file to be used for
- // updating the dictionary tables
- if (policyAdapter.isEditPolicy()) {
-
- String prevConfigFileName = getConfigFile(prevPolicyName);
-
- File oldFile;
- if (CONFIG_HOME.contains("\\")) {
- oldFile = new File(CONFIG_HOME + "\\" + path + "."
- + prevConfigFileName);
- } else {
- oldFile = new File(CONFIG_HOME + "/" + path + "."
- + prevConfigFileName);
- }
-
- String filepath = oldFile.toString();
-
- String prevJsonBody = readFile(filepath, StandardCharsets.UTF_8);
- policyAdapter.setPrevJsonBody(prevJsonBody);
- }
-
- File configHomeDir = new File(CONFIG_HOME);
- File[] listOfFiles = configHomeDir.listFiles();
- if (listOfFiles != null) {
- for (File eachFile : listOfFiles) {
- if (eachFile.isFile()) {
- String fileNameWithoutExtension = FilenameUtils
- .removeExtension(eachFile.getName());
- String configFileNameWithoutExtension = FilenameUtils
- .removeExtension(configFileName);
- if (fileNameWithoutExtension
- .equals(configFileNameWithoutExtension)) {
- // delete the file
- eachFile.delete();
- }
- }
- }
- }
- }
- catch(IOException e){
-
- }
- try {
-
- if (policyName.endsWith(".xml")) {
- policyName = policyName.substring(0,
- policyName.lastIndexOf(".xml"));
- }
- PrintWriter out = new PrintWriter(CONFIG_HOME + File.separator
- + path + "." + policyName + ".txt");
- String expandedBody=expandConfigBody(ruleBody,policyAdapter.getBrmsParamBody());
- out.println(expandedBody);
- out.close();
-
- } catch (Exception e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + e);
- PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "CreateBrmsParamPolicy", "Exception saving configuration file");
- }
- }
+
// Utility to read json data from the existing file to a string
static String readFile(String path, Charset encoding) throws IOException {
@@ -218,6 +133,27 @@ public class CreateBrmsParamPolicy extends Policy {
return new String(encoded, encoding);
}
+
+ // Saving the Configurations file at server location for config policy.
+ protected void saveConfigurations(String policyName, String ruleBody) {
+ try {
+ if (policyName.endsWith(".xml")) {
+ policyName = policyName.substring(0,
+ policyName.lastIndexOf(".xml"));
+ }
+ PrintWriter out = new PrintWriter(CONFIG_HOME + File.separator + policyName + ".txt");
+ String expandedBody=expandConfigBody(ruleBody,policyAdapter.getBrmsParamBody());
+ out.println(expandedBody);
+ policyAdapter.setJsonBody(expandedBody);
+ policyAdapter.setConfigBodyData(expandedBody);
+ out.close();
+
+
+ } catch (Exception e) {
+ PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "CreateBrmsParamPolicy", "Exception saving configuration file");
+ }
+ }
+
// Here we are adding the extension for the configurations file based on the
// config type selection for saving.
@@ -255,30 +191,17 @@ public class CreateBrmsParamPolicy extends Policy {
// Until here we prepared the data and here calling the method to create
// xml.
Path newPolicyPath = null;
- newPolicyPath = Paths.get(policyAdapter.getParentPath().toString(),
- policyName);
+ newPolicyPath = Paths.get(policyAdapter.getNewFileName());
Boolean dbIsUpdated = true;
successMap = new HashMap<String, String>();
if (dbIsUpdated) {
- successMap = createPolicy(newPolicyPath,
- getCorrectPolicyDataObject());
+ successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject());
} else {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Failed to Update the Database Dictionary Tables.");
PolicyLogger.error("Failed to Update the Database Dictionary Tables.");
-
- // remove the new json file
- String jsonBody = policyAdapter.getPrevJsonBody();
- saveConfigurations(policyName, "", jsonBody);
successMap.put("error", "DB UPDATE");
}
-
- if (successMap.containsKey("success")) {
- Path finalPolicyPath = getFinalPolicyPath();
- policyAdapter.setFinalPolicyPath(finalPolicyPath.toString());
- }
return successMap;
}
@@ -313,22 +236,17 @@ public class CreateBrmsParamPolicy extends Policy {
}
rs.close();
}catch (ClassNotFoundException e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error(e.getMessage());
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "CreateBrmsParamPolicy", "Exception querying BRMSParamTemplate");
- System.out.println(e.getMessage());
-
} catch (SQLException e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error(e.getMessage());
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "CreateBrmsParamPolicy", "Exception querying BRMSParamTemplate");
- System.out.println(e.getMessage());
} finally {
try{
if (con!=null) con.close();
if (rs!=null) rs.close();
if (st!=null) st.close();
- } catch (Exception ex){}
+ } catch (Exception ex){
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, ex, "CreateBrmsParamPolicy", "Exception querying BRMSParamTemplate");
+ }
}
return ruleTemplate;
@@ -421,8 +339,6 @@ public class CreateBrmsParamPolicy extends Policy {
}
}
} catch (Exception e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + e);
PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "CreateBrmsParamPolicy", "Exception parsing file in findType");
}
}
@@ -443,13 +359,7 @@ public class CreateBrmsParamPolicy extends Policy {
int version = 0;
String policyID = policyAdapter.getPolicyID();
-
- if (policyAdapter.isEditPolicy()) {
- // version = Integer.parseInt(policyAdapter.getVersion()) + 1;
- version = policyAdapter.getHighestVersion() + 1;
- } else {
- version = 1;
- }
+ version = policyAdapter.getHighestVersion();
// Create the Instance for pojo, PolicyType object is used in
// marshalling.
@@ -462,33 +372,9 @@ public class CreateBrmsParamPolicy extends Policy {
policyAdapter.setData(policyConfig);
}
- if (policyAdapter.getData() != null) {
-
- // Save off everything
- // making ready all the required elements to generate the action
- // policy xml.
- // Get the uniqueness for policy name.
- String prevPolicyName = null;
- if (policyAdapter.isEditPolicy()) {
- prevPolicyName = "Config_BRMS_Param_" + policyAdapter.getPolicyName()
- + "." + policyAdapter.getHighestVersion() + ".xml";
- }
-
- Path newFile = getNextFilename(
- Paths.get(policyAdapter.getParentPath().toString()),
- (policyAdapter.getPolicyType() + "_BRMS_Param"),
- policyAdapter.getPolicyName(), version);
-
- if (newFile == null) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Policy already Exists, cannot create the policy.");
- PolicyLogger.error("Policy already Exists, cannot create the policy.");
- setPolicyExists(true);
- return false;
- }
- policyName = newFile.getFileName().toString();
-
-
+ policyName = policyAdapter.getNewFileName();
+
+ if (policyAdapter.getData() != null) {
Map<String,String> ruleAndUIValue= policyAdapter.getBrmsParamBody();
String tempateValue= ruleAndUIValue.get("templateName");
String valueFromDictionary= getValueFromDictionary(tempateValue);
@@ -504,7 +390,7 @@ public class CreateBrmsParamPolicy extends Policy {
body = "/* Autogenerated Code Please Don't change/remove this comment section. This is for the UI purpose. \n\t " +
"<$%BRMSParamTemplate=" + tempateValue + "%$> \n */ \n";
body = body + valueFromDictionary + "\n";
- generatedRule = "rule \"Params\" \n\tsalience 1000 \n\twhen\n\tthen\n\t\tParams params = new Params();";
+ generatedRule = "rule \"" +policyName.substring(0, policyName.replace(".xml", "").lastIndexOf(".")) +".Params\" \n\tsalience 1000 \n\twhen\n\tthen\n\t\tParams params = new Params();";
//We first read the map data structure(ruleAndUIValue) received from the PAP-ADMIN
//We ignore if the key is "templateName as we are interested only in the UI fields and its value.
@@ -537,22 +423,18 @@ public class CreateBrmsParamPolicy extends Policy {
generatedRule = generatedRule
+ "\n\t\tinsert(params);\nend";
- logger.info("New rule generated with :" + generatedRule);
+ LOGGER.info("New rule generated with :" + generatedRule);
body = body + generatedRule;
} catch (Exception e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + e);
PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "CreateBrmsParamPolicy", "Exception saving policy");
}
}
catch (Exception e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + e);
PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "CreateBrmsParamPolicy", "Exception saving policy");
}
- saveConfigurations(policyName,prevPolicyName,body);
-
+ saveConfigurations(policyName,body);
+
// Make sure the filename ends with an extension
if (policyName.endsWith(".xml") == false) {
policyName = policyName + ".xml";
@@ -562,17 +444,12 @@ public class CreateBrmsParamPolicy extends Policy {
configPolicy.setDescription(policyAdapter.getPolicyDescription());
- configPolicy.setRuleCombiningAlgId(policyAdapter
- .getRuleCombiningAlgId());
+ configPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId());
AllOfType allOfOne = new AllOfType();
- File policyFilePath = new File(policyAdapter.getParentPath()
- .toString(), policyName);
- String policyDir = policyFilePath.getParentFile().getName();
- String fileName = FilenameUtils.removeExtension(policyName);
- fileName = policyDir + "." + fileName + ".xml";
- String name = fileName.substring(fileName.lastIndexOf("\\") + 1,
- fileName.length());
+
+ 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());
@@ -583,22 +460,16 @@ public class CreateBrmsParamPolicy extends Policy {
AllOfType allOf = new AllOfType();
// Match for ECOMPName
- allOf.getMatch().add(
- createMatch("ECOMPName", policyAdapter.getEcompName()));
- allOf.getMatch().add(
- createMatch("ConfigName", policyAdapter.getConfigName()));
+ allOf.getMatch().add(createMatch("ECOMPName", policyAdapter.getEcompName()));
+ allOf.getMatch().add(createMatch("ConfigName", policyAdapter.getConfigName()));
// Match for riskType
- allOf.getMatch().add(
- createDynamicMatch("RiskType", policyAdapter.getRiskType()));
+ allOf.getMatch().add(createDynamicMatch("RiskType", policyAdapter.getRiskType()));
// Match for riskLevel
- allOf.getMatch().add(
- createDynamicMatch("RiskLevel", String.valueOf(policyAdapter.getRiskLevel())));
+ allOf.getMatch().add(createDynamicMatch("RiskLevel", String.valueOf(policyAdapter.getRiskLevel())));
// Match for riskguard
- allOf.getMatch().add(
- createDynamicMatch("guard", policyAdapter.getGuard()));
+ allOf.getMatch().add(createDynamicMatch("guard", policyAdapter.getGuard()));
// Match for ttlDate
- allOf.getMatch().add(
- createDynamicMatch("TTLDate", policyAdapter.getTtlDate()));
+ allOf.getMatch().add(createDynamicMatch("TTLDate", policyAdapter.getTtlDate()));
AnyOfType anyOf = new AnyOfType();
anyOf.getAllOf().add(allOfOne);
anyOf.getAllOf().add(allOf);
@@ -628,9 +499,6 @@ public class CreateBrmsParamPolicy extends Policy {
try {
accessURI = new URI(ACTION_ID);
} catch (URISyntaxException e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE
- //+ e.getStackTrace());
PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "CreateBrmsParamPolicy", "Exception creating ACCESS URI");
}
accessAttributeDesignator.setCategory(CATEGORY_ACTION);
@@ -653,16 +521,12 @@ public class CreateBrmsParamPolicy extends Policy {
try {
configURI = new URI(RESOURCE_ID);
} catch (URISyntaxException e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE
- //+ e.getStackTrace());
PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "CreateBrmsParamPolicy", "Exception creating Config URI");
}
configAttributeDesignator.setCategory(CATEGORY_RESOURCE);
configAttributeDesignator.setDataType(STRING_DATATYPE);
- configAttributeDesignator.setAttributeId(new IdentifierImpl(
- configURI).stringValue());
+ configAttributeDesignator.setAttributeId(new IdentifierImpl(configURI).stringValue());
configMatch.setAttributeDesignator(configAttributeDesignator);
configMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE);
@@ -684,9 +548,6 @@ public class CreateBrmsParamPolicy extends Policy {
policyAdapter.setPolicyData(configPolicy);
} else {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Unsupported data object."
- //+ policyAdapter.getData().getClass().getCanonicalName());
PolicyLogger.error("Unsupported data object."
+ policyAdapter.getData().getClass().getCanonicalName());
}
@@ -717,26 +578,14 @@ public class CreateBrmsParamPolicy extends Policy {
// For Config file Url if configurations are provided.
// URL ID Assignment
- final Path gitPath = Paths.get(policyAdapter.getUserGitPath()
- .toString());
AttributeAssignmentExpressionType assignment2 = new AttributeAssignmentExpressionType();
assignment2.setAttributeId("URLID");
assignment2.setCategory(CATEGORY_RESOURCE);
assignment2.setIssuer("");
AttributeValueType AttributeValue = new AttributeValueType();
AttributeValue.setDataType(URI_DATATYPE);
- String policyDir1 = policyAdapter.getParentPath().toString();
- int startIndex1 = policyDir1.indexOf(gitPath.toString())
- + gitPath.toString().length() + 1;
- policyDir1 = policyDir1.substring(startIndex1, policyDir1.length());
- logger.info("print the main domain value" + policyDir1);
- String path = policyDir1.replace('\\', '.');
- if (path.contains("/")) {
- path = policyDir1.replace('/', '.');
- logger.info("print the path:" + path);
- }
- String content = CONFIG_URL + "/Config/" + path + "."
- + getConfigFile(policyName);
+
+ String content = CONFIG_URL + "/Config/"+ getConfigFile(policyName);
AttributeValue.getContent().add(content);
assignment2.setExpression(new ObjectFactory()
@@ -750,34 +599,14 @@ public class CreateBrmsParamPolicy extends Policy {
assignment3.setIssuer("");
AttributeValueType attributeValue3 = new AttributeValueType();
attributeValue3.setDataType(STRING_DATATYPE);
- String policyDir = policyAdapter.getParentPath().toString();
- int startIndex = policyDir.indexOf(gitPath.toString())
- + gitPath.toString().length() + 1;
- policyDir = policyDir.substring(startIndex, policyDir.length());
- StringTokenizer tokenizer = null;
- StringBuffer buffer = new StringBuffer();
- if (policyDir.contains("\\")) {
- tokenizer = new StringTokenizer(policyDir, "\\");
- } else {
- tokenizer = new StringTokenizer(policyDir, "/");
- }
- if (tokenizer != null) {
- while (tokenizer.hasMoreElements()) {
- String value = tokenizer.nextToken();
- buffer.append(value);
- buffer.append(".");
- }
- }
fileName = FilenameUtils.removeExtension(fileName);
- fileName = buffer.toString() + fileName + ".xml";
- System.out.println(fileName);
+ fileName = fileName + ".xml";
String name = fileName.substring(fileName.lastIndexOf("\\") + 1,
fileName.length());
if ((name == null) || (name.equals(""))) {
name = fileName.substring(fileName.lastIndexOf("/") + 1,
fileName.length());
}
- System.out.println(name);
attributeValue3.getContent().add(name);
assignment3.setExpression(new ObjectFactory()
.createAttributeValue(attributeValue3));
@@ -797,7 +626,7 @@ public class CreateBrmsParamPolicy extends Policy {
// Ecomp Name Assignment
AttributeAssignmentExpressionType assignment5 = new AttributeAssignmentExpressionType();
- assignment5.setAttributeId("matching:" + this.ECOMPID);
+ assignment5.setAttributeId("matching:" + ECOMPID);
assignment5.setCategory(CATEGORY_RESOURCE);
assignment5.setIssuer("");
AttributeValueType configNameAttributeValue5 = new AttributeValueType();
@@ -810,7 +639,7 @@ public class CreateBrmsParamPolicy extends Policy {
//Config Name Assignment
AttributeAssignmentExpressionType assignment6 = new AttributeAssignmentExpressionType();
- assignment6.setAttributeId("matching:" + this.CONFIGID);
+ assignment6.setAttributeId("matching:" +CONFIGID);
assignment6.setCategory(CATEGORY_RESOURCE);
assignment6.setIssuer("");
AttributeValueType configNameAttributeValue6 = new AttributeValueType();
@@ -818,22 +647,31 @@ public class CreateBrmsParamPolicy extends Policy {
configNameAttributeValue6.getContent().add(policyAdapter.getConfigName());
assignment6.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue6));
advice.getAttributeAssignmentExpression().add(assignment6);
-
+ // Adding Controller Information.
+ if(policyAdapter.getBrmsController()!=null){
+ BRMSDictionaryController brmsDicitonaryController = new BRMSDictionaryController();
+ advice.getAttributeAssignmentExpression().add(
+ createResponseAttributes("controller:"+ policyAdapter.getBrmsController(),
+ brmsDicitonaryController.getControllerDataByID(policyAdapter.getBrmsController()).getController()));
+ }
+
+ // Adding Dependencies.
+ if(policyAdapter.getBrmsDependency()!=null){
+ BRMSDictionaryController brmsDicitonaryController = new BRMSDictionaryController();
+ ArrayList<String> dependencies = new ArrayList<String>();
+ StringBuilder key = new StringBuilder();
+ for(String dependencyName: policyAdapter.getBrmsDependency()){
+ dependencies.add(brmsDicitonaryController.getDependencyDataByID(dependencyName).getDependency());
+ key.append(dependencyName + ",");
+ }
+ advice.getAttributeAssignmentExpression().add(
+ createResponseAttributes("dependencies:"+key.toString(), dependencies.toString()));
+ }
+
+ // Dynamic Field Config Attributes.
Map<String, String> dynamicFieldConfigAttributes = policyAdapter.getDynamicFieldConfigAttributes();
for (String keyField : dynamicFieldConfigAttributes.keySet()) {
- String key = keyField;
- String value = dynamicFieldConfigAttributes.get(key);
- AttributeAssignmentExpressionType assignment7 = new AttributeAssignmentExpressionType();
- assignment7.setAttributeId("key:" + key);
- assignment7.setCategory(CATEGORY_RESOURCE);
- assignment7.setIssuer("");
-
- AttributeValueType configNameAttributeValue7 = new AttributeValueType();
- configNameAttributeValue7.setDataType(STRING_DATATYPE);
- configNameAttributeValue7.getContent().add(value);
- assignment7.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue7));
-
- advice.getAttributeAssignmentExpression().add(assignment7);
+ advice.getAttributeAssignmentExpression().add(createResponseAttributes("key:"+keyField, dynamicFieldConfigAttributes.get(keyField)));
}
//Risk Attributes
@@ -893,4 +731,16 @@ public class CreateBrmsParamPolicy extends Policy {
public Object getCorrectPolicyDataObject() {
return policyAdapter.getData();
}
+
+ private AttributeAssignmentExpressionType createResponseAttributes(String key, String value){
+ AttributeAssignmentExpressionType assignment7 = new AttributeAssignmentExpressionType();
+ assignment7.setAttributeId(key);
+ assignment7.setCategory(CATEGORY_RESOURCE);
+ assignment7.setIssuer("");
+ AttributeValueType configNameAttributeValue7 = new AttributeValueType();
+ configNameAttributeValue7.setDataType(STRING_DATATYPE);
+ configNameAttributeValue7.getContent().add(value);
+ assignment7.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue7));
+ return assignment7;
+ }
}
diff --git a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateBrmsRawPolicy.java b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateBrmsRawPolicy.java
index d77abf0f1..dfd647c6e 100644
--- a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateBrmsRawPolicy.java
+++ b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateBrmsRawPolicy.java
@@ -27,13 +27,20 @@ import java.io.PrintWriter;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.charset.Charset;
-import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
-import java.util.StringTokenizer;
+
+import org.apache.commons.io.FilenameUtils;
+import org.openecomp.policy.common.logging.eelf.MessageCodes;
+import org.openecomp.policy.common.logging.eelf.PolicyLogger;
+import org.openecomp.policy.pap.xacml.rest.controller.BRMSDictionaryController;
+import org.openecomp.policy.rest.adapter.PolicyRestAdapter;
+
+import com.att.research.xacml.std.IdentifierImpl;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionType;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionsType;
@@ -49,29 +56,9 @@ import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.RuleType;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType;
-import org.apache.commons.io.FilenameUtils;
-import org.openecomp.policy.pap.xacml.rest.adapters.PolicyRestAdapter;
-
-import com.att.research.xacml.std.IdentifierImpl;
-
-import org.openecomp.policy.common.logging.eelf.MessageCodes;
-import org.openecomp.policy.common.logging.eelf.PolicyLogger;
-import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
-import org.openecomp.policy.common.logging.flexlogger.Logger;
-
public class CreateBrmsRawPolicy extends Policy {
- /**
- * Config Fields
- */
- private static final Logger logger = FlexLogger
- .getLogger(CreateBrmsRawPolicy.class);
-
- public static final String JSON_CONFIG = "JSON";
- public static final String XML_CONFIG = "XML";
- public static final String PROPERTIES_CONFIG = "PROPERTIES";
- public static final String OTHER_CONFIG = "OTHER";
-
+
public CreateBrmsRawPolicy() {
super();
}
@@ -82,104 +69,19 @@ public class CreateBrmsRawPolicy extends Policy {
}
- // Saving the Configurations file at server location for config policy.
- protected void saveConfigurations(String policyName, String prevPolicyName,
- String jsonBody) {
- final Path gitPath = Paths.get(policyAdapter.getUserGitPath()
- .toString());
- String policyDir = policyAdapter.getParentPath().toString();
- int startIndex = policyDir.indexOf(gitPath.toString())
- + gitPath.toString().length() + 1;
- policyDir = policyDir.substring(startIndex, policyDir.length());
- logger.info("print the main domain value" + policyDir);
- String path = policyDir.replace('\\', '.');
- if (path.contains("/")) {
- path = policyDir.replace('/', '.');
- logger.info("print the path:" + path);
- }
-
+ // Saving the Configurations file at server location for CreateBrmsRawPolicy policy.
+ protected void saveConfigurations(String policyName, String jsonBody) {
try {
- String configFileName = getConfigFile(policyName);
-
- File file;
- if (CONFIG_HOME.contains("\\")) {
- file = new File(CONFIG_HOME + "\\" + path + "."
- + configFileName);
- } else {
- file = new File(CONFIG_HOME + "/" + path + "." + configFileName);
- }
-
- // if file doesnt exists, then create it
- if (!file.exists()) {
- file.createNewFile();
- }
-
- // Getting the previous policy Config Json file to be used for
- // updating the dictionary tables
- if (policyAdapter.isEditPolicy()) {
-
- String prevConfigFileName = getConfigFile(prevPolicyName);
-
- File oldFile;
- if (CONFIG_HOME.contains("\\")) {
- oldFile = new File(CONFIG_HOME + "\\" + path + "."
- + prevConfigFileName);
- } else {
- oldFile = new File(CONFIG_HOME + "/" + path + "."
- + prevConfigFileName);
- }
-
- String filepath = oldFile.toString();
-
- String prevJsonBody = readFile(filepath, StandardCharsets.UTF_8);
- policyAdapter.setPrevJsonBody(prevJsonBody);
- }
-
- File configHomeDir = new File(CONFIG_HOME);
- File[] listOfFiles = configHomeDir.listFiles();
- if (listOfFiles != null) {
- for (File eachFile : listOfFiles) {
- if (eachFile.isFile()) {
- String fileNameWithoutExtension = FilenameUtils
- .removeExtension(eachFile.getName());
- String configFileNameWithoutExtension = FilenameUtils
- .removeExtension(configFileName);
- if (fileNameWithoutExtension
- .equals(configFileNameWithoutExtension)) {
- // delete the file
- eachFile.delete();
- }
- }
- }
+ if (policyName.endsWith(".xml")) {
+ policyName = policyName.substring(0,
+ policyName.lastIndexOf(".xml"));
}
+ PrintWriter out = new PrintWriter(CONFIG_HOME + File.separator + policyName + ".txt");
+ out.println(jsonBody);
+ out.close();
- /*FileWriter fw = new FileWriter(file.getAbsoluteFile());
- BufferedWriter bw = new BufferedWriter(fw);
- bw.write(jsonBody);
- bw.close();
- if (logger.isDebugEnabled()) {
- logger.debug("Configuration is succesfully saved");
- }*/
-
- try {
-
- if (policyName.endsWith(".xml")) {
- policyName = policyName.substring(0,
- policyName.lastIndexOf(".xml"));
- }
- PrintWriter out = new PrintWriter(CONFIG_HOME + File.separator
- + path + "." + policyName + ".txt");
- out.println(jsonBody);
- out.close();
-
- } catch (Exception e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + e);
- PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "CreateBrmsRawPolicy", "Exception saving configurations file");
- }
-
- } catch (IOException e) {
- e.printStackTrace();
+ } catch (Exception e) {
+ PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "CreateBrmsRawPolicy", "Exception saving configurations file");
}
}
@@ -227,8 +129,7 @@ public class CreateBrmsRawPolicy extends Policy {
// Until here we prepared the data and here calling the method to create
// xml.
Path newPolicyPath = null;
- newPolicyPath = Paths.get(policyAdapter.getParentPath().toString(),
- policyName);
+ newPolicyPath = Paths.get(policyAdapter.getNewFileName());
Boolean dbIsUpdated = true;
@@ -237,20 +138,10 @@ public class CreateBrmsRawPolicy extends Policy {
successMap = createPolicy(newPolicyPath,
getCorrectPolicyDataObject());
} else {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Failed to Update the Database Dictionary Tables.");
PolicyLogger.error("Failed to Update the Database Dictionary Tables.");
-
- // remove the new json file
- String jsonBody = policyAdapter.getPrevJsonBody();
- saveConfigurations(policyName, "", jsonBody);
successMap.put("error", "DB UPDATE");
}
- if (successMap.containsKey("success")) {
- Path finalPolicyPath = getFinalPolicyPath();
- policyAdapter.setFinalPolicyPath(finalPolicyPath.toString());
- }
return successMap;
}
@@ -268,13 +159,7 @@ public class CreateBrmsRawPolicy extends Policy {
int version = 0;
String policyID = policyAdapter.getPolicyID();
-
- if (policyAdapter.isEditPolicy()) {
- // version = Integer.parseInt(policyAdapter.getVersion()) + 1;
- version = policyAdapter.getHighestVersion() + 1;
- } else {
- version = 1;
- }
+ version = policyAdapter.getHighestVersion();
// Create the Instance for pojo, PolicyType object is used in
// marshalling.
@@ -287,36 +172,12 @@ public class CreateBrmsRawPolicy extends Policy {
policyAdapter.setData(policyConfig);
}
+ policyName = policyAdapter.getNewFileName();
+
if (policyAdapter.getData() != null) {
-
- // Save off everything
- // making ready all the required elements to generate the action
- // policy xml.
- // Get the uniqueness for policy name.
- String prevPolicyName = null;
- if (policyAdapter.isEditPolicy()) {
- prevPolicyName = "Config_BRMS_Raw_" + policyAdapter.getPolicyName()
- + "." + policyAdapter.getHighestVersion() + ".xml";
- }
- //if (!policyAdapter.isEditPolicy()) {
- Path newFile = getNextFilename(
- Paths.get(policyAdapter.getParentPath().toString()),
- (policyAdapter.getPolicyType() + "_BRMS_Raw"),
- policyAdapter.getPolicyName(), version);
-
- if (newFile == null) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("File already exists, cannot create the policy.");
- PolicyLogger.error("File already exists, cannot create the policy.");
- setPolicyExists(true);
- return false;
- }
- policyName = newFile.getFileName().toString();
- //}
-
//String jsonBody = policyAdapter.getJsonBody();
String configBody=policyAdapter.getConfigBodyData();
- saveConfigurations(policyName, prevPolicyName, configBody);
+ saveConfigurations(policyName, configBody);
// Make sure the filename ends with an extension
if (policyName.endsWith(".xml") == false) {
@@ -327,17 +188,11 @@ public class CreateBrmsRawPolicy extends Policy {
configPolicy.setDescription(policyAdapter.getPolicyDescription());
- configPolicy.setRuleCombiningAlgId(policyAdapter
- .getRuleCombiningAlgId());
+ configPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId());
AllOfType allOfOne = new AllOfType();
- File policyFilePath = new File(policyAdapter.getParentPath()
- .toString(), policyName);
- String policyDir = policyFilePath.getParentFile().getName();
- String fileName = FilenameUtils.removeExtension(policyName);
- fileName = policyDir + "." + fileName + ".xml";
- String name = fileName.substring(fileName.lastIndexOf("\\") + 1,
- fileName.length());
+ 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());
@@ -348,22 +203,16 @@ public class CreateBrmsRawPolicy extends Policy {
AllOfType allOf = new AllOfType();
// Match for ECOMPName
- allOf.getMatch().add(
- createMatch("ECOMPName", policyAdapter.getEcompName()));
- allOf.getMatch().add(
- createMatch("ConfigName", policyAdapter.getConfigName()));
+ allOf.getMatch().add(createMatch("ECOMPName", policyAdapter.getEcompName()));
+ allOf.getMatch().add(createMatch("ConfigName", policyAdapter.getConfigName()));
// Match for riskType
- allOf.getMatch().add(
- createDynamicMatch("RiskType", policyAdapter.getRiskType()));
+ allOf.getMatch().add(createDynamicMatch("RiskType", policyAdapter.getRiskType()));
// Match for riskLevel
- allOf.getMatch().add(
- createDynamicMatch("RiskLevel", String.valueOf(policyAdapter.getRiskLevel())));
+ allOf.getMatch().add(createDynamicMatch("RiskLevel", String.valueOf(policyAdapter.getRiskLevel())));
// Match for riskguard
- allOf.getMatch().add(
- createDynamicMatch("guard", policyAdapter.getGuard()));
+ allOf.getMatch().add(createDynamicMatch("guard", policyAdapter.getGuard()));
// Match for ttlDate
- allOf.getMatch().add(
- createDynamicMatch("TTLDate", policyAdapter.getTtlDate()));
+ allOf.getMatch().add(createDynamicMatch("TTLDate", policyAdapter.getTtlDate()));
AnyOfType anyOf = new AnyOfType();
anyOf.getAllOf().add(allOfOne);
anyOf.getAllOf().add(allOf);
@@ -393,9 +242,6 @@ public class CreateBrmsRawPolicy extends Policy {
try {
accessURI = new URI(ACTION_ID);
} catch (URISyntaxException e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE
- //+ e.getStackTrace());
PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "CreateBrmsRawPolicy", "Exception creating ACCESS URI");
}
accessAttributeDesignator.setCategory(CATEGORY_ACTION);
@@ -418,9 +264,6 @@ public class CreateBrmsRawPolicy extends Policy {
try {
configURI = new URI(RESOURCE_ID);
} catch (URISyntaxException e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE
- //+ e.getStackTrace());
PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "CreateBrmsRawPolicy", "Exception creating Config URI");
}
@@ -449,9 +292,6 @@ public class CreateBrmsRawPolicy extends Policy {
policyAdapter.setPolicyData(configPolicy);
} else {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Unsupported data object."
- //+ policyAdapter.getData().getClass().getCanonicalName());
PolicyLogger.error("Unsupported data object."
+ policyAdapter.getData().getClass().getCanonicalName());
}
@@ -482,26 +322,14 @@ public class CreateBrmsRawPolicy extends Policy {
// For Config file Url if configurations are provided.
// URL ID Assignment
- final Path gitPath = Paths.get(policyAdapter.getUserGitPath()
- .toString());
AttributeAssignmentExpressionType assignment2 = new AttributeAssignmentExpressionType();
assignment2.setAttributeId("URLID");
assignment2.setCategory(CATEGORY_RESOURCE);
assignment2.setIssuer("");
AttributeValueType AttributeValue = new AttributeValueType();
AttributeValue.setDataType(URI_DATATYPE);
- String policyDir1 = policyAdapter.getParentPath().toString();
- int startIndex1 = policyDir1.indexOf(gitPath.toString())
- + gitPath.toString().length() + 1;
- policyDir1 = policyDir1.substring(startIndex1, policyDir1.length());
- logger.info("print the main domain value" + policyDir1);
- String path = policyDir1.replace('\\', '.');
- if (path.contains("/")) {
- path = policyDir1.replace('/', '.');
- logger.info("print the path:" + path);
- }
- String content = CONFIG_URL + "/Config/" + path + "."
- + getConfigFile(policyName);
+
+ String content = CONFIG_URL + "/Config/" + getConfigFile(policyName);
AttributeValue.getContent().add(content);
assignment2.setExpression(new ObjectFactory()
@@ -515,26 +343,8 @@ public class CreateBrmsRawPolicy extends Policy {
assignment3.setIssuer("");
AttributeValueType attributeValue3 = new AttributeValueType();
attributeValue3.setDataType(STRING_DATATYPE);
- String policyDir = policyAdapter.getParentPath().toString();
- int startIndex = policyDir.indexOf(gitPath.toString())
- + gitPath.toString().length() + 1;
- policyDir = policyDir.substring(startIndex, policyDir.length());
- StringTokenizer tokenizer = null;
- StringBuffer buffer = new StringBuffer();
- if (policyDir.contains("\\")) {
- tokenizer = new StringTokenizer(policyDir, "\\");
- } else {
- tokenizer = new StringTokenizer(policyDir, "/");
- }
- if (tokenizer != null) {
- while (tokenizer.hasMoreElements()) {
- String value = tokenizer.nextToken();
- buffer.append(value);
- buffer.append(".");
- }
- }
fileName = FilenameUtils.removeExtension(fileName);
- fileName = buffer.toString() + fileName + ".xml";
+ fileName = fileName + ".xml";
System.out.println(fileName);
String name = fileName.substring(fileName.lastIndexOf("\\") + 1,
fileName.length());
@@ -562,7 +372,7 @@ public class CreateBrmsRawPolicy extends Policy {
// Ecomp Name Assignment
AttributeAssignmentExpressionType assignment5 = new AttributeAssignmentExpressionType();
- assignment5.setAttributeId("matching:" + this.ECOMPID);
+ assignment5.setAttributeId("matching:" + ECOMPID);
assignment5.setCategory(CATEGORY_RESOURCE);
assignment5.setIssuer("");
AttributeValueType configNameAttributeValue5 = new AttributeValueType();
@@ -575,7 +385,7 @@ public class CreateBrmsRawPolicy extends Policy {
//Config Name Assignment
AttributeAssignmentExpressionType assignment6 = new AttributeAssignmentExpressionType();
- assignment6.setAttributeId("matching:" + this.CONFIGID);
+ assignment6.setAttributeId("matching:" + CONFIGID);
assignment6.setCategory(CATEGORY_RESOURCE);
assignment6.setIssuer("");
AttributeValueType configNameAttributeValue6 = new AttributeValueType();
@@ -584,21 +394,31 @@ public class CreateBrmsRawPolicy extends Policy {
assignment6.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue6));
advice.getAttributeAssignmentExpression().add(assignment6);
+ // Adding Controller Information.
+ if(policyAdapter.getBrmsController()!=null){
+ BRMSDictionaryController brmsDicitonaryController = new BRMSDictionaryController();
+ advice.getAttributeAssignmentExpression().add(
+ createResponseAttributes("controller:"+ policyAdapter.getBrmsController(),
+ brmsDicitonaryController.getControllerDataByID(policyAdapter.getBrmsController()).getController()));
+ }
+
+ // Adding Dependencies.
+ if(policyAdapter.getBrmsDependency()!=null){
+ BRMSDictionaryController brmsDicitonaryController = new BRMSDictionaryController();
+ ArrayList<String> dependencies = new ArrayList<String>();
+ StringBuilder key = new StringBuilder();
+ for(String dependencyName: policyAdapter.getBrmsDependency()){
+ dependencies.add(brmsDicitonaryController.getDependencyDataByID(dependencyName).getDependency());
+ key.append(dependencyName + ",");
+ }
+ advice.getAttributeAssignmentExpression().add(
+ createResponseAttributes("dependencies:"+key.toString(), dependencies.toString()));
+ }
+
+ // Dynamic Field Config Attributes.
Map<String, String> dynamicFieldConfigAttributes = policyAdapter.getDynamicFieldConfigAttributes();
for (String keyField : dynamicFieldConfigAttributes.keySet()) {
- String key = keyField;
- String value = dynamicFieldConfigAttributes.get(key);
- AttributeAssignmentExpressionType assignment7 = new AttributeAssignmentExpressionType();
- assignment7.setAttributeId("key:" + key);
- assignment7.setCategory(CATEGORY_RESOURCE);
- assignment7.setIssuer("");
-
- AttributeValueType configNameAttributeValue7 = new AttributeValueType();
- configNameAttributeValue7.setDataType(STRING_DATATYPE);
- configNameAttributeValue7.getContent().add(value);
- assignment7.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue7));
-
- advice.getAttributeAssignmentExpression().add(assignment7);
+ advice.getAttributeAssignmentExpression().add(createResponseAttributes("key:"+keyField, dynamicFieldConfigAttributes.get(keyField)));
}
//Risk Attributes
@@ -658,4 +478,16 @@ public class CreateBrmsRawPolicy extends Policy {
public Object getCorrectPolicyDataObject() {
return policyAdapter.getData();
}
+
+ private AttributeAssignmentExpressionType createResponseAttributes(String key, String value){
+ AttributeAssignmentExpressionType assignment7 = new AttributeAssignmentExpressionType();
+ assignment7.setAttributeId(key);
+ assignment7.setCategory(CATEGORY_RESOURCE);
+ assignment7.setIssuer("");
+ AttributeValueType configNameAttributeValue7 = new AttributeValueType();
+ configNameAttributeValue7.setDataType(STRING_DATATYPE);
+ configNameAttributeValue7.getContent().add(value);
+ assignment7.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue7));
+ return assignment7;
+ }
}
diff --git a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateClosedLoopPerformanceMetrics.java b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateClosedLoopPerformanceMetrics.java
index 578efc228..5eb3493f2 100644
--- a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateClosedLoopPerformanceMetrics.java
+++ b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateClosedLoopPerformanceMetrics.java
@@ -22,7 +22,6 @@ package org.openecomp.policy.pap.xacml.rest.components;
import java.io.File;
-import java.io.IOException;
import java.io.PrintWriter;
import java.net.URI;
import java.net.URISyntaxException;
@@ -30,9 +29,6 @@ import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
-import java.util.StringTokenizer;
-
-import javax.json.stream.JsonGenerationException;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionType;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionsType;
@@ -49,25 +45,14 @@ import oasis.names.tc.xacml._3_0.core.schema.wd_17.RuleType;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType;
import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.openecomp.policy.pap.xacml.rest.adapters.PolicyRestAdapter;
-
-import org.openecomp.policy.xacml.api.XACMLErrorConstants;
-import com.att.research.xacml.std.IdentifierImpl;
-
import org.openecomp.policy.common.logging.eelf.MessageCodes;
import org.openecomp.policy.common.logging.eelf.PolicyLogger;
-import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
-import org.openecomp.policy.common.logging.flexlogger.Logger;
+import org.openecomp.policy.rest.adapter.PolicyRestAdapter;
+
+import com.att.research.xacml.std.IdentifierImpl;
public class CreateClosedLoopPerformanceMetrics extends Policy {
- /**
- * Config Fields
- */
- private static final Logger logger = FlexLogger.getLogger(ConfigPolicy.class);
-
public CreateClosedLoopPerformanceMetrics() {
super();
}
@@ -77,13 +62,7 @@ public class CreateClosedLoopPerformanceMetrics extends Policy {
}
//save configuration of the policy based on the policyname
- private void saveConfigurations(String policyName, String prevPolicyName, String jsonBody) {
- String domain = getParentPathSubScopeDir();
- String path = domain.replace('\\', '.');
- if(path.contains("/")){
- path = domain.replace('/', '.');
- logger.info("print the path:" +path);
- }
+ private void saveConfigurations(String policyName, String jsonBody) {
try {
String body = null;
try {
@@ -91,21 +70,18 @@ public class CreateClosedLoopPerformanceMetrics extends Policy {
} catch (Exception e) {
e.printStackTrace();
}
-
- System.out.println(body);
if(policyName.endsWith(".xml")){
policyName = policyName.substring(0, policyName.lastIndexOf(".xml"));
}
- PrintWriter out = new PrintWriter(CONFIG_HOME + File.separator+path + "."+ policyName +".json");
+ PrintWriter out = new PrintWriter(CONFIG_HOME + File.separator + "."+ policyName +".json");
out.println(body);
+ policyAdapter.setJsonBody(body);
+ policyAdapter.setConfigBodyData(body);
out.close();
- } catch (JsonGenerationException e) {
- e.printStackTrace();
- } catch (IOException e) {
+ } catch (Exception e) {
e.printStackTrace();
}
-
}
//getting the policy name and setting to configuration on adding .json
@@ -120,13 +96,13 @@ public class CreateClosedLoopPerformanceMetrics extends Policy {
@Override
public Map<String, String> savePolicies() throws Exception {
-
+
Map<String, String> successMap = new HashMap<String,String>();
if(isPolicyExists()){
successMap.put("EXISTS", "This Policy already exist on the PAP");
return successMap;
}
-
+
if(!isPreparedToSave()){
//Prep and configure the policy for saving
prepareToSave();
@@ -134,12 +110,10 @@ public class CreateClosedLoopPerformanceMetrics extends Policy {
// Until here we prepared the data and here calling the method to create xml.
Path newPolicyPath = null;
- newPolicyPath = Paths.get(policyAdapter.getParentPath().toString(), policyName);
- successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject() );
- if (successMap.containsKey("success")) {
- Path finalPolicyPath = getFinalPolicyPath();
- policyAdapter.setFinalPolicyPath(finalPolicyPath.toString());
- }
+ newPolicyPath = Paths.get(policyAdapter.getNewFileName());
+
+ successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject());
+
return successMap;
}
@@ -155,12 +129,7 @@ public class CreateClosedLoopPerformanceMetrics extends Policy {
int version = 0;
String policyID = policyAdapter.getPolicyID();
-
- if (policyAdapter.isEditPolicy()) {
- version = policyAdapter.getHighestVersion() + 1;
- } else {
- version = 1;
- }
+ version = policyAdapter.getHighestVersion();
// Create the Instance for pojo, PolicyType object is used in marshalling.
if (policyAdapter.getPolicyType().equals("Config")) {
@@ -171,32 +140,11 @@ public class CreateClosedLoopPerformanceMetrics extends Policy {
policyConfig.setTarget(new TargetType());
policyAdapter.setData(policyConfig);
}
-
+ policyName = policyAdapter.getNewFileName();
if (policyAdapter.getData() != null) {
-
- // Save off everything
- // making ready all the required elements to generate the action policy xml.
- // Get the uniqueness for policy name.
- String prevPolicyName = null;
- if(policyAdapter.isEditPolicy()){
- prevPolicyName = "Config_PM_" + policyAdapter.getPolicyName() + "." + policyAdapter.getHighestVersion() + ".xml";
- }
-
- Path newFile = this.getNextLoopFilename(Paths.get(policyAdapter.getParentPath()), policyAdapter.getPolicyType(), policyAdapter.getConfigPolicyType(), policyAdapter.getPolicyName(), version);
-
- if (newFile == null) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("File already exists, cannot create the policy.");
- PolicyLogger.error("File already exists, cannot create the policy.");
- setPolicyExists(true);
- return false;
- }
-
- policyName = newFile.getFileName().toString();
-
// Save the Configurations file with the policy name with extention based on selection.
String jsonBody = policyAdapter.getJsonBody();
- saveConfigurations(policyName, prevPolicyName, jsonBody);
+ saveConfigurations(policyName, jsonBody);
// Make sure the filename ends with an extension
if (policyName.endsWith(".xml") == false) {
@@ -211,18 +159,7 @@ public class CreateClosedLoopPerformanceMetrics extends Policy {
configPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId());
AllOfType allOfOne = new AllOfType();
- final Path gitPath = Paths.get(policyAdapter.getUserGitPath().toString());
- String policyDir = policyAdapter.getParentPath().toString();
- int startIndex = policyDir.indexOf(gitPath.toString()) + gitPath.toString().length() + 1;
- policyDir = policyDir.substring(startIndex, policyDir.length());
- logger.info("print the main domain value "+policyDir);
- String path = policyDir.replace('\\', '.');
- if(path.contains("/")){
- path = policyDir.replace('/', '.');
- logger.info("print the path:" +path);
- }
- String fileName = FilenameUtils.removeExtension(policyName);
- fileName = path + "." + fileName + ".xml";
+ 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());
@@ -276,8 +213,6 @@ public class CreateClosedLoopPerformanceMetrics extends Policy {
try {
accessURI = new URI(ACTION_ID);
} catch (URISyntaxException e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e.getStackTrace());
PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "CreateClosedLoopPerformanceMetrics", "Exception creating ACCESS URI");
}
accessAttributeDesignator.setCategory(CATEGORY_ACTION);
@@ -297,8 +232,6 @@ public class CreateClosedLoopPerformanceMetrics extends Policy {
try {
configURI = new URI(RESOURCE_ID);
} catch (URISyntaxException e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e.getStackTrace());
PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "CreateClosedLoopPerformanceMetrics", "Exception creating Config URI");
}
configAttributeDesignator.setCategory(CATEGORY_RESOURCE);
@@ -323,8 +256,6 @@ public class CreateClosedLoopPerformanceMetrics extends Policy {
policyAdapter.setPolicyData(configPolicy);
} else {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Unsupported data object." + policyAdapter.getData().getClass().getCanonicalName());
PolicyLogger.error("Unsupported data object." + policyAdapter.getData().getClass().getCanonicalName());
}
setPreparedToSave(true);
@@ -350,7 +281,6 @@ public class CreateClosedLoopPerformanceMetrics extends Policy {
assignment1.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue));
advice.getAttributeAssignmentExpression().add(assignment1);
- final Path gitPath = Paths.get(policyAdapter.getUserGitPath().toString());
// For Config file Url if configurations are provided.
AttributeAssignmentExpressionType assignment2 = new AttributeAssignmentExpressionType();
assignment2.setAttributeId("URLID");
@@ -359,17 +289,7 @@ public class CreateClosedLoopPerformanceMetrics extends Policy {
AttributeValueType AttributeValue = new AttributeValueType();
AttributeValue.setDataType(URI_DATATYPE);
- String policyDir1 = policyAdapter.getParentPath().toString();
- int startIndex1 = policyDir1.indexOf(gitPath.toString()) + gitPath.toString().length() + 1;
- policyDir1 = policyDir1.substring(startIndex1, policyDir1.length());
- logger.info("print the main domain value"+policyDir1);
- String path = policyDir1.replace('\\', '.');
- if(path.contains("/")){
- path = policyDir1.replace('/', '.');
- logger.info("print the path:" +path);
- }
- String content = CONFIG_URL +"/Config/" + path + "." + getConfigFile(policyName);
- System.out.println("URL value :" + content);
+ String content = CONFIG_URL +"/Config/"+ getConfigFile(policyName);
AttributeValue.getContent().add(content);
assignment2.setExpression(new ObjectFactory().createAttributeValue(AttributeValue));
@@ -381,25 +301,8 @@ public class CreateClosedLoopPerformanceMetrics extends Policy {
AttributeValueType attributeValue3 = new AttributeValueType();
attributeValue3.setDataType(STRING_DATATYPE);
- String policyDir = policyAdapter.getParentPath().toString();
- int startIndex = policyDir.indexOf(gitPath.toString()) + gitPath.toString().length() + 1;
- policyDir = policyDir.substring(startIndex, policyDir.length());
- StringTokenizer tokenizer = null;
- StringBuffer buffer = new StringBuffer();
- if (policyDir.contains("\\")) {
- tokenizer = new StringTokenizer(policyDir, "\\");
- } else {
- tokenizer = new StringTokenizer(policyDir, "/");
- }
- if (tokenizer != null) {
- while (tokenizer.hasMoreElements()) {
- String value = tokenizer.nextToken();
- buffer.append(value);
- buffer.append(".");
- }
- }
fileName = FilenameUtils.removeExtension(fileName);
- fileName = buffer.toString() + fileName + ".xml";
+ fileName = fileName + ".xml";
String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length());
if ((name == null) || (name.equals(""))) {
name = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length());
@@ -499,7 +402,6 @@ public class CreateClosedLoopPerformanceMetrics extends Policy {
@Override
public Object getCorrectPolicyDataObject() {
- // TODO Auto-generated method stub
return policyAdapter.getPolicyData();
}
diff --git a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateNewMicroSerivceModel.java b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateNewMicroSerivceModel.java
index 73479fd2b..c1740ae30 100644
--- a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateNewMicroSerivceModel.java
+++ b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/CreateNewMicroSerivceModel.java
@@ -41,33 +41,25 @@ import java.util.zip.ZipFile;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-//import org.eclipse.emf.common.util.URI;
-//import org.eclipse.emf.ecore.EPackage;
-//import org.eclipse.emf.ecore.resource.Resource;
-//import org.eclipse.emf.ecore.resource.ResourceSet;
-//import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
-//import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+import org.openecomp.policy.common.logging.eelf.MessageCodes;
+import org.openecomp.policy.common.logging.eelf.PolicyLogger;
+import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
+import org.openecomp.policy.common.logging.flexlogger.Logger;
+import org.openecomp.policy.pap.xacml.rest.XACMLPapServlet;
import org.openecomp.policy.rest.XACMLRestProperties;
import org.openecomp.policy.rest.jpa.MicroServiceModels;
import org.openecomp.policy.rest.jpa.UserInfo;
import org.openecomp.policy.rest.util.MSAttributeObject;
-import org.openecomp.policy.rest.util.MSModelUtitils;
+import org.openecomp.policy.rest.util.MSModelUtils;
+import org.openecomp.policy.rest.util.MSModelUtils.MODEL_TYPE;
import com.att.research.xacml.util.XACMLProperties;
-import org.openecomp.policy.common.logging.eelf.MessageCodes;
-import org.openecomp.policy.common.logging.eelf.PolicyLogger;
-import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
-import org.openecomp.policy.common.logging.flexlogger.Logger;
-
public class CreateNewMicroSerivceModel {
private static final Logger logger = FlexLogger.getLogger(CreateNewMicroSerivceModel.class);
private MicroServiceModels newModel = null;
private HashMap<String,MSAttributeObject > classMap = new HashMap<String,MSAttributeObject>();
- private String directory;
-
+
/*
* These are the parameters needed for DB access from the PAP
*/
@@ -76,15 +68,14 @@ public class CreateNewMicroSerivceModel {
private static String papDbUser = null;
private static String papDbPassword = null;
- MSModelUtitils utils = new MSModelUtitils();
+ MSModelUtils utils = new MSModelUtils(XACMLPapServlet.msEcompName, XACMLPapServlet.msPolicyName);
public CreateNewMicroSerivceModel(String fileName, String serviceName, String string, String version) {
super();
}
public CreateNewMicroSerivceModel(String importFile, String modelName, String description, String version, String randomID) {
-
- Map<String, String> successMap = new HashMap<String,String>();
+
this.newModel = new MicroServiceModels();
this.newModel.setDescription(description);
this.newModel.setVersion(version);
@@ -100,11 +91,10 @@ public class CreateNewMicroSerivceModel {
extractFolder(randomID + ".zip");
File directory = new File("ExtractDir" + File.separator + randomID);
List<File> fileList = listModelFiles(directory.toString());
- //get all the files from a directory
- File[] fList = directory.listFiles();
+ //get all the files from a director
for (File file : fileList){
if (file.isFile()){
- tempMap = utils.processEpackage(file.getAbsolutePath());
+ tempMap = utils.processEpackage(file.getAbsolutePath(), MODEL_TYPE.XMI);
classMap.putAll(tempMap);
}
}
@@ -118,16 +108,12 @@ public class CreateNewMicroSerivceModel {
logger.error("Failed to unzip model file " + randomID);
}
}else {
- tempMap = utils.processEpackage("ExtractDir" + File.separator + randomID+".xmi");
+ tempMap = utils.processEpackage("ExtractDir" + File.separator + randomID+".xmi", MODEL_TYPE.XMI);
classMap.putAll(tempMap);
cleanUpFile = "ExtractDir" + File.separator + randomID+".xmi";
File deleteFile = new File(cleanUpFile);
deleteFile.delete();
}
-
- // addValuesToNewModel();
-
-
}
private List<File> listModelFiles(String directoryName) {
@@ -144,6 +130,7 @@ public class CreateNewMicroSerivceModel {
return resultList;
}
+ @SuppressWarnings("rawtypes")
private void extractFolder(String zipFile) {
int BUFFER = 2048;
File file = new File(zipFile);
@@ -152,7 +139,6 @@ public class CreateNewMicroSerivceModel {
try {
zip = new ZipFile("ExtractDir" + File.separator +file);
String newPath = zipFile.substring(0, zipFile.length() - 4);
- this.directory = "ExtractDir" + File.separator + zipFile.substring(0, zipFile.length() - 4);
new File(newPath).mkdir();
Enumeration zipFileEntries = zip.entries();
@@ -232,11 +218,14 @@ public class CreateNewMicroSerivceModel {
this.newModel.setSub_attributes(subAttribute);
this.newModel.setAttributes(mainClass.getAttribute().toString().replace("{", "").replace("}", ""));
this.newModel.setRef_attributes(mainClass.getRefAttribute().toString().replace("{", "").replace("}", ""));
+ this.newModel.setEnumValues(mainClass.getEnumType().toString().replace("{", "").replace("}", ""));
+ this.newModel.setAnnotation(mainClass.getMatchingSet().toString().replace("{", "").replace("}", ""));
successMap.put("success", "success");
return successMap;
}
+ @SuppressWarnings("resource")
public Map<String, String> saveImportService(){
Map<String, String> successMap = new HashMap<String,String>();
@@ -275,21 +264,19 @@ public class CreateNewMicroSerivceModel {
ID++;
}
- insertQuery = "INSERT INTO MicroServiceModels (ID, modelName, Dependency, DESCRIPTION, attributes, ref_attributes, sub_attributes, version, imported_by) "
- + "VALUES("+ID+",'"+modelName+"','"+ this.newModel.getDependency()+"','"+this.newModel.getDescription()+"','"+this.newModel.getAttributes()+
- "','"+this.newModel.getRef_attributes()+"','"+this.newModel.getSub_attributes()+"','"+version+"','"+imported_by+"')";
+ String newDependency = "[" + this.newModel.getDependency() + "]";
+ this.newModel.setDependency(newDependency);
+ insertQuery = "INSERT INTO MicroServiceModels (ID, modelName, Dependency, DESCRIPTION, attributes, ref_attributes, sub_attributes, version, imported_by, enumValues, annotation) "
+ + "VALUES("+ID+",'"+modelName+"','"+ this.newModel.getDependency()+"','"+this.newModel.getDescription()+"','"+this.newModel.getAttributes()+
+ "','"+this.newModel.getRef_attributes()+"','"+this.newModel.getSub_attributes()+"','"+version+"','"+imported_by+"','"+this.newModel.getEnumValues()+"','"+this.newModel.getAnnotation()+"')";
st.executeUpdate(insertQuery);
successMap.put("success", "success");
}
rs.close();
}catch (ClassNotFoundException e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error(e.getMessage());
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "saveImportService", "Exception querying MicroServiceModels");
successMap.put("DBError", "Error Query");
} catch (SQLException e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error(e.getMessage());
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "saveImportService", "Exception querying MicroServiceModels");
successMap.put("DBError", "Error Query");
} finally {
@@ -297,7 +284,9 @@ public class CreateNewMicroSerivceModel {
if (con!=null) con.close();
if (rs!=null) rs.close();
if (st!=null) st.close();
- } catch (Exception ex){}
+ } catch (Exception ex){
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, ex, "saveImportService", "Exception querying MicroServiceModels");
+ }
}
return successMap;
diff --git a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/DecisionPolicy.java b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/DecisionPolicy.java
index 822768f6d..b7b47cf28 100644
--- a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/DecisionPolicy.java
+++ b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/DecisionPolicy.java
@@ -50,9 +50,11 @@ import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.VariableDefinitionType;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.VariableReferenceType;
-import org.apache.commons.io.FilenameUtils;
-import org.openecomp.policy.pap.xacml.rest.adapters.PolicyRestAdapter;
+import org.openecomp.policy.common.logging.eelf.MessageCodes;
+import org.openecomp.policy.common.logging.eelf.PolicyLogger;
+import org.openecomp.policy.pap.xacml.rest.XACMLPapServlet;
import org.openecomp.policy.pap.xacml.rest.util.JPAUtils;
+import org.openecomp.policy.rest.adapter.PolicyRestAdapter;
import org.openecomp.policy.rest.jpa.Datatype;
import org.openecomp.policy.rest.jpa.DecisionSettings;
import org.openecomp.policy.rest.jpa.FunctionDefinition;
@@ -60,48 +62,15 @@ import org.openecomp.policy.xacml.std.pip.engines.aaf.AAFEngine;
import com.att.research.xacml.std.IdentifierImpl;
-import org.openecomp.policy.common.logging.eelf.MessageCodes;
-import org.openecomp.policy.common.logging.eelf.PolicyLogger;
-import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
-import org.openecomp.policy.common.logging.flexlogger.Logger;
-
public class DecisionPolicy extends Policy {
- /**
- * Config Fields
- */
- private static final Logger logger = FlexLogger.getLogger(ConfigPolicy.class);
-
- public static final String JSON_CONFIG = "JSON";
- public static final String XML_CONFIG = "XML";
- public static final String PROPERTIES_CONFIG = "PROPERTIES";
- public static final String OTHER_CONFIG = "OTHER";
-
- public static final String PDP_ACTION = "PDP";
- public static final String PEP_ACTION = "PEP";
- public static final String TYPE_ACTION = "REST";
-
- public static final String GET_METHOD = "GET";
- public static final String PUT_METHOD = "PUT";
- public static final String POST_METHOD = "POST";
-
- public static final String PERFORMER_ATTRIBUTEID = "performer";
- public static final String TYPE_ATTRIBUTEID = "type";
- public static final String METHOD_ATTRIBUTEID = "method";
- public static final String HEADERS_ATTRIBUTEID = "headers";
- public static final String URL_ATTRIBUTEID = "url";
- public static final String BODY_ATTRIBUTEID = "body";
-
public static final String FUNCTION_NOT = "urn:oasis:names:tc:xacml:1.0:function:not";
-
private static final String AAFProvider = "AAF";
- //private static final String CustomProvider = "Custom";
List<String> dynamicLabelRuleAlgorithms = new LinkedList<String>();
List<String> dynamicFieldComboRuleAlgorithms = new LinkedList<String>();
List<String> dynamicFieldOneRuleAlgorithms = new LinkedList<String>();
List<String> dynamicFieldTwoRuleAlgorithms = new LinkedList<String>();
- //List<Object> dynamicVariableList = new LinkedList<Object>();
List<String> dataTypeList = new LinkedList<String>();
protected Map<String, String> dropDownMap = new HashMap<String, String>();
@@ -117,13 +86,13 @@ public class DecisionPolicy extends Policy {
@Override
public Map<String, String> savePolicies() throws Exception {
-
+
Map<String, String> successMap = new HashMap<String,String>();
if(isPolicyExists()){
successMap.put("EXISTS", "This Policy already exist on the PAP");
return successMap;
}
-
+
if(!isPreparedToSave()){
//Prep and configure the policy for saving
prepareToSave();
@@ -131,12 +100,9 @@ public class DecisionPolicy extends Policy {
// Until here we prepared the data and here calling the method to create xml.
Path newPolicyPath = null;
- newPolicyPath = Paths.get(policyAdapter.getParentPath().toString(), policyName);
- successMap = createPolicy(newPolicyPath, getCorrectPolicyDataObject());
- if (successMap.containsKey("success")) {
- Path finalPolicyPath = getFinalPolicyPath();
- policyAdapter.setFinalPolicyPath(finalPolicyPath.toString());
- }
+ newPolicyPath = Paths.get(policyAdapter.getNewFileName());
+
+ successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject());
return successMap;
}
@@ -152,12 +118,7 @@ public class DecisionPolicy extends Policy {
int version = 0;
String policyID = policyAdapter.getPolicyID();
-
- if (policyAdapter.isEditPolicy()) {
- version = policyAdapter.getHighestVersion() + 1;
- } else {
- version = 1;
- }
+ version = policyAdapter.getHighestVersion();
// Create the Instance for pojo, PolicyType object is used in marshalling.
if (policyAdapter.getPolicyType().equals("Decision")) {
@@ -168,45 +129,16 @@ public class DecisionPolicy extends Policy {
policyConfig.setTarget(new TargetType());
policyAdapter.setData(policyConfig);
}
+ policyName = policyAdapter.getNewFileName();
if (policyAdapter.getData() != null) {
-
- // Save off everything
- // making ready all the required elements to generate the action policy xml.
- // Get the uniqueness for policy name.
- Path newFile = getNextFilename(Paths.get(policyAdapter.getParentPath().toString()), policyAdapter.getPolicyType(), policyAdapter.getPolicyName(), version);
- if (newFile == null) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("File already exists, cannot create the policy.");
- PolicyLogger.error("File already exists, cannot create the policy.");
- setPolicyExists(true);
- return false;
- }
- policyName = newFile.getFileName().toString();
-
- // Make sure the filename ends with an extension
- if (policyName.endsWith(".xml") == false) {
- policyName = policyName + ".xml";
- }
-
PolicyType decisionPolicy = (PolicyType) policyAdapter.getData();
decisionPolicy.setDescription(policyAdapter.getPolicyDescription());
decisionPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId());
AllOfType allOfOne = new AllOfType();
- final Path gitPath = Paths.get(policyAdapter.getUserGitPath().toString());
- String policyDir = policyAdapter.getParentPath().toString();
- int startIndex = policyDir.indexOf(gitPath.toString()) + gitPath.toString().length() + 1;
- policyDir = policyDir.substring(startIndex, policyDir.length());
- logger.info("print the main domain value "+policyDir);
- String path = policyDir.replace('\\', '.');
- if(path.contains("/")){
- path = policyDir.replace('/', '.');
- logger.info("print the path:" +path);
- }
- String fileName = FilenameUtils.removeExtension(policyName);
- fileName = path + "." + fileName + ".xml";
+ 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());
@@ -219,7 +151,7 @@ public class DecisionPolicy extends Policy {
allOf.getMatch().add(createMatch("ECOMPName", (policyAdapter.getEcompName())));
Map<String, String> dynamicFieldComponentAttributes = policyAdapter.getDynamicFieldConfigAttributes();
- if(policyAdapter.getProviderComboBox()!=null && policyAdapter.getProviderComboBox().equals(AAFProvider)){
+ if(policyAdapter.getRuleProvider()!=null && policyAdapter.getRuleProvider().equals(AAFProvider)){
dynamicFieldComponentAttributes = new HashMap<String,String>();
}
@@ -267,7 +199,7 @@ public class DecisionPolicy extends Policy {
private DecisionSettings findDecisionSettingsBySettingId(String settingId) {
DecisionSettings decisionSetting = null;
- EntityManager em = policyAdapter.getEntityManagerFactory().createEntityManager();
+ EntityManager em = XACMLPapServlet.getEmf().createEntityManager();
Query getDecisionSettings = em.createNamedQuery("DecisionSettings.findAll");
List<?> decisionSettingsList = getDecisionSettings.getResultList();
@@ -306,8 +238,6 @@ public class DecisionPolicy extends Policy {
try {
accessURI = new URI(ACTION_ID);
} catch (URISyntaxException e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e.getStackTrace());
PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "DecisionPolicy", "Exception creating ACCESS URI");
}
accessAttributeDesignator.setCategory(CATEGORY_ACTION);
@@ -322,7 +252,7 @@ public class DecisionPolicy extends Policy {
dynamicFieldTwoRuleAlgorithms = policyAdapter.getDynamicRuleAlgorithmField2();
dropDownMap = createDropDownMap();
- if(policyAdapter.getProviderComboBox()!=null && policyAdapter.getProviderComboBox().equals(AAFProvider)){
+ if(policyAdapter.getRuleProvider()!=null && policyAdapter.getRuleProvider().equals(AAFProvider)){
// Values for AAF Provider are here for XML Creation.
ConditionType condition = new ConditionType();
ApplyType decisionApply = new ApplyType();
@@ -429,8 +359,6 @@ public class DecisionPolicy extends Policy {
policyAdapter.setPolicyData(decisionPolicy);
} else {
- //TODO:EELF Cleanup - Remove logger
- //logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "Unsupported data object."+ policyAdapter.getData().getClass().getCanonicalName());
PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + "Unsupported data object."+ policyAdapter.getData().getClass().getCanonicalName());
}
@@ -589,9 +517,8 @@ public class DecisionPolicy extends Policy {
private Map<String,String> createDropDownMap(){
JPAUtils jpaUtils = null;
try {
- jpaUtils = JPAUtils.getJPAUtilsInstance(policyAdapter.getEntityManagerFactory());
+ jpaUtils = JPAUtils.getJPAUtilsInstance(XACMLPapServlet.getEmf());
} catch (Exception e) {
- // TODO Auto-generated catch block
e.printStackTrace();
}
Map<Datatype, List<FunctionDefinition>> functionMap = jpaUtils.getFunctionDatatypeMap();
@@ -627,7 +554,5 @@ public class DecisionPolicy extends Policy {
public Object getCorrectPolicyDataObject() {
return policyAdapter.getData();
}
-
-
-
+
}
diff --git a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/FirewallConfigPolicy.java b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/FirewallConfigPolicy.java
index ad7525b85..509da0b61 100644
--- a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/FirewallConfigPolicy.java
+++ b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/FirewallConfigPolicy.java
@@ -28,7 +28,6 @@ import java.io.StringReader;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.charset.Charset;
-import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
@@ -38,16 +37,15 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
-import java.util.StringTokenizer;
import javax.json.Json;
import javax.json.JsonArray;
-import javax.json.JsonException;
import javax.json.JsonObject;
import javax.json.JsonReader;
-import javax.json.JsonString;
-import javax.json.JsonValue;
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionType;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionsType;
@@ -64,33 +62,25 @@ import oasis.names.tc.xacml._3_0.core.schema.wd_17.RuleType;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType;
import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.openecomp.policy.pap.xacml.rest.adapters.PolicyRestAdapter;
-import org.openecomp.policy.rest.XACMLRestProperties;
import org.openecomp.policy.common.logging.eelf.MessageCodes;
import org.openecomp.policy.common.logging.eelf.PolicyLogger;
+import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
+import org.openecomp.policy.common.logging.flexlogger.Logger;
+import org.openecomp.policy.pap.xacml.rest.XACMLPapServlet;
+import org.openecomp.policy.rest.XACMLRestProperties;
+import org.openecomp.policy.rest.adapter.PolicyRestAdapter;
+import org.openecomp.policy.rest.jpa.PolicyEntity;
-import org.openecomp.policy.xacml.api.XACMLErrorConstants;
import com.att.research.xacml.std.IdentifierImpl;
import com.att.research.xacml.util.XACMLProperties;
import com.fasterxml.jackson.databind.JsonNode;
import com.github.fge.jackson.JsonLoader;
import com.github.fge.jsonpatch.JsonPatch;
import com.github.fge.jsonpatch.diff.JsonDiff;
-import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
-import org.openecomp.policy.common.logging.flexlogger.Logger;
public class FirewallConfigPolicy extends Policy {
- /**
- * Config Fields
- */
- private static final Logger logger = FlexLogger.getLogger(FirewallConfigPolicy.class);
- public static final String JSON_CONFIG = "JSON";
- public static final String XML_CONFIG = "XML";
- public static final String PROPERTIES_CONFIG = "PROPERTIES";
- public static final String OTHER_CONFIG = "OTHER";
+ private static final Logger LOGGER = FlexLogger.getLogger(FirewallConfigPolicy.class);
/*
* These are the parameters needed for DB access from the PAP
@@ -111,79 +101,17 @@ public class FirewallConfigPolicy extends Policy {
}
// Saving the Configurations file at server location for config policy.
- protected void saveConfigurations(String policyName, String prevPolicyName, String jsonBody) {
- final Path gitPath = Paths.get(policyAdapter.getUserGitPath().toString());
- String policyDir = policyAdapter.getParentPath().toString();
- int startIndex = policyDir.indexOf(gitPath.toString()) + gitPath.toString().length() + 1;
- policyDir = policyDir.substring(startIndex, policyDir.length());
- logger.info("print the main domain value"+policyDir);
- String path = policyDir.replace('\\', '.');
- if(path.contains("/")){
- path = policyDir.replace('/', '.');
- logger.info("print the path:" +path);
- }
-
- try {
- String configFileName = getConfigFile(policyName);
-
- File file;
- if(CONFIG_HOME.contains("\\"))
- {
- file = new File(CONFIG_HOME + "\\" + path + "."+ configFileName);
- }
- else
- {
- file = new File(CONFIG_HOME + "/" + path + "."+ configFileName);
- }
-
- // if file doesnt exists, then create it
- if (!file.exists()) {
- file.createNewFile();
- }
-
- //Getting the previous policy Config Json file to be used for updating the dictionary tables
- if (policyAdapter.isEditPolicy()) {
-
- String prevConfigFileName = getConfigFile(prevPolicyName);
-
- File oldFile;
- if(CONFIG_HOME.contains("\\"))
- {
- oldFile = new File(CONFIG_HOME + "\\" + path + "."+ prevConfigFileName);
- }
- else
- {
- oldFile = new File(CONFIG_HOME + "/" + path + "."+ prevConfigFileName);
- }
-
- String filepath = oldFile.toString();
-
- String prevJsonBody = readFile(filepath, StandardCharsets.UTF_8);
- policyAdapter.setPrevJsonBody(prevJsonBody);
+ protected void saveConfigurations(String policyName, String jsonBody) {
+ try{
+ if(policyName.endsWith(".xml")){
+ policyName = policyName.replace(".xml", "");
}
-
-
- File configHomeDir = new File(CONFIG_HOME);
- File[] listOfFiles = configHomeDir.listFiles();
- if (listOfFiles != null){
- for(File eachFile : listOfFiles){
- if(eachFile.isFile()){
- String fileNameWithoutExtension = FilenameUtils.removeExtension(eachFile.getName());
- String configFileNameWithoutExtension = FilenameUtils.removeExtension(configFileName);
- if (fileNameWithoutExtension.equals(configFileNameWithoutExtension)){
- //delete the file
- eachFile.delete();
- }
- }
- }
- }
-
- FileWriter fw = new FileWriter(file.getAbsoluteFile());
+ FileWriter fw = new FileWriter(CONFIG_HOME + File.separator + policyName + ".json");
BufferedWriter bw = new BufferedWriter(fw);
bw.write(jsonBody);
bw.close();
- if (logger.isDebugEnabled()) {
- logger.debug("Configuration is succesfully saved");
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.debug("Configuration is succesfully saved");
}
} catch (IOException e) {
e.printStackTrace();
@@ -197,19 +125,6 @@ public class FirewallConfigPolicy extends Policy {
return new String(encoded, encoding);
}
-
- // Here we are adding the extension for the configurations file based on the
- // config type selection for saving.
- private String getConfigFile(String filename) {
- filename = FilenameUtils.removeExtension(filename);
- if (filename.endsWith(".json")) {
- filename = filename.substring(0, filename.length() - 4);
- }
-
- filename=filename+".json";
- return filename;
- }
-
// Validations for Config form
public boolean validateConfigForm() {
@@ -222,52 +137,46 @@ public class FirewallConfigPolicy extends Policy {
@Override
public Map<String, String> savePolicies() throws Exception {
-
+
Map<String, String> successMap = new HashMap<String,String>();
if(isPolicyExists()){
successMap.put("EXISTS", "This Policy already exist on the PAP");
return successMap;
}
-
+
if(!isPreparedToSave()){
prepareToSave();
}
-
+
// Until here we prepared the data and here calling the method to create xml.
Path newPolicyPath = null;
- newPolicyPath = Paths.get(policyAdapter.getParentPath().toString(), policyName);
+ newPolicyPath = Paths.get(policyAdapter.getNewFileName());
Boolean dbIsUpdated = false;
- if (policyAdapter.getApiflag().equalsIgnoreCase("admin")){
- dbIsUpdated = true;
- } else {
+ if (policyAdapter.getApiflag() != null && policyAdapter.getApiflag().equalsIgnoreCase("admin")){
if (policyAdapter.isEditPolicy()) {
dbIsUpdated = updateFirewallDictionaryData(policyAdapter.getJsonBody(), policyAdapter.getPrevJsonBody());
} else {
dbIsUpdated = insertFirewallDicionaryData(policyAdapter.getJsonBody());
}
+ } else {
+ dbIsUpdated = true;
}
-
+
if(dbIsUpdated) {
- successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject() );
+ successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject());
} else {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Failed to Update the Database Dictionary Tables.");
PolicyLogger.error("Failed to Update the Database Dictionary Tables.");
-
+
//remove the new json file
String jsonBody = policyAdapter.getPrevJsonBody();
if (jsonBody!=null){
- saveConfigurations(policyName, "", jsonBody);
+ saveConfigurations(policyName, jsonBody);
} else {
- saveConfigurations(policyName, "", "");
+ saveConfigurations(policyName, "");
}
successMap.put("fwdberror", "DB UPDATE");
}
-
- if (successMap.containsKey("success")) {
- Path finalPolicyPath = getFinalPolicyPath();
- policyAdapter.setFinalPolicyPath(finalPolicyPath.toString());
- }
+
return successMap;
}
@@ -283,12 +192,7 @@ public class FirewallConfigPolicy extends Policy {
int version = 0;
String policyID = policyAdapter.getPolicyID();
-
- if (policyAdapter.isEditPolicy()) {
- version = policyAdapter.getHighestVersion() + 1;
- } else {
- version = 1;
- }
+ version = policyAdapter.getHighestVersion();
// Create the Instance for pojo, PolicyType object is used in marshalling.
if (policyAdapter.getPolicyType().equals("Config")) {
@@ -299,31 +203,33 @@ public class FirewallConfigPolicy extends Policy {
policyConfig.setTarget(new TargetType());
policyAdapter.setData(policyConfig);
}
-
+ policyName = policyAdapter.getNewFileName();
+
+ //String oldPolicyName = policyName.replace(".xml", "");
+ String scope = policyName.substring(0, policyName.indexOf("."));
+ String dbPolicyName = policyName.substring(policyName.indexOf(".")+1).replace(".xml", "");
+
+ int oldversion = Integer.parseInt(dbPolicyName.substring(dbPolicyName.lastIndexOf(".")+1));
+ dbPolicyName = dbPolicyName.substring(0, dbPolicyName.lastIndexOf(".")+1);
+ //String scope = oldPolicyName.substring(0, oldPolicyName.lastIndexOf("."));
+ //scope = scope.substring(0, scope.lastIndexOf("."));
+ if(oldversion > 1){
+ oldversion = oldversion - 1;
+ dbPolicyName = dbPolicyName + oldversion + ".xml";
+ }
+ EntityManager em = XACMLPapServlet.getEmf().createEntityManager();
+ Query createPolicyQuery = em.createQuery("SELECT p FROM PolicyEntity p WHERE p.scope=:scope AND p.policyName=:policyName");
+ createPolicyQuery.setParameter("scope", scope);
+ createPolicyQuery.setParameter("policyName", dbPolicyName);
+ List<?> createPolicyQueryList = createPolicyQuery.getResultList();
+ if(!createPolicyQueryList.isEmpty()){
+ PolicyEntity entitydata = (PolicyEntity) createPolicyQueryList.get(0);
+ policyAdapter.setPrevJsonBody(entitydata.getConfigurationData().getConfigBody());
+ }
+ em.close();
if (policyAdapter.getData() != null) {
-
- // Save off everything
- // making ready all the required elements to generate the action policy xml.
- // Get the uniqueness for policy name.
- String prevPolicyName = null;
- if(policyAdapter.isEditPolicy()){
- prevPolicyName = "Config_FW_" + policyAdapter.getPolicyName() + "." + policyAdapter.getHighestVersion() + ".xml";
- }
-
- Path newFile = getNextFilename(Paths.get(policyAdapter.getParentPath().toString()),
- (policyAdapter.getPolicyType() + "_FW"), policyAdapter.getPolicyName(), version);
-
- if (newFile == null) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Policy already Exists, cannot create the policy.");
- PolicyLogger.error("Policy already Exists, cannot create the policy.");
- setPolicyExists(true);
- return false;
- }
- policyName = newFile.getFileName().toString();
-
String jsonBody = policyAdapter.getJsonBody();
- saveConfigurations(policyName, prevPolicyName, jsonBody);
+ saveConfigurations(policyName, jsonBody);
// Make sure the filename ends with an extension
if (policyName.endsWith(".xml") == false) {
@@ -337,10 +243,7 @@ public class FirewallConfigPolicy extends Policy {
configPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId());
AllOfType allOfOne = new AllOfType();
- File policyFilePath = new File(policyAdapter.getParentPath().toString(), policyName);
- String policyDir = policyFilePath.getParentFile().getName();
- String fileName = FilenameUtils.removeExtension(policyName);
- fileName = policyDir + "." + fileName + ".xml";
+ 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());
@@ -391,8 +294,6 @@ public class FirewallConfigPolicy extends Policy {
try {
accessURI = new URI(ACTION_ID);
} catch (URISyntaxException e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e.getStackTrace());
PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "FirewallConfigPolicy", "Exception creating ACCESS URI");
}
accessAttributeDesignator.setCategory(CATEGORY_ACTION);
@@ -414,8 +315,6 @@ public class FirewallConfigPolicy extends Policy {
try {
configURI = new URI(RESOURCE_ID);
} catch (URISyntaxException e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e.getStackTrace());
PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "FirewallConfigPolicy", "Exception creating Config URI");
}
@@ -441,8 +340,6 @@ public class FirewallConfigPolicy extends Policy {
policyAdapter.setPolicyData(configPolicy);
} else {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Unsupported data object." + policyAdapter.getData().getClass().getCanonicalName());
PolicyLogger.error("Unsupported data object." + policyAdapter.getData().getClass().getCanonicalName());
}
setPreparedToSave(true);
@@ -470,23 +367,13 @@ public class FirewallConfigPolicy extends Policy {
// For Config file Url if configurations are provided.
//URL ID Assignment
- final Path gitPath = Paths.get(policyAdapter.getUserGitPath().toString());
AttributeAssignmentExpressionType assignment2 = new AttributeAssignmentExpressionType();
assignment2.setAttributeId("URLID");
assignment2.setCategory(CATEGORY_RESOURCE);
assignment2.setIssuer("");
AttributeValueType AttributeValue = new AttributeValueType();
- AttributeValue.setDataType(URI_DATATYPE);
- String policyDir1 = policyAdapter.getParentPath().toString();
- int startIndex1 = policyDir1.indexOf(gitPath.toString()) + gitPath.toString().length() + 1;
- policyDir1 = policyDir1.substring(startIndex1, policyDir1.length());
- logger.info("print the main domain value"+policyDir1);
- String path = policyDir1.replace('\\', '.');
- if(path.contains("/")){
- path = policyDir1.replace('/', '.');
- logger.info("print the path:" +path);
- }
- String content = CONFIG_URL + "/Config/" + path + "." + getConfigFile(policyName);
+ AttributeValue.setDataType(URI_DATATYPE);
+ String content = CONFIG_URL + "/Config/" + policyName + ".json";
AttributeValue.getContent().add(content);
assignment2.setExpression(new ObjectFactory().createAttributeValue(AttributeValue));
@@ -499,31 +386,12 @@ public class FirewallConfigPolicy extends Policy {
assignment3.setIssuer("");
AttributeValueType attributeValue3 = new AttributeValueType();
attributeValue3.setDataType(STRING_DATATYPE);
- String policyDir = policyAdapter.getParentPath().toString();
- int startIndex = policyDir.indexOf(gitPath.toString()) + gitPath.toString().length() + 1;
- policyDir = policyDir.substring(startIndex, policyDir.length());
- StringTokenizer tokenizer = null;
- StringBuffer buffer = new StringBuffer();
- if (policyDir.contains("\\")) {
- tokenizer = new StringTokenizer(policyDir, "\\");
- } else {
- tokenizer = new StringTokenizer(policyDir, "/");
- }
- if (tokenizer != null) {
- while (tokenizer.hasMoreElements()) {
- String value = tokenizer.nextToken();
- buffer.append(value);
- buffer.append(".");
- }
- }
fileName = FilenameUtils.removeExtension(fileName);
- fileName = buffer.toString() + fileName + ".xml";
- System.out.println(fileName);
+ fileName = fileName + ".xml";
String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length());
if ((name == null) || (name.equals(""))) {
name = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length());
}
- System.out.println(name);
attributeValue3.getContent().add(name);
assignment3.setExpression(new ObjectFactory().createAttributeValue(attributeValue3));
advice.getAttributeAssignmentExpression().add(assignment3);
@@ -541,7 +409,7 @@ public class FirewallConfigPolicy extends Policy {
//Ecomp Name Assignment
AttributeAssignmentExpressionType assignment5 = new AttributeAssignmentExpressionType();
- assignment5.setAttributeId("matching:" + this.ECOMPID);
+ assignment5.setAttributeId("matching:" + ECOMPID);
assignment5.setCategory(CATEGORY_RESOURCE);
assignment5.setIssuer("");
AttributeValueType configNameAttributeValue5 = new AttributeValueType();
@@ -551,7 +419,7 @@ public class FirewallConfigPolicy extends Policy {
//Config Name Assignment
AttributeAssignmentExpressionType assignment6 = new AttributeAssignmentExpressionType();
- assignment6.setAttributeId("matching:" + this.CONFIGID);
+ assignment6.setAttributeId("matching:" + CONFIGID);
assignment6.setCategory(CATEGORY_RESOURCE);
assignment6.setIssuer("");
AttributeValueType configNameAttributeValue6 = new AttributeValueType();
@@ -608,9 +476,6 @@ public class FirewallConfigPolicy extends Policy {
assignment10.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue10));
advice.getAttributeAssignmentExpression().add(assignment10);
-
- int index = 0;
-
advices.getAdviceExpression().add(advice);
return advices;
}
@@ -628,7 +493,6 @@ public class FirewallConfigPolicy extends Policy {
JsonArray firewallRules = null;
JsonArray serviceGroup = null;
JsonArray addressGroup = null;
- String securityZone=null;
Connection con = null;
Statement st = null;
@@ -652,35 +516,9 @@ public class FirewallConfigPolicy extends Policy {
firewallRules = json.getJsonArray("firewallRuleList");
serviceGroup = json.getJsonArray("serviceGroups");
addressGroup = json.getJsonArray("addressGroups");
- securityZone=json.getString("primaryParentZoneId").toString();
- logger.info("Parent child: securityZone from JSON: "+securityZone);
String insertQuery = null;
- //Inserting childPolicy and its parent to the FWChildToParent DB table
- if(securityZone!=null){
- //Its a child Policy.
- //Retrieve the parent name from the securityZone Id
- String retrieveParentQuery= "select parent from fwparent where securityZone='";
-
- retrieveParentQuery=retrieveParentQuery+securityZone+"';";
- logger.info("Parent child: Query to retrieve parent "+retrieveParentQuery);
- rs = st.executeQuery(retrieveParentQuery);
-
- String parent=null;
- if(rs.next()){
- parent = rs.getString("parent");
- }
- rs.close();
-
-
- String insertQueryChildTable="INSERT INTO FWChildToParent(child, parent) VALUES ('";
- insertQueryChildTable=insertQueryChildTable+policyAdapter.getPolicyName()+"','"+parent+"');";
- logger.info("Parent child: Insert child and parent to DB: "+insertQueryChildTable);
- st.executeUpdate(insertQueryChildTable);
-
- }
-
/*
* Inserting firewallRuleList data into the Terms, SecurityZone, and Action tables
*/
@@ -707,9 +545,7 @@ public class FirewallConfigPolicy extends Policy {
actionID = rs.getInt("ID");
}
rs.close();
-
- int i = 0;
- for(JsonValue jsonValue : firewallRules) {
+ for(int i = 0;i<firewallRules.size();i++) {
//increment ID Primary Keys
termID = termID + 1;
@@ -738,8 +574,8 @@ public class FirewallConfigPolicy extends Policy {
JsonArray fromZoneArray = ruleListobj.getJsonArray("fromZones");
String fromZoneString = null;
- int fromZoneIndex = 0;
- for (JsonValue fromZoneJsonValue : fromZoneArray) {
+
+ for (int fromZoneIndex = 0;fromZoneIndex<fromZoneArray.size(); fromZoneIndex++) {
String value = fromZoneArray.get(fromZoneIndex).toString();
value = value.replace("\"", "");
@@ -750,17 +586,13 @@ public class FirewallConfigPolicy extends Policy {
fromZoneString = value;
}
- fromZoneIndex++;
-
}
String fromZoneInsert = "'"+fromZoneString+"'";
//getting toZone Array field from the firewallRulesList
JsonArray toZoneArray = ruleListobj.getJsonArray("toZones");
String toZoneString = null;
-
- int toZoneIndex = 0;
- for (JsonValue toZoneJsonValue : toZoneArray) {
+ for (int toZoneIndex = 0; toZoneIndex<toZoneArray.size(); toZoneIndex++) {
String value = toZoneArray.get(toZoneIndex).toString();
value = value.replace("\"", "");
@@ -771,17 +603,13 @@ public class FirewallConfigPolicy extends Policy {
toZoneString = value;
}
- toZoneIndex++;
-
}
String toZoneInsert = "'"+toZoneString+"'";
//getting sourceList Array fields from the firewallRulesList
JsonArray srcListArray = ruleListobj.getJsonArray("sourceList");
String srcListString = null;
-
- int srcListIndex = 0;
- for (JsonValue srcListJsonValue : srcListArray) {
+ for (int srcListIndex = 0; srcListIndex< srcListArray.size(); srcListIndex++) {
JsonObject srcListObj = srcListArray.getJsonObject(srcListIndex);
String type = srcListObj.get("type").toString().replace("\"", "");
@@ -805,17 +633,13 @@ public class FirewallConfigPolicy extends Policy {
srcListString = value;
}
- srcListIndex++;
-
}
String srcListInsert = "'"+srcListString+"'";
//getting destinationList Array fields from the firewallRulesList
JsonArray destListArray = ruleListobj.getJsonArray("destinationList");
String destListString = null;
-
- int destListIndex = 0;
- for (JsonValue destListJsonValue : destListArray) {
+ for (int destListIndex = 0; destListIndex <destListArray.size(); destListIndex++) {
JsonObject destListObj = destListArray.getJsonObject(destListIndex);
String type = destListObj.get("type").toString().replace("\"", "");
@@ -837,17 +661,13 @@ public class FirewallConfigPolicy extends Policy {
} else {
destListString = value;
}
-
- destListIndex++;
}
String destListInsert = "'"+destListString+"'";
//getting destServices Array fields from the firewallRulesList
JsonArray destServicesArray = ruleListobj.getJsonArray("destServices");
String destPortListString = null;
-
- int destPortListIndex = 0;
- for (JsonValue destListJsonValue : destServicesArray) {
+ for (int destPortListIndex = 0; destPortListIndex < destServicesArray.size(); destPortListIndex++) {
JsonObject destServicesObj = destServicesArray.getJsonObject(destPortListIndex);
String type = destServicesObj.get("type").toString().replace("\"", "");
@@ -869,8 +689,6 @@ public class FirewallConfigPolicy extends Policy {
} else {
destPortListString = value;
}
-
- destPortListIndex++;
}
String destPortListInsert = "'"+destPortListString+"'";
@@ -889,8 +707,6 @@ public class FirewallConfigPolicy extends Policy {
st.addBatch(actionSql);
st.executeBatch();
-
- i++;
}
}
@@ -929,9 +745,7 @@ public class FirewallConfigPolicy extends Policy {
portID = rs.getInt("ID");
}
rs.close();
-
- int i = 0;
- for(JsonValue jsonValue : serviceGroup) {
+ for(int i = 0; i < serviceGroup.size() ; i++) {
/*
* Populate ArrayLists with values from the JSON
@@ -965,9 +779,7 @@ public class FirewallConfigPolicy extends Policy {
serviceListID = serviceListID + 1;
String name = null;
-
- int membersIndex = 0;
- for (JsonValue membersValue : membersArray) {
+ for (int membersIndex = 0; membersIndex< membersArray.size(); membersIndex++) {
JsonObject membersObj = membersArray.getJsonObject(membersIndex);
//String value = membersObj.get("name").toString();
String type = membersObj.get("type").toString().replace("\"", "");
@@ -990,8 +802,6 @@ public class FirewallConfigPolicy extends Policy {
} else {
name = value;
}
-
- membersIndex++;
}
String nameInsert = "'"+name+"'";
@@ -1034,11 +844,7 @@ public class FirewallConfigPolicy extends Policy {
st.executeBatch();
- }
-
-
-
- i++;
+ }
}
}
@@ -1060,11 +866,7 @@ public class FirewallConfigPolicy extends Policy {
addressID = rs.getInt("ID");
}
rs.close();
-
-
- int i = 0;
- for(JsonValue jsonValue : addressGroup) {
-
+ for(int i = 0; i < addressGroup.size(); i++) {
/*
* Populate ArrayLists with values from the JSON
*/
@@ -1082,9 +884,7 @@ public class FirewallConfigPolicy extends Policy {
String prefixIP = null;
String type = null;
-
- int membersIndex = 0;
- for (JsonValue membersValue : membersArray) {
+ for (int membersIndex = 0; membersIndex < membersArray.size(); membersIndex++) {
JsonObject membersObj = membersArray.getJsonObject(membersIndex);
//String value = membersObj.get("value").toString();
type = membersObj.get("type").toString().replace("\"", "");
@@ -1107,8 +907,6 @@ public class FirewallConfigPolicy extends Policy {
} else {
prefixIP = value;
}
-
- membersIndex++;
}
String prefixList = "'"+prefixIP+"'";
@@ -1135,8 +933,6 @@ public class FirewallConfigPolicy extends Policy {
//Execute the queries to Insert data
st.executeUpdate(insertQuery);
-
- i++;
}
}
@@ -1169,15 +965,11 @@ public class FirewallConfigPolicy extends Policy {
st.executeBatch();
} catch (ClassNotFoundException e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error(e.getMessage());
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "FirewallConfigPolicy", "Exception building Firewall queries ");
System.out.println(e.getMessage());
return false;
} catch (SQLException e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error(e.getMessage());
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "FirewallConfigPolicy", "Exception executing Firewall queries");
System.out.println(e.getMessage());
return false;
@@ -1246,8 +1038,8 @@ public class FirewallConfigPolicy extends Policy {
JsonNode jsonDiff = createPatch(jsonBody, prevJsonBody);
- int i = 0;
- for (JsonNode node : jsonDiff) {
+
+ for (int i = 0; i<jsonDiff.size(); i++) {
//String path = jsonDiff.get(i).asText();
String jsonpatch = jsonDiff.get(i).toString();
@@ -1278,13 +1070,10 @@ public class FirewallConfigPolicy extends Policy {
}
rs.close();
- String insertQuery = null;
-
/*
* Inserting firewallRuleList data into the Terms, SecurityZone, and Action tables
*/
- int ri = 0;
- for(JsonValue jsonValue : firewallRules) {
+ for(int ri = 0; ri < firewallRules.size(); ri++) {
//increment ID Primary Keys
termID = termID + 1;
@@ -1313,8 +1102,7 @@ public class FirewallConfigPolicy extends Policy {
JsonArray fromZoneArray = ruleListobj.getJsonArray("fromZones");
String fromZoneString = null;
- int fromZoneIndex = 0;
- for (JsonValue fromZoneJsonValue : fromZoneArray) {
+ for (int fromZoneIndex = 0; fromZoneIndex<fromZoneArray.size() ; fromZoneIndex++) {
String value = fromZoneArray.get(fromZoneIndex).toString();
value = value.replace("\"", "");
@@ -1325,8 +1113,6 @@ public class FirewallConfigPolicy extends Policy {
fromZoneString = value;
}
- fromZoneIndex++;
-
}
String fromZoneInsert = "'"+fromZoneString+"'";
@@ -1334,8 +1120,8 @@ public class FirewallConfigPolicy extends Policy {
JsonArray toZoneArray = ruleListobj.getJsonArray("toZones");
String toZoneString = null;
- int toZoneIndex = 0;
- for (JsonValue toZoneJsonValue : toZoneArray) {
+
+ for (int toZoneIndex = 0; toZoneIndex < toZoneArray.size(); toZoneIndex++) {
String value = toZoneArray.get(toZoneIndex).toString();
value = value.replace("\"", "");
@@ -1346,16 +1132,12 @@ public class FirewallConfigPolicy extends Policy {
toZoneString = value;
}
- toZoneIndex++;
-
}
String toZoneInsert = "'"+toZoneString+"'";
//getting sourceList Array fields from the firewallRulesList
JsonArray srcListArray = ruleListobj.getJsonArray("sourceList");
String srcListString = null;
-
- int srcListIndex = 0;
- for (JsonValue srcListJsonValue : srcListArray) {
+ for (int srcListIndex = 0; srcListIndex<srcListArray.size(); srcListIndex++) {
JsonObject srcListObj = srcListArray.getJsonObject(srcListIndex);
String type = srcListObj.get("type").toString().replace("\"", "");
@@ -1379,17 +1161,13 @@ public class FirewallConfigPolicy extends Policy {
srcListString = value;
}
- srcListIndex++;
-
}
String srcListInsert = "'"+srcListString+"'";
//getting destinationList Array fields from the firewallRulesList
JsonArray destListArray = ruleListobj.getJsonArray("destinationList");
String destListString = null;
-
- int destListIndex = 0;
- for (JsonValue destListJsonValue : destListArray) {
+ for (int destListIndex = 0; destListIndex<destListArray.size(); destListIndex ++) {
JsonObject destListObj = destListArray.getJsonObject(destListIndex);
String type = destListObj.get("type").toString().replace("\"", "");
@@ -1411,17 +1189,13 @@ public class FirewallConfigPolicy extends Policy {
} else {
destListString = value;
}
-
- destListIndex++;
}
String destListInsert = "'"+destListString+"'";
//getting destServices Array fields from the firewallRulesList
JsonArray destServicesArray = ruleListobj.getJsonArray("destServices");
String destPortListString = null;
-
- int destPortListIndex = 0;
- for (JsonValue destListJsonValue : destServicesArray) {
+ for (int destPortListIndex = 0; destPortListIndex < destServicesArray.size(); destPortListIndex++) {
JsonObject destServicesObj = destServicesArray.getJsonObject(destPortListIndex);
String type = destServicesObj.get("type").toString().replace("\"", "");
@@ -1443,8 +1217,6 @@ public class FirewallConfigPolicy extends Policy {
} else {
destPortListString = value;
}
-
- destPortListIndex++;
}
String destPortListInsert = "'"+destPortListString+"'";
@@ -1471,10 +1243,7 @@ public class FirewallConfigPolicy extends Policy {
actionSql = actionSql.replace('"', '\'');
st.addBatch(actionSql);
}
-
st.executeBatch();
-
- ri++;
}
}
@@ -1515,9 +1284,7 @@ public class FirewallConfigPolicy extends Policy {
/*
* Inserting serviceGroups data into the ServiceGroup, ServiceList, ProtocolList, and PortList tables
*/
- int si = 0;
- for(JsonValue jsonValue : serviceGroup) {
-
+ for(int si = 0; si < serviceGroup.size(); si++) {
/*
* Populate ArrayLists with values from the JSON
*/
@@ -1552,10 +1319,8 @@ public class FirewallConfigPolicy extends Policy {
rs.close();
//increment ID Primary Keys
serviceListID = serviceListID + 1;
-
String name = null;
- int membersIndex = 0;
- for (JsonValue membersValue : membersArray) {
+ for (int membersIndex = 0; membersIndex < membersArray.size(); membersIndex++) {
JsonObject membersObj = membersArray.getJsonObject(membersIndex);
String type = membersObj.get("type").toString().replace("\"", "");
@@ -1577,8 +1342,6 @@ public class FirewallConfigPolicy extends Policy {
} else {
name = value;
}
-
- membersIndex++;
}
String nameInsert = "'"+name+"'";
@@ -1640,15 +1403,9 @@ public class FirewallConfigPolicy extends Policy {
st.addBatch(portSql);
}
rs.close();
-
st.executeBatch();
-
- }
-
-
- si++;
+ }
}
-
}
if (path.contains("addressGroups")) {
@@ -1671,9 +1428,7 @@ public class FirewallConfigPolicy extends Policy {
rs.close();
String insertQuery = null;
-
- int ai = 0;
- for(JsonValue jsonValue : addressGroup) {
+ for(int ai=0; ai < addressGroup.size() ; ai++) {
/*
* Populate ArrayLists with values from the JSON
@@ -1692,8 +1447,7 @@ public class FirewallConfigPolicy extends Policy {
String prefixIP = null;
String type = null;
- int membersIndex = 0;
- for (JsonValue membersValue : membersArray) {
+ for (int membersIndex=0; membersIndex < membersArray.size(); membersIndex++) {
JsonObject membersObj = membersArray.getJsonObject(membersIndex);
type = membersObj.get("type").toString().replace("\"", "");
@@ -1715,8 +1469,6 @@ public class FirewallConfigPolicy extends Policy {
} else {
prefixIP = value;
}
-
- membersIndex++;
}
String prefixList = "'"+prefixIP+"'";
@@ -1753,20 +1505,13 @@ public class FirewallConfigPolicy extends Policy {
+ "VALUES("+prefixID+","+addressGroupName+","+prefixList+","+description+")";
}
-
-
//Replace double quote with single quote
insertQuery = insertQuery.replace('"', '\'');
//Execute the queries to Insert data
st.executeUpdate(insertQuery);
-
- ai++;
- }
-
+ }
}
-
- i++;
}
/*
@@ -1797,15 +1542,11 @@ public class FirewallConfigPolicy extends Policy {
st.executeBatch();
} catch (ClassNotFoundException e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error(e.getMessage());
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "FirewallConfigPolicy", "Exception building Firewall queries");
System.out.println(e.getMessage());
return false;
} catch (SQLException e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error(e.getMessage());
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "FirewallConfigPolicy", "Exception executing Firewall queries");
System.out.println(e.getMessage());
return false;
diff --git a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/MicroServiceConfigPolicy.java b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/MicroServiceConfigPolicy.java
index c65b0be9d..c5fdc18cc 100644
--- a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/MicroServiceConfigPolicy.java
+++ b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/MicroServiceConfigPolicy.java
@@ -21,17 +21,35 @@
package org.openecomp.policy.pap.xacml.rest.components;
import java.io.File;
-import java.io.IOException;
import java.io.PrintWriter;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.file.Path;
import java.nio.file.Paths;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.Map;
-import java.util.StringTokenizer;
+import java.util.Map.Entry;
-import javax.json.stream.JsonGenerationException;
+import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.lang.StringUtils;
+import org.openecomp.policy.common.logging.eelf.MessageCodes;
+import org.openecomp.policy.common.logging.eelf.PolicyLogger;
+import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
+import org.openecomp.policy.common.logging.flexlogger.Logger;
+import org.openecomp.policy.rest.XACMLRestProperties;
+import org.openecomp.policy.rest.adapter.PolicyRestAdapter;
+
+import com.att.research.xacml.std.IdentifierImpl;
+import com.att.research.xacml.util.XACMLProperties;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.common.base.Splitter;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionType;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionsType;
@@ -45,27 +63,21 @@ import oasis.names.tc.xacml._3_0.core.schema.wd_17.MatchType;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.ObjectFactory;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.RuleType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType;
-
-import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.openecomp.policy.pap.xacml.rest.adapters.PolicyRestAdapter;
-
-import org.openecomp.policy.xacml.api.XACMLErrorConstants;
-import com.att.research.xacml.std.IdentifierImpl;
-
-import org.openecomp.policy.common.logging.eelf.MessageCodes;
-import org.openecomp.policy.common.logging.eelf.PolicyLogger;
-import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
-import org.openecomp.policy.common.logging.flexlogger.Logger;
+import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType;
public class MicroServiceConfigPolicy extends Policy {
- /**
- * Config Fields
- */
- private static final Logger logger = FlexLogger.getLogger(ConfigPolicy.class);
+ private static final Logger LOGGER = FlexLogger.getLogger(MicroServiceConfigPolicy.class);
+
+ /*
+ * These are the parameters needed for DB access from the PAP
+ */
+ private static String papDbDriver = null;
+ private static String papDbUrl = null;
+ private static String papDbUser = null;
+ private static String papDbPassword = null;
+ private static Map<String, String> mapAttribute = new HashMap<String,String>();
+ private static Map<String, String> matchMap = new HashMap<String,String>();
public MicroServiceConfigPolicy() {
super();
@@ -76,56 +88,30 @@ public class MicroServiceConfigPolicy extends Policy {
}
//save configuration of the policy based on the policyname
- private void saveConfigurations(String policyName, String prevPolicyName, String jsonBody) {
- String domain = getParentPathSubScopeDir();
- String path = domain.replace('\\', '.');
- if(path.contains("/")){
- path = domain.replace('/', '.');
- logger.info("print the path:" +path);
- }
+ private void saveConfigurations(String policyName, String jsonBody) {
try {
- String body = null;
- try {
- body = jsonBody;
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- System.out.println(body);
if(policyName.endsWith(".xml")){
- policyName = policyName.substring(0, policyName.lastIndexOf(".xml"));
+ policyName = policyName.replace(".xml", "");
}
- PrintWriter out = new PrintWriter(CONFIG_HOME + File.separator+path + "."+ policyName +".json");
- out.println(body);
+ PrintWriter out = new PrintWriter(CONFIG_HOME + File.separator + policyName +".json");
+ out.println(jsonBody);
out.close();
-
- } catch (JsonGenerationException e) {
- e.printStackTrace();
- } catch (IOException e) {
+ } catch (Exception e) {
+ LOGGER.error("Exception Occured While writing Configuration data"+e);
e.printStackTrace();
- }
-
+ }
}
- //getting the policy name and setting to configuration on adding .json
- private String getConfigFile(String filename) {
- filename = FilenameUtils.removeExtension(filename);
- if (filename.endsWith(".xml")) {
- filename = filename.substring(0, filename.length() - 4);
- }
- filename = filename +".json";
- return filename;
- }
@Override
public Map<String, String> savePolicies() throws Exception {
-
+
Map<String, String> successMap = new HashMap<String,String>();
if(isPolicyExists()){
successMap.put("EXISTS", "This Policy already exist on the PAP");
return successMap;
}
-
+
if(!isPreparedToSave()){
//Prep and configure the policy for saving
prepareToSave();
@@ -133,12 +119,10 @@ public class MicroServiceConfigPolicy extends Policy {
// Until here we prepared the data and here calling the method to create xml.
Path newPolicyPath = null;
- newPolicyPath = Paths.get(policyAdapter.getParentPath().toString(), policyName);
- successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject() );
- if (successMap.containsKey("success")) {
- Path finalPolicyPath = getFinalPolicyPath();
- policyAdapter.setFinalPolicyPath(finalPolicyPath.toString());
- }
+ newPolicyPath = Paths.get(policyAdapter.getNewFileName());
+
+ successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject());
+
return successMap;
}
@@ -154,12 +138,7 @@ public class MicroServiceConfigPolicy extends Policy {
int version = 0;
String policyID = policyAdapter.getPolicyID();
-
- if (policyAdapter.isEditPolicy()) {
- version = policyAdapter.getHighestVersion() + 1;
- } else {
- version = 1;
- }
+ version = policyAdapter.getHighestVersion();
// Create the Instance for pojo, PolicyType object is used in marshalling.
if (policyAdapter.getPolicyType().equals("Config")) {
@@ -170,33 +149,11 @@ public class MicroServiceConfigPolicy extends Policy {
policyConfig.setTarget(new TargetType());
policyAdapter.setData(policyConfig);
}
-
+ policyName = policyAdapter.getNewFileName();
if (policyAdapter.getData() != null) {
-
- // Save off everything
- // making ready all the required elements to generate the action policy xml.
- // Get the uniqueness for policy name.
- String prevPolicyName = null;
- if(policyAdapter.isEditPolicy()){
- prevPolicyName = "Config_MS_" + policyAdapter.getPolicyName() + "." + policyAdapter.getHighestVersion() + ".xml";
- }
-
- Path newFile = this.getNextLoopFilename(Paths.get(policyAdapter.getParentPath()), policyAdapter.getPolicyType(),
- policyAdapter.getConfigPolicyType(), policyAdapter.getPolicyName(), version);
-
- if (newFile == null) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Policy already Exists, cannot create the policy.");
- PolicyLogger.error("Policy already Exists, cannot create the policy.");
- setPolicyExists(true);
- return false;
- }
-
- policyName = newFile.getFileName().toString();
-
// Save the Configurations file with the policy name with extention based on selection.
String jsonBody = policyAdapter.getJsonBody();
- saveConfigurations(policyName, prevPolicyName, jsonBody);
+ saveConfigurations(policyName, jsonBody);
// Make sure the filename ends with an extension
if (policyName.endsWith(".xml") == false) {
@@ -211,23 +168,35 @@ public class MicroServiceConfigPolicy extends Policy {
configPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId());
AllOfType allOfOne = new AllOfType();
- final Path gitPath = Paths.get(policyAdapter.getUserGitPath().toString());
- String policyDir = policyAdapter.getParentPath().toString();
- int startIndex = policyDir.indexOf(gitPath.toString()) + gitPath.toString().length() + 1;
- policyDir = policyDir.substring(startIndex, policyDir.length());
- logger.info("print the main domain value "+policyDir);
- String path = policyDir.replace('\\', '.');
- if(path.contains("/")){
- path = policyDir.replace('/', '.');
- logger.info("print the path:" +path);
- }
- String fileName = FilenameUtils.removeExtension(policyName);
- fileName = path + "." + fileName + ".xml";
+ String fileName = policyAdapter.getNewFileName();
String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length());
if ((name == null) || (name.equals(""))) {
name = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length());
}
+ //setup values for pulling out matching attributes
+ ObjectMapper mapper = new ObjectMapper();
+ JsonNode rootNode = mapper.readTree(policyAdapter.getJsonBody());
+ String matching = null;
+
+ if (policyAdapter.getTtlDate()==null){
+ policyAdapter.setTtlDate("NA");
+ }
+ if (policyAdapter.getServiceType().contains("-v")){
+ matching = getValueFromDictionary(policyAdapter.getServiceType());
+ } else {
+ String jsonVersion = StringUtils.replaceEach(rootNode.get("version").toString(), new String[]{"\""}, new String[]{""});
+ matching = getValueFromDictionary(policyAdapter.getServiceType() + "-v" + jsonVersion);
+ }
+
+ matchMap = new HashMap<String,String>();
+ if (matching != null && !matching.isEmpty()){
+ matchMap = Splitter.on(",").withKeyValueSeparator("=").split(matching);
+ if(policyAdapter.getJsonBody() != null){
+ pullMatchValue(rootNode);
+ }
+ }
+
// Match for policyName
allOfOne.getMatch().add(createMatch("PolicyName", name));
@@ -235,14 +204,26 @@ public class MicroServiceConfigPolicy extends Policy {
// Adding the matches to AllOfType element Match for Ecomp
allOf.getMatch().add(createMatch("ECOMPName", policyAdapter.getEcompName()));
- // Match for ConfigName
- allOf.getMatch().add(createMatch("ConfigName", policyAdapter.getConfigName()));
- // Match for Service
- allOf.getMatch().add(createDynamicMatch("service", policyAdapter.getServiceType()));
- // Match for uuid
- allOf.getMatch().add(createDynamicMatch("uuid", policyAdapter.getUuid()));
- // Match for location
- allOf.getMatch().add(createDynamicMatch("location", policyAdapter.getLocation()));
+ if (matchMap==null || matchMap.isEmpty()){
+ // Match for ConfigName
+ allOf.getMatch().add(createMatch("ConfigName", policyAdapter.getConfigName()));
+ // Match for Service
+ allOf.getMatch().add(createDynamicMatch("service", policyAdapter.getServiceType()));
+ // Match for uuid
+ allOf.getMatch().add(createDynamicMatch("uuid", policyAdapter.getUuid()));
+ // Match for location
+ allOf.getMatch().add(createDynamicMatch("location", policyAdapter.getLocation()));
+ }else {
+ for (Entry<String, String> matchValue : matchMap.entrySet()){
+ String value = matchValue.getValue();
+ String key = matchValue.getKey().trim();
+ if (value.contains("matching-true")){
+ if (mapAttribute.containsKey(key)){
+ allOf.getMatch().add(createDynamicMatch(key, mapAttribute.get(key)));
+ }
+ }
+ }
+ }
// Match for riskType
allOf.getMatch().add(
createDynamicMatch("RiskType", policyAdapter.getRiskType()));
@@ -285,8 +266,6 @@ public class MicroServiceConfigPolicy extends Policy {
try {
accessURI = new URI(ACTION_ID);
} catch (URISyntaxException e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e.getStackTrace());
PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "MicroServiceConfigPolicy", "Exception creating ACCESS URI");
}
accessAttributeDesignator.setCategory(CATEGORY_ACTION);
@@ -306,8 +285,6 @@ public class MicroServiceConfigPolicy extends Policy {
try {
configURI = new URI(RESOURCE_ID);
} catch (URISyntaxException e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e.getStackTrace());
PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "MicroServiceConfigPolicy", "Exception creating Config URI");
}
configAttributeDesignator.setCategory(CATEGORY_RESOURCE);
@@ -332,14 +309,80 @@ public class MicroServiceConfigPolicy extends Policy {
policyAdapter.setPolicyData(configPolicy);
} else {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Unsupported data object." + policyAdapter.getData().getClass().getCanonicalName());
PolicyLogger.error("Unsupported data object." + policyAdapter.getData().getClass().getCanonicalName());
}
setPreparedToSave(true);
return true;
}
+ private void pullMatchValue(JsonNode rootNode) {
+ Iterator<Map.Entry<String, JsonNode>> fieldsIterator = rootNode.fields();
+ String newValue = null;
+ while (fieldsIterator.hasNext()) {
+ Map.Entry<String, JsonNode> field = fieldsIterator.next();
+ final String key = field.getKey();
+ final JsonNode value = field.getValue();
+ if (value.isContainerNode() && !value.isArray()) {
+ pullMatchValue(value); // RECURSIVE CALL
+ } else {
+ newValue = StringUtils.replaceEach(value.toString(), new String[]{"[", "]", "\""}, new String[]{"", "", ""});
+ mapAttribute.put(key, newValue);
+ }
+ }
+
+ }
+
+ private String getValueFromDictionary(String service){
+
+ Connection con = null;
+ Statement st = null;
+ ResultSet rs = null;
+
+ String modelName = service.split("-v")[0];
+ String modelVersion = service.split("-v")[1];
+
+
+ /*
+ * Retrieve the property values for db access from the xacml.pap.properties
+ */
+ papDbDriver = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_DB_DRIVER);
+ papDbUrl = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_DB_URL);
+ papDbUser = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_DB_USER);
+ papDbPassword = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_DB_PASSWORD);
+
+ String ruleTemplate=null;
+
+ try {
+ //Get DB Connection
+ Class.forName(papDbDriver);
+ con = DriverManager.getConnection(papDbUrl,papDbUser,papDbPassword);
+ st = con.createStatement();
+
+ String queryString = "Select * from MicroServiceModels where modelName=\"" + modelName
+ + "\" AND version=\"" + modelVersion+"\"";
+
+
+ rs = st.executeQuery(queryString);
+ if(rs.next()){
+ ruleTemplate=rs.getString("annotation");
+ }
+ rs.close();
+ }catch (ClassNotFoundException e) {
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "MicroServiceModels", "Exception querying MicroServiceModels");
+ } catch (SQLException e) {
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "MicroServiceModels", "Exception querying MicroServiceModels");
+ } finally {
+ try{
+ if (con!=null) con.close();
+ if (rs!=null) rs.close();
+ if (st!=null) st.close();
+ } catch (Exception ex){
+ LOGGER.error("Exception Occured While Closing the Database Connection"+ex);
+ }
+ }
+ return ruleTemplate;
+
+ }
// Data required for Advice part is setting here.
private AdviceExpressionsType getAdviceExpressions(int version, String fileName) {
AdviceExpressionsType advices = new AdviceExpressionsType();
@@ -358,7 +401,6 @@ public class MicroServiceConfigPolicy extends Policy {
assignment1.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue));
advice.getAttributeAssignmentExpression().add(assignment1);
- final Path gitPath = Paths.get(policyAdapter.getUserGitPath().toString());
// For Config file Url if configurations are provided.
AttributeAssignmentExpressionType assignment2 = new AttributeAssignmentExpressionType();
assignment2.setAttributeId("URLID");
@@ -367,17 +409,13 @@ public class MicroServiceConfigPolicy extends Policy {
AttributeValueType AttributeValue = new AttributeValueType();
AttributeValue.setDataType(URI_DATATYPE);
- String policyDir1 = policyAdapter.getParentPath().toString();
- int startIndex1 = policyDir1.indexOf(gitPath.toString()) + gitPath.toString().length() + 1;
- policyDir1 = policyDir1.substring(startIndex1, policyDir1.length());
- logger.info("print the main domain value"+policyDir1);
- String path = policyDir1.replace('\\', '.');
- if(path.contains("/")){
- path = policyDir1.replace('/', '.');
- logger.info("print the path:" +path);
+ String configName;
+ if(policyName.endsWith(".xml")){
+ configName = policyName.replace(".xml", "");
+ }else{
+ configName = policyName;
}
- String content = CONFIG_URL +"/Config/" + path + "." + getConfigFile(policyName);
- System.out.println("URL value :" + content);
+ String content = CONFIG_URL +"/Config/" + configName + ".json";
AttributeValue.getContent().add(content);
assignment2.setExpression(new ObjectFactory().createAttributeValue(AttributeValue));
@@ -389,25 +427,8 @@ public class MicroServiceConfigPolicy extends Policy {
AttributeValueType attributeValue3 = new AttributeValueType();
attributeValue3.setDataType(STRING_DATATYPE);
- String policyDir = policyAdapter.getParentPath().toString();
- int startIndex = policyDir.indexOf(gitPath.toString()) + gitPath.toString().length() + 1;
- policyDir = policyDir.substring(startIndex, policyDir.length());
- StringTokenizer tokenizer = null;
- StringBuffer buffer = new StringBuffer();
- if (policyDir.contains("\\")) {
- tokenizer = new StringTokenizer(policyDir, "\\");
- } else {
- tokenizer = new StringTokenizer(policyDir, "/");
- }
- if (tokenizer != null) {
- while (tokenizer.hasMoreElements()) {
- String value = tokenizer.nextToken();
- buffer.append(value);
- buffer.append(".");
- }
- }
fileName = FilenameUtils.removeExtension(fileName);
- fileName = buffer.toString() + fileName + ".xml";
+ fileName = fileName + ".xml";
String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length());
if ((name == null) || (name.equals(""))) {
name = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length());
@@ -429,7 +450,7 @@ public class MicroServiceConfigPolicy extends Policy {
advice.getAttributeAssignmentExpression().add(assignment4);
AttributeAssignmentExpressionType assignment5 = new AttributeAssignmentExpressionType();
- assignment5.setAttributeId("matching:" + this.ECOMPID);
+ assignment5.setAttributeId("matching:" + ECOMPID);
assignment5.setCategory(CATEGORY_RESOURCE);
assignment5.setIssuer("");
@@ -440,53 +461,78 @@ public class MicroServiceConfigPolicy extends Policy {
advice.getAttributeAssignmentExpression().add(assignment5);
- AttributeAssignmentExpressionType assignment6 = new AttributeAssignmentExpressionType();
- assignment6.setAttributeId("matching:" + this.CONFIGID);
- assignment6.setCategory(CATEGORY_RESOURCE);
- assignment6.setIssuer("");
-
- AttributeValueType configNameAttributeValue6 = new AttributeValueType();
- configNameAttributeValue6.setDataType(STRING_DATATYPE);
- configNameAttributeValue6.getContent().add(policyAdapter.getConfigName());
- assignment6.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue6));
-
- advice.getAttributeAssignmentExpression().add(assignment6);
- AttributeAssignmentExpressionType assignment7 = new AttributeAssignmentExpressionType();
- assignment7.setAttributeId("matching:service");
- assignment7.setCategory(CATEGORY_RESOURCE);
- assignment7.setIssuer("");
-
- AttributeValueType configNameAttributeValue7 = new AttributeValueType();
- configNameAttributeValue7.setDataType(STRING_DATATYPE);
- configNameAttributeValue7.getContent().add(policyAdapter.getServiceType());
- assignment7.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue7));
-
- advice.getAttributeAssignmentExpression().add(assignment7);
-
- AttributeAssignmentExpressionType assignment8 = new AttributeAssignmentExpressionType();
- assignment8.setAttributeId("matching:uuid");
- assignment8.setCategory(CATEGORY_RESOURCE);
- assignment8.setIssuer("");
-
- AttributeValueType configNameAttributeValue8 = new AttributeValueType();
- configNameAttributeValue8.setDataType(STRING_DATATYPE);
- configNameAttributeValue8.getContent().add(policyAdapter.getUuid());
- assignment8.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue8));
-
- advice.getAttributeAssignmentExpression().add(assignment8);
+ AttributeAssignmentExpressionType assignment7 = new AttributeAssignmentExpressionType();
+ assignment7.setAttributeId("matching:service");
+ assignment7.setCategory(CATEGORY_RESOURCE);
+ assignment7.setIssuer("");
+
+ AttributeValueType configNameAttributeValue7 = new AttributeValueType();
+ configNameAttributeValue7.setDataType(STRING_DATATYPE);
+ configNameAttributeValue7.getContent().add(policyAdapter.getServiceType());
+ assignment7.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue7));
+
+ advice.getAttributeAssignmentExpression().add(assignment7);
+
+ if (matchMap==null || matchMap.isEmpty()){
+ AttributeAssignmentExpressionType assignment6 = new AttributeAssignmentExpressionType();
+ assignment6.setAttributeId("matching:" + CONFIGID);
+ assignment6.setCategory(CATEGORY_RESOURCE);
+ assignment6.setIssuer("");
+
+ AttributeValueType configNameAttributeValue6 = new AttributeValueType();
+ configNameAttributeValue6.setDataType(STRING_DATATYPE);
+ configNameAttributeValue6.getContent().add(policyAdapter.getConfigName());
+ assignment6.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue6));
+
+ advice.getAttributeAssignmentExpression().add(assignment6);
+
+
+ AttributeAssignmentExpressionType assignment8 = new AttributeAssignmentExpressionType();
+ assignment8.setAttributeId("matching:uuid");
+ assignment8.setCategory(CATEGORY_RESOURCE);
+ assignment8.setIssuer("");
+
+ AttributeValueType configNameAttributeValue8 = new AttributeValueType();
+ configNameAttributeValue8.setDataType(STRING_DATATYPE);
+ configNameAttributeValue8.getContent().add(policyAdapter.getUuid());
+ assignment8.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue8));
+
+ advice.getAttributeAssignmentExpression().add(assignment8);
+
+ AttributeAssignmentExpressionType assignment9 = new AttributeAssignmentExpressionType();
+ assignment9.setAttributeId("matching:Location");
+ assignment9.setCategory(CATEGORY_RESOURCE);
+ assignment9.setIssuer("");
+
+ AttributeValueType configNameAttributeValue9 = new AttributeValueType();
+ configNameAttributeValue9.setDataType(STRING_DATATYPE);
+ configNameAttributeValue9.getContent().add(policyAdapter.getLocation());
+ assignment9.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue9));
+
+ advice.getAttributeAssignmentExpression().add(assignment9);
+ } else {
+ for (Entry<String, String> matchValue : matchMap.entrySet()){
+ String value = matchValue.getValue();
+ String key = matchValue.getKey().trim();
+ if (value.contains("matching-true")){
+ if (mapAttribute.containsKey(key)){
+ AttributeAssignmentExpressionType assignment9 = new AttributeAssignmentExpressionType();
+ assignment9.setAttributeId("matching:" + key);
+ assignment9.setCategory(CATEGORY_RESOURCE);
+ assignment9.setIssuer("");
+
+ AttributeValueType configNameAttributeValue9 = new AttributeValueType();
+ configNameAttributeValue9.setDataType(STRING_DATATYPE);
+ configNameAttributeValue9.getContent().add(mapAttribute.get(key));
+ assignment9.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue9));
+
+ advice.getAttributeAssignmentExpression().add(assignment9);
+
+ }
+ }
+ }
+ }
- AttributeAssignmentExpressionType assignment9 = new AttributeAssignmentExpressionType();
- assignment9.setAttributeId("matching:Location");
- assignment9.setCategory(CATEGORY_RESOURCE);
- assignment9.setIssuer("");
-
- AttributeValueType configNameAttributeValue9 = new AttributeValueType();
- configNameAttributeValue9.setDataType(STRING_DATATYPE);
- configNameAttributeValue9.getContent().add(policyAdapter.getLocation());
- assignment9.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue9));
-
- advice.getAttributeAssignmentExpression().add(assignment9);
-
AttributeAssignmentExpressionType assignment10 = new AttributeAssignmentExpressionType();
assignment10.setAttributeId("Priority");
assignment10.setCategory(CATEGORY_RESOURCE);
@@ -531,7 +577,7 @@ public class MicroServiceConfigPolicy extends Policy {
AttributeValueType configNameAttributeValue13 = new AttributeValueType();
configNameAttributeValue13.setDataType(STRING_DATATYPE);
- configNameAttributeValue13.getContent().add(policyAdapter.getRiskLevel());
+ configNameAttributeValue13.getContent().add(policyAdapter.getGuard());
assignment13.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue13));
advice.getAttributeAssignmentExpression().add(assignment13);
@@ -556,6 +602,4 @@ public class MicroServiceConfigPolicy extends Policy {
public Object getCorrectPolicyDataObject() {
return policyAdapter.getPolicyData();
}
-
-
}
diff --git a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/Policy.java b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/Policy.java
index 09c90de68..0f8ccfba0 100644
--- a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/Policy.java
+++ b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/Policy.java
@@ -41,24 +41,18 @@ import oasis.names.tc.xacml._3_0.core.schema.wd_17.MatchType;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType;
import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.json.JSONObject;
-import org.openecomp.policy.pap.xacml.rest.adapters.PolicyRestAdapter;
+import org.openecomp.policy.common.logging.eelf.MessageCodes;
+import org.openecomp.policy.common.logging.eelf.PolicyLogger;
import org.openecomp.policy.rest.XACMLRestProperties;
+import org.openecomp.policy.rest.adapter.PolicyRestAdapter;
+import org.openecomp.policy.xacml.util.XACMLPolicyWriter;
-import org.openecomp.policy.xacml.api.XACMLErrorConstants;
import com.att.research.xacml.std.IdentifierImpl;
-import org.openecomp.policy.xacml.util.XACMLPolicyWriter;
import com.att.research.xacml.util.XACMLProperties;
import com.att.research.xacmlatt.pdp.policy.PolicyDef;
import com.att.research.xacmlatt.pdp.policy.dom.DOMPolicyDef;
-import org.openecomp.policy.common.logging.eelf.MessageCodes;
-import org.openecomp.policy.common.logging.eelf.PolicyLogger;
-import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
-import org.openecomp.policy.common.logging.flexlogger.Logger;
-
public abstract class Policy {
/**
@@ -70,22 +64,21 @@ public abstract class Policy {
public static final String ECOMPID = "ECOMPName";
public static final String CONFIGID = "ConfigName";
public static final String CLOSEDLOOPID = "ServiceType";
-
+
public static final String CONFIG_POLICY = "Config";
public static final String ACTION_POLICY = "Action";
public static final String DECISION_POLICY = "Decision";
protected String policyName = null;
- private static final Logger logger = FlexLogger.getLogger(Policy.class);
-
- boolean isValidForm = true;
-
+
+ protected boolean isValidForm = true;
+
private Path finalPolicyPath = null;
-
+
private boolean preparedToSave = false;
-
+
private boolean policyExists = false;
-
+
public Path getFinalPolicyPath() {
return finalPolicyPath;
}
@@ -94,362 +87,318 @@ public abstract class Policy {
this.finalPolicyPath = finalPolicyPath;
}
- // Constants Used in XML Creation
- public static final String CATEGORY_RECIPIENT_SUBJECT = "urn:oasis:names:tc:xacml:1.0:subject-category:recipient-subject";
- public static final String CATEGORY_RESOURCE = "urn:oasis:names:tc:xacml:3.0:attribute-category:resource";
- public static final String CATEGORY_ACTION = "urn:oasis:names:tc:xacml:3.0:attribute-category:action";
- public static final String CATEGORY_ACCESS_SUBJECT = "urn:oasis:names:tc:xacml:1.0:subject-category:access-subject";
- public static final String ACTION_ID = "urn:oasis:names:tc:xacml:1.0:action:action-id";
- public static final String SUBJECT_ID = "urn:oasis:names:tc:xacml:1.0:subject:subject-id";
- public static final String RESOURCE_ID = "urn:oasis:names:tc:xacml:1.0:resource:resource-id";
- public static final String FUNTION_INTEGER_ONE_AND_ONLY = "urn:oasis:names:tc:xacml:1.0:function:integer-one-and-only";
- public static final String FUNCTION_STRING_ONE_AND_ONLY = "urn:oasis:names:tc:xacml:1.0:function:string-one-and-only";
- public static final String FUNCTION_BOOLEAN_ONE_AND_ONLY = "urn:oasis:names:tc:xacml:1.0:function:boolean-one-and-only";
- public static final String FUNCTION_STRING_EQUAL = "urn:oasis:names:tc:xacml:1.0:function:string-equal";
- public static final String FUNCTION_STRING_REGEX_MATCH = "org.openecomp.function.regex-match";
- public static final String FUNCTION_STRING_EQUAL_IGNORE = "urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case";
- public static final String INTEGER_DATATYPE = "http://www.w3.org/2001/XMLSchema#integer";
- public static final String BOOLEAN_DATATYPE = "http://www.w3.org/2001/XMLSchema#boolean";
- public static final String STRING_DATATYPE = "http://www.w3.org/2001/XMLSchema#string";
- public static final String URI_DATATYPE = "http://www.w3.org/2001/XMLSchema#anyURI";
- public static final String RULE_VARIABLE = "var:";
- public static final String EMPTY_STRING = "";
- private static final String String = null;
-
- public static String CONFIG_HOME = null;
- public static String ACTION_HOME = null;
- public static String CONFIG_URL = null;
-
- protected Map<String, String> performer = new HashMap<String, String>();
-
- private static String actionHome = null;
- private static String configHome = null;
-
- public PolicyRestAdapter policyAdapter = null;
- String ruleID = "";
-
- public Policy() {
- CONFIG_HOME = getConfigHome();
- ACTION_HOME = getActionHome();
- CONFIG_URL = "$URL";
- performer.put("PDP", "PDPAction");
- performer.put("PEP", "PEPAction");
+ // Constants Used in XML Creation
+ public static final String CATEGORY_RECIPIENT_SUBJECT = "urn:oasis:names:tc:xacml:1.0:subject-category:recipient-subject";
+ public static final String CATEGORY_RESOURCE = "urn:oasis:names:tc:xacml:3.0:attribute-category:resource";
+ public static final String CATEGORY_ACTION = "urn:oasis:names:tc:xacml:3.0:attribute-category:action";
+ public static final String CATEGORY_ACCESS_SUBJECT = "urn:oasis:names:tc:xacml:1.0:subject-category:access-subject";
+ public static final String ACTION_ID = "urn:oasis:names:tc:xacml:1.0:action:action-id";
+ public static final String SUBJECT_ID = "urn:oasis:names:tc:xacml:1.0:subject:subject-id";
+ public static final String RESOURCE_ID = "urn:oasis:names:tc:xacml:1.0:resource:resource-id";
+ public static final String FUNTION_INTEGER_ONE_AND_ONLY = "urn:oasis:names:tc:xacml:1.0:function:integer-one-and-only";
+ public static final String FUNCTION_STRING_ONE_AND_ONLY = "urn:oasis:names:tc:xacml:1.0:function:string-one-and-only";
+ public static final String FUNCTION_BOOLEAN_ONE_AND_ONLY = "urn:oasis:names:tc:xacml:1.0:function:boolean-one-and-only";
+ public static final String FUNCTION_STRING_EQUAL = "urn:oasis:names:tc:xacml:1.0:function:string-equal";
+ public static final String FUNCTION_STRING_REGEX_MATCH = "org.openecomp.function.regex-match";
+ public static final String FUNCTION_STRING_EQUAL_IGNORE = "urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case";
+ public static final String INTEGER_DATATYPE = "http://www.w3.org/2001/XMLSchema#integer";
+ public static final String BOOLEAN_DATATYPE = "http://www.w3.org/2001/XMLSchema#boolean";
+ public static final String STRING_DATATYPE = "http://www.w3.org/2001/XMLSchema#string";
+ public static final String URI_DATATYPE = "http://www.w3.org/2001/XMLSchema#anyURI";
+ public static final String RULE_VARIABLE = "var:";
+ public static final String EMPTY_STRING = "";
+ private static final String String = null;
+
+ public static String CONFIG_HOME = null;
+ public static String ACTION_HOME = null;
+ public static String CONFIG_URL = null;
+
+ protected Map<String, String> performer = new HashMap<String, String>();
+
+ private static String actionHome = null;
+ private static String configHome = null;
+
+ public PolicyRestAdapter policyAdapter = null;
+ String ruleID = "";
+
+ public Policy() {
+ CONFIG_HOME = getConfigHome();
+ ACTION_HOME = getActionHome();
+ CONFIG_URL = "$URL";
+ performer.put("PDP", "PDPAction");
+ performer.put("PEP", "PEPAction");
+ }
+
+ //Each policy type seems to either use policyData or data field policy adapter when
+ //getting the xml to save the policy. Instead of keep this hardcoded in the save method,
+ //this method makes it usable outside.
+ /**
+ * Return the data field of the PolicyAdapter that will be used when saving this policy
+ * with the savePolicies method.
+ * @return Either the PolicyAdapter.getData() or PolicyAdapter.getPolicyData()
+ */
+ public abstract Object getCorrectPolicyDataObject();
+ public abstract Map<String, String> savePolicies() throws Exception;
+
+ //This is the method for preparing the policy for saving. We have broken it out
+ //separately because the fully configured policy is used for multiple things
+ public abstract boolean prepareToSave() throws Exception;
+
+
+ // create match for ecomp and config name
+ protected MatchType createMatch(String key, String value) {
+ MatchType match = new MatchType();
+
+ AttributeValueType attributeValue = new AttributeValueType();
+ attributeValue.setDataType(STRING_DATATYPE);
+ attributeValue.getContent().add(value);
+ match.setAttributeValue(attributeValue);
+ AttributeDesignatorType attributeDesignator = new AttributeDesignatorType();
+ URI uri = null;
+ try {
+ uri = new URI(key);
+ } catch (URISyntaxException e) {
+ e.printStackTrace();
}
+ attributeDesignator.setCategory(CATEGORY_ACCESS_SUBJECT);
+ attributeDesignator.setDataType(STRING_DATATYPE);
+ attributeDesignator.setAttributeId(new IdentifierImpl(uri).stringValue());
+ match.setAttributeDesignator(attributeDesignator);
+ match.setMatchId(FUNCTION_STRING_REGEX_MATCH);
+ return match;
+ }
- //Each policy type seems to either use policyData or data field policy adapter when
- //getting the xml to save the policy. Instead of keep this hardcoded in the save method,
- //this method makes it usable outside.
- /**
- * Return the data field of the PolicyAdapter that will be used when saving this policy
- * with the savePolicies method.
- * @return Either the PolicyAdapter.getData() or PolicyAdapter.getPolicyData()
- */
- public abstract Object getCorrectPolicyDataObject();
- public abstract Map<String, String> savePolicies() throws Exception;
-
- //This is the method for preparing the policy for saving. We have broken it out
- //separately because the fully configured policy is used for multiple things
- public abstract boolean prepareToSave() throws Exception;
-
-
- // create match for ecomp and config name
- protected MatchType createMatch(String key, String value) {
- MatchType match = new MatchType();
-
- AttributeValueType attributeValue = new AttributeValueType();
- attributeValue.setDataType(STRING_DATATYPE);
- attributeValue.getContent().add(value);
- match.setAttributeValue(attributeValue);
- AttributeDesignatorType attributeDesignator = new AttributeDesignatorType();
- URI uri = null;
- try {
- uri = new URI(key);
- } catch (URISyntaxException e) {
- e.printStackTrace();
- }
- attributeDesignator.setCategory(CATEGORY_ACCESS_SUBJECT);
- attributeDesignator.setDataType(STRING_DATATYPE);
- attributeDesignator.setAttributeId(new IdentifierImpl(uri).stringValue());
- match.setAttributeDesignator(attributeDesignator);
- match.setMatchId(FUNCTION_STRING_REGEX_MATCH);
- return match;
+ // Creating the match for dynamically added components.
+ protected MatchType createDynamicMatch(String key, String value) {
+ MatchType dynamicMatch = new MatchType();
+ AttributeValueType dynamicAttributeValue = new AttributeValueType();
+ String dataType = null;
+ dataType = STRING_DATATYPE;
+ dynamicAttributeValue.setDataType(dataType);
+ dynamicAttributeValue.getContent().add(value);
+ dynamicMatch.setAttributeValue(dynamicAttributeValue);
+
+ AttributeDesignatorType dynamicAttributeDesignator = new AttributeDesignatorType();
+
+ URI dynamicURI = null;
+ try {
+ dynamicURI = new URI(key);
+ } catch (URISyntaxException e) {
+ e.printStackTrace();// log msg
}
-
- // Creating the match for dynamically added components.
- protected MatchType createDynamicMatch(String key, String value) {
- MatchType dynamicMatch = new MatchType();
- AttributeValueType dynamicAttributeValue = new AttributeValueType();
- //Attribute attribute = findAttributeByAttributeId(key);
- String dataType = null;
- // if (value.matches("[0-9]+")) {
- // dataType = INTEGER_DATATYPE;
- // } else {
- // dataType = STRING_DATATYPE;
- // }
- dataType = STRING_DATATYPE;
- dynamicAttributeValue.setDataType(dataType);
- dynamicAttributeValue.getContent().add(value);
- dynamicMatch.setAttributeValue(dynamicAttributeValue);
-
- AttributeDesignatorType dynamicAttributeDesignator = new AttributeDesignatorType();
-
- URI dynamicURI = null;
- try {
- dynamicURI = new URI(key);
- } catch (URISyntaxException e) {
- e.printStackTrace();// log msg
- }
- dynamicAttributeDesignator.setCategory(CATEGORY_RESOURCE);
- dynamicAttributeDesignator.setDataType(dataType);
- dynamicAttributeDesignator.setAttributeId(new IdentifierImpl(dynamicURI).stringValue());
- dynamicMatch.setAttributeDesignator(dynamicAttributeDesignator);
- dynamicMatch.setMatchId(FUNCTION_STRING_REGEX_MATCH);
+ dynamicAttributeDesignator.setCategory(CATEGORY_RESOURCE);
+ dynamicAttributeDesignator.setDataType(dataType);
+ dynamicAttributeDesignator.setAttributeId(new IdentifierImpl(dynamicURI).stringValue());
+ dynamicMatch.setAttributeDesignator(dynamicAttributeDesignator);
+ dynamicMatch.setMatchId(FUNCTION_STRING_REGEX_MATCH);
+
+ return dynamicMatch;
+ }
- return dynamicMatch;
+ //validation for numeric
+ protected boolean isNumeric(String str){
+ for (char c : str.toCharArray()){
+ if (!Character.isDigit(c)) return false;
}
+ return true;
+ }
- //validation for numeric
- protected boolean isNumeric(String str)
- {
- for (char c : str.toCharArray())
- {
- if (!Character.isDigit(c)) return false;
- }
- return true;
+ // Validation for json.
+ protected static boolean isJSONValid(String data) {
+ try {
+ new JSONObject(data);
+ InputStream stream = new ByteArrayInputStream(data.getBytes(StandardCharsets.UTF_8));
+ JsonReader jsonReader = Json.createReader(stream);
+ System.out.println("Json Value is: " + jsonReader.read().toString() );
+ } catch (Exception e) {
+ return false;
}
-
- // Validation for json.
- protected static boolean isJSONValid(String data) {
- try {
- new JSONObject(data);
- InputStream stream = new ByteArrayInputStream(data.getBytes(StandardCharsets.UTF_8));
- JsonReader jsonReader = Json.createReader(stream);
- System.out.println("Json Value is: " + jsonReader.read().toString() );
- } catch (Exception e) {
- return false;
+ return true;
+ }
+
+ // the Policy Name as Unique One throws error
+ @SuppressWarnings("static-access")
+ protected Path getNextFilename(Path parent, String policyType, String polcyFileName, Integer version) {
+ policyType = FilenameUtils.removeExtension(policyType);
+ polcyFileName = FilenameUtils.removeExtension(polcyFileName);
+ Path newFile = null;
+ String policyDir = EMPTY_STRING;
+ String absolutePath = parent.toString();
+ if (absolutePath != null && !absolutePath.equals(EMPTY_STRING)) {
+ policyDir = absolutePath.substring(absolutePath.lastIndexOf("\\") + 1, absolutePath.length());
+ if (policyDir == null || policyDir.equals(EMPTY_STRING)) {
+ policyDir = absolutePath.substring(absolutePath.lastIndexOf("/") + 1, absolutePath.length());
}
- return true;
}
-
- // the Policy Name as Unique One throws error
- protected Path getNextFilename(Path parent, String policyType, String polcyFileName, Integer version) {
- policyType = FilenameUtils.removeExtension(policyType);
- polcyFileName = FilenameUtils.removeExtension(polcyFileName);
- Path newFile = null;
- String policyDir = EMPTY_STRING;
- String absolutePath = parent.toString();
- if (absolutePath != null && !absolutePath.equals(EMPTY_STRING)) {
- policyDir = absolutePath.substring(absolutePath.lastIndexOf("\\") + 1, absolutePath.length());
- if (policyDir == null || policyDir.equals(EMPTY_STRING)) {
- policyDir = absolutePath.substring(absolutePath.lastIndexOf("/") + 1, absolutePath.length());
- }
- }
- String fileName = "default";
- if (policyDir != null && !policyDir.equals(EMPTY_STRING)) {
- fileName = policyType + "_" + String.format(polcyFileName) + "." + version + ".xml";
- }
- if (fileName != null) {
- newFile = Paths.get(parent.toString(), fileName);
- }
- if (Files.notExists(newFile)) {
- return newFile;
- }
- return null;
+ String fileName = "default";
+ if (policyDir != null && !policyDir.equals(EMPTY_STRING)) {
+ fileName = policyType + "_" + String.format(polcyFileName) + "." + version + ".xml";
+ }
+ if (fileName != null) {
+ newFile = Paths.get(parent.toString(), fileName);
}
-
- protected Path getNextLoopFilename(Path parentPath, String policyType,
- String policyConfigType, String policyFileName, Integer version) {
- policyType = FilenameUtils.removeExtension(policyType);
- policyConfigType = FilenameUtils.removeExtension(policyConfigType);
- policyFileName = FilenameUtils.removeExtension(policyFileName);
- Path newFile = null;
- String policyDir = EMPTY_STRING;
- String absolutePath = parentPath.toString();
- if (absolutePath != null && !absolutePath.equals(EMPTY_STRING)) {
- policyDir = absolutePath.substring(absolutePath.lastIndexOf("\\") + 1, absolutePath.length());
- if (policyDir == null || policyDir.equals(EMPTY_STRING)) {
- policyDir = absolutePath.substring(absolutePath.lastIndexOf("/") + 1, absolutePath.length());
- }
- }
+ if (Files.notExists(newFile)) {
+ return newFile;
+ }
+ return null;
+ }
- String fileName = "default";
- if (policyDir != null && !policyDir.equals(EMPTY_STRING)) {
- if(policyConfigType.equals("ClosedLoop_PM")){
- fileName = policyType + "_" + "PM" + "_" +java.lang.String.format(policyFileName) + "." +version +".xml";
- }else if(policyConfigType.equals("ClosedLoop_Fault")){
- fileName = policyType + "_" + "Fault" + "_" +java.lang.String.format(policyFileName) + "." + version + ".xml";
- }else if(policyConfigType.equals("ClosedLoop_Fault")){
- fileName = policyType + "_" + "Fault" + "_" +java.lang.String.format(policyFileName) + "." + version + ".xml";
- }else if(policyConfigType.equals("DCAE Micro Service")){
- fileName = policyType + "_" + "MS" + "_" + java.lang.String.format(policyFileName) + "." + version + ".xml";
- }
- }
- if (fileName != null) {
- newFile = Paths.get(parentPath.toString(), fileName);
- }
- if (Files.notExists(newFile)) {
- return newFile;
+ protected Path getNextLoopFilename(Path parentPath, String policyType, String policyConfigType, String policyFileName, Integer version) {
+ policyType = FilenameUtils.removeExtension(policyType);
+ policyConfigType = FilenameUtils.removeExtension(policyConfigType);
+ policyFileName = FilenameUtils.removeExtension(policyFileName);
+ Path newFile = null;
+ String policyDir = EMPTY_STRING;
+ String absolutePath = parentPath.toString();
+ if (absolutePath != null && !absolutePath.equals(EMPTY_STRING)) {
+ policyDir = absolutePath.substring(absolutePath.lastIndexOf("\\") + 1, absolutePath.length());
+ if (policyDir == null || policyDir.equals(EMPTY_STRING)) {
+ policyDir = absolutePath.substring(absolutePath.lastIndexOf("/") + 1, absolutePath.length());
}
- return null;
}
-
-
- //create policy once all the validations are completed
- protected Map<String, String> createPolicy(final Path policyPath, final Object policyData) {
- Map<String, String> success = new HashMap<String, String>();
- //
- // Is the root a PolicySet or Policy?
- //
-
- if (policyData instanceof PolicyType) {
- //
- // Write it out
- //
- //Does not need to be XACMLPolicyWriterWithPapNotify since it is already in the PAP
- //and this transaction is intercepted up stream.
- InputStream inputStream = XACMLPolicyWriter.getXmlAsInputStream((PolicyType) policyData);
- try {
- PolicyDef policyDef = DOMPolicyDef.load(inputStream);
- if (policyDef != null) {
- //This is does not need to be XACMLPolicyWriterWithPapNotification since it is already in the PAP
- //and the transaction was intercepted up stream
- finalPolicyPath = XACMLPolicyWriter.writePolicyFile(policyPath, (PolicyType) policyData);
- this.setFinalPolicyPath(finalPolicyPath);
- } else{
- success.put("validation", "PolicyDef Validation Failed");
- }
- } catch (Exception e) {
- success.put("error", "Validation Failed");
- }
-
- } else {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Unknown data type sent back.");
- PolicyLogger.error("Unknown data type sent back.");
- return success;
+
+ String fileName = "default";
+ if (policyDir != null && !policyDir.equals(EMPTY_STRING)) {
+ if(policyConfigType.equals("ClosedLoop_PM")){
+ fileName = policyType + "_" + "PM" + "_" +java.lang.String.format(policyFileName) + "." +version +".xml";
+ }else if(policyConfigType.equals("ClosedLoop_Fault")){
+ fileName = policyType + "_" + "Fault" + "_" +java.lang.String.format(policyFileName) + "." + version + ".xml";
+ }else if(policyConfigType.equals("ClosedLoop_Fault")){
+ fileName = policyType + "_" + "Fault" + "_" +java.lang.String.format(policyFileName) + "." + version + ".xml";
+ }else if(policyConfigType.equals("Micro Service")){
+ fileName = policyType + "_" + "MS" + "_" + java.lang.String.format(policyFileName) + "." + version + ".xml";
}
+ }
+ if (fileName != null) {
+ newFile = Paths.get(parentPath.toString(), fileName);
+ }
+ if (Files.notExists(newFile)) {
+ return newFile;
+ }
+ return null;
+ }
+
+
+ //create policy once all the validations are completed
+ protected Map<String, String> createPolicy(final Path policyPath, final Object policyData) {
+ Map<String, String> success = new HashMap<String, String>();
+ //
+ // Is the root a PolicySet or Policy?
+ //
+
+ if (policyData instanceof PolicyType) {
//
- // Did it get written?
+ // Write it out
//
- if (finalPolicyPath == null || !Files.exists(finalPolicyPath)) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Failed to write policy file.");
- PolicyLogger.error("Failed to write policy file.");
- return success;
- }
+ //Does not need to be XACMLPolicyWriterWithPapNotify since it is already in the PAP
+ //and this transaction is intercepted up stream.
+ InputStream inputStream = XACMLPolicyWriter.getXmlAsInputStream((PolicyType) policyData);
try {
- success.put("success", "success");
- } finally {
- // vaadin framework will handle exception.
+ PolicyDef policyDef = DOMPolicyDef.load(inputStream);
+ if (policyDef == null) {
+ success.put("validation", "PolicyDef Validation Failed");
+ }else{
+ success.put("success", "success");
+ }
+ } catch (Exception e) {
+ success.put("error", "Validation Failed");
}
+ } else {
+ PolicyLogger.error("Unknown data type sent back.");
return success;
}
-
- public static String getConfigHome(){
- try {
- loadWebapps();
- } catch (Exception e) {
- return null;
- }
- return configHome;
+ return success;
+ }
+
+ public static String getConfigHome(){
+ try {
+ loadWebapps();
+ } catch (Exception e) {
+ return null;
}
-
- public static String getActionHome(){
- try {
- loadWebapps();
- } catch (Exception e) {
- return null;
- }
- return actionHome;
+ return configHome;
+ }
+
+ public static String getActionHome(){
+ try {
+ loadWebapps();
+ } catch (Exception e) {
+ return null;
}
-
- private static void loadWebapps() throws Exception{
- if(actionHome == null || configHome == null){
- Path webappsPath = Paths.get(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_WEBAPPS));
- //Sanity Check
- if (webappsPath == null) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Invalid Webapps Path Location property : " + XACMLRestProperties.PROP_PAP_WEBAPPS);
- PolicyLogger.error("Invalid Webapps Path Location property : " + XACMLRestProperties.PROP_PAP_WEBAPPS);
- throw new Exception("Invalid Webapps Path Location property : " + XACMLRestProperties.PROP_PAP_WEBAPPS);
- }
- Path webappsPathConfig;
- Path webappsPathAction;
- if(webappsPath.toString().contains("\\"))
- {
- webappsPathConfig = Paths.get(webappsPath.toString()+"\\Config");
- webappsPathAction = Paths.get(webappsPath.toString()+"\\Action");
- }
- else
- {
- webappsPathConfig = Paths.get(webappsPath.toString()+"/Config");
- webappsPathAction = Paths.get(webappsPath.toString()+"/Action");
- }
- if (Files.notExists(webappsPathConfig))
- {
- try {
- Files.createDirectories(webappsPathConfig);
- } catch (IOException e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Failed to create config directory: "
- //+ webappsPathConfig.toAbsolutePath().toString(), e);
- PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "Policy", "Failed to create config directory");
- }
+ return actionHome;
+ }
+
+ private static void loadWebapps() throws Exception{
+ if(actionHome == null || configHome == null){
+ Path webappsPath = Paths.get(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_WEBAPPS));
+ //Sanity Check
+ if (webappsPath == null) {
+ PolicyLogger.error("Invalid Webapps Path Location property : " + XACMLRestProperties.PROP_PAP_WEBAPPS);
+ throw new Exception("Invalid Webapps Path Location property : " + XACMLRestProperties.PROP_PAP_WEBAPPS);
+ }
+ Path webappsPathConfig;
+ Path webappsPathAction;
+ if(webappsPath.toString().contains("\\")){
+ webappsPathConfig = Paths.get(webappsPath.toString()+"\\Config");
+ webappsPathAction = Paths.get(webappsPath.toString()+"\\Action");
+ }else{
+ webappsPathConfig = Paths.get(webappsPath.toString()+"/Config");
+ webappsPathAction = Paths.get(webappsPath.toString()+"/Action");
+ }
+ if(Files.notExists(webappsPathConfig)){
+ try {
+ Files.createDirectories(webappsPathConfig);
+ } catch (IOException e) {
+ PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "Policy", "Failed to create config directory");
}
- if (Files.notExists(webappsPathAction))
- {
- try {
- Files.createDirectories(webappsPathAction);
- } catch (IOException e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Failed to create config directory: "
- //+ webappsPathAction.toAbsolutePath().toString(), e);
- PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "Policy", "Failed to create config directory");
- }
+ }
+ if(Files.notExists(webappsPathAction)){
+ try {
+ Files.createDirectories(webappsPathAction);
+ } catch (IOException e) {
+ PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "Policy", "Failed to create config directory");
}
- actionHome = webappsPathAction.toString();
- configHome = webappsPathConfig.toString();
}
+ actionHome = webappsPathAction.toString();
+ configHome = webappsPathConfig.toString();
}
-
- protected String getParentPathSubScopeDir() {
-
- final Path gitPath = Paths.get(policyAdapter.getUserGitPath().toString());
- String policyDir = policyAdapter.getParentPath().toString();
- int startIndex = policyDir.indexOf(gitPath.toString()) + gitPath.toString().length() + 1;
- policyDir = policyDir.substring(startIndex, policyDir.length());
-
- return policyDir;
- }
+ }
+ protected String getParentPathSubScopeDir() {
+ final Path gitPath = Paths.get(policyAdapter.getUserGitPath().toString());
+ String policyDir = policyAdapter.getParentPath().toString();
+ int startIndex = policyDir.indexOf(gitPath.toString()) + gitPath.toString().length() + 1;
+ policyDir = policyDir.substring(startIndex, policyDir.length());
+ return policyDir;
+ }
- public boolean validateConfigForm() {
- // TODO Auto-generated method stub
- return true;
- }
- /**
- * @return the preparedToSave
- */
- public boolean isPreparedToSave() {
- return preparedToSave;
- }
+ public boolean validateConfigForm() {
+ return true;
+ }
- /**
- * @param preparedToSave the preparedToSave to set
- */
- protected void setPreparedToSave(boolean preparedToSave) {
- this.preparedToSave = preparedToSave;
- }
+ /**
+ * @return the preparedToSave
+ */
+ public boolean isPreparedToSave() {
+ return preparedToSave;
+ }
+
+ /**
+ * @param preparedToSave the preparedToSave to set
+ */
+ protected void setPreparedToSave(boolean preparedToSave) {
+ this.preparedToSave = preparedToSave;
+ }
+
+ public boolean isPolicyExists() {
+ return policyExists;
+ }
+
+ public void setPolicyExists(boolean policyExists) {
+ this.policyExists = policyExists;
+ }
- public boolean isPolicyExists() {
- return policyExists;
- }
- public void setPolicyExists(boolean policyExists) {
- this.policyExists = policyExists;
- }
-
-
}
diff --git a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/PolicyDBDao.java b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/PolicyDBDao.java
index bdd7534d8..a63dacbfe 100644
--- a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/PolicyDBDao.java
+++ b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/PolicyDBDao.java
@@ -22,6 +22,7 @@ package org.openecomp.policy.pap.xacml.rest.components;
import java.io.ByteArrayInputStream;
import java.io.File;
+import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
@@ -68,14 +69,18 @@ import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathFactory;
+import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType;
+
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import org.openecomp.policy.common.logging.eelf.MessageCodes;
+import org.openecomp.policy.common.logging.eelf.PolicyLogger;
+import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
+import org.openecomp.policy.common.logging.flexlogger.Logger;
import org.openecomp.policy.pap.xacml.rest.XACMLPapServlet;
-import org.openecomp.policy.pap.xacml.rest.adapters.PolicyRestAdapter;
import org.openecomp.policy.rest.XACMLRestProperties;
+import org.openecomp.policy.rest.adapter.PolicyRestAdapter;
import org.openecomp.policy.rest.jpa.ActionBodyEntity;
import org.openecomp.policy.rest.jpa.ConfigurationDataEntity;
import org.openecomp.policy.rest.jpa.DatabaseLockEntity;
@@ -85,31 +90,20 @@ import org.openecomp.policy.rest.jpa.PolicyDBDaoEntity;
import org.openecomp.policy.rest.jpa.PolicyEntity;
import org.openecomp.policy.rest.jpa.PolicyVersion;
import org.openecomp.policy.rest.util.Webapps;
-import org.openecomp.policy.common.logging.eelf.MessageCodes;
-import org.openecomp.policy.common.logging.eelf.PolicyLogger;
-
-import org.xml.sax.InputSource;
-
-import org.openecomp.policy.xacml.api.XACMLErrorConstants;
import org.openecomp.policy.xacml.api.pap.EcompPDP;
import org.openecomp.policy.xacml.api.pap.EcompPDPGroup;
import org.openecomp.policy.xacml.api.pap.PAPPolicyEngine;
-
-import com.att.research.xacml.api.pap.PAPEngine;
-import com.att.research.xacml.api.pap.PAPException;
-import com.att.research.xacml.api.pap.PDP;
-//import com.att.research.xacml.api.pap.PDPGroup;
-import com.att.research.xacml.api.pap.PDPPolicy;
import org.openecomp.policy.xacml.std.pap.StdPDPGroup;
import org.openecomp.policy.xacml.std.pap.StdPDPPolicy;
import org.openecomp.policy.xacml.util.XACMLPolicyScanner;
import org.openecomp.policy.xacml.util.XACMLPolicyWriter;
-import com.att.research.xacml.util.XACMLProperties;
-
import org.w3c.dom.Document;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType;
-import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
-import org.openecomp.policy.common.logging.flexlogger.Logger;
+import org.xml.sax.InputSource;
+
+import com.att.research.xacml.api.pap.PAPException;
+import com.att.research.xacml.api.pap.PDP;
+import com.att.research.xacml.api.pap.PDPPolicy;
+import com.att.research.xacml.util.XACMLProperties;
public class PolicyDBDao {
private static final Logger logger = FlexLogger.getLogger(PolicyDBDao.class);
@@ -117,13 +111,13 @@ public class PolicyDBDao {
private EntityManagerFactory emf;
private static PolicyDBDao currentInstance = null;
private PAPPolicyEngine papEngine;
-
+
public static final String JSON_CONFIG = "JSON";
public static final String XML_CONFIG = "XML";
public static final String PROPERTIES_CONFIG = "PROPERTIES";
public static final String OTHER_CONFIG = "OTHER";
public static final String AUDIT_USER = "audit";
-
+
/**
* Get an instance of a PolicyDBDao. It creates one if it does not exist.
* Only one instance is allowed to be created per server.
@@ -142,7 +136,7 @@ public class PolicyDBDao {
}
return currentInstance;
}
-
+
/**
* Gets the current instance of PolicyDBDao.
* @return The instance of PolicyDBDao or throws exception if the given instance is null.
@@ -161,14 +155,12 @@ public class PolicyDBDao {
private PolicyDBDao(EntityManagerFactory emf){
logger.debug("PolicyDBDao(EntityManagerFactory emf) as PolicyDBDao("+emf+") called");
this.emf = emf;
-
+
//not needed in this release
if(!register()){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("This server's PolicyDBDao instance could not be registered and may not reveive updates");
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());
@@ -176,42 +168,40 @@ public class PolicyDBDao {
if(otherServers.size() < 1){
logger.warn("List of PolicyDBDao servers is empty or could not be retrieved");
}
- //otherServers = new LinkedList();
- //otherServers.add((Object)"http://localhost:8071/pap/");
}
-
+
//not static because we are going to be using the instance's emf
//waitTime in ms to wait for lock, or -1 to wait forever (no)
private void startTransactionSynced(EntityManager entityMgr,int waitTime){
logger.debug("\n\nstartTransactionSynced(EntityManager entityMgr,int waitTime) as "
+ "\n startTransactionSynced("+entityMgr+","+waitTime+") called\n\n");
DatabaseLockEntity lock = null;
-
+
entityMgr.setProperty("javax.persistence.query.timeout", waitTime);
entityMgr.getTransaction().begin();
-
+
+ if(logger.isDebugEnabled()){
+ Map<String,Object> properties = entityMgr.getProperties();
+ logger.debug("\n\nstartTransactionSynced():"
+ + "\n entityManager.getProperties() = " + properties
+ + "\n\n");
+ }
+ try{
if(logger.isDebugEnabled()){
- Map<String,Object> properties = entityMgr.getProperties();
logger.debug("\n\nstartTransactionSynced():"
- + "\n entityManager.getProperties() = " + properties
+ + "\n ATTEMPT to get the DB lock"
+ "\n\n");
}
- try{
- if(logger.isDebugEnabled()){
- logger.debug("\n\nstartTransactionSynced():"
- + "\n ATTEMPT to get the DB lock"
- + "\n\n");
- }
- lock = entityMgr.find(DatabaseLockEntity.class, 1, LockModeType.PESSIMISTIC_WRITE);
- if(logger.isDebugEnabled()){
- logger.debug("\n\nstartTransactionSynced():"
- + "\n GOT the DB lock"
- + "\n\n");
- }
- } catch(Exception e){
- System.out.println("Could not get lock entity");
- e.printStackTrace();
+ lock = entityMgr.find(DatabaseLockEntity.class, 1, LockModeType.PESSIMISTIC_WRITE);
+ if(logger.isDebugEnabled()){
+ logger.debug("\n\nstartTransactionSynced():"
+ + "\n GOT the DB lock"
+ + "\n\n");
}
+ } catch(Exception e){
+ System.out.println("Could not get lock entity");
+ e.printStackTrace();
+ }
if(lock == null){
throw new IllegalStateException("The lock row does not exist in the table. Please create a primary key with value = 1.");
}
@@ -229,31 +219,29 @@ public class PolicyDBDao {
try{
Query getPolicyDBDaoEntityQuery = em.createNamedQuery("PolicyDBDaoEntity.findAll");
policyDBDaoEntityList = getPolicyDBDaoEntityQuery.getResultList();
-
+
} catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught Exception on: getPolicyDBDaoEntityQuery.getResultList()",e);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Exception querying for other registered PolicyDBDaos");
logger.warn("List of remote PolicyDBDaos will be empty");
}
try{
- em.getTransaction().commit();
+ em.getTransaction().commit();
} catch(Exception e){
try{
em.getTransaction().rollback();
} catch(Exception e2){
-
+
}
}
em.close();
return policyDBDaoEntityList;
}
-
+
public PolicyDBDaoTransaction getNewTransaction(){
logger.debug("getNewTransaction() as getNewTransaction() called");
return (PolicyDBDaoTransaction)(new PolicyDBDaoTransactionInstance());
}
-
+
/*
* Because the normal transactions are not used in audits, we can use the same transaction
* mechanism to get a transaction and obtain the emlock and the DB lock. We just need to
@@ -268,8 +256,8 @@ public class PolicyDBDao {
int auditTimeoutMs = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_AUDIT_TIMEOUT));
return (PolicyDBDaoTransaction)(new PolicyDBDaoTransactionInstance(auditTimeoutMs, auditWaitMs));
}
-
-
+
+
/**
* Checks if two strings are equal. Null strings ARE allowed.
* @param one A String or null to compare
@@ -285,7 +273,7 @@ public class PolicyDBDao {
}
return one.equals(two);
}
-
+
/**
* Computes the scope in dotted format based on an absolute path and a path that divides the scope.
* @param fullPath An absolute path including scope folders and other folders(does not have to be absolute, must just contain scope and other folders before)
@@ -344,7 +332,7 @@ public class PolicyDBDao {
//if there is no comma, for some reason there is no username and password, so don't try to cut them off
return urlUserPass;
}
-
+
private static String encryptPassword(String password) throws Exception{
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, aesKey());
@@ -352,7 +340,7 @@ public class PolicyDBDao {
System.out.println(encryption);
return new String(Base64.getMimeEncoder().encode(encryption),"UTF-8");
}
-
+
private static String decryptPassword(String encryptedPassword) throws Exception{
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, aesKey());
@@ -386,8 +374,6 @@ public class PolicyDBDao {
em.getTransaction().commit();
em.close();
} catch(Exception e2){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("COULD NOT CREATE DATABASELOCK ROW. WILL TRY ONE MORE TIME \n\n Exception: \n" + e2);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e2, "PolicyDBDao", "COULD NOT CREATE DATABASELOCK ROW. WILL TRY ONE MORE TIME");
e2.printStackTrace();
}
@@ -396,10 +382,7 @@ public class PolicyDBDao {
try{
startTransactionSynced(em, 1000);
} catch(Exception e3){
- //still not working
String msg = "DATABASE LOCKING NOT WORKING. CONCURRENCY CONTROL NOT WORKING";
- //TODO:EELF Cleanup - Remove logger
- //logger.error(msg);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e3, "PolicyDBDao", msg);
throw new IllegalStateException("msg" + "\n" + e3);
}
@@ -410,56 +393,35 @@ public class PolicyDBDao {
Query getPolicyDBDaoEntityQuery = em.createQuery("SELECT e FROM PolicyDBDaoEntity e WHERE e.policyDBDaoUrl=:url");
getPolicyDBDaoEntityQuery.setParameter("url", url[0]);
if(foundPolicyDBDaoEntity == null){
- //em.getTransaction().begin();
PolicyDBDaoEntity newPolicyDBDaoEntity = new PolicyDBDaoEntity();
em.persist(newPolicyDBDaoEntity);
newPolicyDBDaoEntity.setPolicyDBDaoUrl(url[0]);
newPolicyDBDaoEntity.setDescription("PAP server at "+url[0]);
newPolicyDBDaoEntity.setUsername(url[1]);
try{
- newPolicyDBDaoEntity.setPassword(encryptPassword(url[2]));
+ newPolicyDBDaoEntity.setPassword(encryptPassword(url[2]));
} catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Could not encrypt PAP password",e);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Could not encrypt PAP password");
}
- /*
try{
em.getTransaction().commit();
- } catch(RollbackException e){
- logger.error("Caught RollbackException during PolicyDBDao Registration on: em.getTransaction().commit()",e);
- em.close();
- return false;
- } catch(Exception e2){
- logger.error("Caught Exception during PolicyDBDao Registration on: em.getTransaction().commit()",e2);
- em.close();
- return false;
- }
- */
- try{
- em.getTransaction().commit();
- } catch(Exception e){
- try{
- em.getTransaction().rollback();
- } catch(Exception e2){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Could not add new PolicyDBDao to the database",e);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e2, "PolicyDBDao", "Could not add new PolicyDBDao to the database");
- }
+ } catch(Exception e){
+ try{
+ em.getTransaction().rollback();
+ } catch(Exception e2){
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e2, "PolicyDBDao", "Could not add new PolicyDBDao to the database");
}
+ }
} else {
- //em.getTransaction().begin();
//just want to update in order to change modified date
String encryptedPassword = null;
try{
- encryptedPassword = encryptPassword(url[2]);
+ encryptedPassword = encryptPassword(url[2]);
} catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Could not encrypt PAP password",e);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Could not encrypt PAP password");
}
if(url[1] != null && !stringEquals(url[1], foundPolicyDBDaoEntity.getUsername())){
- foundPolicyDBDaoEntity.setUsername(url[1]);
+ foundPolicyDBDaoEntity.setUsername(url[1]);
}
if(encryptedPassword != null && !stringEquals(encryptedPassword, foundPolicyDBDaoEntity.getPassword())){
foundPolicyDBDaoEntity.setPassword(encryptedPassword);
@@ -467,28 +429,13 @@ public class PolicyDBDao {
foundPolicyDBDaoEntity.preUpdate();
try{
em.getTransaction().commit();
- } catch(Exception e){
- try{
- em.getTransaction().rollback();
- } catch(Exception e2){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Could not update PolicyDBDao in the database",e);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e2, "PolicyDBDao", "Could not update PolicyDBDao in the database");
- }
+ } catch(Exception e){
+ try{
+ em.getTransaction().rollback();
+ } catch(Exception e2){
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e2, "PolicyDBDao", "Could not update PolicyDBDao in the database");
}
- /*
- try{
- em.getTransaction().commit();
- } catch(RollbackException e){
- logger.error("Caught RollbackException during PolicyDBDao Registration on: em.getTransaction().commit()",e);
- em.close();
- return false;
- } catch(Exception e2){
- logger.error("Caught Exception during PolicyDBDao Registration on: em.getTransaction().commit()",e2);
- em.getTransaction().rollback();
- return false;
}
- */
}
em.close();
logger.debug("\nPolicyDBDao.register(). Success!!\n");
@@ -500,12 +447,12 @@ public class PolicyDBDao {
public void notifyOthers(long entityId, String entityType, String newGroupId){
logger.debug("notifyOthers(long entityId, String entityType, long newGroupId) as notifyOthers("+entityId+","+entityType+","+newGroupId+") called");
LinkedList<Thread> notifyThreads = new LinkedList<Thread>();
-
+
//we're going to run notiftions in parellel threads to speed things up
for(Object obj : otherServers){
Thread newNotifyThread = new Thread(new NotifyOtherThread(obj, entityId, entityType, newGroupId));
-
+
newNotifyThread.start();
notifyThreads.add(newNotifyThread);
@@ -520,7 +467,7 @@ public class PolicyDBDao {
}
}
-
+
}
private class NotifyOtherThread implements Runnable {
@@ -542,7 +489,7 @@ public class PolicyDBDao {
String username = dbdEntity.getUsername();
String password;
try{
- password = decryptPassword(dbdEntity.getPassword());
+ password = decryptPassword(dbdEntity.getPassword());
} catch(Exception e){
//if we can't decrypt, might as well try it anyway
password = dbdEntity.getPassword();
@@ -551,8 +498,6 @@ public class PolicyDBDao {
String encoding = encoder.encodeToString((username+":"+password).getBytes(StandardCharsets.UTF_8));
HttpURLConnection connection = null;
UUID requestID = UUID.randomUUID();
- //loggingContext.setRequestID(requestID.toString());
- //loggingContext.transactionStarted();
URL url;
try {
String papUrl = getPapUrlUserPass()[0];
@@ -575,7 +520,7 @@ public class PolicyDBDao {
return;
}
if(newGroupId == null){
- url = new URL(((String)o)+"?policydbdaourl="+papUrl+"&entityid="+entityId+"&entitytype="+entityType);
+ url = new URL(((String)o)+"?policydbdaourl="+papUrl+"&entityid="+entityId+"&entitytype="+entityType);
} else {
url = new URL(((String)o)+"?policydbdaourl="+papUrl+"&entityid="+entityId+"&entitytype="+entityType+"&extradata="+newGroupId);
}
@@ -596,45 +541,45 @@ public class PolicyDBDao {
//
// Setup our method and headers
//
- try {
+ try {
connection.setRequestMethod("PUT");
} catch (ProtocolException e) {
//why would this error ever occur?
logger.warn("Caught ProtocolException on connection.setRequestMethod(\"PUT\");",e);
return;
}
- connection.setRequestProperty("Authorization", "Basic " + encoding);
+ connection.setRequestProperty("Authorization", "Basic " + encoding);
connection.setRequestProperty("Accept", "text/x-java-properties");
- connection.setRequestProperty("Content-Type", "text/x-java-properties");
- connection.setRequestProperty("requestID", requestID.toString());
- int readTimeout;
- try{
- readTimeout = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_NOTIFY_TIMEOUT));
-
- } catch(Exception e){
- logger.error("xacml.rest.pap.notify.timeoutms property not set, using a default.");
- readTimeout = 10000;
- }
- connection.setReadTimeout(readTimeout);
- connection.setConnectTimeout(readTimeout);
- connection.setUseCaches(false);
- //
- // Adding this in. It seems the HttpUrlConnection class does NOT
- // properly forward our headers for POST re-direction. It does so
- // for a GET re-direction.
- //
- // So we need to handle this ourselves.
- //
- connection.setInstanceFollowRedirects(false);
+ connection.setRequestProperty("Content-Type", "text/x-java-properties");
+ connection.setRequestProperty("requestID", requestID.toString());
+ int readTimeout;
+ try{
+ readTimeout = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_NOTIFY_TIMEOUT));
+
+ } catch(Exception e){
+ logger.error("xacml.rest.pap.notify.timeoutms property not set, using a default.");
+ readTimeout = 10000;
+ }
+ connection.setReadTimeout(readTimeout);
+ connection.setConnectTimeout(readTimeout);
+ connection.setUseCaches(false);
+ //
+ // Adding this in. It seems the HttpUrlConnection class does NOT
+ // properly forward our headers for POST re-direction. It does so
+ // for a GET re-direction.
+ //
+ // So we need to handle this ourselves.
+ //
+ connection.setInstanceFollowRedirects(false);
connection.setDoOutput(true);
connection.setDoInput(true);
- try {
+ try {
connection.connect();
} catch (Exception e) {
logger.warn("Caught exception on: connection.connect()",e);
return;
}
- try {
+ try {
if (connection.getResponseCode() == 200) {
logger.info("Received response 200 from pap server on notify");
//notified = true;
@@ -644,12 +589,12 @@ public class PolicyDBDao {
} catch (Exception e) {
logger.warn("Caught Exception on: connection.getResponseCode() ", e);
}
-
-
+
+
connection.disconnect();
}
}
-
+
private static String getElementFromXMLString(String element, String xml) {
InputSource source = new InputSource(new StringReader(xml));
@@ -661,14 +606,14 @@ public class PolicyDBDao {
XPathFactory xpathFactory = XPathFactory.newInstance();
XPath xpath = xpathFactory.newXPath();
-
+
if (element.endsWith("/")){
element = element.substring(0, element.length() -1);
}
description = xpath.evaluate("/Policy" + element + "/text()", document);
}catch(Exception e){
-
+
}
@@ -686,20 +631,19 @@ public class PolicyDBDao {
XPathFactory xpathFactory = XPathFactory.newInstance();
XPath xpath = xpathFactory.newXPath();
-
+
description = xpath.evaluate(expression, document);
}catch(Exception e){
-
+
}
System.out.println("description_" + description);
return description;
}
-
+
private static String getDescriptionFromXacml(String xacmlData){
- //FIXME completely untested. Probably not a good idea to use. UPDATE: kind of tested
String openTag = "<Description>";
String closeTag = "</Description>";
int descIndex = xacmlData.indexOf(openTag);
@@ -707,39 +651,72 @@ public class PolicyDBDao {
String desc = xacmlData.substring(descIndex+openTag.length(),endDescIndex);
return desc;
}
+
private final String POLICY_NOTIFICATION = "policy";
private final String PDP_NOTIFICATION = "pdp";
private final String GROUP_NOTIFICATION = "group";
public void handleIncomingHttpNotification(String url, String entityId, String entityType, String extraData, XACMLPapServlet xacmlPapServlet){
logger.info("DBDao url: " + url + " has reported an update on "+entityType+" entity "+entityId);
PolicyDBDaoTransaction transaction = this.getNewTransaction();
+ //although its named retries, this is the total number of tries
+ int retries;
+ try{
+ retries = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_INCOMINGNOTIFICATION_TRIES));
+
+ } catch(Exception e){
+ logger.error("xacml.rest.pap.incomingnotification.tries property not set, using a default of 3.");
+ retries = 3;
+ }
+ //if someone sets it to some dumb value, we need to make sure it will try at least once
+ if(retries < 1){
+ retries = 1;
+ }
+ int pauseBetweenRetries = 1000;
switch(entityType){
-
+
case POLICY_NOTIFICATION:
- try{
- handleIncomingPolicyChange(url, entityId,extraData);
- } catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught exception on handleIncomingPolicyChange("+url+", "+entityId+", "+extraData+")",e);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught exception on handleIncomingPolicyChange("+url+", "+entityId+", "+extraData+")");
+ for(int i=0; i<retries;i++){
+ try{
+ handleIncomingPolicyChange(url, entityId,extraData);
+ break;
+ } catch(Exception e){
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught exception on handleIncomingPolicyChange("+url+", "+entityId+", "+extraData+")");
+ }
+ try{
+ Thread.sleep(pauseBetweenRetries);
+ }catch(InterruptedException ie){
+ break;
+ }
}
break;
case PDP_NOTIFICATION:
- try{
- handleIncomingPdpChange(url, entityId, transaction);
- } catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught exception on handleIncomingPdpChange("+url+", "+entityId+", "+transaction+")",e);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught exception on handleIncomingPdpChange("+url+", "+entityId+", "+transaction+")");
+ for(int i=0; i<retries;i++){
+ try{
+ handleIncomingPdpChange(url, entityId, transaction);
+ break;
+ } catch(Exception e){
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught exception on handleIncomingPdpChange("+url+", "+entityId+", "+transaction+")");
+ }
+ try{
+ Thread.sleep(pauseBetweenRetries);
+ }catch(InterruptedException ie){
+ break;
+ }
}
break;
case GROUP_NOTIFICATION:
- try{
- handleIncomingGroupChange(url, entityId, extraData, transaction, xacmlPapServlet);
- }catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught exception on handleIncomingGroupChange("+url+", "+entityId+", "+extraData+", "+transaction+", "+xacmlPapServlet+")",e);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught exception on handleIncomingGroupChange("+url+", "+entityId+", "+extraData+", "+transaction+", "+xacmlPapServlet+")");
+ for(int i=0; i<retries;i++){
+ try{
+ handleIncomingGroupChange(url, entityId, extraData, transaction, xacmlPapServlet);
+ break;
+ }catch(Exception e){
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught exception on handleIncomingGroupChange("+url+", "+entityId+", "+extraData+", "+transaction+", "+xacmlPapServlet+")");
+ }
+ try{
+ Thread.sleep(pauseBetweenRetries);
+ }catch(InterruptedException ie){
+ break;
+ }
}
break;
}
@@ -747,7 +724,6 @@ public class PolicyDBDao {
transaction.rollbackTransaction();
}
private void handleIncomingGroupChange(String url, String groupId, String extraData,PolicyDBDaoTransaction transaction,XACMLPapServlet xacmlPapServlet) throws PAPException{
-
GroupEntity groupRecord = null;
long groupIdLong = -1;
try{
@@ -756,10 +732,8 @@ public class PolicyDBDao {
throw new IllegalArgumentException("groupId "+groupId+" cannot be parsed into a long");
}
try{
- groupRecord = transaction.getGroup(groupIdLong);
+ groupRecord = transaction.getGroup(groupIdLong);
} catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught Exception trying to get pdp group record with transaction.getGroup("+groupIdLong+");",e);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to get pdp group record with transaction.getGroup("+groupIdLong+");");
throw new PAPException("Could not get local group "+groupIdLong);
}
@@ -773,7 +747,6 @@ public class PolicyDBDao {
localGroup = papEngine.getGroup(groupRecord.getGroupId());
} catch (Exception e) {
logger.warn("Caught PAPException trying to get local pdp group with papEngine.getGroup("+groupId+");",e);
- //throw new PAPException("Could not get local group "+groupId);
}
if(localGroup == null && extraData != null){
//here we can try to load an old group id from the extraData
@@ -786,21 +759,15 @@ public class PolicyDBDao {
if(localGroup != null && groupRecord.isDeleted()){
EcompPDPGroup newLocalGroup = null;
if(extraData != null){
- try {
- newLocalGroup = papEngine.getGroup(extraData);
- } catch (PAPException e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught PAPException trying to get new pdp group with papEngine.getGroup("+extraData+");",e);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught PAPException trying to get new pdp group with papEngine.getGroup("+extraData+");");
- //throw new PAPException("Could not get new local group "+newGroupId);
-
- }
+ try {
+ newLocalGroup = papEngine.getGroup(extraData);
+ } catch (PAPException e) {
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught PAPException trying to get new pdp group with papEngine.getGroup("+extraData+");");
+ }
}
try {
papEngine.removeGroup(localGroup, newLocalGroup);
} catch (NullPointerException | PAPException e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught PAPException trying to get remove pdp group with papEngine.removeGroup("+localGroup+", "+newLocalGroup+");",e);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught PAPException trying to get remove pdp group with papEngine.removeGroup("+localGroup+", "+newLocalGroup+");");
throw new PAPException("Could not remove group "+groupId);
}
@@ -810,19 +777,14 @@ public class PolicyDBDao {
try {
papEngine.newGroup(groupRecord.getgroupName(), groupRecord.getDescription());
} catch (NullPointerException | PAPException e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught PAPException trying to create pdp group with papEngine.newGroup(groupRecord.getgroupName(), groupRecord.getDescription());",e);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught PAPException trying to create pdp group with papEngine.newGroup(groupRecord.getgroupName(), groupRecord.getDescription());");
throw new PAPException("Could not create group "+groupRecord);
}
try {
localGroup = papEngine.getGroup(groupRecord.getGroupId());
} catch (PAPException e1) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("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",e1);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e1, "PolicyDBDao", "Caught PAPException trying to get pdp group we just created with papEngine.getGroup(groupRecord.getGroupId());\nAny PDPs or policies in the new group may not have been added");
return;
- //throw new PAPException("Could not get group "+groupRecord);
}
//add possible pdps to group
List<?> pdpsInGroup = transaction.getPdpsInGroup(Long.parseLong(groupRecord.getGroupId()));
@@ -831,8 +793,6 @@ public class PolicyDBDao {
try {
papEngine.newPDP(pdp.getPdpId(), localGroup, pdp.getPdpName(), pdp.getDescription(), pdp.getJmxPort());
} catch (NullPointerException | PAPException e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught PAPException trying to get create pdp with papEngine.newPDP(pdp.getPdpId(), localGroup, pdp.getPdpName(), pdp.getDescription(), pdp.getJmxPort());",e);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught PAPException trying to get create pdp with papEngine.newPDP(pdp.getPdpId(), localGroup, pdp.getPdpName(), pdp.getDescription(), pdp.getJmxPort());");
throw new PAPException("Could not create pdp "+pdp);
}
@@ -855,8 +815,6 @@ public class PolicyDBDao {
papEngine.SetDefaultGroup(localGroup);
return;
} catch (PAPException e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught PAPException trying to set default group with papEngine.SetDefaultGroup("+localGroupClone+");",e);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught PAPException trying to set default group with papEngine.SetDefaultGroup("+localGroupClone+");");
throw new PAPException("Could not set default group to "+localGroupClone);
}
@@ -877,16 +835,14 @@ public class PolicyDBDao {
}
if(needToUpdate){
try {
-
+
papEngine.updateGroup(localGroupClone);
} catch (PAPException e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught PAPException trying to update group with papEngine.updateGroup("+localGroupClone+");",e);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught PAPException trying to update group with papEngine.updateGroup("+localGroupClone+");");
throw new PAPException("Could not update group "+localGroupClone);
}
}
-
+
}
//call command that corresponds to the change that was made
}
@@ -916,8 +872,7 @@ public class PolicyDBDao {
try {
policyStream.close();
} catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
+ PolicyLogger.error(e.getMessage());
}
}
}
@@ -927,22 +882,40 @@ public class PolicyDBDao {
group.setPolicies(newPolicySet);
}
return didUpdate;
-
+
}
private String removeExtensionAndVersionFromPolicyName(String originalPolicyName){
- String policyName = originalPolicyName;
- try{
- policyName = removeFileExtension(policyName);
- policyName = policyName.substring(0,policyName.lastIndexOf('.'));
- if(isNullOrEmpty(policyName)){
- throw new Exception();
- }
- } catch(Exception e){
- policyName = originalPolicyName;
- }
- return policyName;
- }
-
+ return getPolicyNameAndVersionFromPolicyFileName(originalPolicyName)[0];
+ }
+
+ /**
+ * Splits apart the policy name and version from a policy file path
+ * @param originalPolicyName: a policy file name ex: Config_policy.2.xml
+ * @return An array [0]: The policy name, [1]: the policy version, as a string
+ */
+ private String[] getPolicyNameAndVersionFromPolicyFileName(String originalPolicyName){
+ String policyName = originalPolicyName;
+ String[] nameAndVersion = new String[2];
+ try{
+ policyName = removeFileExtension(policyName);
+ nameAndVersion[0] = policyName.substring(0,policyName.lastIndexOf('.'));
+ if(isNullOrEmpty(nameAndVersion[0])){
+ throw new Exception();
+ }
+ } catch(Exception e){
+ nameAndVersion[0] = originalPolicyName;
+ }
+ try{
+ nameAndVersion[1] = policyName.substring(policyName.lastIndexOf('.')+1);
+ if(isNullOrEmpty(nameAndVersion[1])){
+ throw new Exception();
+ }
+ } catch(Exception e){
+ nameAndVersion[1] = "1";
+ }
+ return nameAndVersion;
+ }
+
private void handleIncomingPdpChange(String url, String pdpId, PolicyDBDaoTransaction transaction) throws PAPException{
//get pdp
long pdpIdLong = -1;
@@ -953,10 +926,8 @@ public class PolicyDBDao {
}
PdpEntity pdpRecord = null;
try{
- pdpRecord = transaction.getPdp(pdpIdLong);
+ pdpRecord = transaction.getPdp(pdpIdLong);
}catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught Exception trying to get pdp record with transaction.getPdp("+pdpIdLong+");",e);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to get pdp record with transaction.getPdp("+pdpIdLong+");");
throw new PAPException("Could not get local pdp "+pdpIdLong);
}
@@ -973,8 +944,6 @@ public class PolicyDBDao {
try {
papEngine.removePDP((EcompPDP) localPdp);
} catch (PAPException e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught PAPException trying to get remove pdp with papEngine.removePDP("+localPdp+");",e);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught PAPException trying to get remove pdp with papEngine.removePDP("+localPdp+");");
throw new PAPException("Could not remove pdp "+pdpId);
}
@@ -982,21 +951,16 @@ public class PolicyDBDao {
else if(localPdp == null){
//add new pdp
//get group
-
EcompPDPGroup localGroup = null;
try {
localGroup = papEngine.getGroup(pdpRecord.getGroup().getGroupId());
} catch (PAPException e1) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught PAPException trying to get local group to add pdp to with papEngine.getGroup(pdpRecord.getGroup().getGroupId());",e1);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e1, "PolicyDBDao", "Caught PAPException trying to get local group to add pdp to with papEngine.getGroup(pdpRecord.getGroup().getGroupId());");
throw new PAPException("Could not get local group");
}
try {
papEngine.newPDP(pdpRecord.getPdpId(), localGroup, pdpRecord.getPdpName(), pdpRecord.getDescription(), pdpRecord.getJmxPort());
} catch (NullPointerException | PAPException e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught PAPException trying to create pdp with papEngine.newPDP("+pdpRecord.getPdpId()+", "+localGroup+", "+pdpRecord.getPdpName()+", "+pdpRecord.getDescription()+", "+pdpRecord.getJmxPort()+");",e);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught PAPException trying to create pdp with papEngine.newPDP("+pdpRecord.getPdpId()+", "+localGroup+", "+pdpRecord.getPdpName()+", "+pdpRecord.getDescription()+", "+pdpRecord.getJmxPort()+");");
throw new PAPException("Could not create pdp "+pdpRecord);
}
@@ -1012,33 +976,28 @@ public class PolicyDBDao {
needToUpdate = true;
}
String localPdpGroupId = null;
- try{
- localPdpGroupId = papEngine.getPDPGroup((EcompPDP) localPdp).getId();
- } catch(PAPException e){
- //could be null or something, just warn at this point
- logger.warn("Caught PAPException trying to get id of local group that pdp is in with localPdpGroupId = papEngine.getPDPGroup(localPdp).getId();",e);
- //throw new PAPException("Could not get local group");
- }
- if(!stringEquals(localPdpGroupId,pdpRecord.getGroup().getGroupId())){
- EcompPDPGroup newPdpGroup = null;
- try{
- newPdpGroup = papEngine.getGroup(pdpRecord.getGroup().getGroupId());
- }catch(PAPException e){
- //ok, now we have an issue. Time to stop things
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught PAPException trying to get id of local group to move pdp to with papEngine.getGroup(pdpRecord.getGroup().getGroupId());",e);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught PAPException trying to get id of local group to move pdp to with papEngine.getGroup(pdpRecord.getGroup().getGroupId());");
- throw new PAPException("Could not get local group");
- }
- try{
- papEngine.movePDP((EcompPDP) localPdp, newPdpGroup);
- }catch(PAPException e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught PAPException trying to move pdp with papEngine.movePDP(localPdp, newPdpGroup);",e);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught PAPException trying to move pdp with papEngine.movePDP(localPdp, newPdpGroup);");
- throw new PAPException("Could not move pdp "+localPdp);
- }
- }
+ try{
+ localPdpGroupId = papEngine.getPDPGroup((EcompPDP) localPdp).getId();
+ } catch(PAPException e){
+ //could be null or something, just warn at this point
+ logger.warn("Caught PAPException trying to get id of local group that pdp is in with localPdpGroupId = papEngine.getPDPGroup(localPdp).getId();",e);
+ }
+ if(!stringEquals(localPdpGroupId,pdpRecord.getGroup().getGroupId())){
+ EcompPDPGroup newPdpGroup = null;
+ try{
+ newPdpGroup = papEngine.getGroup(pdpRecord.getGroup().getGroupId());
+ }catch(PAPException e){
+ //ok, now we have an issue. Time to stop things
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught PAPException trying to get id of local group to move pdp to with papEngine.getGroup(pdpRecord.getGroup().getGroupId());");
+ throw new PAPException("Could not get local group");
+ }
+ try{
+ papEngine.movePDP((EcompPDP) localPdp, newPdpGroup);
+ }catch(PAPException e){
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught PAPException trying to move pdp with papEngine.movePDP(localPdp, newPdpGroup);");
+ throw new PAPException("Could not move pdp "+localPdp);
+ }
+ }
if(((PdpEntity) localPdp).getJmxPort() != pdpRecord.getJmxPort()){
((PdpEntity) localPdp).setJmxPort(pdpRecord.getJmxPort());
needToUpdate = true;
@@ -1047,8 +1006,6 @@ public class PolicyDBDao {
try {
papEngine.updatePDP((EcompPDP) localPdp);
} catch (PAPException e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught PAPException trying to update pdp with papEngine.updatePdp("+localPdp+");",e);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught PAPException trying to update pdp with papEngine.updatePdp("+localPdp+");");
throw new PAPException("Could not update pdp "+localPdp);
}
@@ -1061,16 +1018,16 @@ public class PolicyDBDao {
EntityManager em = emf.createEntityManager();
Query getPolicyEntityQuery = em.createNamedQuery("PolicyEntity.FindById");
getPolicyEntityQuery.setParameter("id", Long.valueOf(policyId));
-
+
@SuppressWarnings("unchecked")
List<PolicyEntity> policies = getPolicyEntityQuery.getResultList();
PolicyEntity policy = null;
if (policies.size() > 0){
policy = policies.get(0);
}
-
+
String policyRepo = buildPolicyScopeDirectory(policy);
-
+
Path policyPath = Paths.get(policyRepo);
String action = "unknown action";
try {
@@ -1080,19 +1037,19 @@ public class PolicyDBDao {
action = "delete";
Path newPath = Paths.get(policyPath.toString(), policy.getPolicyName());
Files.deleteIfExists(newPath);
-
+
Path subFile = null;
-
+
if (policy.getConfigurationData()!= null){
subFile = getPolicySubFile(policy.getConfigurationData().getConfigurationName(), "Config");
}else if(policy.getActionBodyEntity()!= null){
subFile = getPolicySubFile(policy.getActionBodyEntity().getActionBodyName(), "Action");
}
-
+
if(subFile != null){
Files.deleteIfExists(subFile);
}
-
+
}else{
logger.debug("Updating/Creating Policy: " + policy.getPolicyName());
action = "update";
@@ -1102,215 +1059,240 @@ public class PolicyDBDao {
if(!isNullOrEmpty(oldPathString)){
try{
String[] scopeName = getScopeAndNameAndType(oldPathString);
- Path oldPath = Paths.get(buildPolicyScopeDirectory(scopeName[0]),scopeName[1]);
- Files.delete(oldPath.toAbsolutePath());
+ Path oldPath = Paths.get(buildPolicyScopeDirectory(scopeName[0]),scopeName[1]);
+ Files.delete(oldPath.toAbsolutePath());
}catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Could not delete the old policy before rename: "+oldPathString,e);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Could not delete the old policy before rename: "+oldPathString);
}
}
Object policyData = XACMLPolicyScanner.readPolicy(IOUtils.toInputStream(policy.getPolicyData()));
XACMLPolicyWriter.writePolicyFile(newPath, (PolicyType) policyData);
-
+
if (policy.getConfigurationData()!= null){
if(!isNullOrEmpty(oldPathString)){
try{
- String[] oldPolicyScopeName = getScopeAndNameAndType(oldPathString);
- String oldConfigFileName = getConfigFile(oldPolicyScopeName[1],oldPolicyScopeName[0],policy.getConfigurationData().getConfigType());
- Path oldConfigFilePath = getPolicySubFile(oldConfigFileName, "Config");
- logger.debug("Trying to delete: "+oldConfigFilePath.toString());
- Files.delete(oldConfigFilePath);
+ String[] oldPolicyScopeName = getScopeAndNameAndType(oldPathString);
+ String oldConfigFileName = getConfigFile(oldPolicyScopeName[1],policy.getConfigurationData().getConfigType());
+ Path oldConfigFilePath = getPolicySubFile(oldConfigFileName, "Config");
+ logger.debug("Trying to delete: "+oldConfigFilePath.toString());
+ Files.delete(oldConfigFilePath);
}catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Could not delete the old policy config before rename for policy: "+oldPathString,e);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Could not delete the old policy config before rename for policy: "+oldPathString);
}
}
writePolicySubFile(policy, "Config");
-
+
}else if(policy.getActionBodyEntity()!= null){
if(!isNullOrEmpty(oldPathString)){
try{
- String[] oldPolicyScopeName = getScopeAndNameAndType(oldPathString);
- String oldActionFileName = getConfigFile(oldPolicyScopeName[1],oldPolicyScopeName[0],ConfigPolicy.JSON_CONFIG);
- Path oldActionFilePath = getPolicySubFile(oldActionFileName, "Action");
- logger.debug("Trying to delete: "+oldActionFilePath.toString());
- Files.delete(oldActionFilePath);
+ String[] oldPolicyScopeName = getScopeAndNameAndType(oldPathString);
+ String oldActionFileName = getConfigFile(oldPolicyScopeName[1],ConfigPolicy.JSON_CONFIG);
+ Path oldActionFilePath = getPolicySubFile(oldActionFileName, "Action");
+ logger.debug("Trying to delete: "+oldActionFilePath.toString());
+ Files.delete(oldActionFilePath);
}catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Could not delete the old policy action body before rename for policy: "+oldPathString,e);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Could not delete the old policy action body before rename for policy: "+oldPathString);
}
}
writePolicySubFile(policy, "Action");
}
-
+
}
} catch (IOException e1) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Error occurred while performing [" + action + "] of Policy File: " + policy.getPolicyName(), e1);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e1, "PolicyDBDao", "Error occurred while performing [" + action + "] of Policy File: " + policy.getPolicyName());
}
}
-
- //FIXME error correcting and logs
+
private void createGroupsFromDatabase(){
//get list of groups
boolean foundDefault = false;
//need to avoid infinite loop, just in case
boolean alreadyRunAdd = false;
while(!foundDefault){
-
- EntityManager em = emf.createEntityManager();
- Query getGroups = em.createQuery("SELECT g FROM GroupEntity g WHERE g.deleted=:deleted");
- getGroups.setParameter("deleted", false);
- List<?> groups = getGroups.getResultList();
- em.close();
- //make a folder for each group in pdps folders
- Path pdpsPath = Paths.get("pdps");
- try {
- FileUtils.forceDelete(pdpsPath.toFile());
- } catch (Exception e) {
- e.printStackTrace();
- }
- try {
- FileUtils.forceMkdir(pdpsPath.toFile());
- } catch (Exception e) {
- e.printStackTrace();
- }
- Properties propertyFileProperties = new Properties();
- String groupList = "";
- String defaultGroup = "";
- for(Object o : groups){
- GroupEntity group = (GroupEntity)o;
- Path groupPath = Paths.get(pdpsPath.toString(), group.getGroupId());
- try {
- FileUtils.forceMkdir(groupPath.toFile());
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- Properties policyProperties = new Properties();
- String rootPolicies = "";
- for(PolicyEntity policy : group.getPolicies()){
- Path newPolicyPath = Paths.get(groupPath.toString(),getPdpPolicyName(policy.getPolicyName(),policy.getScope()));
- File newPolicyFile = newPolicyPath.toFile();
+
+ EntityManager em = emf.createEntityManager();
+ Query getGroups = em.createQuery("SELECT g FROM GroupEntity g WHERE g.deleted=:deleted");
+ getGroups.setParameter("deleted", false);
+ List<?> groups = getGroups.getResultList();
+ em.close();
+ //make a folder for each group in pdps folders
+ Path pdpsPath = Paths.get(XACMLProperties.getProperty("xacml.pap.pdps"));
+ if(!pdpsPath.toFile().exists()){
try {
- newPolicyFile.createNewFile();
+ FileUtils.forceMkdir(pdpsPath.toFile());
+ } catch (IOException e) {
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Could not make the new pdps folder; one does not exist");
+ }
+ }
+ Properties propertyFileProperties = new Properties();
+ String groupList = "";
+ String defaultGroup = "";
+ HashSet<String> currentGroupPaths = new HashSet<String>();
+ for(Object o : groups){
+ GroupEntity group = (GroupEntity)o;
+ Path groupPath = Paths.get(pdpsPath.toString(), group.getGroupId());
+ currentGroupPaths.add(groupPath.getFileName().toString());
+ if(groupPath.toFile().exists()){
+ try {
+ FileUtils.forceDelete(Paths.get(groupPath.toString(), "xacml.policy.properties").toFile());
+ } catch (IOException e) {
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Could not delete old xacml.policy.properties file");
+ }
+ File[] xmlFiles = groupPath.toFile().listFiles(new FileFilter(){
+
+ @Override
+ public boolean accept(File pathname) {
+ return pathname.toString().endsWith(".xml");
+ }
+
+ });
+ for(File deleteMe : xmlFiles){
+ try {
+ FileUtils.forceDelete(deleteMe);
+ } catch (IOException e) {
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Could not delete one of the policy files that we are going to replace: "+deleteMe.toString());
+ }
+ }
+ } else {
+ try {
+ FileUtils.forceMkdir(groupPath.toFile());
} catch (IOException e) {
- // TODO Auto-generated catch block
e.printStackTrace();
}
- try {
- FileOutputStream policyFileStream = new FileOutputStream(newPolicyFile);
+ }
+ Properties policyProperties = new Properties();
+ String rootPolicies = "";
+ for(PolicyEntity policy : group.getPolicies()){
+ Path newPolicyPath = Paths.get(groupPath.toString(),getPdpPolicyName(policy.getPolicyName(),policy.getScope()));
+ File newPolicyFile = newPolicyPath.toFile();
+ try {
+ newPolicyFile.createNewFile();
+ } catch (IOException e) {
+ PolicyLogger.error(e.getMessage());
+ }
+ try {
+ FileOutputStream policyFileStream = new FileOutputStream(newPolicyFile);
policyFileStream.write(policy.getPolicyData().getBytes("UTF-8"));
- policyFileStream.close();
+ policyFileStream.close();
+ } catch (IOException e) {
+ PolicyLogger.error(e.getMessage());
+ }
+ policyProperties.setProperty(getPdpPolicyName(policy.getPolicyName(),policy.getScope())+".name",removeExtensionAndVersionFromPolicyName(policy.getPolicyName()));
+ rootPolicies += ",".concat(getPdpPolicyName(policy.getPolicyName(),policy.getScope()));
+ }
+ Path xacmlPolicyPropertiesPath = Paths.get(groupPath.toString(),"xacml.policy.properties");
+ File xacmlPolicyPropertiesFile = xacmlPolicyPropertiesPath.toFile();
+ if(rootPolicies.length() > 0){
+ rootPolicies = rootPolicies.substring(1);
+ }
+ policyProperties.setProperty("xacml.referencedPolicies", "");
+ policyProperties.setProperty("xacml.rootPolicies", rootPolicies);
+
+ try {
+ xacmlPolicyPropertiesFile.createNewFile();
} catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
+ PolicyLogger.error(e.getMessage());
+ }
+ try {
+ FileOutputStream xacmlPolicyPropertiesFileStream = new FileOutputStream(xacmlPolicyPropertiesFile);
+ policyProperties.store(xacmlPolicyPropertiesFileStream, "");
+ xacmlPolicyPropertiesFileStream.close();
+ } catch (IOException e) {
+ PolicyLogger.error(e.getMessage());
+ }
+
+ em = emf.createEntityManager();
+ Query getPdpsQuery = em.createQuery("SELECT p FROM PdpEntity p WHERE p.groupEntity=:group AND p.deleted=:deleted");
+ getPdpsQuery.setParameter("group", group);
+ getPdpsQuery.setParameter("deleted", false);
+ List<?> pdps = getPdpsQuery.getResultList();
+ em.close();
+ String pdpLine = "";
+ for(Object o2 : pdps){
+ PdpEntity pdp = (PdpEntity)o2;
+ pdpLine += ",".concat(pdp.getPdpId());
+ propertyFileProperties.setProperty(pdp.getPdpId()+".description",pdp.getDescription());
+ propertyFileProperties.setProperty(pdp.getPdpId()+".jmxport",String.valueOf(pdp.getJmxPort()));
+ propertyFileProperties.setProperty(pdp.getPdpId()+".name",pdp.getPdpName());
+ }
+ if(pdpLine.length() > 0){
+ pdpLine = pdpLine.substring(1);
+ }
+ propertyFileProperties.setProperty(group.getGroupId()+".description", group.getDescription());
+ propertyFileProperties.setProperty(group.getGroupId()+".name", group.getgroupName());
+ propertyFileProperties.setProperty(group.getGroupId()+".pdps",pdpLine);
+ groupList += ",".concat(group.getGroupId());
+ if(group.isDefaultGroup()){
+ defaultGroup = group.getGroupId();
+ foundDefault = true;
+ }
+ }
+ //check the list of directories in the pdps folder and make sure none should be deleted
+ File[] filesInPdpsFolder = pdpsPath.toFile().listFiles(new FileFilter(){
+ @Override
+ public boolean accept(File pathname) {
+ return pathname.isDirectory();
+ }
+ });
+ for(File f : filesInPdpsFolder){
+ if(f.isDirectory()){
+ if(!currentGroupPaths.contains(f.toPath().getFileName().toString())){
+ try {
+ FileUtils.forceDelete(f);
+ } catch (IOException e) {
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Could not delete pdp group folder, which has been deleted from the database");
+ }
+ }
+ }
+ }
+ if(!foundDefault && !alreadyRunAdd){
+ alreadyRunAdd = true;
+ //add default group to db
+ try{
+ em = emf.createEntityManager();
+ em.getTransaction().begin();
+ GroupEntity newDefaultGroup = new GroupEntity();
+ em.persist(newDefaultGroup);
+ newDefaultGroup.setDescription("The default group where new PDP's are put.");
+ newDefaultGroup.setGroupId("default");
+ newDefaultGroup.setGroupName("default");
+ newDefaultGroup.setDefaultGroup(true);
+ newDefaultGroup.setCreatedBy("automaticallyAdded");
+ newDefaultGroup.setModifiedBy("automaticallyAdded");
+ em.flush();
+ em.getTransaction().commit();
+ continue;
+ } catch(Exception e){
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Could not add a new default group to the database");
}
- policyProperties.setProperty(getPdpPolicyName(policy.getPolicyName(),policy.getScope())+".name",removeExtensionAndVersionFromPolicyName(policy.getPolicyName()));
- rootPolicies += ",".concat(getPdpPolicyName(policy.getPolicyName(),policy.getScope()));
}
- Path xacmlPolicyPropertiesPath = Paths.get(groupPath.toString(),"xacml.policy.properties");
- File xacmlPolicyPropertiesFile = xacmlPolicyPropertiesPath.toFile();
- if(rootPolicies.length() > 0){
- rootPolicies = rootPolicies.substring(1);
+
+ Path xacmlPropertiesPath = Paths.get(pdpsPath.toString(),"xacml.properties");
+ File xacmlPropertiesFile = xacmlPropertiesPath.toFile();
+ if(groupList.length()>0){
+ groupList = groupList.substring(1);
}
- policyProperties.setProperty("xacml.referencedPolicies", "");
- policyProperties.setProperty("xacml.rootPolicies", rootPolicies);
-
+ propertyFileProperties.setProperty("xacml.pap.groups",groupList);
+ propertyFileProperties.setProperty("xacml.pap.groups.default",defaultGroup);
+ try {
+ FileUtils.forceDelete(xacmlPropertiesFile);
+ } catch (IOException e) {
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Could not delete the old xacml.properties file");
+ }
try {
- xacmlPolicyPropertiesFile.createNewFile();
+ xacmlPropertiesFile.createNewFile();
} catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
+ PolicyLogger.error(e.getMessage());
}
try {
- FileOutputStream xacmlPolicyPropertiesFileStream = new FileOutputStream(xacmlPolicyPropertiesFile);
- //xacmlPolicyPropertiesFileStream.write(xacmlPolicyProperties.getBytes("UTF-8"));
- policyProperties.store(xacmlPolicyPropertiesFileStream, "");
- xacmlPolicyPropertiesFileStream.close();
+ FileOutputStream xacmlPropertiesFileStream = new FileOutputStream(xacmlPropertiesFile);
+ propertyFileProperties.store(xacmlPropertiesFileStream, "");
+ xacmlPropertiesFileStream.close();
} catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- em = emf.createEntityManager();
- Query getPdpsQuery = em.createQuery("SELECT p FROM PdpEntity p WHERE p.groupEntity=:group AND p.deleted=:deleted");
- getPdpsQuery.setParameter("group", group);
- getPdpsQuery.setParameter("deleted", false);
- List<?> pdps = getPdpsQuery.getResultList();
- em.close();
- String pdpLine = "";
- for(Object o2 : pdps){
- PdpEntity pdp = (PdpEntity)o2;
- pdpLine += ",".concat(pdp.getPdpId());
- propertyFileProperties.setProperty(pdp.getPdpId()+".description",pdp.getDescription());
- propertyFileProperties.setProperty(pdp.getPdpId()+".jmxport",String.valueOf(pdp.getJmxPort()));
- propertyFileProperties.setProperty(pdp.getPdpId()+".name",pdp.getPdpName());
- }
- if(pdpLine.length() > 0){
- pdpLine = pdpLine.substring(1);
- }
- propertyFileProperties.setProperty(group.getGroupId()+".description", group.getDescription());
- propertyFileProperties.setProperty(group.getGroupId()+".name", group.getgroupName());
- propertyFileProperties.setProperty(group.getGroupId()+".pdps",pdpLine);
- groupList += ",".concat(group.getGroupId());
- if(group.isDefaultGroup()){
- defaultGroup = group.getGroupId();
- foundDefault = true;
- }
- }
- if(!foundDefault && !alreadyRunAdd){
- alreadyRunAdd = true;
- //add default group to db
- try{
- em = emf.createEntityManager();
- em.getTransaction().begin();
- GroupEntity newDefaultGroup = new GroupEntity();
- em.persist(newDefaultGroup);
- newDefaultGroup.setDescription("The default group where new PDP's are put.");
- newDefaultGroup.setGroupId("default");
- newDefaultGroup.setGroupName("default");
- newDefaultGroup.setDefaultGroup(true);
- newDefaultGroup.setCreatedBy("automaticallyAdded");
- newDefaultGroup.setModifiedBy("automaticallyAdded");
- em.flush();
- em.getTransaction().commit();
- continue;
- } catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Could not add a new default group to the database",e);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Could not add a new default group to the database");
+ PolicyLogger.error(e.getMessage());
}
- }
-
- Path xacmlPropertiesPath = Paths.get(pdpsPath.toString(),"xacml.properties");
- File xacmlPropertiesFile = xacmlPropertiesPath.toFile();
- if(groupList.length()>0){
- groupList = groupList.substring(1);
- }
- propertyFileProperties.setProperty("xacml.pap.groups",groupList);
- propertyFileProperties.setProperty("xacml.pap.groups.default",defaultGroup);
- try {
- xacmlPropertiesFile.createNewFile();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- try {
- FileOutputStream xacmlPropertiesFileStream = new FileOutputStream(xacmlPropertiesFile);
- //xacmlPropertiesFileStream.write(fileContents.getBytes("UTF-8"));
- propertyFileProperties.store(xacmlPropertiesFileStream, "");
- xacmlPropertiesFileStream.close();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- //if we get this far down, something went wrong and we don't want to get stuck in the loop
- foundDefault = true;
+ //if we get this far down, something went wrong and we don't want to get stuck in the loop
+ foundDefault = true;
}
//put policies in group folder
//create xacml.policy.properties in each folder with list of policies in that folder
@@ -1318,8 +1300,6 @@ public class PolicyDBDao {
//create xacml.properties with list of groups and pdps and other info
}
-
- //FIXME error checking and logging
private String getPdpPolicyName(String name, String scope){
String finalName = "";
finalName += scope;
@@ -1331,28 +1311,22 @@ public class PolicyDBDao {
private String removeFileExtension(String fileName){
return fileName.substring(0, fileName.lastIndexOf('.'));
}
-
+
private String buildPolicyScopeDirectory(PolicyEntity policy){
String repo = buildPolicyDirectory();
String policyScope = policy.getScope();
if(policyScope == null){
policyScope = "";
- //TODO:EELF Cleanup - Remove logger
- //logger.error("buildPolicyScopeDirectory("+policy+") computed null policyScope. Using blank.");
PolicyLogger.error("buildPolicyScopeDirectory("+policy+") computed null policyScope. Using blank.");
} else {
policyScope = policyScope.replace(".", FileSystems.getDefault().getSeparator());
}
if(policyScope == null){
policyScope = "";
- //TODO:EELF Cleanup - Remove logger
- //logger.error("buildPolicyScopeDirectory("+policy+") computed null policyScope. Using blank.");
PolicyLogger.error("buildPolicyScopeDirectory("+policy+") computed null policyScope. Using blank.");
}
if(repo == null){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("buildPolicyScopeDirectory("+policy+") received null repo. Using blank.");
PolicyLogger.error("buildPolicyScopeDirectory("+policy+") received null repo. Using blank.");
repo = "";
}
@@ -1360,8 +1334,6 @@ public class PolicyDBDao {
if(returnPath != null){
return returnPath.toString();
} else {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("buildPolicyScopeDirectory("+policy+") computed null path");
PolicyLogger.error("buildPolicyScopeDirectory("+policy+") received null repo. Using blank.");
return "";
}
@@ -1372,25 +1344,20 @@ public class PolicyDBDao {
String repo = buildPolicyDirectory();
policyScope = policyScope.replace(".", FileSystems.getDefault().getSeparator());
return repo + FileSystems.getDefault().getSeparator() + policyScope;
-
+
}
-
+
private static String buildPolicyDirectory(){
Path workspacePath = Paths.get(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_WORKSPACE), getDefaultWorkspace());
Path repositoryPath = Paths.get(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_REPOSITORY));
Path gitPath = Paths.get(workspacePath.toString(), repositoryPath.getFileName().toString());
-
- /*
- * Getting and Setting the parent path for Admin Console use when reading the policy files
- */
- //domain chosen by the client to store the policy action files
- //String domain = policy.getDomainDir();
-
-
-
- //getting the fullpath of the gitPath and convert to string
- String policyDir = gitPath.toAbsolutePath().toString();
-
+
+ /*
+ * Getting and Setting the parent path for Admin Console use when reading the policy files
+ */
+ //getting the fullpath of the gitPath and convert to string
+ String policyDir = gitPath.toAbsolutePath().toString();
+
if(policyDir.contains("\\")){
policyDir = policyDir.replace("XACML-PAP-REST", "XACML-PAP-ADMIN");
@@ -1399,32 +1366,32 @@ public class PolicyDBDao {
policyDir = policyDir.replace("pap", "console");
}
}
- logger.debug("policyDir: " + policyDir);
+ logger.debug("policyDir: " + policyDir);
return policyDir;
}
-
+
private Path getPolicySubFile(String filename, String subFileType){
logger.debug("getPolicySubFile(" + filename + ", " + subFileType + ")");
Path filePath = Paths.get(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_WEBAPPS).toString(), subFileType);
File file = null;
-
+
filename = FilenameUtils.removeExtension(filename);
-
+
for(File tmpFile : filePath.toFile().listFiles()){
if (FilenameUtils.removeExtension(tmpFile.getName()).equals(filename)){
file = tmpFile;
}
}
-
+
Path finalPath = null;
if (file!= null){
finalPath = Paths.get(file.getAbsolutePath());
}
-
+
logger.debug("end of getPolicySubFile: " + finalPath);
return finalPath;
}
-
+
private boolean writePolicySubFile(PolicyEntity policy, String policyType){
logger.info("writePolicySubFile with policyName[" + policy.getPolicyName() + "] and policyType[" + policyType + "]");
String type = null;
@@ -1434,10 +1401,10 @@ public class PolicyDBDao {
type = "Config";
subTypeName = FilenameUtils.removeExtension(policy.getConfigurationData().getConfigurationName());
subTypeBody = policy.getConfigurationData().getConfigBody();
-
+
String configType = policy.getConfigurationData().getConfigType();
-
-
+
+
if (configType != null) {
if (configType.equals(JSON_CONFIG)) {
subTypeName = subTypeName + ".json";
@@ -1452,13 +1419,13 @@ public class PolicyDBDao {
subTypeName = subTypeName + ".txt";
}
}
-
+
}else if (policyType.equalsIgnoreCase("action")){
type = "Action";
subTypeName = policy.getActionBodyEntity().getActionBodyName();
subTypeBody = policy.getActionBodyEntity().getActionBody();
-
-
+
+
}
Path filePath = Paths.get(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_WEBAPPS).toString(), type);
@@ -1466,28 +1433,26 @@ public class PolicyDBDao {
subTypeBody = "";
}
boolean success = false;
- try {
- Files.deleteIfExists(Paths.get(filePath.toString(), subTypeName));
- File file = Paths.get(filePath.toString(),subTypeName).toFile();
- file.createNewFile();
- FileWriter fileWriter = new FileWriter(file, false); // false to overwrite
- fileWriter.write(subTypeBody);
- fileWriter.close();
- success = true;
+ try {
+ Files.deleteIfExists(Paths.get(filePath.toString(), subTypeName));
+ File file = Paths.get(filePath.toString(),subTypeName).toFile();
+ file.createNewFile();
+ FileWriter fileWriter = new FileWriter(file, false); // false to overwrite
+ fileWriter.write(subTypeBody);
+ fileWriter.close();
+ success = true;
+
+ } catch (Exception e) {
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Exception occured while creating Configuration File for Policy : " + policy.getPolicyName());
+ }
- } catch (Exception e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Exception occured while creating Configuration File for Policy : " + policy.getPolicyName(), e);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Exception occured while creating Configuration File for Policy : " + policy.getPolicyName());
- }
-
return success;
-
+
}
-
+
private String getPolicySubType(String filename){
String type = null;
-
+
if (filename != null) {
if (FilenameUtils.getExtension(filename).equalsIgnoreCase("json")) {
type = ConfigPolicy.JSON_CONFIG;
@@ -1502,36 +1467,34 @@ public class PolicyDBDao {
type = ConfigPolicy.OTHER_CONFIG;
}
}
-
+
return type;
-
+
}
-
-
+
+
private void convertFileToDBEntry(Path path){
logger.info("convertFileToDBEntry");
-
+
if(path.toString().contains(".git")){
return;
}
-
+
String filename = path.getFileName().toString();
if (filename.contains(".svnignore")){
return;
}
String[] scopeAndName = getScopeAndNameAndType(path.toString());
-
+
if(scopeAndName == null){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("convertFileToDBEntry error: getScopeAndNameAndType(" + path.toString() + " is null!");
PolicyLogger.error("convertFileToDBEntry error: getScopeAndNameAndType(" + path.toString() + " is null!");
return;
}
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
-
+
PolicyEntity policy = new PolicyEntity();
em.persist(policy);
String policyScope = scopeAndName[0];
@@ -1548,18 +1511,16 @@ public class PolicyDBDao {
//we want the last index +1 because we don't want the dot
version = Integer.parseInt(newName.substring(newName.lastIndexOf(".")+1));
} catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Could not get the policy version number from "+newName);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Could not get the policy version number from "+newName);
}
newName = newScope + File.separator + newName.substring(0, newName.lastIndexOf("."));
Query query = em.createNamedQuery("PolicyVersion.findByPolicyName");
query.setParameter("pname", newName);
-
+
List<?> result = query.getResultList();
PolicyVersion versionEntity = null;
-
+
if (!result.isEmpty()) {
logger.info("Result is not empty");
versionEntity = (PolicyVersion) result.get(0);
@@ -1570,7 +1531,7 @@ public class PolicyDBDao {
logger.info("result is empty");
Calendar calendar = Calendar.getInstance();
Timestamp createdDate = new Timestamp(calendar.getTime().getTime());
-
+
versionEntity = new PolicyVersion();
em.persist(versionEntity);
versionEntity.setPolicyName(newName);
@@ -1581,21 +1542,19 @@ public class PolicyDBDao {
versionEntity.setCreatedDate(createdDate);
versionEntity.setModifiedDate(createdDate);
}
-
-
+
+
try {
String policyContent = new String(Files.readAllBytes(path));
policy.setDescription(getElementFromXMLString("/Description", policyContent));
policy.setPolicyData(policyContent);
} catch (IOException e1) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("convertFileToDBEntry error settingPolicyData: " + e1.getMessage());
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e1, "PolicyDBDao", "convertFileToDBEntry error settingPolicyData");
em.getTransaction().rollback();
em.close();
return;
}
-
+
if((scopeAndName[2].equalsIgnoreCase("Config"))){
String scopeName = scopeAndName[0] + "." + scopeAndName[1];
Path subFilePath = getPolicySubFile(scopeName, scopeAndName[2]);
@@ -1610,10 +1569,8 @@ public class PolicyDBDao {
configData.setCreatedBy(AUDIT_USER);
configData.setModifiedBy(AUDIT_USER);
policy.setConfigurationData(configData);
-
+
} catch (Exception e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("convertFileToDBEntry error for Config policy: " + e.getMessage());
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "convertFileToDBEntry error for Config policy");
em.getTransaction().rollback();
em.close();
@@ -1631,10 +1588,8 @@ public class PolicyDBDao {
actionBody.setCreatedBy(AUDIT_USER);
actionBody.setModifiedBy(AUDIT_USER);
policy.setActionBodyEntity(actionBody);
-
+
} catch (Exception e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("convertFileToDBEntry error for Action policy: " + e.getMessage());
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "convertFileToDBEntry error for Action policy");
em.getTransaction().rollback();
em.close();
@@ -1645,7 +1600,7 @@ public class PolicyDBDao {
em.getTransaction().commit();
em.close();
}
-
+
private void deleteAllPolicyTables(){
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
@@ -1659,9 +1614,9 @@ public class PolicyDBDao {
deletePolicyVersionEntityTableUpdate.executeUpdate();
em.getTransaction().commit();
em.close();
-
+
}
-
+
public void auditLocalDatabase(PAPPolicyEngine papEngine2){
logger.debug("PolicyDBDao.auditLocalDatabase() is called");
Path webappsPath = Paths.get(buildPolicyDirectory());
@@ -1672,13 +1627,11 @@ public class PolicyDBDao {
Files.walk(webappsPath).filter(Files::isRegularFile).forEach(this::convertFileToDBEntry);
auditGroups(papEngine2);
} catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("auditLocalDatabase() error: " + e.getMessage());
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "auditLocalDatabase() error");
e.printStackTrace();
}
}
-
+
/**
* Audits and loads the local file system to match the database version.
*/
@@ -1700,8 +1653,6 @@ public class PolicyDBDao {
Path repoWithScope = Paths.get(webappsPath.toString(), XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_DOMAIN));
Files.createDirectories(repoWithScope);
} catch (IOException e2) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Error occurred while creating / clearing Config and Policy filesystem directories", e2);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e2, "PolicyDBDao", "Error occurred while creating / clearing Config and Policy filesystem directories");
}
@@ -1739,14 +1690,12 @@ public class PolicyDBDao {
XACMLPolicyWriter.writePolicyFile(newPath, (PolicyType) policyData);
}
} catch (Exception e1) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Error occurred while creating Policy File: " + name, e1);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e1, "PolicyDBDao", "Error occurred while creating Policy File: " + name);
}
}
createGroupsFromDatabase();
}
-
+
public void deleteAllGroupTables(){
logger.debug("PolicyDBDao.deleteAllGroupTables() called");
EntityManager em = emf.createEntityManager();
@@ -1754,95 +1703,89 @@ public class PolicyDBDao {
Query deletePdpEntityEntityTableUpdate = em.createNamedQuery("PdpEntity.deleteAll");
deletePdpEntityEntityTableUpdate.executeUpdate();
-
+
Query deleteGroupEntityTableUpdate = em.createNamedQuery("GroupEntity.deleteAll");
deleteGroupEntityTableUpdate.executeUpdate();
-
+
em.getTransaction().commit();
em.close();
}
-
+
@SuppressWarnings("unchecked")
public void auditGroups(PAPPolicyEngine papEngine2){
logger.debug("PolicyDBDao.auditGroups() called");
-
+
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
final String AUDIT_STR = "Audit";
try{
Set<EcompPDPGroup> groups = papEngine2.getEcompPDPGroups();
-
+
for (EcompPDPGroup grp : groups){
try{
- GroupEntity groupEntity = new GroupEntity();
- em.persist(groupEntity);
- groupEntity.setGroupName(grp.getName());
- groupEntity.setDescription(grp.getDescription());
- groupEntity.setDefaultGroup(grp.isDefaultGroup());
- groupEntity.setCreatedBy(AUDIT_STR);
- groupEntity.setGroupId(createNewPDPGroupId(grp.getId()));
- groupEntity.setModifiedBy(AUDIT_STR);
- Set<EcompPDP> pdps = grp.getEcompPdps();
-
- for(EcompPDP pdp : pdps){
- PdpEntity pdpEntity = new PdpEntity();
- em.persist(pdpEntity);
- pdpEntity.setGroup(groupEntity);
- pdpEntity.setJmxPort(pdp.getJmxPort());
- pdpEntity.setPdpId(pdp.getId());
- pdpEntity.setPdpName(pdp.getName());
- pdpEntity.setModifiedBy(AUDIT_STR);
- pdpEntity.setCreatedBy(AUDIT_STR);
-
- }
-
- Set<PDPPolicy> policies = grp.getPolicies();
-
- for(PDPPolicy policy : policies){
- try{
- String[] stringArray = getNameScopeAndVersionFromPdpPolicy(policy.getId());
- List<PolicyEntity> policyEntityList;
- Query getPolicyEntitiesQuery = em.createNamedQuery("PolicyEntity.findByNameAndScope");
- getPolicyEntitiesQuery.setParameter("name", stringArray[0]);
- getPolicyEntitiesQuery.setParameter("scope", stringArray[1]);
-
- policyEntityList = getPolicyEntitiesQuery.getResultList();
- PolicyEntity policyEntity = null;
- if(policyEntityList.size() < 1){
- policyEntity = addPolicyThatOnlyExistsInPdpGroup(policy.getId(),Paths.get("pdps",grp.getId(),policy.getId()),em);
- } else {
- policyEntity = policyEntityList.get(0);
- }
- if(policyEntity != null){
- groupEntity.addPolicyToGroup(policyEntity);
+ GroupEntity groupEntity = new GroupEntity();
+ em.persist(groupEntity);
+ groupEntity.setGroupName(grp.getName());
+ groupEntity.setDescription(grp.getDescription());
+ groupEntity.setDefaultGroup(grp.isDefaultGroup());
+ groupEntity.setCreatedBy(AUDIT_STR);
+ groupEntity.setGroupId(createNewPDPGroupId(grp.getId()));
+ groupEntity.setModifiedBy(AUDIT_STR);
+ Set<EcompPDP> pdps = grp.getEcompPdps();
+
+ for(EcompPDP pdp : pdps){
+ PdpEntity pdpEntity = new PdpEntity();
+ em.persist(pdpEntity);
+ pdpEntity.setGroup(groupEntity);
+ pdpEntity.setJmxPort(pdp.getJmxPort());
+ pdpEntity.setPdpId(pdp.getId());
+ pdpEntity.setPdpName(pdp.getName());
+ pdpEntity.setModifiedBy(AUDIT_STR);
+ pdpEntity.setCreatedBy(AUDIT_STR);
+
}
- }catch(Exception e2){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("ERROR: " + e2);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e2, "PolicyDBDao", "Exception auditGroups inner catch");
+
+ Set<PDPPolicy> policies = grp.getPolicies();
+
+ for(PDPPolicy policy : policies){
+ try{
+ String[] stringArray = getNameScopeAndVersionFromPdpPolicy(policy.getId());
+ List<PolicyEntity> policyEntityList;
+ Query getPolicyEntitiesQuery = em.createNamedQuery("PolicyEntity.findByNameAndScope");
+ getPolicyEntitiesQuery.setParameter("name", stringArray[0]);
+ getPolicyEntitiesQuery.setParameter("scope", stringArray[1]);
+
+ policyEntityList = getPolicyEntitiesQuery.getResultList();
+ PolicyEntity policyEntity = null;
+ if(policyEntityList.size() < 1){
+ policyEntity = addPolicyThatOnlyExistsInPdpGroup(policy.getId(),Paths.get(XACMLProperties.getProperty("xacml.pap.pdps"),grp.getId(),policy.getId()),em);
+ } else {
+ policyEntity = policyEntityList.get(0);
+ }
+ if(policyEntity != null){
+ groupEntity.addPolicyToGroup(policyEntity);
+ }
+ }catch(Exception e2){
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e2, "PolicyDBDao", "Exception auditGroups inner catch");
+ }
}
- }
}catch(Exception e1){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("ERROR: " + e1);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e1, "PolicyDBDao", "Exception auditGroups middle catch");
}
}
}catch(Exception e){
em.getTransaction().rollback();
- //TODO:EELF Cleanup - Remove logger
- //logger.error("ERROR: " + e);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Exception auditGroups outer catch");
em.close();
return;
}
-
+
em.getTransaction().commit();
em.close();
-
+
}
-
+
private PolicyEntity addPolicyThatOnlyExistsInPdpGroup(String polId, Path path,EntityManager em){
String filename = path.getFileName().toString();
if (filename.contains(".svnignore")){
@@ -1850,15 +1793,12 @@ public class PolicyDBDao {
}
String[] scopeAndName = getNameScopeAndVersionFromPdpPolicy(polId);
-
+
if(scopeAndName == null){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("convertFileToDBEntry error: getScopeAndNameAndType(" + polId.toString() + " is null!");
PolicyLogger.error("convertFileToDBEntry error: getScopeAndNameAndType(" + polId.toString() + " is null!");
return null;
}
-
PolicyEntity policy = new PolicyEntity();
em.persist(policy);
String policyScope = scopeAndName[1];
@@ -1868,39 +1808,31 @@ public class PolicyDBDao {
policy.setCreatedBy(AUDIT_USER);
policy.setModifiedBy(AUDIT_USER);
policy.setDeleted(true);
-
+
try {
String policyContent = new String(Files.readAllBytes(path));
policy.setDescription(getElementFromXMLString("/Description", policyContent));
policy.setPolicyData(policyContent);
em.flush();
- //em.getTransaction().commit();
} catch (IOException e1) {
- // TODO Auto-generated catch block
- //TODO:EELF Cleanup - Remove logger
- //logger.error("convertFileToDBEntry error settingPolicyData: " + e1.getMessage());
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e1, "PolicyDBDao", "convertFileToDBEntry error settingPolicyData");
return null;
}
- //em.close();
return policy;
}
-
- private String getConfigFile(String filename, String scope, PolicyRestAdapter policy){
+
+ private String getConfigFile(String filename, PolicyRestAdapter policy){
if(policy == null){
- return getConfigFile(filename, scope, (String)null);
+ return getConfigFile(filename, (String)null);
}
- return getConfigFile(filename, scope, policy.getConfigType());
+ return getConfigFile(filename, policy.getConfigType());
}
//copied from ConfigPolicy.java and modified
// Here we are adding the extension for the configurations file based on the
// config type selection for saving.
- private String getConfigFile(String filename, String scope, String configType) {
- logger.debug("getConfigFile(String filename, String scope, String configType) as getConfigFile("+filename+", "+scope+", "+configType+") called");
+ private String getConfigFile(String filename, String configType) {
+ logger.debug("getConfigFile(String filename, String scope, String configType) as getConfigFile("+filename+", "+configType+") called");
filename = FilenameUtils.removeExtension(filename);
-// if (filename.endsWith(".xml")) {
-// filename = filename.substring(0, filename.length() - 4);
-// }
String id = configType;
if (id != null) {
@@ -1917,9 +1849,9 @@ public class PolicyDBDao {
filename = filename + ".txt";
}
}
- return scope + "." + filename;
+ return filename;
}
-
+
/**
* Constructs the file name of a policy.
* @param policy The name of a policy (ex: mypolicy1)
@@ -1939,7 +1871,7 @@ public class PolicyDBDao {
String concats = namePrefix + "_" +policy.getPolicyName() + ".xml";
return concats;
}
-
+
private String stripPolicyName(String policyFileName){
String policyName = policyFileName;
try{
@@ -1950,17 +1882,16 @@ public class PolicyDBDao {
}
return policyName;
}
- //FIXME error check, logs
+
private String[] getNameScopeAndVersionFromPdpPolicy(String fileName){
String[] splitByDots = fileName.split("\\.");
if(splitByDots.length < 3){
- //throw something
+ //should we throw something
return null;
}
String policyName = splitByDots[splitByDots.length-3];
String version = splitByDots[splitByDots.length-2];
//policy names now include version
- policyName += "."+version +".xml";
String scope = "";
for(int i=0;i<splitByDots.length-3;i++){
scope += ".".concat(splitByDots[i]);
@@ -1970,12 +1901,12 @@ public class PolicyDBDao {
scope = scope.substring(1);
}
String[] returnArray = new String[3];
- returnArray[0] = policyName;
+ returnArray[0] = policyName + "." + version + ".xml";
returnArray[2] = version;
returnArray[1] = scope;
return returnArray;
}
-
+
/**
* Constructs the complete repository path based on the properties files
* @return The repository path
@@ -1988,7 +1919,7 @@ public class PolicyDBDao {
logger.debug("after gitPath: " + gitPath);
return gitPath.toString();
}
-
+
//copied from StdEngine.java
public static String createNewPDPGroupId(String name) {
String id = name;
@@ -2010,7 +1941,7 @@ public class PolicyDBDao {
return id;
}
-
+
/**
* Checks if any of the given strings are empty or null
* @param strings One or more Strings (or nulls) to check if they are null or empty
@@ -2027,16 +1958,16 @@ public class PolicyDBDao {
}
return false;
}
-
+
/**
* Computes the scope, name, and type of a policy based on its file path
* @param path The file path of the policy (including the xml policy file)
- * @return A string array of size 3. 1: the scope of the policy 2: the name of the policy (Config_mypol.xml) 3: the type (Config). Or, null if the path can not be parsed.
+ * @return A string array of size 3. 1: the scope of the policy 2: the name of the policy (Config_mypol.xml) 3: the type (Config). Or, null if the path can not be parsed.
*/
private static String[] getScopeAndNameAndType(String path){
logger.debug("getScopeAndNameAndType(String path) as getScopeAndNameAndType("+path+") called");
if(path == null){
-
+
}
String gitPath = getGitPath();
@@ -2064,7 +1995,7 @@ public class PolicyDBDao {
return null;
}
String scopeAndName = path.substring(path.indexOf(gitPath)+gitPath.length());
-
+
logger.debug("scopeAndName: " + scopeAndName);
String policyType = null;
String[] policyTypes = {"Config_","Action_","Decision_"};
@@ -2116,7 +2047,7 @@ public class PolicyDBDao {
return returnArray;
}
-
+
private class PolicyDBDaoTransactionInstance implements PolicyDBDaoTransaction {
private EntityManager em;
private final Object emLock = new Object();
@@ -2126,7 +2057,7 @@ public class PolicyDBDao {
String newGroupId;
private boolean operationRun = false;
private final Thread transactionTimer;
-
+
private PolicyDBDaoTransactionInstance(){
//call the constructor with arguments
this(Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_TRANS_TIMEOUT)),
@@ -2137,8 +2068,8 @@ public class PolicyDBDao {
private PolicyDBDaoTransactionInstance(int transactionTimeout, int transactionWaitTime){
if(logger.isDebugEnabled()){
logger.debug("\n\nPolicyDBDaoTransactionInstance() as PolicyDBDaoTransactionInstance() called:"
- + "\n transactionTimeout = " + transactionTimeout
- + "\n transactionWaitTime = " + transactionWaitTime + "\n\n");
+ + "\n transactionTimeout = " + transactionTimeout
+ + "\n transactionWaitTime = " + transactionWaitTime + "\n\n");
}
this.em = emf.createEntityManager();
policyId = -1;
@@ -2187,12 +2118,12 @@ public class PolicyDBDao {
}
rollbackTransaction();
}
-
+
}
-
+
transactionTimer = new Thread(new TransactionTimer(transactionTimeout),"transactionTimerThread");
transactionTimer.start();
-
+
}
@@ -2201,14 +2132,10 @@ public class PolicyDBDao {
}
private void checkBeforeOperationRun(boolean justCheckOpen){
if(!isTransactionOpen()){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("There is no transaction currently open");
PolicyLogger.error("There is no transaction currently open");
throw new IllegalStateException("There is no transaction currently open");
}
if(operationRun && !justCheckOpen){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("An operation has already been performed and the current transaction should be committed");
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");
}
@@ -2220,9 +2147,8 @@ public class PolicyDBDao {
logger.debug("commitTransaction() as commitTransaction() called");
if(!isTransactionOpen()){
logger.warn("There is no open transaction to commit");
- //throw new IllegalStateException("There is no open transaction to commit");
try{
- em.close();
+ em.close();
} catch(Exception e){
e.printStackTrace();
}
@@ -2231,29 +2157,22 @@ public class PolicyDBDao {
try{
em.getTransaction().commit();
} catch(RollbackException e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught RollbackException on em.getTransaction().commit()",e);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught RollbackException on em.getTransaction().commit()");
throw new PersistenceException("The commit failed. Message:\n"+e.getMessage());
}
em.close();
- //FIXME need to revisit
+ // need to revisit
if(policyId >= 0){
-
if(newGroupId != null){
try{
notifyOthers(policyId,POLICY_NOTIFICATION,newGroupId);
} catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught Exception on notifyOthers("+policyId+","+POLICY_NOTIFICATION+","+newGroupId+")",e);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception on notifyOthers("+policyId+","+POLICY_NOTIFICATION+","+newGroupId+")");
}
} else {
try{
notifyOthers(policyId,POLICY_NOTIFICATION);
} catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught Exception on notifyOthers("+policyId+","+POLICY_NOTIFICATION+")",e);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception on notifyOthers("+policyId+","+POLICY_NOTIFICATION+")");
}
}
@@ -2261,21 +2180,17 @@ public class PolicyDBDao {
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){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught Exception on notifyOthers("+groupId+","+GROUP_NOTIFICATION+","+newGroupId+")",e);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception on notifyOthers("+groupId+","+GROUP_NOTIFICATION+","+newGroupId+")");
- }
+ try{
+ notifyOthers(groupId,GROUP_NOTIFICATION,newGroupId);
+ } catch(Exception e){
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception on notifyOthers("+groupId+","+GROUP_NOTIFICATION+","+newGroupId+")");
+ }
} else {
- try{
- notifyOthers(groupId,GROUP_NOTIFICATION);
- } catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught Exception on notifyOthers("+groupId+","+GROUP_NOTIFICATION+")",e);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception on notifyOthers("+groupId+","+GROUP_NOTIFICATION+")");
- }
+ try{
+ notifyOthers(groupId,GROUP_NOTIFICATION);
+ } catch(Exception e){
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception on notifyOthers("+groupId+","+GROUP_NOTIFICATION+")");
+ }
}
}
if(pdpId >= 0){
@@ -2283,8 +2198,6 @@ public class PolicyDBDao {
try{
notifyOthers(pdpId,PDP_NOTIFICATION);
} catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught Exception on notifyOthers("+pdpId+","+PDP_NOTIFICATION+")",e);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception on notifyOthers("+pdpId+","+PDP_NOTIFICATION+")");
}
}
@@ -2293,7 +2206,7 @@ public class PolicyDBDao {
transactionTimer.interrupt();
}
}
-
+
@Override
public void rollbackTransaction() {
logger.debug("rollbackTransaction() as rollbackTransaction() called");
@@ -2301,17 +2214,13 @@ public class PolicyDBDao {
if(isTransactionOpen()){
try{
- em.getTransaction().rollback();
+ em.getTransaction().rollback();
} catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Could not rollback transaction");
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Could not rollback transaction");
}
try{
em.close();
}catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Could not close EntityManager");
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Could not close EntityManager");
}
@@ -2335,239 +2244,211 @@ public class PolicyDBDao {
logger.debug("createPolicy(PolicyRestAdapter policy, String username, String policyScope, String policyName, String policyDataString) as createPolicy("+policy+", "+username+", "+policyScope+", "+policyName+", "+policyDataString+") called");
synchronized(emLock){
checkBeforeOperationRun();
- //em.getTransaction().begin();
- //FIXME if the policy is already found but deleted, when we update it should we reset the created by and version number?
- 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);
- //createPolicyQuery.setParameter("deleted", false);
- List<?> createPolicyQueryList = createPolicyQuery.getResultList();
- PolicyEntity newPolicyEntity;
- boolean update;
- if(createPolicyQueryList.size() < 1){
- newPolicyEntity = new PolicyEntity();
- update = false;
- } else if(createPolicyQueryList.size() > 1){
- //something went wrong
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Somehow, more than one policy with the same scope, name, and deleted status were found in the database");
- PolicyLogger.error("Somehow, more than one policy with the same scope, name, and deleted status were found in the database");
- throw new PersistenceException("Somehow, more than one policy with the same scope, name, and deleted status were found in the database");
- } else {
- newPolicyEntity = (PolicyEntity)createPolicyQueryList.get(0);
- update = true;
- }
-
- ActionBodyEntity newActionBodyEntity = null;
- if(policy.getPolicyType().equals("Action")){
- boolean abupdate = false;
- if(newPolicyEntity.getActionBodyEntity() == null){
- newActionBodyEntity = new ActionBodyEntity();
- }else{
- newActionBodyEntity = em.find(ActionBodyEntity.class, newPolicyEntity.getActionBodyEntity().getActionBodyId());
- abupdate = true;
- }
-
- if(newActionBodyEntity != null){
- if(!abupdate){
- em.persist(newActionBodyEntity);
- }
- //build the file path
- //trim the .xml off the end
- String policyNameClean = FilenameUtils.removeExtension(policyName);
- String actionBodyName = policyScope + "." + policyNameClean + ".json";
- Path actionBodyPath = Paths.get(Webapps.getActionHome(), actionBodyName);
- if(logger.isDebugEnabled()){
- logger.debug("\nPolicyDBDao.createPolicy"
- + "\n actionBodyPath = " + actionBodyPath);
+ String configName = policyName;
+ if(policyName.contains("Config_")){
+ policyName = policyName.replace(".Config_", ":Config_");
+ }else if(policyName.contains("Action_")){
+ policyName = policyName.replace(".Action_", ":Action_");
+ }else if(policyName.contains("Decision_")){
+ policyName = policyName.replace(".Decision_", ":Decision_");
+ }
+ policyName = policyName.split(":")[1];
+ Query createPolicyQuery = em.createQuery("SELECT p FROM PolicyEntity p WHERE p.scope=:scope AND p.policyName=:policyName");
+ createPolicyQuery.setParameter("scope", policyScope);
+ createPolicyQuery.setParameter("policyName", policyName);
+ List<?> createPolicyQueryList = createPolicyQuery.getResultList();
+ PolicyEntity newPolicyEntity;
+ boolean update;
+ if(createPolicyQueryList.size() < 1){
+ newPolicyEntity = new PolicyEntity();
+ update = false;
+ } else if(createPolicyQueryList.size() > 1){
+ PolicyLogger.error("Somehow, more than one policy with the same scope, name, and deleted status were found in the database");
+ throw new PersistenceException("Somehow, more than one policy with the same scope, name, and deleted status were found in the database");
+ } else {
+ newPolicyEntity = (PolicyEntity)createPolicyQueryList.get(0);
+ update = true;
+ }
+
+ ActionBodyEntity newActionBodyEntity = null;
+ if(policy.getPolicyType().equals("Action")){
+ boolean abupdate = false;
+ if(newPolicyEntity.getActionBodyEntity() == null){
+ newActionBodyEntity = new ActionBodyEntity();
+ }else{
+ newActionBodyEntity = em.find(ActionBodyEntity.class, newPolicyEntity.getActionBodyEntity().getActionBodyId());
+ abupdate = true;
}
- //get the action body
- String actionBodyString = null;
- String actionBodyPathStr = null;
- InputStream fileContentStream = null;
-
- if (Files.exists(actionBodyPath)) {
- try {
- actionBodyPathStr = (actionBodyPath != null ? actionBodyPath.toString() : null);
- fileContentStream = new FileInputStream(actionBodyPathStr);
- actionBodyString = IOUtils.toString(fileContentStream);
- if(logger.isDebugEnabled()){
- logger.debug("\nPolicyDBDao.createPolicy"
- + "\n actionBodyPathStr = " + actionBodyPathStr
- + "\n actionBodyString = " + actionBodyString);
+
+ if(newActionBodyEntity != null){
+ if(!abupdate){
+ em.persist(newActionBodyEntity);
+ }
+ //build the file path
+ //trim the .xml off the end
+ String policyNameClean = FilenameUtils.removeExtension(configName);
+ String actionBodyName = policyNameClean + ".json";
+ Path actionBodyPath = Paths.get(Webapps.getActionHome(), actionBodyName);
+ if(logger.isDebugEnabled()){
+ logger.debug("\nPolicyDBDao.createPolicy"
+ + "\n actionBodyPath = " + actionBodyPath);
+ }
+ //get the action body
+ String actionBodyString = null;
+ String actionBodyPathStr = null;
+ InputStream fileContentStream = null;
+
+ if (Files.exists(actionBodyPath)) {
+ try {
+ actionBodyPathStr = (actionBodyPath != null ? actionBodyPath.toString() : null);
+ fileContentStream = new FileInputStream(actionBodyPathStr);
+ actionBodyString = IOUtils.toString(fileContentStream);
+ if(logger.isDebugEnabled()){
+ logger.debug("\nPolicyDBDao.createPolicy"
+ + "\n actionBodyPathStr = " + actionBodyPathStr
+ + "\n actionBodyString = " + actionBodyString);
+ }
+ } catch (FileNotFoundException e) {
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught FileNotFoundException on new actionBodyPathStr FileInputStream("+actionBodyPathStr+")");
+ throw new IllegalArgumentException("The actionBodyPathStr file path " + actionBodyPathStr + " does not exist"
+ + "\nEXCEPTION: " + e);
+ } catch(IOException e2){
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e2, "PolicyDBDao", "Caught IOException on actionBodyPath newIOUtils.toString("+fileContentStream+")");
+ throw new IllegalArgumentException("The actionBodyPath file path cannot be read" + fileContentStream
+ + "\nEXCEPTION: " + e2);
+ } finally {
+ IOUtils.closeQuietly(fileContentStream);
+ }
+
+ if(actionBodyString == null){
+ throw new IllegalArgumentException("The file path (" + actionBodyPathStr + ") cannot be read");
}
- } catch (FileNotFoundException e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught FileNotFoundException on new actionBodyPathStr FileInputStream("+actionBodyPathStr+")",e);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught FileNotFoundException on new actionBodyPathStr FileInputStream("+actionBodyPathStr+")");
- throw new IllegalArgumentException("The actionBodyPathStr file path " + actionBodyPathStr + " does not exist"
- + "\nEXCEPTION: " + e);
- } catch(IOException e2){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught IOException on actionBodyPath newIOUtils.toString("+fileContentStream+")",e2);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e2, "PolicyDBDao", "Caught IOException on actionBodyPath newIOUtils.toString("+fileContentStream+")");
- throw new IllegalArgumentException("The actionBodyPath file path cannot be read" + fileContentStream
- + "\nEXCEPTION: " + e2);
- } finally {
- IOUtils.closeQuietly(fileContentStream);
+ } else {
+ actionBodyString = "{}";
}
-
- if(actionBodyString == null){
- throw new IllegalArgumentException("The file path (" + actionBodyPathStr + ") cannot be read");
+
+ newActionBodyEntity.setActionBody(actionBodyString);
+ newActionBodyEntity.setActionBodyName(actionBodyName);
+ newActionBodyEntity.setModifiedBy("PolicyDBDao.createPolicy()");
+ newActionBodyEntity.setDeleted(false);
+ if(!abupdate){
+ newActionBodyEntity.setCreatedBy("PolicyDBDao.createPolicy()");
}
-
- } else {
- actionBodyString = "{}";
+ if(logger.isDebugEnabled()){
+ logger.debug("\nPolicyDBDao.createPolicy"
+ + "\n newActionBodyEntity.getActionBody() = " + newActionBodyEntity.getActionBody()
+ + "\n newActionBodyEntity.getActionBodyName() = " + newActionBodyEntity.getActionBodyName()
+ + "\n newActionBodyEntity.getModifiedBy() = " + newActionBodyEntity.getModifiedBy()
+ + "\n newActionBodyEntity.getCreatedBy() = " + newActionBodyEntity.getCreatedBy()
+ + "\n newActionBodyEntity.isDeleted() = " + newActionBodyEntity.isDeleted()
+ + "\n FLUSHING to DB");
+ }
+ //push the actionBodyEntity to the DB
+ em.flush();
+ }else{
+ //newActionBodyEntity == null
+ //We have a actionBody in the policy but we found no actionBody in the DB
+ String msg = "\n\nPolicyDBDao.createPolicy - Incoming Action policy had an "
+ + "actionBody, but it could not be found in the DB for update."
+ + "\n policyScope = " + policyScope
+ + "\n policyName = " + policyName + "\n\n";
+ PolicyLogger.error("PolicyDBDao.createPolicy - Incoming Action policy had an actionBody, but it could not be found in the DB for update: policyName = " + policyName);
+ throw new IllegalArgumentException(msg);
}
+ }
- newActionBodyEntity.setActionBody(actionBodyString);
- newActionBodyEntity.setActionBodyName(actionBodyName);
- newActionBodyEntity.setModifiedBy("PolicyDBDao.createPolicy()");
- newActionBodyEntity.setDeleted(false);
- if(!abupdate){
- newActionBodyEntity.setCreatedBy("PolicyDBDao.createPolicy()");
+ ConfigurationDataEntity newConfigurationDataEntity;
+ if(policy.getPolicyType().equals("Config")){
+ boolean configUpdate;
+ if(newPolicyEntity.getConfigurationData() == null){
+ newConfigurationDataEntity = new ConfigurationDataEntity();
+ configUpdate = false;
+ } else {
+ newConfigurationDataEntity = em.find(ConfigurationDataEntity.class, newPolicyEntity.getConfigurationData().getConfigurationDataId());
+ configUpdate = true;
}
- if(logger.isDebugEnabled()){
- logger.debug("\nPolicyDBDao.createPolicy"
- + "\n newActionBodyEntity.getActionBody() = " + newActionBodyEntity.getActionBody()
- + "\n newActionBodyEntity.getActionBodyName() = " + newActionBodyEntity.getActionBodyName()
- + "\n newActionBodyEntity.getModifiedBy() = " + newActionBodyEntity.getModifiedBy()
- + "\n newActionBodyEntity.getCreatedBy() = " + newActionBodyEntity.getCreatedBy()
- + "\n newActionBodyEntity.isDeleted() = " + newActionBodyEntity.isDeleted()
- + "\n FLUSHING to DB");
+
+ if(newConfigurationDataEntity != null){
+ if(!configUpdate){
+ em.persist(newConfigurationDataEntity);
+ }
+ if(!stringEquals(newConfigurationDataEntity.getConfigurationName(),getConfigFile(configName,policy))){
+ newConfigurationDataEntity.setConfigurationName(getConfigFile(configName,policy));
+ }
+ if(newConfigurationDataEntity.getConfigType() == null || !newConfigurationDataEntity.getConfigType().equals(policy.getConfigType())){
+ newConfigurationDataEntity.setConfigType(policy.getConfigType());
+ }
+ if(!configUpdate){
+ newConfigurationDataEntity.setCreatedBy(username);
+ }
+ if(newConfigurationDataEntity.getModifiedBy() == null || !newConfigurationDataEntity.getModifiedBy().equals(username)){
+ newConfigurationDataEntity.setModifiedBy(username);
+ }
+ if(newConfigurationDataEntity.getDescription() == null || !newConfigurationDataEntity.getDescription().equals("")){
+ newConfigurationDataEntity.setDescription("");
+ }
+ if(newConfigurationDataEntity.getConfigBody() == null || newConfigurationDataEntity.getConfigBody().isEmpty() ||
+ (!newConfigurationDataEntity.getConfigBody().equals(policy.getConfigBodyData()))){
+ //hopefully one of these won't be null
+ if(policy.getConfigBodyData() == null || policy.getConfigBodyData().isEmpty()){
+ newConfigurationDataEntity.setConfigBody(policy.getJsonBody());
+ }else{
+ newConfigurationDataEntity.setConfigBody(policy.getConfigBodyData());
+ }
+ }
+ if(newConfigurationDataEntity.isDeleted() == true){
+ newConfigurationDataEntity.setDeleted(false);
+ }
+
+ em.flush();
+ }else{
+ //We have a configurationData body in the policy but we found no configurationData body in the DB
+ String msg = "\n\nPolicyDBDao.createPolicy - Incoming Config policy had a "
+ + "configurationData body, but it could not be found in the DB for update."
+ + "\n policyScope = " + policyScope
+ + "\n policyName = " + policyName + "\n\n";
+ PolicyLogger.error("PolicyDBDao.createPolicy - Incoming Config policy had a configurationData body, but it could not be found in the DB for update: policyName = " + policyName);
+ throw new IllegalArgumentException(msg);
}
- //push the actionBodyEntity to the DB
- em.flush();
- }else{
- //newActionBodyEntity == null
- //We have a actionBody in the policy but we found no actionBody in the DB
- String msg = "\n\nPolicyDBDao.createPolicy - Incoming Action policy had an "
- + "actionBody, but it could not be found in the DB for update."
- + "\n policyScope = " + policyScope
- + "\n policyName = " + policyName + "\n\n";
- //TODO:EELF Cleanup - Remove logger
- //logger.error(msg);
- PolicyLogger.error("PolicyDBDao.createPolicy - Incoming Action policy had an actionBody, but it could not be found in the DB for update: policyName = " + policyName);
- throw new IllegalArgumentException(msg);
- }
- }
-
- ConfigurationDataEntity newConfigurationDataEntity;
- if(policy.getPolicyType().equals("Config")){
- boolean configUpdate;
- if(newPolicyEntity.getConfigurationData() == null){
- newConfigurationDataEntity = new ConfigurationDataEntity();
- configUpdate = false;
+
} else {
- newConfigurationDataEntity = em.find(ConfigurationDataEntity.class, newPolicyEntity.getConfigurationData().getConfigurationDataId());
- configUpdate = true;
+ newConfigurationDataEntity = null;
+ }
+ if(!update){
+ em.persist(newPolicyEntity);
}
- if(newConfigurationDataEntity != null){
- if(!configUpdate){
- em.persist(newConfigurationDataEntity);
- }
- //ConfigPolicy configPolicy = (ConfigPolicy)policy;
- if(!stringEquals(newConfigurationDataEntity.getConfigurationName(),getConfigFile(policyName,policyScope,policy))){
- newConfigurationDataEntity.setConfigurationName(getConfigFile(policyName,policyScope,policy));
- }
- if(newConfigurationDataEntity.getConfigType() == null || !newConfigurationDataEntity.getConfigType().equals(policy.getConfigType())){
- newConfigurationDataEntity.setConfigType(policy.getConfigType());
- }
- if(!configUpdate){
- newConfigurationDataEntity.setCreatedBy(username);
- }
- if(newConfigurationDataEntity.getModifiedBy() == null || !newConfigurationDataEntity.getModifiedBy().equals(username)){
- newConfigurationDataEntity.setModifiedBy(username);
- }
- if(newConfigurationDataEntity.getDescription() == null || !newConfigurationDataEntity.getDescription().equals("")){
- newConfigurationDataEntity.setDescription("");
- }
- if(newConfigurationDataEntity.getConfigBody() == null || newConfigurationDataEntity.getConfigBody().isEmpty() ||
- (!newConfigurationDataEntity.getConfigBody().equals(policy.getConfigBodyData()))){
- //hopefully one of these won't be null
- if(policy.getConfigBodyData() == null){
- newConfigurationDataEntity.setConfigBody(policy.getJsonBody());
- }else{
- newConfigurationDataEntity.setConfigBody(policy.getConfigBodyData());
- }
- }
- if(newConfigurationDataEntity.isDeleted() == true){
- newConfigurationDataEntity.setDeleted(false);
- }
+ policyId = newPolicyEntity.getPolicyId();
- em.flush();
- }else{//newConfigurationDataEntity == null
- //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";
- //TODO:EELF Cleanup - Remove logger
- //logger.error(msg);
- PolicyLogger.error("PolicyDBDao.createPolicy - Incoming Config policy had a configurationData body, but it could not be found in the DB for update: policyName = " + policyName);
- throw new IllegalArgumentException(msg);
- }
-
- } else {
- newConfigurationDataEntity = null;
- }
- if(!update){
- em.persist(newPolicyEntity);
- }
-
- policyId = newPolicyEntity.getPolicyId();
- //policy version is now part of policy name
- /*
- if(update){
- try{
- String versionString = evaluateXPath("Policy/@Version", policyDataString);
- int versionNum = Integer.parseInt(versionString);
- if(versionNum < 1){
- throw new NumberFormatException();
- }
- newPolicyEntity.setPolicyVersion(versionNum);
- } catch(Exception e){
- if(newPolicyEntity.isDeleted()){
- newPolicyEntity.resetPolicyVersion();
- } else {
- newPolicyEntity.advancePolicyVersion();
- }
+ if(!stringEquals(newPolicyEntity.getPolicyName(),policyName)){
+ newPolicyEntity.setPolicyName(policyName);
+ }
+ if(!stringEquals(newPolicyEntity.getCreatedBy(),username)){
+ newPolicyEntity.setCreatedBy(username);
+ }
+ if(!stringEquals(newPolicyEntity.getDescription(),policy.getPolicyDescription())){
+ newPolicyEntity.setDescription(policy.getPolicyDescription());
}
-
+ if(!stringEquals(newPolicyEntity.getModifiedBy(),username)){
+ newPolicyEntity.setModifiedBy(username);
+ }
+ if(!stringEquals(newPolicyEntity.getPolicyData(),policyDataString)){
+ newPolicyEntity.setPolicyData(policyDataString);
+ }
+ if(!stringEquals(newPolicyEntity.getScope(),policyScope)){
+ newPolicyEntity.setScope(policyScope);
+ }
+ if(newPolicyEntity.isDeleted() == true){
+ newPolicyEntity.setDeleted(false);
+ }
+ newPolicyEntity.setConfigurationData(newConfigurationDataEntity);
+ newPolicyEntity.setActionBodyEntity(newActionBodyEntity);
+
- }
- */
- if(!stringEquals(newPolicyEntity.getPolicyName(),policyName)){
- newPolicyEntity.setPolicyName(policyName);
- }
- if(!stringEquals(newPolicyEntity.getCreatedBy(),username)){
- newPolicyEntity.setCreatedBy(username);
- }
- if(!stringEquals(newPolicyEntity.getDescription(),policy.getPolicyDescription())){
- newPolicyEntity.setDescription(policy.getPolicyDescription());
- }
- if(!stringEquals(newPolicyEntity.getModifiedBy(),username)){
- newPolicyEntity.setModifiedBy(username);
- }
- if(!stringEquals(newPolicyEntity.getPolicyData(),policyDataString)){
- newPolicyEntity.setPolicyData(policyDataString);
- }
- if(!stringEquals(newPolicyEntity.getScope(),policyScope)){
- newPolicyEntity.setScope(policyScope);
- }
- if(newPolicyEntity.isDeleted() == true){
- newPolicyEntity.setDeleted(false);
- }
- newPolicyEntity.setConfigurationData(newConfigurationDataEntity);
- newPolicyEntity.setActionBodyEntity(newActionBodyEntity);
-
-
em.flush();
this.policyId = newPolicyEntity.getPolicyId();
}
-
+
return;
}
@@ -2586,7 +2467,7 @@ public class PolicyDBDao {
synchronized(emLock){
checkBeforeOperationRun(true);
- //check if group exists
+ //check if group exists
String policyId;
Query policyQuery;
if(!isNullOrEmpty(policyName,scope)){
@@ -2599,45 +2480,36 @@ public class PolicyDBDao {
policyQuery = em.createNamedQuery("PolicyEntity.FindById");
policyQuery.setParameter("id", policyId);
}
- List<?> policyQueryList;
- try{
- policyQueryList = policyQuery.getResultList();
- }catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught Exception trying to get policy with policyQuery.getResultList()",e);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to get policy with policyQuery.getResultList()");
- throw new PersistenceException("Query failed trying to get policy "+policyId);
- }
- if(policyQueryList.size() < 1){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Policy does not exist with id "+policyId);
- 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){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Somehow, more than one policy with the id "+policyId+" were found in the database");
- PolicyLogger.error("Somehow, more than one policy with the id "+policyId+" were found in the database");
- throw new PersistenceException("Somehow, more than one policy with the id "+policyId+" were found in the database");
- }
+ List<?> policyQueryList;
+ try{
+ policyQueryList = policyQuery.getResultList();
+ }catch(Exception e){
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to get policy with policyQuery.getResultList()");
+ throw new PersistenceException("Query failed trying to get policy "+policyId);
+ }
+ if(policyQueryList.size() < 1){
+ PolicyLogger.error("Policy does not exist with id "+policyId);
+ throw new PersistenceException("Group policy is being added to does not exist with id "+policyId);
+ } else if(policyQueryList.size() > 1){
+ PolicyLogger.error("Somehow, more than one policy with the id "+policyId+" were found in the database");
+ throw new PersistenceException("Somehow, more than one policy with the id "+policyId+" were found in the database");
+ }
return (PolicyEntity)policyQueryList.get(0);
}
}
-
+
@Override
public void renamePolicy(String oldPath, String newPath,String username){
String[] oldPolicy = getScopeAndNameAndType(oldPath);
String[] newPolicy = getScopeAndNameAndType(newPath);
if(oldPolicy == null || newPolicy == null){
- //TODO:EELF Cleanup - Remove logger
- //logger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW+"Could not parse one or more of the path names: "
- //+oldPath+", "+newPath);
PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW+"Could not parse one or more of the path names: "
+oldPath+", "+newPath);
throw new IllegalArgumentException("Could not parse one or more of the path names");
}
synchronized (emLock) {
checkBeforeOperationRun();
-
+
PolicyEntity existingPolicy;
boolean existingPolicyDeleted = false;
List<?> groups = null;
@@ -2651,15 +2523,14 @@ public class PolicyDBDao {
throw new IllegalArgumentException("The policy named "+existingPolicy.getPolicyName()+" already exists, cannot rename policy: "+newPolicy);
} else if(existingPolicy != null && existingPolicy.isDeleted()){
try{
- Query getGroups = em.createQuery("SELECT g FROM GroupEntity g JOIN g.policies p WHERE p.policyId=:pid");
+ Query getGroups = em.createQuery("SELECT g FROM GroupEntity g JOIN g.policies p WHERE p.policyId=:pid");
- getGroups.setParameter("pid", existingPolicy.getPolicyId());
- groups = getGroups.getResultList();
+ getGroups.setParameter("pid", existingPolicy.getPolicyId());
+ groups = getGroups.getResultList();
}catch(Exception e){
groups = new LinkedList<GroupEntity>();
}
for(Object o : groups){
-
GroupEntity group = (GroupEntity)o;
group.removePolicyFromGroup(existingPolicy);
}
@@ -2669,8 +2540,8 @@ public class PolicyDBDao {
logger.error("Error while removing the policy from groups: "+existingPolicy.getPolicyName());
}
try{
- em.remove(existingPolicy);
- em.flush();
+ em.remove(existingPolicy);
+ em.flush();
}catch(Exception e){
logger.error("Could not remove the existing deleted policy: "+existingPolicy.getPolicyName());
}
@@ -2678,78 +2549,70 @@ public class PolicyDBDao {
//create the new policy
//for each of the groups, add the new policy
}
-
- PolicyEntity policyToRename;
- try{
- policyToRename = getPolicy(oldPolicy[1],oldPolicy[0]);
- } catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW+"Could not get policy record to rename: "
- //+oldPolicy[1],e);
- PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "PolicyDBDao", "Could not get policy record to rename: "
- +oldPolicy[1]);
- throw new PersistenceException("Could not get policy record to rename");
- }
- String policyDataString = null;
- InputStream fileContentStream = null;
- String policyFilePath = Paths.get(oldPath).toAbsolutePath().toString();
- //I want to try the old path first, then if it doesn't work, try the new path
- for(int i=0;i<2;i++){
- try {
- fileContentStream = new FileInputStream(policyFilePath);
- policyDataString = IOUtils.toString(fileContentStream);
- } catch (FileNotFoundException e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught FileNotFoundException on new FileInputStream("+policyFilePath+")",e);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught FileNotFoundException on new FileInputStream("+policyFilePath+")");
- //if we can't find the oldPath, we'll try the new path
- if(i == 0){
- policyFilePath = Paths.get(newPath).toAbsolutePath().toString();
- continue;
- }
- throw new IllegalArgumentException("The file path does not exist");
- } catch(IOException e2){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught IOException on newIOUtils.toString("+fileContentStream+")",e2);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e2, "PolicyDBDao", "Caught IOException on newIOUtils.toString("+fileContentStream+")");
- throw new IllegalArgumentException("The file path cannot be read");
- } finally {
- IOUtils.closeQuietly(fileContentStream);
- }
- if(policyDataString == null){
- throw new IllegalArgumentException("The file path cannot be read");
- }
- //escape the loop
- i=2;
- }
- policyToRename.setPolicyName(newPolicy[1]);
- policyToRename.setPolicyData(policyDataString);
- policyToRename.setScope(newPolicy[0]);
- policyToRename.setModifiedBy(username);
- if(policyToRename.getConfigurationData() != null){
- //String configType = getPolicySubType(policyToRename.getConfigurationData().getConfigurationName());
- String configType = policyToRename.getConfigurationData().getConfigType();
- policyToRename.getConfigurationData().setConfigurationName(getConfigFile(newPolicy[1], newPolicy[0], configType));
- policyToRename.getConfigurationData().setModifiedBy(username);
- }
- if(policyToRename.getActionBodyEntity() != null){
- String newActionName = newPolicy[0]+"."+removeFileExtension(newPolicy[1])+".json";
- policyToRename.getActionBodyEntity().setActionBodyName(newActionName);
- policyToRename.getActionBodyEntity().setModifiedBy(username);
- }
- if(existingPolicyDeleted){
- for(Object o : groups){
-
- GroupEntity group = (GroupEntity)o;
- group.addPolicyToGroup(policyToRename);
+
+ PolicyEntity policyToRename;
+ try{
+ policyToRename = getPolicy(oldPolicy[1],oldPolicy[0]);
+ } catch(Exception e){
+ PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "PolicyDBDao", "Could not get policy record to rename: "
+ +oldPolicy[1]);
+ throw new PersistenceException("Could not get policy record to rename");
+ }
+ String policyDataString = null;
+ InputStream fileContentStream = null;
+ String policyFilePath = Paths.get(oldPath).toAbsolutePath().toString();
+ //I want to try the old path first, then if it doesn't work, try the new path
+ for(int i=0;i<2;i++){
+ try {
+ fileContentStream = new FileInputStream(policyFilePath);
+ policyDataString = IOUtils.toString(fileContentStream);
+ } catch (FileNotFoundException e) {
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught FileNotFoundException on new FileInputStream("+policyFilePath+")");
+ //if we can't find the oldPath, we'll try the new path
+ if(i == 0){
+ policyFilePath = Paths.get(newPath).toAbsolutePath().toString();
+ continue;
+ }
+ throw new IllegalArgumentException("The file path does not exist");
+ } catch(IOException e2){
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e2, "PolicyDBDao", "Caught IOException on newIOUtils.toString("+fileContentStream+")");
+ throw new IllegalArgumentException("The file path cannot be read");
+ } finally {
+ IOUtils.closeQuietly(fileContentStream);
+ }
+ if(policyDataString == null){
+ throw new IllegalArgumentException("The file path cannot be read");
+ }
+ //escape the loop
+ i=2;
+ }
+ policyToRename.setPolicyName(newPolicy[1]);
+ policyToRename.setPolicyData(policyDataString);
+ policyToRename.setScope(newPolicy[0]);
+ policyToRename.setModifiedBy(username);
+ if(policyToRename.getConfigurationData() != null){
+ String configType = policyToRename.getConfigurationData().getConfigType();
+ policyToRename.getConfigurationData().setConfigurationName(getConfigFile(newPolicy[1], configType));
+ policyToRename.getConfigurationData().setModifiedBy(username);
+ }
+ if(policyToRename.getActionBodyEntity() != null){
+ String newActionName = newPolicy[0]+"."+removeFileExtension(newPolicy[1])+".json";
+ policyToRename.getActionBodyEntity().setActionBodyName(newActionName);
+ policyToRename.getActionBodyEntity().setModifiedBy(username);
+ }
+ if(existingPolicyDeleted){
+ for(Object o : groups){
+
+ GroupEntity group = (GroupEntity)o;
+ group.addPolicyToGroup(policyToRename);
+ }
}
- }
- em.flush();
- this.policyId = policyToRename.getPolicyId();
- this.newGroupId = oldPath;
+ em.flush();
+ this.policyId = policyToRename.getPolicyId();
+ this.newGroupId = oldPath;
}
}
-
+
@Override
public GroupEntity getGroup(long groupKey){
logger.debug("getGroup(int groupKey) as getGroup("+groupKey+") called");
@@ -2758,33 +2621,27 @@ public class PolicyDBDao {
}
synchronized(emLock){
checkBeforeOperationRun(true);
- //check if group exists
- Query groupQuery = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupKey=:groupKey");
- groupQuery.setParameter("groupKey", groupKey);
- List<?> groupQueryList;
- try{
- groupQueryList = groupQuery.getResultList();
- }catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught Exception trying to get group with groupQuery.getResultList()",e);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to get group with groupQuery.getResultList()");
- throw new PersistenceException("Query failed trying to get group "+groupKey);
- }
- if(groupQueryList.size() < 1){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Group does not exist with groupKey "+groupKey);
- PolicyLogger.error("Group does not exist with groupKey "+groupKey);
- throw new PersistenceException("Group does not exist with groupKey "+groupKey);
- } else if(groupQueryList.size() > 1){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Somehow, more than one group with the groupKey "+groupKey+" were found in the database");
- PolicyLogger.error("Somehow, more than one group with the groupKey "+groupKey+" were found in the database");
- throw new PersistenceException("Somehow, more than one group with the groupKey "+groupKey+" were found in the database");
- }
+ //check if group exists
+ Query groupQuery = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupKey=:groupKey");
+ groupQuery.setParameter("groupKey", groupKey);
+ List<?> groupQueryList;
+ try{
+ groupQueryList = groupQuery.getResultList();
+ }catch(Exception e){
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to get group with groupQuery.getResultList()");
+ throw new PersistenceException("Query failed trying to get group "+groupKey);
+ }
+ if(groupQueryList.size() < 1){
+ PolicyLogger.error("Group does not exist with groupKey "+groupKey);
+ throw new PersistenceException("Group does not exist with groupKey "+groupKey);
+ } else if(groupQueryList.size() > 1){
+ PolicyLogger.error("Somehow, more than one group with the groupKey "+groupKey+" were found in the database");
+ throw new PersistenceException("Somehow, more than one group with the groupKey "+groupKey+" were found in the database");
+ }
return (GroupEntity)groupQueryList.get(0);
}
}
-
+
@Override
public GroupEntity getGroup(String groupId){
logger.debug("getGroup(String groupId) as getGroup("+groupId+") called");
@@ -2793,29 +2650,23 @@ public class PolicyDBDao {
}
synchronized(emLock){
checkBeforeOperationRun(true);
- //check if group exists
- Query groupQuery = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId");
- groupQuery.setParameter("groupId", groupId);
- List<?> groupQueryList;
- try{
- groupQueryList = groupQuery.getResultList();
- }catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught Exception trying to get group with groupQuery.getResultList()",e);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to get group with groupQuery.getResultList()");
- throw new PersistenceException("Query failed trying to get group "+groupId);
- }
- if(groupQueryList.size() < 1){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Group does not exist with id "+groupId);
- PolicyLogger.error("Group does not exist with id "+groupId);
- throw new PersistenceException("Group does not exist with id "+groupId);
- } else if(groupQueryList.size() > 1){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Somehow, more than one group with the id "+groupId+" were found in the database");
- PolicyLogger.error("Somehow, more than one group with the id "+groupId+" were found in the database");
- throw new PersistenceException("Somehow, more than one group with the id "+groupId+" were found in the database");
- }
+ //check if group exists
+ Query groupQuery = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId");
+ groupQuery.setParameter("groupId", groupId);
+ List<?> groupQueryList;
+ try{
+ groupQueryList = groupQuery.getResultList();
+ }catch(Exception e){
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to get group with groupQuery.getResultList()");
+ throw new PersistenceException("Query failed trying to get group "+groupId);
+ }
+ if(groupQueryList.size() < 1){
+ PolicyLogger.error("Group does not exist with id "+groupId);
+ throw new PersistenceException("Group does not exist with id "+groupId);
+ } else if(groupQueryList.size() > 1){
+ PolicyLogger.error("Somehow, more than one group with the id "+groupId+" were found in the database");
+ throw new PersistenceException("Somehow, more than one group with the id "+groupId+" were found in the database");
+ }
return (GroupEntity)groupQueryList.get(0);
}
}
@@ -2840,51 +2691,37 @@ public class PolicyDBDao {
}
synchronized(emLock){
checkBeforeOperationRun(true);
- //check if group exists
- Query pdpQuery = em.createQuery("SELECT p FROM PdpEntity p WHERE p.pdpKey=:pdpKey");
- pdpQuery.setParameter("pdpKey", pdpKey);
- List<?> pdpQueryList;
- try{
- pdpQueryList = pdpQuery.getResultList();
- }catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught Exception trying to get pdp with pdpQuery.getResultList()",e);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to get pdp with pdpQuery.getResultList()");
- throw new PersistenceException("Query failed trying to get pdp "+pdpKey);
- }
- if(pdpQueryList.size() < 1){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Pdp does not exist with pdpKey "+pdpKey);
- PolicyLogger.error("Pdp does not exist with pdpKey "+pdpKey);
- throw new PersistenceException("Pdp does not exist with pdpKey "+pdpKey);
- } else if(pdpQueryList.size() > 1){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Somehow, more than one pdp with the pdpKey "+pdpKey+" were found in the database");
- PolicyLogger.error("Somehow, more than one pdp with the pdpKey "+pdpKey+" were found in the database");
- throw new PersistenceException("Somehow, more than one pdp with the pdpKey "+pdpKey+" were found in the database");
- }
+ //check if group exists
+ Query pdpQuery = em.createQuery("SELECT p FROM PdpEntity p WHERE p.pdpKey=:pdpKey");
+ pdpQuery.setParameter("pdpKey", pdpKey);
+ List<?> pdpQueryList;
+ try{
+ pdpQueryList = pdpQuery.getResultList();
+ }catch(Exception e){
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to get pdp with pdpQuery.getResultList()");
+ throw new PersistenceException("Query failed trying to get pdp "+pdpKey);
+ }
+ if(pdpQueryList.size() < 1){
+ PolicyLogger.error("Pdp does not exist with pdpKey "+pdpKey);
+ throw new PersistenceException("Pdp does not exist with pdpKey "+pdpKey);
+ } else if(pdpQueryList.size() > 1){
+ PolicyLogger.error("Somehow, more than one pdp with the pdpKey "+pdpKey+" were found in the database");
+ throw new PersistenceException("Somehow, more than one pdp with the pdpKey "+pdpKey+" were found in the database");
+ }
return (PdpEntity)pdpQueryList.get(0);
}
}
- //FIXME: maybe this should be boolean
public void deletePolicy(String policyToDeletes){
synchronized(emLock){
-// if(isTransactionOpen()){
-// logger.error("A transaction is already open which has not been committed");
-// throw new IllegalStateException("A transaction is already open which has not been committed");
-// }
checkBeforeOperationRun();
- logger.debug("deletePolicy(String policyToDeletes) as deletePolicy("+policyToDeletes+") called");
- String[] scopeNameAndType = getScopeAndNameAndType(policyToDeletes);
- if(scopeNameAndType == null){
- throw new IllegalArgumentException("Could not parse file path");
- }
- String realScope = scopeNameAndType[0];
- String realName = scopeNameAndType[1];
-// if(isTransactionOpen()){
-// throw new IllegalStateException("A transaction is already open which has not been committed");
-// }
+ logger.debug("deletePolicy(String policyToDeletes) as deletePolicy("+policyToDeletes+") called");
+ String[] scopeNameAndType = getScopeAndNameAndType(policyToDeletes);
+ if(scopeNameAndType == null){
+ throw new IllegalArgumentException("Could not parse file path");
+ }
+ String realScope = scopeNameAndType[0];
+ String realName = scopeNameAndType[1];
Query deletePolicyQuery = em.createQuery("SELECT p FROM PolicyEntity p WHERE p.scope=:scope AND p.policyName=:policyName AND p.deleted=:deleted");
deletePolicyQuery.setParameter("scope",realScope);
deletePolicyQuery.setParameter("policyName", realName);
@@ -2894,12 +2731,9 @@ public class PolicyDBDao {
logger.warn("The policy being deleted could not be found.");
return;
} else if(deletePolicyQueryList.size() > 1){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Somehow, more than one policy with the same scope, name, and deleted status were found in the database");
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 {
- //em.getTransaction().begin();
PolicyEntity policyToDelete = (PolicyEntity)deletePolicyQueryList.get(0);
policyToDelete.setDeleted(true);
if(policyToDelete.getConfigurationData() != null){
@@ -2914,21 +2748,21 @@ public class PolicyDBDao {
abe.setDeleted(true);
}
}
-
+
em.flush();
this.policyId = policyToDelete.getPolicyId();
-
+
}
}
}
-
+
@Override
public boolean isTransactionOpen() {
logger.debug("isTransactionOpen() as isTransactionOpen() called");
synchronized(emLock){
- return em.isOpen() && em.getTransaction().isActive();
+ return em.isOpen() && em.getTransaction().isActive();
}
}
@@ -2938,9 +2772,6 @@ public class PolicyDBDao {
String[] oldPolicyData = getScopeAndNameAndType(oldPolicyPath);
String[] newPolicyData = getScopeAndNameAndType(newPolicyPath);
if(oldPolicyData == null || newPolicyData == null){
- //TODO:EELF Cleanup - Remove logger
- //logger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW+"Could not parse one or more of the path names: "
- //+oldPolicyPath+", "+newPolicyPath);
PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW+"Could not parse one or more of the path names: "
+oldPolicyPath+", "+newPolicyPath);
throw new IllegalArgumentException("Could not parse the oldPolicyPath or newPolicyPath");
@@ -2949,12 +2780,9 @@ public class PolicyDBDao {
try{
oldPolicy = getPolicy(oldPolicyData[1],oldPolicyData[0]);
}catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW+"Could not get policy record to clone: "
- //+oldPolicyData[1],e);
PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "PolicyDBDao", "Could not get policy record to clone: "
+oldPolicyData[1]);
- throw new PersistenceException("Could not get policy record to clone");
+ throw new PersistenceException("Could not get policy record to clone");
}
ConfigurationDataEntity clonedConfig = null;
if(oldPolicy.getConfigurationData() != null){
@@ -2963,7 +2791,7 @@ public class PolicyDBDao {
clonedConfig.setConfigBody(oldPolicy.getConfigurationData().getConfigBody());
clonedConfig.setConfigType(oldPolicy.getConfigurationData().getConfigType());
clonedConfig.setCreatedBy(username);
- clonedConfig.setConfigurationName(getConfigFile(newPolicyData[1], newPolicyData[0], oldPolicy.getConfigurationData().getConfigType()));
+ clonedConfig.setConfigurationName(getConfigFile(newPolicyData[1], oldPolicy.getConfigurationData().getConfigType()));
clonedConfig.setDescription(oldPolicy.getConfigurationData().getDescription());
clonedConfig.setModifiedBy(username);
em.flush();
@@ -2978,10 +2806,10 @@ public class PolicyDBDao {
clonedAction.setModifiedBy(username);
em.flush();
}
-
-
+
+
}
-
+
@Override
public void createPolicy(String filePath, String username) {
logger.debug("createPolicy(String filePath, String username) as createPolicy("+filePath+","+username+") called");
@@ -3001,8 +2829,6 @@ public class PolicyDBDao {
policyName = stripPolicyName(policyName);
}catch(IllegalArgumentException e){
if(scopeAndName[2].equals("Config")){
- //TODO:EELF Cleanup - Remove logger
- //logger.error(e.getMessage());
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Exception calling stripPolicyName with policy name: "+policyName);
throw new IllegalArgumentException(e.getMessage(),e);
} else {
@@ -3016,13 +2842,9 @@ public class PolicyDBDao {
fileContentStream = new FileInputStream(filePath);
policyDataString = IOUtils.toString(fileContentStream);
} catch (FileNotFoundException e) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught FileNotFoundException on new FileInputStream("+filePath+")",e);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught FileNotFoundException on new FileInputStream("+filePath+")");
throw new IllegalArgumentException("The file path does not exist");
} catch(IOException e2){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught IOException on newIOUtils.toString("+fileContentStream+")",e2);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e2, "PolicyDBDao", "Caught IOException on newIOUtils.toString("+fileContentStream+")");
throw new IllegalArgumentException("The file path cannot be read");
} finally {
@@ -3032,10 +2854,10 @@ public class PolicyDBDao {
throw new IllegalArgumentException("The file path cannot be read");
}
try{
- String policyDescription = getElementFromXMLString("/Description", policyDataString);
- if(policyDescription != null){
- policy.setPolicyDescription(policyDescription);
- }
+ String policyDescription = getElementFromXMLString("/Description", policyDataString);
+ if(policyDescription != null){
+ policy.setPolicyDescription(policyDescription);
+ }
} catch(Exception e){
logger.warn("Could not get description from the policy file");
}
@@ -3043,13 +2865,11 @@ public class PolicyDBDao {
//this method is not used for config, since there is no way to get config info (could be modified to)
String configPath;
try{
- configPath = evaluateXPath("/Policy/Rule/AdviceExpressions/AdviceExpression[contains(@AdviceId,'ID')]/AttributeAssignmentExpression[@AttributeId='URLID']/AttributeValue/text()", policyDataString);
- if(configPath == null){
- throw new NullPointerException("configPath is null");
- }
+ configPath = evaluateXPath("/Policy/Rule/AdviceExpressions/AdviceExpression[contains(@AdviceId,'ID')]/AttributeAssignmentExpression[@AttributeId='URLID']/AttributeValue/text()", policyDataString);
+ if(configPath == null){
+ throw new NullPointerException("configPath is null");
+ }
} catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Could not get config file path from policy file",e);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Could not get config file path from policy file");
throw new IllegalArgumentException("Could not get config file path from policy file");
}
@@ -3063,6 +2883,7 @@ public class PolicyDBDao {
}
createPolicy(policy,username,scopeAndName[0],scopeAndName[1],policyDataString);
}
+
private String processConfigPath(String configPath){
String webappsPath = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_WEBAPPS);
if(webappsPath == null){
@@ -3072,7 +2893,7 @@ public class PolicyDBDao {
configPath = configPath.replace("$URL", webappsPath);
//make sure the correct slashes are in
try{
- configPath = Paths.get(configPath).toString();
+ configPath = Paths.get(configPath).toString();
} catch(InvalidPathException e){
logger.error("Invalid config path: "+configPath);
throw new IllegalArgumentException("Invalid config path: "+configPath);
@@ -3099,12 +2920,11 @@ public class PolicyDBDao {
}
return configDataString;
}
-
+
@Override
public void createPolicy(Policy policy, String username){
logger.debug("createPolicy(PolicyRestAdapter policy, String username) as createPolicy("+policy+","+username+") called");
- String policyScope = computeScope(policy.policyAdapter.getParentPath(),policy.policyAdapter.getUserGitPath());
-
+ 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.
InputStream policyXmlStream = XACMLPolicyWriter.getXmlAsInputStream((PolicyType)policy.getCorrectPolicyDataObject());
@@ -3113,8 +2933,6 @@ public class PolicyDBDao {
policyDataString = IOUtils.toString(policyXmlStream);
} catch (IOException e) {
policyDataString = "could not read";
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught IOException on IOUtils.toString("+policyXmlStream+")",e);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught IOException on IOUtils.toString("+policyXmlStream+")");
throw new IllegalArgumentException("Cannot parse the policy xml from the PolicyRestAdapter.");
}
@@ -3125,10 +2943,10 @@ public class PolicyDBDao {
} else if (policy.policyAdapter.getPolicyType().equalsIgnoreCase("Action")) {
configPath = evaluateXPath("/Policy/Rule/ObligationExpressions/ObligationExpression[contains(@ObligationId, " +policy.policyAdapter.getActionAttribute()+ ")]/AttributeAssignmentExpression[@AttributeId='body']/AttributeValue/text()", policyDataString);
}
-
+
String prefix = null;
if (policy.policyAdapter.getPolicyType().equalsIgnoreCase("Config")) {
-
+
prefix = configPath.substring(configPath.indexOf(policyScope+".")+policyScope.concat(".").length(), configPath.indexOf(policy.policyAdapter.getPolicyName()));
if(isNullOrEmpty(policy.policyAdapter.getConfigBodyData())){
String configData = "";
@@ -3145,25 +2963,18 @@ public class PolicyDBDao {
}
policy.policyAdapter.setConfigBodyData(configData);
}
-
} else if (policy.policyAdapter.getPolicyType().equalsIgnoreCase("Action")) {
-
prefix = "Action_";
-
} else if (policy.policyAdapter.getPolicyType().equalsIgnoreCase("Decision")) {
-
prefix = "Decision_";
}
-
+
if(!(policy.policyAdapter.getData() instanceof PolicyType)){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("The data field is not an instance of 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 = prefix+policy.policyAdapter.getPolicyName()+"."+((PolicyType)policy.policyAdapter.getData()).getVersion()+".xml";
+ String finalName = policyScope + "." + prefix+policy.policyAdapter.getPolicyName()+"."+((PolicyType)policy.policyAdapter.getData()).getVersion()+".xml";
if(policy.policyAdapter.getConfigType() == null || policy.policyAdapter.getConfigType().equals("")){
- //we need to make it
//get the config file extension
String ext = "";
if (configPath != null) {
@@ -3171,7 +2982,7 @@ public class PolicyDBDao {
ext = configPath.substring(configPath.lastIndexOf('.'), configPath.length());;
}
}
-
+
if(ext.contains("txt")){
policy.policyAdapter.setConfigType(OTHER_CONFIG);
} else if(ext.contains("json")){
@@ -3187,9 +2998,9 @@ public class PolicyDBDao {
}
}
createPolicy(policy.policyAdapter, username, policyScope,finalName,policyDataString);
-
+
}
-
+
@Override
public void close(){
synchronized(emLock){
@@ -3210,11 +3021,6 @@ public class PolicyDBDao {
@Override
public void createGroup(String groupId, String groupName, String groupDescription, String username) {
logger.debug("deletePolicy(String policyToDeletes) as createGroup("+groupId+", "+groupName+", "+groupDescription+") called");
-// if(isTransactionOpen()){
-// logger.error("A transaction is already open which has not been committed");
-// throw new IllegalStateException("A transaction is already open which has not been committed");
-// }
- //parameter check
if(isNullOrEmpty(groupId, groupName, username)){
throw new IllegalArgumentException("groupId, groupName, and username must not be null or empty");
}
@@ -3224,47 +3030,36 @@ public class PolicyDBDao {
synchronized(emLock){
checkBeforeOperationRun();
- Query checkGroupQuery = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted");
- checkGroupQuery.setParameter("groupId", groupId);
- checkGroupQuery.setParameter("deleted", false);
- List<?> checkGroupQueryList;
- try{
- checkGroupQueryList = checkGroupQuery.getResultList();
- } catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught Exception on checkGroupQuery.getResultList()",e);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception on checkGroupQuery.getResultList()");
- throw new PersistenceException("Query failed trying to check for existing group");
- }
- if(checkGroupQueryList.size() > 0){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("The group being added already exists with id "+groupId);
- PolicyLogger.error("The group being added already exists with id "+groupId);
- throw new PersistenceException("The group being added already exists with id "+groupId);
- }
- //em.getTransaction().begin();
- GroupEntity newGroup = new GroupEntity();
- em.persist(newGroup);
- newGroup.setCreatedBy(username);
- newGroup.setModifiedBy(username);
- newGroup.setGroupName(groupName);
- newGroup.setGroupId(groupId);
- newGroup.setDescription(groupDescription);
-
- em.flush();
- this.groupId = newGroup.getGroupKey();
+ Query checkGroupQuery = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted");
+ checkGroupQuery.setParameter("groupId", groupId);
+ checkGroupQuery.setParameter("deleted", false);
+ List<?> checkGroupQueryList;
+ try{
+ checkGroupQueryList = checkGroupQuery.getResultList();
+ } catch(Exception e){
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception on checkGroupQuery.getResultList()");
+ throw new PersistenceException("Query failed trying to check for existing group");
+ }
+ if(checkGroupQueryList.size() > 0){
+ PolicyLogger.error("The group being added already exists with id "+groupId);
+ throw new PersistenceException("The group being added already exists with id "+groupId);
+ }
+ GroupEntity newGroup = new GroupEntity();
+ em.persist(newGroup);
+ newGroup.setCreatedBy(username);
+ newGroup.setModifiedBy(username);
+ newGroup.setGroupName(groupName);
+ newGroup.setGroupId(groupId);
+ newGroup.setDescription(groupDescription);
+
+ em.flush();
+ this.groupId = newGroup.getGroupKey();
}
}
@Override
public void updateGroup(EcompPDPGroup group, String username){
logger.debug("updateGroup(PDPGroup group) as updateGroup("+group+","+username+") called");
-// if(isTransactionOpen()){
-// logger.error("A transaction is already open which has not been committed");
-// throw new IllegalStateException("A transaction is already open which has not been committed");
-// }
-
- //parameter check
if(group == null){
throw new IllegalArgumentException("PDPGroup group must not be null");
}
@@ -3274,103 +3069,86 @@ public class PolicyDBDao {
synchronized(emLock){
checkBeforeOperationRun();
- Query getGroupQuery = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted");
- getGroupQuery.setParameter("groupId", group.getId());
- getGroupQuery.setParameter("deleted", false);
- List<?> getGroupQueryList;
- try{
- getGroupQueryList = getGroupQuery.getResultList();
- } catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught Exception on getGroupQuery.getResultList()",e);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception on getGroupQuery.getResultList()");
- throw new PersistenceException("Query failed trying to get group "+group.getId()+" for editing");
- }
- if(getGroupQueryList.size() < 1){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("The group cannot be found to update with id "+group.getId());
- 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){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Somehow, more than one group with the same id "+group.getId()+" and deleted status were found in the database");
- PolicyLogger.error("Somehow, more than one group with the same id "+group.getId()+" and deleted status were found in the database");
- throw new PersistenceException("Somehow, more than one group with the same id "+group.getId()+" and deleted status were found in the database");
- }
- //em.getTransaction().begin();
- GroupEntity groupToUpdate = (GroupEntity)getGroupQueryList.get(0);
- if(!stringEquals(groupToUpdate.getModifiedBy(), username)){
- groupToUpdate.setModifiedBy(username);
- }
- if(group.getDescription() != null && !stringEquals(group.getDescription(),groupToUpdate.getDescription())){
- groupToUpdate.setDescription(group.getDescription());
- }
- //let's find out what policies have been deleted
- StdPDPGroup oldGroup = null;
- try {
- oldGroup = (StdPDPGroup) papEngine.getGroup(group.getId());
- } catch (PAPException e1) {
- //TODO:EELF Cleanup - Remove logger
- //logger.error("We cannot get the group from the papEngine to delete policies",e1);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e1, "PolicyDBDao", "We cannot get the group from the papEngine to delete policies");
- }
- if(oldGroup == null){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("We cannot get the group from the papEngine to delete policies");
- PolicyLogger.error("We cannot get the group from the papEngine to delete policies");
- } else {
-
- Set<String> newPolicySet = new HashSet<String>(group.getPolicies().size());
- //a multiple of n runtime is faster than n^2, so I am using a hashset to do the comparison
- for(PDPPolicy pol: group.getPolicies()){
- newPolicySet.add(pol.getId());
- }
- for(PDPPolicy pol : oldGroup.getPolicies()){
- //should be fast since getPolicies uses a HashSet in StdPDPGroup
- if(!newPolicySet.contains(pol.getId())){
- String[] scopeAndName = getNameScopeAndVersionFromPdpPolicy(pol.getId());
- PolicyEntity policyToDelete;
- try{
- policyToDelete = getPolicy(scopeAndName[0],scopeAndName[1]);
- }catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Could not get policy to remove: "+pol.getId(),e);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Could not get policy to remove: "+pol.getId());
- throw new PersistenceException("Could not get policy to remove: "+pol.getId());
- }
- groupToUpdate.getPolicies().remove(policyToDelete);
-
- }
- }
- }
- if(group.getName() != null && !stringEquals(group.getName(),groupToUpdate.getgroupName())){
- //we need to check if the new id exists in the database
- String newGroupId = createNewPDPGroupId(group.getName());
- Query checkGroupQuery = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted");
- checkGroupQuery.setParameter("groupId", newGroupId);
- checkGroupQuery.setParameter("deleted", false);
- List<?> checkGroupQueryList;
+ Query getGroupQuery = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted");
+ getGroupQuery.setParameter("groupId", group.getId());
+ getGroupQuery.setParameter("deleted", false);
+ List<?> getGroupQueryList;
try{
- checkGroupQueryList = checkGroupQuery.getResultList();
+ getGroupQueryList = getGroupQuery.getResultList();
} catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught Exception on checkGroupQuery.getResultList()",e);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception on checkGroupQuery.getResultList()");
- throw new PersistenceException("Query failed trying to check for existing group");
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception on getGroupQuery.getResultList()");
+ throw new PersistenceException("Query failed trying to get group "+group.getId()+" for editing");
}
- if(checkGroupQueryList.size() != 0){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("The new group name already exists, group id "+newGroupId);
- PolicyLogger.error("The new group name already exists, group id "+newGroupId);
- throw new PersistenceException("The new group name already exists, group id "+newGroupId);
+ if(getGroupQueryList.size() < 1){
+ PolicyLogger.error("The group cannot be found to update with id "+group.getId());
+ throw new PersistenceException("The group cannot be found to update with id "+group.getId());
+ } else if(getGroupQueryList.size() > 1){
+ PolicyLogger.error("Somehow, more than one group with the same id "+group.getId()+" and deleted status were found in the database");
+ throw new PersistenceException("Somehow, more than one group with the same id "+group.getId()+" and deleted status were found in the database");
}
- groupToUpdate.setGroupId(newGroupId);
- groupToUpdate.setGroupName(group.getName());
- this.newGroupId = group.getId();
- }
-
- em.flush();
- this.groupId = groupToUpdate.getGroupKey();
+ GroupEntity groupToUpdate = (GroupEntity)getGroupQueryList.get(0);
+ if(!stringEquals(groupToUpdate.getModifiedBy(), username)){
+ groupToUpdate.setModifiedBy(username);
+ }
+ if(group.getDescription() != null && !stringEquals(group.getDescription(),groupToUpdate.getDescription())){
+ groupToUpdate.setDescription(group.getDescription());
+ }
+ //let's find out what policies have been deleted
+ StdPDPGroup oldGroup = null;
+ try {
+ oldGroup = (StdPDPGroup) papEngine.getGroup(group.getId());
+ } catch (PAPException e1) {
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e1, "PolicyDBDao", "We cannot get the group from the papEngine to delete policies");
+ }
+ if(oldGroup == null){
+ PolicyLogger.error("We cannot get the group from the papEngine to delete policies");
+ } else {
+
+ Set<String> newPolicySet = new HashSet<String>(group.getPolicies().size());
+ //a multiple of n runtime is faster than n^2, so I am using a hashset to do the comparison
+ for(PDPPolicy pol: group.getPolicies()){
+ newPolicySet.add(pol.getId());
+ }
+ for(PDPPolicy pol : oldGroup.getPolicies()){
+ //should be fast since getPolicies uses a HashSet in StdPDPGroup
+ if(!newPolicySet.contains(pol.getId())){
+ String[] scopeAndName = getNameScopeAndVersionFromPdpPolicy(pol.getId());
+ PolicyEntity policyToDelete;
+ try{
+ policyToDelete = getPolicy(scopeAndName[0],scopeAndName[1]);
+ }catch(Exception e){
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Could not get policy to remove: "+pol.getId());
+ throw new PersistenceException("Could not get policy to remove: "+pol.getId());
+ }
+ groupToUpdate.getPolicies().remove(policyToDelete);
+
+ }
+ }
+ }
+ if(group.getName() != null && !stringEquals(group.getName(),groupToUpdate.getgroupName())){
+ //we need to check if the new id exists in the database
+ String newGroupId = createNewPDPGroupId(group.getName());
+ Query checkGroupQuery = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted");
+ checkGroupQuery.setParameter("groupId", newGroupId);
+ checkGroupQuery.setParameter("deleted", false);
+ List<?> checkGroupQueryList;
+ try{
+ checkGroupQueryList = checkGroupQuery.getResultList();
+ } catch(Exception e){
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception on checkGroupQuery.getResultList()");
+ throw new PersistenceException("Query failed trying to check for existing group");
+ }
+ if(checkGroupQueryList.size() != 0){
+ PolicyLogger.error("The new group name already exists, group id "+newGroupId);
+ throw new PersistenceException("The new group name already exists, group id "+newGroupId);
+ }
+ groupToUpdate.setGroupId(newGroupId);
+ groupToUpdate.setGroupName(group.getName());
+ this.newGroupId = group.getId();
+ }
+
+ em.flush();
+ this.groupId = groupToUpdate.getGroupKey();
}
}
@@ -3383,76 +3161,60 @@ public class PolicyDBDao {
if(!(pdpDescription instanceof String)){
pdpDescription = "";
}
-// if(isTransactionOpen()){
-// logger.error("A transaction is already open which has not been committed");
-// throw new IllegalStateException("A transaction is already open which has not been committed");
-// }
-
synchronized(emLock){
checkBeforeOperationRun();
- Query checkGroupQuery = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted");
- checkGroupQuery.setParameter("groupId", groupID);
- checkGroupQuery.setParameter("deleted", false);
- List<?> checkGroupQueryList;
- try{
- checkGroupQueryList = checkGroupQuery.getResultList();
- } catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught Exception trying to check for existing group on checkGroupQuery.getResultList()",e);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to check for existing group on checkGroupQuery.getResultList()");
- throw new PersistenceException("Query failed trying to check for existing group");
- }
- if(checkGroupQueryList.size() != 1){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("The group does not exist");
- PolicyLogger.error("The group does not exist");
- throw new PersistenceException("The group does not exist");
- }
- Query checkDuplicateQuery = em.createQuery("SELECT p FROM PdpEntity p WHERE p.pdpId=:pdpId AND p.deleted=:deleted");
- checkDuplicateQuery.setParameter("pdpId", pdpID);
- checkDuplicateQuery.setParameter("deleted", false);
- List<?> checkDuplicateList;
- try{
- checkDuplicateList = checkDuplicateQuery.getResultList();
- } catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught Exception trying to check for duplicate PDP "+pdpID+" on checkDuplicateQuery.getResultList()",e);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to check for duplicate PDP "+pdpID+" on checkDuplicateQuery.getResultList()");
- throw new PersistenceException("Query failed trying to check for duplicate PDP "+pdpID);
- }
- PdpEntity newPdp;
- if(checkDuplicateList.size() > 0){
- logger.warn("PDP already exists with id "+pdpID);
- newPdp = (PdpEntity)checkDuplicateList.get(0);
- } else {
- newPdp = new PdpEntity();
- em.persist(newPdp);
- }
+ Query checkGroupQuery = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted");
+ checkGroupQuery.setParameter("groupId", groupID);
+ checkGroupQuery.setParameter("deleted", false);
+ List<?> checkGroupQueryList;
+ try{
+ checkGroupQueryList = checkGroupQuery.getResultList();
+ } catch(Exception e){
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to check for existing group on checkGroupQuery.getResultList()");
+ throw new PersistenceException("Query failed trying to check for existing group");
+ }
+ if(checkGroupQueryList.size() != 1){
+ PolicyLogger.error("The group does not exist");
+ throw new PersistenceException("The group does not exist");
+ }
+ Query checkDuplicateQuery = em.createQuery("SELECT p FROM PdpEntity p WHERE p.pdpId=:pdpId AND p.deleted=:deleted");
+ checkDuplicateQuery.setParameter("pdpId", pdpID);
+ checkDuplicateQuery.setParameter("deleted", false);
+ List<?> checkDuplicateList;
+ try{
+ checkDuplicateList = checkDuplicateQuery.getResultList();
+ } catch(Exception e){
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to check for duplicate PDP "+pdpID+" on checkDuplicateQuery.getResultList()");
+ throw new PersistenceException("Query failed trying to check for duplicate PDP "+pdpID);
+ }
+ PdpEntity newPdp;
+ if(checkDuplicateList.size() > 0){
+ logger.warn("PDP already exists with id "+pdpID);
+ newPdp = (PdpEntity)checkDuplicateList.get(0);
+ } else {
+ newPdp = new PdpEntity();
+ em.persist(newPdp);
+ }
+
+ newPdp.setCreatedBy(username);
+ newPdp.setDeleted(false);
+ newPdp.setDescription(pdpDescription);
+ newPdp.setGroup((GroupEntity)checkGroupQueryList.get(0));
+ newPdp.setJmxPort(pdpJmxPort);
+ newPdp.setModifiedBy(username);
+ newPdp.setPdpId(pdpID);
+ newPdp.setPdpName(pdpName);
- newPdp.setCreatedBy(username);
- newPdp.setDeleted(false);
- newPdp.setDescription(pdpDescription);
- newPdp.setGroup((GroupEntity)checkGroupQueryList.get(0));
- newPdp.setJmxPort(pdpJmxPort);
- newPdp.setModifiedBy(username);
- newPdp.setPdpId(pdpID);
- newPdp.setPdpName(pdpName);
-
- em.flush();
- this.pdpId = newPdp.getPdpKey();
+ em.flush();
+ this.pdpId = newPdp.getPdpKey();
}
}
-
+
@Override
public void updatePdp(EcompPDP pdp, String username){
logger.debug("updatePdp(PDP pdp, String username) as updatePdp("+pdp+","+username+") called");
-// if(isTransactionOpen()){
-// logger.error("A transaction is already open which has not been committed");
-// throw new IllegalStateException("A transaction is already open which has not been committed");
-// }
- //parameter check
if(pdp == null){
throw new IllegalArgumentException("PDP pdp must not be null");
}
@@ -3462,187 +3224,150 @@ public class PolicyDBDao {
synchronized(emLock){
checkBeforeOperationRun();
- Query getPdpQuery = em.createQuery("SELECT p FROM PdpEntity p WHERE p.pdpId=:pdpId AND p.deleted=:deleted");
- getPdpQuery.setParameter("pdpId", pdp.getId());
- getPdpQuery.setParameter("deleted", false);
- List<?> getPdpQueryList;
- try{
- getPdpQueryList = getPdpQuery.getResultList();
- } catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught Exception on getPdpQuery.getResultList()",e);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception on getPdpQuery.getResultList()");
- throw new PersistenceException("Query failed trying to get PDP "+pdp.getId());
- }
- if(getPdpQueryList.size() < 1){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("The pdp cannot be found to update with id "+pdp.getId());
- 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){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Somehow, more than one pdp with the same id "+pdp.getId()+" and deleted status were found in the database");
- PolicyLogger.error("Somehow, more than one pdp with the same id "+pdp.getId()+" and deleted status were found in the database");
- throw new PersistenceException("Somehow, more than one pdp with the same id "+pdp.getId()+" and deleted status were found in the database");
- }
- //em.getTransaction().begin();
- PdpEntity pdpToUpdate = (PdpEntity)getPdpQueryList.get(0);
- if(!stringEquals(pdpToUpdate.getModifiedBy(), username)){
- pdpToUpdate.setModifiedBy(username);
- }
- if(pdp.getDescription() != null && !stringEquals(pdp.getDescription(),pdpToUpdate.getDescription())){
- pdpToUpdate.setDescription(pdp.getDescription());
- }
- if(pdp.getName() != null && !stringEquals(pdp.getName(),pdpToUpdate.getPdpName())){
- pdpToUpdate.setPdpName(pdp.getName());
- }
- if(pdp.getJmxPort() != null && !pdp.getJmxPort().equals(pdpToUpdate.getJmxPort())){
- pdpToUpdate.setJmxPort(pdp.getJmxPort());
- }
-
- em.flush();
- this.pdpId = pdpToUpdate.getPdpKey();
+ Query getPdpQuery = em.createQuery("SELECT p FROM PdpEntity p WHERE p.pdpId=:pdpId AND p.deleted=:deleted");
+ getPdpQuery.setParameter("pdpId", pdp.getId());
+ getPdpQuery.setParameter("deleted", false);
+ List<?> getPdpQueryList;
+ try{
+ getPdpQueryList = getPdpQuery.getResultList();
+ } catch(Exception e){
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception on getPdpQuery.getResultList()");
+ throw new PersistenceException("Query failed trying to get PDP "+pdp.getId());
+ }
+ if(getPdpQueryList.size() < 1){
+ PolicyLogger.error("The pdp cannot be found to update with id "+pdp.getId());
+ throw new PersistenceException("The pdp cannot be found to update with id "+pdp.getId());
+ } else if(getPdpQueryList.size() > 1){
+ PolicyLogger.error("Somehow, more than one pdp with the same id "+pdp.getId()+" and deleted status were found in the database");
+ throw new PersistenceException("Somehow, more than one pdp with the same id "+pdp.getId()+" and deleted status were found in the database");
+ }
+ PdpEntity pdpToUpdate = (PdpEntity)getPdpQueryList.get(0);
+ if(!stringEquals(pdpToUpdate.getModifiedBy(), username)){
+ pdpToUpdate.setModifiedBy(username);
+ }
+ if(pdp.getDescription() != null && !stringEquals(pdp.getDescription(),pdpToUpdate.getDescription())){
+ pdpToUpdate.setDescription(pdp.getDescription());
+ }
+ if(pdp.getName() != null && !stringEquals(pdp.getName(),pdpToUpdate.getPdpName())){
+ pdpToUpdate.setPdpName(pdp.getName());
+ }
+ if(pdp.getJmxPort() != null && !pdp.getJmxPort().equals(pdpToUpdate.getJmxPort())){
+ pdpToUpdate.setJmxPort(pdp.getJmxPort());
+ }
+
+ em.flush();
+ this.pdpId = pdpToUpdate.getPdpKey();
}
}
-
+
@Override
public void movePdp(EcompPDP pdp, EcompPDPGroup group, String username){
logger.debug("movePdp(PDP pdp, PDPGroup group, String username) as movePdp("+pdp+","+group+","+username+") called");
-// if(isTransactionOpen()){
-// logger.error("A transaction is already open which has not been committed");
-// throw new IllegalStateException("A transaction is already open which has not been committed");
-// }
if(pdp == null || group == null){
throw new IllegalArgumentException("PDP pdp and PDPGroup group must not be null");
}
if(isNullOrEmpty(username,pdp.getId(),group.getId())){
throw new IllegalArgumentException("pdp.getId(), group.getId(), and username must not be null or empty");
}
-
+
synchronized(emLock){
checkBeforeOperationRun();
- //check if pdp exists
- Query getPdpQuery = em.createQuery("SELECT p FROM PdpEntity p WHERE p.pdpId=:pdpId AND p.deleted=:deleted");
- getPdpQuery.setParameter("pdpId", pdp.getId());
- getPdpQuery.setParameter("deleted", false);
- List<?> getPdpQueryList;
- try{
- getPdpQueryList = getPdpQuery.getResultList();
- } catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught Exception on getPdpQuery.getResultList()",e);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception on getPdpQuery.getResultList()");
- throw new PersistenceException("Query failed trying to get pdp to move with id "+pdp.getId());
- }
- if(getPdpQueryList.size() < 1){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("The pdp cannot be found to move with id "+pdp.getId());
- 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){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Somehow, more than one pdp with the same id "+pdp.getId()+" and deleted status were found in the database");
- PolicyLogger.error("Somehow, more than one pdp with the same id "+pdp.getId()+" and deleted status were found in the database");
- throw new PersistenceException("Somehow, more than one pdp with the same id "+pdp.getId()+" and deleted status were found in the database");
- }
-
- //check if new group exists
- Query checkGroupQuery = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted");
- checkGroupQuery.setParameter("groupId", group.getId());
- checkGroupQuery.setParameter("deleted", false);
- List<?> checkGroupQueryList;
- try{
- checkGroupQueryList = checkGroupQuery.getResultList();
- } catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught Exception trying to get group on checkGroupQuery.getResultList()",e);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to get group on checkGroupQuery.getResultList()");
- throw new PersistenceException("Query failed trying to get new group "+group.getId());
- }
- if(checkGroupQueryList.size() != 1){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("The group "+group.getId()+" does not exist");
- 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);
- //move it
- //em.getTransaction().begin();
- PdpEntity pdpToUpdate = (PdpEntity)getPdpQueryList.get(0);
- pdpToUpdate.setGroup(groupToMoveInto);
- if(!stringEquals(pdpToUpdate.getModifiedBy(), username)){
- pdpToUpdate.setModifiedBy(username);
- }
-
- em.flush();
- this.pdpId = pdpToUpdate.getPdpKey();
+ //check if pdp exists
+ Query getPdpQuery = em.createQuery("SELECT p FROM PdpEntity p WHERE p.pdpId=:pdpId AND p.deleted=:deleted");
+ getPdpQuery.setParameter("pdpId", pdp.getId());
+ getPdpQuery.setParameter("deleted", false);
+ List<?> getPdpQueryList;
+ try{
+ getPdpQueryList = getPdpQuery.getResultList();
+ } catch(Exception e){
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception on getPdpQuery.getResultList()");
+ throw new PersistenceException("Query failed trying to get pdp to move with id "+pdp.getId());
+ }
+ if(getPdpQueryList.size() < 1){
+ PolicyLogger.error("The pdp cannot be found to move with id "+pdp.getId());
+ throw new PersistenceException("The pdp cannot be found to move with id "+pdp.getId());
+ } else if(getPdpQueryList.size() > 1){
+ PolicyLogger.error("Somehow, more than one pdp with the same id "+pdp.getId()+" and deleted status were found in the database");
+ throw new PersistenceException("Somehow, more than one pdp with the same id "+pdp.getId()+" and deleted status were found in the database");
+ }
+
+ //check if new group exists
+ Query checkGroupQuery = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted");
+ checkGroupQuery.setParameter("groupId", group.getId());
+ checkGroupQuery.setParameter("deleted", false);
+ List<?> checkGroupQueryList;
+ try{
+ checkGroupQueryList = checkGroupQuery.getResultList();
+ } catch(Exception e){
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to get group on checkGroupQuery.getResultList()");
+ throw new PersistenceException("Query failed trying to get new group "+group.getId());
+ }
+ if(checkGroupQueryList.size() != 1){
+ PolicyLogger.error("The group "+group.getId()+" does not exist");
+ throw new PersistenceException("The group "+group.getId()+" does not exist");
+ }
+ GroupEntity groupToMoveInto = (GroupEntity)checkGroupQueryList.get(0);
+ PdpEntity pdpToUpdate = (PdpEntity)getPdpQueryList.get(0);
+ pdpToUpdate.setGroup(groupToMoveInto);
+ if(!stringEquals(pdpToUpdate.getModifiedBy(), username)){
+ pdpToUpdate.setModifiedBy(username);
+ }
+
+ em.flush();
+ this.pdpId = pdpToUpdate.getPdpKey();
}
}
-
+
@Override
public void changeDefaultGroup(EcompPDPGroup group, String username){
logger.debug("changeDefaultGroup(PDPGroup group, String username) as changeDefaultGroup("+group+","+username+") called");
-// if(isTransactionOpen()){
-// logger.error("A transaction is already open which has not been committed");
-// throw new IllegalStateException("A transaction is already open which has not been committed");
-// }
- //parameter check
if(group == null){
throw new IllegalArgumentException("PDPGroup group must not be null");
}
if(isNullOrEmpty(group.getId(),username)){
throw new IllegalArgumentException("group.getId() and username must not be null or empty");
}
-
+
synchronized(emLock){
checkBeforeOperationRun();
- Query getGroupQuery = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted");
- getGroupQuery.setParameter("groupId", group.getId());
- getGroupQuery.setParameter("deleted", false);
- List<?> getGroupQueryList;
- try{
- getGroupQueryList = getGroupQuery.getResultList();
- } catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught Exception on getGroupQuery.getResultList()",e);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception on getGroupQuery.getResultList()");
- throw new PersistenceException("Query failed trying to get group "+group.getId());
- }
- if(getGroupQueryList.size() < 1){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("The group cannot be found to set default with id "+group.getId());
- 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){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Somehow, more than one group with the same id "+group.getId()+" and deleted status were found in the database");
- PolicyLogger.error("Somehow, more than one group with the same id "+group.getId()+" and deleted status were found in the database");
- throw new PersistenceException("Somehow, more than one group with the same id "+group.getId()+" and deleted status were found in the database");
- }
- //em.getTransaction().begin();
- GroupEntity newDefaultGroup = (GroupEntity)getGroupQueryList.get(0);
- newDefaultGroup.setDefaultGroup(true);
- if(!stringEquals(newDefaultGroup.getModifiedBy(), username)){
- newDefaultGroup.setModifiedBy(username);
- }
-
- em.flush();
- this.groupId = newDefaultGroup.getGroupKey();
- Query setAllGroupsNotDefault = em.createQuery("UPDATE GroupEntity g SET g.defaultGroup=:defaultGroup WHERE g.deleted=:deleted AND g.groupKey<>:groupKey");
- //not going to set modified by for all groups
- setAllGroupsNotDefault.setParameter("defaultGroup", false);
- setAllGroupsNotDefault.setParameter("deleted", false);
- setAllGroupsNotDefault.setParameter("groupKey", newDefaultGroup.getGroupKey());
- try{
- logger.info("set " + setAllGroupsNotDefault.executeUpdate() + " groups as not default");
- } catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught Exception on setAllGroupsNotDefault.executeUpdate()",e);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception on setAllGroupsNotDefault.executeUpdate()");
- throw new PersistenceException("Could not set all other groups default to false");
- }
-
- em.flush();
+ Query getGroupQuery = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted");
+ getGroupQuery.setParameter("groupId", group.getId());
+ getGroupQuery.setParameter("deleted", false);
+ List<?> getGroupQueryList;
+ try{
+ getGroupQueryList = getGroupQuery.getResultList();
+ } catch(Exception e){
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception on getGroupQuery.getResultList()");
+ throw new PersistenceException("Query failed trying to get group "+group.getId());
+ }
+ if(getGroupQueryList.size() < 1){
+ PolicyLogger.error("The group cannot be found to set default with id "+group.getId());
+ throw new PersistenceException("The group cannot be found to set default with id "+group.getId());
+ } else if(getGroupQueryList.size() > 1){
+ PolicyLogger.error("Somehow, more than one group with the same id "+group.getId()+" and deleted status were found in the database");
+ throw new PersistenceException("Somehow, more than one group with the same id "+group.getId()+" and deleted status were found in the database");
+ }
+ GroupEntity newDefaultGroup = (GroupEntity)getGroupQueryList.get(0);
+ newDefaultGroup.setDefaultGroup(true);
+ if(!stringEquals(newDefaultGroup.getModifiedBy(), username)){
+ newDefaultGroup.setModifiedBy(username);
+ }
+
+ em.flush();
+ this.groupId = newDefaultGroup.getGroupKey();
+ Query setAllGroupsNotDefault = em.createQuery("UPDATE GroupEntity g SET g.defaultGroup=:defaultGroup WHERE g.deleted=:deleted AND g.groupKey<>:groupKey");
+ //not going to set modified by for all groups
+ setAllGroupsNotDefault.setParameter("defaultGroup", false);
+ setAllGroupsNotDefault.setParameter("deleted", false);
+ setAllGroupsNotDefault.setParameter("groupKey", newDefaultGroup.getGroupKey());
+ try{
+ logger.info("set " + setAllGroupsNotDefault.executeUpdate() + " groups as not default");
+ } catch(Exception e){
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception on setAllGroupsNotDefault.executeUpdate()");
+ throw new PersistenceException("Could not set all other groups default to false");
+ }
+
+ em.flush();
}
}
@@ -3650,10 +3375,6 @@ public class PolicyDBDao {
@Override
public void deleteGroup(EcompPDPGroup group, EcompPDPGroup moveToGroup, String username) throws PAPException {
logger.debug("deleteGroup(PDPGroup group, PDPGroup moveToGroup, String username) as deleteGroup("+group+", "+moveToGroup+","+username+") called");
-// if(isTransactionOpen()){
-// logger.error("A transaction is already open which has not been committed");
-// throw new IllegalStateException("A transaction is already open which has not been committed");
-// }
if(group == null){
throw new IllegalArgumentException("PDPGroup group cannot be null");
}
@@ -3662,35 +3383,29 @@ public class PolicyDBDao {
}
if(group.isDefaultGroup()){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("The default group "+group.getId()+" was attempted to be deleted. It cannot be.");
PolicyLogger.error("The default group "+group.getId()+" was attempted to be deleted. It cannot be.");
throw new PAPException("You cannot delete the default group.");
}
synchronized(emLock){
checkBeforeOperationRun();
- Query deleteGroupQuery = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted");
- deleteGroupQuery.setParameter("groupId", group.getId());
- deleteGroupQuery.setParameter("deleted", false);
- List<?> deleteGroupQueryList;
- try{
- deleteGroupQueryList = deleteGroupQuery.getResultList();
- } catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught Exception trying to check if group exists deleteGroupQuery.getResultList()",e);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to check if group exists deleteGroupQuery.getResultList()");
- throw new PersistenceException("Query failed trying to check if group exists");
- }
- if(deleteGroupQueryList.size() < 1){
- logger.warn("The group could not be found with id " + group.getId());
- return;
- } else if(deleteGroupQueryList.size() > 1){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Somehow, more than one group with the id "+group.getId()+" were found in the database that are not deleted");
- PolicyLogger.error("Somehow, more than one group with the id "+group.getId()+" were found in the database that are not deleted");
- throw new PersistenceException("Somehow, more than one group with the id "+group.getId()+" were found in the database that are not deleted");
- }
-
+ Query deleteGroupQuery = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted");
+ deleteGroupQuery.setParameter("groupId", group.getId());
+ deleteGroupQuery.setParameter("deleted", false);
+ List<?> deleteGroupQueryList;
+ try{
+ deleteGroupQueryList = deleteGroupQuery.getResultList();
+ } catch(Exception e){
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to check if group exists deleteGroupQuery.getResultList()");
+ throw new PersistenceException("Query failed trying to check if group exists");
+ }
+ if(deleteGroupQueryList.size() < 1){
+ logger.warn("The group could not be found with id " + group.getId());
+ return;
+ } else if(deleteGroupQueryList.size() > 1){
+ PolicyLogger.error("Somehow, more than one group with the id "+group.getId()+" were found in the database that are not deleted");
+ throw new PersistenceException("Somehow, more than one group with the id "+group.getId()+" were found in the database that are not deleted");
+ }
+
Query pdpsInGroupQuery = em.createQuery("SELECT p FROM PdpEntity p WHERE p.groupEntity=:group and p.deleted=:deleted");
pdpsInGroupQuery.setParameter("group", ((GroupEntity)deleteGroupQueryList.get(0)));
pdpsInGroupQuery.setParameter("deleted", false);
@@ -3698,12 +3413,9 @@ public class PolicyDBDao {
try{
pdpsInGroupList = pdpsInGroupQuery.getResultList();
} catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught Exception trying to get PDPs in group on pdpsInGroupQuery.getResultList()",e);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to get PDPs in group on pdpsInGroupQuery.getResultList()");
throw new PersistenceException("Query failed trying to get PDPs in group");
}
- //em.getTransaction().begin();
if(pdpsInGroupList.size() > 0){
if(moveToGroup != null){
Query checkMoveToGroupQuery = em.createQuery("SELECT o FROM GroupEntity o WHERE o.groupId=:groupId AND o.deleted=:deleted");
@@ -3713,19 +3425,13 @@ public class PolicyDBDao {
try{
checkMoveToGroupList = checkMoveToGroupQuery.getResultList();
} catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught Exception trying to check if group exists checkMoveToGroupQuery.getResultList()",e);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to check if group exists checkMoveToGroupQuery.getResultList()");
throw new PersistenceException("Query failed trying to check if group exists");
}
if(checkMoveToGroupList.size() < 1){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("The group could not be found with id " + moveToGroup.getId());
PolicyLogger.error("The group could not be found with id " + moveToGroup.getId());
throw new PersistenceException("The group could not be found with id " + moveToGroup.getId());
} else if(checkMoveToGroupList.size() > 1){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Somehow, more than one group with the id "+moveToGroup.getId()+" were found in the database that are not deleted");
PolicyLogger.error("Somehow, more than one group with the id "+moveToGroup.getId()+" were found in the database that are not deleted");
throw new PersistenceException("Somehow, more than one group with the id "+moveToGroup.getId()+" were found in the database that are not deleted");
} else {
@@ -3737,113 +3443,95 @@ public class PolicyDBDao {
pdp.setModifiedBy(username);
}
try{
-
- em.flush();
- this.newGroupId = newGroup.getGroupId();
+
+ em.flush();
+ this.newGroupId = newGroup.getGroupId();
} catch(PersistenceException e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught PersistenceException trying to set pdp group to null on em.flush()",e);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught PersistenceException trying to set pdp group to null on em.flush()");
throw new PersistenceException("Query failed trying to set pdp group to ");
}
}
}
} else {
- //TODO:EELF Cleanup - Remove logger
- //logger.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 PAPException("Group has PDPs. Must provide a group for them to move to");
}
}
-
+
//delete group here
-
GroupEntity groupToDelete = (GroupEntity)deleteGroupQueryList.get(0);
groupToDelete.setDeleted(true);
if(!stringEquals(groupToDelete.getModifiedBy(), username)){
groupToDelete.setModifiedBy(username);
}
-
- //try{
-
em.flush();
this.groupId = groupToDelete.getGroupKey();
- //return;
- //} catch(PersistenceException pe){
- //logger.error("Database error while marking policy or config as deleted");
- //throw new PersistenceException("Database error while marking policy or config as deleted");
- //}
- }
}
+ }
@Override
public void addPolicyToGroup(String groupID, String policyID, String username) {
logger.debug("addPolicyToGroup(String groupID, String policyID, String username) as addPolicyToGroup("+groupID+", "+policyID+","+username+") called");
-// if(isTransactionOpen()){
-// logger.error("A transaction is already open which has not been committed");
-// throw new IllegalStateException("A transaction is already open which has not been committed");
-// }
if(isNullOrEmpty(groupID, policyID, username)){
throw new IllegalArgumentException("groupID, policyID, and username must not be null or empty");
}
synchronized(emLock){
checkBeforeOperationRun();
- //check if group exists
- Query groupQuery = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted");
- groupQuery.setParameter("groupId", groupID);
- groupQuery.setParameter("deleted", false);
- List<?> groupQueryList;
- try{
- groupQueryList = groupQuery.getResultList();
- }catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught Exception trying to check if group exists groupQuery.getResultList()",e);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to check if group exists groupQuery.getResultList()");
- throw new PersistenceException("Query failed trying to check if group "+groupID+" exists");
- }
- if(groupQueryList.size() < 1){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Group policy is being added to does not exist with id "+groupID);
- 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){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Somehow, more than one group with the id "+groupID+" were found in the database that are not deleted");
- PolicyLogger.error("Somehow, more than one group with the id "+groupID+" were found in the database that are not deleted");
- throw new PersistenceException("Somehow, more than one group with the id "+groupID+" were found in the database that are not deleted");
- }
- //we need to convert the form of the policy id that is used groups into the form that is used
- //for the database. (com.Config_mypol.1.xml) to (Config_mypol.xml)
- String[] policyNameScopeAndVersion = getNameScopeAndVersionFromPdpPolicy(policyID);
- Query policyQuery = em.createQuery("SELECT p FROM PolicyEntity p WHERE p.policyName=:policyName AND p.scope=:scope AND p.deleted=:deleted");
- policyQuery.setParameter("policyName", policyNameScopeAndVersion[0]);
- policyQuery.setParameter("scope", policyNameScopeAndVersion[1]);
- policyQuery.setParameter("deleted", false);
- List<?> policyQueryList;
- try{
- policyQueryList = policyQuery.getResultList();
- } catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught Exception trying to check if policy exists policyQuery.getResultList()",e);
- PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to check if policy exists policyQuery.getResultList()");
- throw new PersistenceException("Query failed trying to check if policy "+policyNameScopeAndVersion[0]+" exists");
- }
- if(policyQueryList.size() < 1){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Policy being added to the group does not exist with policy id "+policyNameScopeAndVersion[0]);
- 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){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Somehow, more than one policy with the id "+policyNameScopeAndVersion[0]+" were found in the database that are not deleted");
- PolicyLogger.error("Somehow, more than one policy with the id "+policyNameScopeAndVersion[0]+" were found in the database that are not deleted");
- throw new PersistenceException("Somehow, more than one group with the id "+policyNameScopeAndVersion[0]+" were found in the database that are not deleted");
- }
- //em.getTransaction().begin();
- GroupEntity group = (GroupEntity)groupQueryList.get(0);
- PolicyEntity policy = (PolicyEntity)policyQueryList.get(0);
- group.addPolicyToGroup(policy);
- em.flush();
+ //check if group exists
+ Query groupQuery = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted");
+ groupQuery.setParameter("groupId", groupID);
+ groupQuery.setParameter("deleted", false);
+ List<?> groupQueryList;
+ try{
+ groupQueryList = groupQuery.getResultList();
+ }catch(Exception e){
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to check if group exists groupQuery.getResultList()");
+ throw new PersistenceException("Query failed trying to check if group "+groupID+" exists");
+ }
+ if(groupQueryList.size() < 1){
+ PolicyLogger.error("Group policy is being added to does not exist with id "+groupID);
+ throw new PersistenceException("Group policy is being added to does not exist with id "+groupID);
+ } else if(groupQueryList.size() > 1){
+ PolicyLogger.error("Somehow, more than one group with the id "+groupID+" were found in the database that are not deleted");
+ throw new PersistenceException("Somehow, more than one group with the id "+groupID+" were found in the database that are not deleted");
+ }
+ //we need to convert the form of the policy id that is used groups into the form that is used
+ //for the database. (com.Config_mypol.1.xml) to (Config_mypol.xml)
+ String[] policyNameScopeAndVersion = getNameScopeAndVersionFromPdpPolicy(policyID);
+ Query policyQuery = em.createQuery("SELECT p FROM PolicyEntity p WHERE p.policyName=:policyName AND p.scope=:scope AND p.deleted=:deleted");
+ policyQuery.setParameter("policyName", policyNameScopeAndVersion[0]);
+ policyQuery.setParameter("scope", policyNameScopeAndVersion[1]);
+ policyQuery.setParameter("deleted", false);
+ List<?> policyQueryList;
+ try{
+ policyQueryList = policyQuery.getResultList();
+ } catch(Exception e){
+ PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to check if policy exists policyQuery.getResultList()");
+ throw new PersistenceException("Query failed trying to check if policy "+policyNameScopeAndVersion[0]+" exists");
+ }
+ if(policyQueryList.size() < 1){
+ PolicyLogger.error("Policy being added to the group does not exist with policy id "+policyNameScopeAndVersion[0]);
+ throw new PersistenceException("Policy being added to the group does not exist with policy id "+policyNameScopeAndVersion[0]);
+ } else if(policyQueryList.size() > 1){
+ PolicyLogger.error("Somehow, more than one policy with the id "+policyNameScopeAndVersion[0]+" were found in the database that are not deleted");
+ throw new PersistenceException("Somehow, more than one group with the id "+policyNameScopeAndVersion[0]+" were found in the database that are not deleted");
+ }
+ GroupEntity group = (GroupEntity)groupQueryList.get(0);
+ PolicyEntity policy = (PolicyEntity)policyQueryList.get(0);
+ Iterator<PolicyEntity> policyIt = group.getPolicies().iterator();
+ String policyName = getPolicyNameAndVersionFromPolicyFileName(policy.getPolicyName())[0];
+ try{
+ while(policyIt.hasNext()){
+ PolicyEntity pol = policyIt.next();
+ if(getPolicyNameAndVersionFromPolicyFileName(pol.getPolicyName())[0].equals(policyName)){
+ policyIt.remove();
+ }
+ }
+ }catch(Exception e){
+ PolicyLogger.error("Could not delete old versions for policy "+policy.getPolicyName()+", ID: "+policy.getPolicyId());
+ }
+ group.addPolicyToGroup(policy);
+ em.flush();
}
}
@@ -3851,10 +3539,6 @@ public class PolicyDBDao {
@Override
public void removePdpFromGroup(String pdpID, String username) {
logger.debug("removePdpFromGroup(String pdpID, String username) as removePdpFromGroup("+pdpID+","+username+") called");
-// if(isTransactionOpen()){
-// logger.error("A transaction is already open which has not been committed");
-// throw new IllegalStateException("A transaction is already open which has not been committed");
-// }
if(isNullOrEmpty(pdpID,username)){
throw new IllegalArgumentException("pdpID and username must not be null or empty");
}
@@ -3867,47 +3551,43 @@ public class PolicyDBDao {
try{
pdpList = pdpQuery.getResultList();
} catch(Exception e){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Caught Exception trying to check if pdp exists pdpQuery.getResultList()",e);
PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "PolicyDBDao", "Caught Exception trying to check if pdp exists pdpQuery.getResultList()");
throw new PersistenceException("Query failed trying to check if pdp "+pdpID+" exists");
}
if(pdpList.size() > 1){
- //TODO:EELF Cleanup - Remove logger
- //logger.error("Somehow, more than one pdp with the id "+pdpID+" were found in the database that are not deleted");
PolicyLogger.error("Somehow, more than one pdp with the id "+pdpID+" were found in the database that are not deleted");
throw new PersistenceException("Somehow, more than one pdp with the id "+pdpID+" were found in the database that are not deleted");
} else if(pdpList.size() < 1){
- //logger.warn("Pdp being removed does not exist with id "+pdpID);
PolicyLogger.error("Pdp being removed does not exist with id "+pdpID);
return;
}
- //em.getTransaction().begin();
PdpEntity pdp = (PdpEntity)pdpList.get(0);
pdp.setGroup(null);
if(!stringEquals(pdp.getModifiedBy(),username)){
pdp.setModifiedBy(username);
}
pdp.setDeleted(true);
-
+
em.flush();
this.pdpId = pdp.getPdpKey();
}
}
}
-
-
+
+
private static String getDefaultWorkspace(){
return "admin";
}
-
+
private PolicyDBDao(){
-
+
}
+
public static PolicyDBDaoTestClass getPolicyDBDaoTestClass(){
return new PolicyDBDao().new PolicyDBDaoTestClass();
}
+
final class PolicyDBDaoTestClass {
String[] getScopeAndNameAndType(final String path){
return PolicyDBDao.getScopeAndNameAndType(path);
@@ -3916,7 +3596,7 @@ public class PolicyDBDao {
return PolicyDBDao.getGitPath();
}
String getConfigFile(String filename, String scope, PolicyRestAdapter policy){
- return PolicyDBDao.this.getConfigFile(filename, scope, policy);
+ return PolicyDBDao.this.getConfigFile(filename, policy);
}
String computeScope(String fullPath, String pathToExclude){
return PolicyDBDao.computeScope(fullPath, pathToExclude);
@@ -3930,7 +3610,9 @@ public class PolicyDBDao {
String getDescriptionFromXacml(String xacmlData){
return PolicyDBDao.getDescriptionFromXacml(xacmlData);
}
-
+ String[] getPolicyNameAndVersionFromPolicyFileName(String originalPolicyName){
+ return PolicyDBDao.this.getPolicyNameAndVersionFromPolicyFileName(originalPolicyName);
+ }
}
-
-}
+
+} \ No newline at end of file
diff --git a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/PolicyDBDaoTransaction.java b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/PolicyDBDaoTransaction.java
index 4e9ddb489..5ab036db8 100644
--- a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/PolicyDBDaoTransaction.java
+++ b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/PolicyDBDaoTransaction.java
@@ -21,19 +21,15 @@
package org.openecomp.policy.pap.xacml.rest.components;
import java.util.List;
-import java.util.Set;
import javax.persistence.PersistenceException;
-import org.openecomp.policy.pap.xacml.rest.adapters.PolicyRestAdapter;
import org.openecomp.policy.rest.jpa.GroupEntity;
import org.openecomp.policy.rest.jpa.PdpEntity;
import org.openecomp.policy.xacml.api.pap.EcompPDP;
import org.openecomp.policy.xacml.api.pap.EcompPDPGroup;
import com.att.research.xacml.api.pap.PAPException;
-//import com.att.research.xacml.api.pap.PDP;
-//import com.att.research.xacml.api.pap.PDPGroup;
public interface PolicyDBDaoTransaction {
diff --git a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/package-info.java b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/package-info.java
index 98e1bd985..007f08d36 100644
--- a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/package-info.java
+++ b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/components/package-info.java
@@ -18,10 +18,4 @@
* ============LICENSE_END=========================================================
*/
-/**
- *
- */
-/**
- *
- */
package org.openecomp.policy.pap.xacml.rest.components;