}else if(policyName.contains("Decision_")){
splitPolicyName = removeVersionExtension.replace(".Decision_", ":Decision_");
}
- split = splitPolicyName.split(":");
+ if(splitPolicyName != null){
+ split = splitPolicyName.split(":");
+ }else{
+ PolicyLogger.error(MessageCodes.ERROR_UNKNOWN + "Failed to delete the policy. Please, provide the valid policyname.");
+ response.addHeader("error", "unknown");
+ response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR );
+ return;
+ }
policyEntityQuery = em.createQuery("SELECT p FROM PolicyEntity p WHERE p.policyName LIKE :pName and p.scope=:pScope");
}else if(policy.getDeleteCondition().equalsIgnoreCase("Current Version")) {
if(policyName.contains("Config_")){
getPolicyVersion.setParameter("pname", removeVersionExtension.replace(".", File.separator));
List<?> pvResult = getPolicyVersion.getResultList();
PolicyVersion pVersion = (PolicyVersion) pvResult.get(0);
- int highestVersion = 0;
+ int newVersion = 0;
em.getTransaction().begin();
Class.forName(papDbDriver);
con = DriverManager.getConnection(papDbUrl,papDbUser,papDbPassword);
return;
}else if(status.equals("PolicyInPDP")){
PolicyLogger.error(MessageCodes.GENERAL_WARNING + "Policy can't be deleted, it is active in PDP Groups.");
- response.addHeader("error", "unknown");
+ response.addHeader("error", "PolicyInPDP");
response.setStatus(HttpServletResponse.SC_CONFLICT);
return;
}else{
policyEntity = (PolicyEntity) object;
String policyEntityName = policyEntity.getPolicyName().replace(".xml", "");
int policyEntityVersion = Integer.parseInt(policyEntityName.substring(policyEntityName.lastIndexOf(".")+1));
- if(policyEntityVersion > highestVersion){
- highestVersion = policyEntityVersion;
+ if(policyEntityVersion > newVersion){
+ newVersion = policyEntityVersion-1;
}
}
}
- pVersion.setActiveVersion(highestVersion);
- pVersion.setHigherVersion(highestVersion);
+ pVersion.setActiveVersion(newVersion);
+ pVersion.setHigherVersion(newVersion);
try{
policyVersionDeleted = true;
em.persist(pVersion);
return;
} finally {
em.close();
- con.close();
+ if(con != null){
+ con.close();
+ }
}
if (policyVersionDeleted) {
PolicyEntity policyEntity = (PolicyEntity) peData;
Statement st = null;
ResultSet rs = null;
- st = con.createStatement();
- rs = st.executeQuery("Select * from PolicyGroupEntity where policyid = '"+policyEntity.getPolicyId()+"'");
- boolean gEntityList = rs.next();
- rs.close();
- if(gEntityList){
- return true;
+ try{
+ st = con.createStatement();
+ rs = st.executeQuery("Select * from PolicyGroupEntity where policyid = '"+policyEntity.getPolicyId()+"'");
+ boolean gEntityList = rs.next();
+ rs.close();
+ if(gEntityList){
+ return true;
+ }
+ }finally{
+ if(st != null){
+ st.close();
+ }
}
}
return false;
} catch (PAPException e1) {
PolicyLogger.error("Exception occured While Deleting Policy From PDP Group"+e1);
}
- if (group == null || ! (group instanceof StdPDPGroup) || ! (group.getId().equals(existingGroup.getId()))) {
- PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " Group update had bad input. id=" + existingGroup.getId() + " objectFromJSON="+group);
+ if (group == null || ! (group instanceof StdPDPGroup) || existingGroup == null || ! (group.getId().equals(existingGroup.getId()))) {
+ String existingID = null;
+ if(existingGroup != null){
+ existingID = existingGroup.getId();
+ }
+ PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " Group update had bad input. id=" + existingID + " objectFromJSON="+group);
loggingContext.transactionEnded();
PolicyLogger.audit("Transaction Failed - See Error.log");
response = "No Group";