Resolved XACML Platform Sonar issues
[policy/engine.git] / ONAP-PAP-REST / src / main / java / org / onap / policy / pap / xacml / rest / components / PolicyDBDao.java
index dc1287b..75d7645 100644 (file)
@@ -3,6 +3,7 @@
  * ONAP-PAP-REST
  * ================================================================================
  * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
+ * Modified Copyright (C) 2018 Samsung Electronics Co., Ltd.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -48,7 +49,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.UUID;
-
 import javax.persistence.EntityManager;
 import javax.persistence.EntityManagerFactory;
 import javax.persistence.LockModeType;
@@ -59,7 +59,6 @@ import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.xpath.XPath;
 import javax.xml.xpath.XPathFactory;
-
 import org.apache.commons.io.FilenameUtils;
 import org.apache.commons.io.IOUtils;
 import org.onap.policy.common.logging.eelf.MessageCodes;
@@ -86,15 +85,15 @@ import org.onap.policy.xacml.std.pap.StdPDPPolicy;
 import org.onap.policy.xacml.util.XACMLPolicyWriter;
 import org.w3c.dom.Document;
 import org.xml.sax.InputSource;
+import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicySetType;
 import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType;
-
 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);
+    private static final Logger logger = FlexLogger.getLogger(PolicyDBDao.class);
     private List<?> otherServers;
     private EntityManagerFactory emf;
     private static PolicyDBDao currentInstance = null;
@@ -105,13 +104,15 @@ public class PolicyDBDao {
     private static final String PROPERTIES_CONFIG = "PROPERTIES";
     private static final String OTHER_CONFIG = "OTHER";
 
-    //Declared to static variables which were repeating multiple times across the PolicyDBDao
+    // Declared to static variables which were repeating multiple times across the PolicyDBDao
     public static final String config = "Config";
     public static final String action = "Action";
     private static final String groupIdVar = "groupId";
     private static final String deletedVar = "deleted";
-    private static final String groupEntitySelectQuery = "SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted";
-    private static final String pdpEntitySelectQuery = "SELECT p FROM PdpEntity p WHERE p.pdpId=:pdpId AND p.deleted=:deleted";
+    private static final String groupEntitySelectQuery =
+            "SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted";
+    private static final String pdpEntitySelectQuery =
+            "SELECT p FROM PdpEntity p WHERE p.pdpId=:pdpId AND p.deleted=:deleted";
     private static final String groupCannotBeFound = "The group could not be found with id ";
     private static final String foundInDBNotDeleted = " were found in the database that are not deleted";
     private static final String moreThanOnePDP = "Somehow, more than one pdp with the same id ";
@@ -124,6 +125,8 @@ public class PolicyDBDao {
     private static final String policyDBDaoVar = "PolicyDBDao";
     private static final String duplicatePolicyId = "Somehow, more than one policy with the id ";
     private static final String foundInDB = " were found in the database";
+    private static final String TIMESTAMP = "\n   TimeStamp = ";
+    private static final String CAUGHTEXCEPTIONONNOTIFY = "Caught Exception on notifyOthers(";
 
     private static boolean isJunit = false;
 
@@ -132,16 +135,18 @@ public class PolicyDBDao {
     }
 
     /**
-     * Get an instance of a PolicyDBDao. It creates one if it does not exist.
-     * Only one instance is allowed to be created per server.
+     * Get an instance of a PolicyDBDao. It creates one if it does not exist. Only one instance is allowed to be created
+     * per server.
+     *
      * @param emf The EntityFactoryManager to be used for database connections
      * @return The new instance of PolicyDBDao or throw exception if the given emf is null.
-     * @throws IllegalStateException if a PolicyDBDao has already been constructed. Call getPolicyDBDaoInstance() to get this.
+     * @throws IllegalStateException if a PolicyDBDao has already been constructed. Call getPolicyDBDaoInstance() to get
+     *         this.
      */
-    public static PolicyDBDao getPolicyDBDaoInstance(EntityManagerFactory emf){
-        logger.debug("getPolicyDBDaoInstance(EntityManagerFactory emf) as getPolicyDBDaoInstance("+emf+") called");
-        if(currentInstance == null){
-            if(emf != null){
+    public static PolicyDBDao getPolicyDBDaoInstance(EntityManagerFactory emf) {
+        logger.debug("getPolicyDBDaoInstance(EntityManagerFactory emf) as getPolicyDBDaoInstance(" + emf + ") called");
+        if (currentInstance == null) {
+            if (emf != null) {
                 currentInstance = new PolicyDBDao(emf);
                 return currentInstance;
             }
@@ -152,100 +157,103 @@ public class PolicyDBDao {
 
     /**
      * Gets the current instance of PolicyDBDao.
+     *
      * @return The instance of PolicyDBDao or throws exception if the given instance is null.
-     * @throws IllegalStateException if a PolicyDBDao instance is null. Call createPolicyDBDaoInstance(EntityManagerFactory emf) to get this.
+     * @throws IllegalStateException if a PolicyDBDao instance is null. Call createPolicyDBDaoInstance
+     *         (EntityManagerFactory emf) to get this.
      */
-    public static PolicyDBDao getPolicyDBDaoInstance(){
+    public static PolicyDBDao getPolicyDBDaoInstance() {
         logger.debug("getPolicyDBDaoInstance() as getPolicyDBDaoInstance() called");
-        if(currentInstance != null){
+        if (currentInstance != null) {
             return currentInstance;
         }
-        throw new IllegalStateException("The PolicyDBDao.currentInstance is Null.  Use getPolicyDBDao(EntityManagerFactory emf)");
+        throw new IllegalStateException(
+                "The PolicyDBDao.currentInstance is Null.  Use getPolicyDBDao(EntityManagerFactory emf)");
     }
 
-    public void setPapEngine(PAPPolicyEngine papEngine2){
+    public void setPapEngine(PAPPolicyEngine papEngine2) {
         this.papEngine = papEngine2;
     }
 
-    private PolicyDBDao(EntityManagerFactory emf){
-        logger.debug("PolicyDBDao(EntityManagerFactory emf) as PolicyDBDao("+emf+") called");
+    private PolicyDBDao(EntityManagerFactory emf) {
+        logger.debug("PolicyDBDao(EntityManagerFactory emf) as PolicyDBDao(" + emf + ") called");
         this.emf = emf;
 
-        //not needed in this release
-        if(!register()){
-            PolicyLogger.error("This server's PolicyDBDao instance could not be registered and may not reveive updates");
+        // not needed in this release
+        if (!register()) {
+            PolicyLogger
+                    .error("This server's PolicyDBDao instance could not be registered and may not reveive updates");
         }
 
         otherServers = getRemotePolicyDBDaoList();
-        if(logger.isDebugEnabled()){
-            logger.debug("Number of remote PolicyDBDao instances: "+otherServers.size());
+        if (logger.isDebugEnabled()) {
+            logger.debug("Number of remote PolicyDBDao instances: " + otherServers.size());
         }
-        if(otherServers.isEmpty()){
+        if (otherServers.isEmpty()) {
             logger.warn("List of PolicyDBDao servers is empty or could not be retrieved");
         }
     }
 
-    //not static because we are going to be using the instance's emf
-    //waitTime in ms to wait for lock, or -1 to wait forever (no)
-    private void startTransactionSynced(EntityManager entityMgr,int waitTime){
+    // 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");
+                + "\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");
+        if (logger.isDebugEnabled()) {
+            Map<String, Object> properties = entityMgr.getProperties();
+            logger.debug(
+                    "\n\nstartTransactionSynced():" + "\n   entityManager.getProperties() = " + properties + "\n\n");
         }
-        try{
-            if(logger.isDebugEnabled()){
-                logger.debug("\n\nstartTransactionSynced():"
-                        + "\n   ATTEMPT to get the DB lock"
-                        + "\n\n");
+        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");
+            if (logger.isDebugEnabled()) {
+                logger.debug("\n\nstartTransactionSynced():" + "\n   GOT the DB lock" + "\n\n");
             }
-        } catch(Exception e){
+        } catch (Exception e) {
             System.out.println("Could not get lock entity");
-            logger.error("Exception Occured"+e);
+            logger.error("Exception Occured" + e);
         }
-        if(lock == null){
-            throw new IllegalStateException("The lock row does not exist in the table. Please create a primary key with value = 1.");
+        if (lock == null) {
+            throw new IllegalStateException(
+                    "The lock row does not exist in the table. Please create a primary key with value = 1.");
         }
 
     }
+
     /**
      * Gets the list of other registered PolicyDBDaos from the database
+     *
      * @return List (type PolicyDBDaoEntity) of other PolicyDBDaos
      */
-    private List<?> getRemotePolicyDBDaoList(){
+    private List<?> getRemotePolicyDBDaoList() {
         logger.debug("getRemotePolicyDBDaoList() as getRemotePolicyDBDaoList() called");
         List<?> policyDBDaoEntityList = new LinkedList<>();
         EntityManager em = emf.createEntityManager();
         startTransactionSynced(em, 1000);
-        try{
+        try {
             Query getPolicyDBDaoEntityQuery = em.createNamedQuery("PolicyDBDaoEntity.findAll");
             policyDBDaoEntityList = getPolicyDBDaoEntityQuery.getResultList();
 
-        } catch(Exception e){
-            PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Exception querying for other registered PolicyDBDaos");
+        } catch (Exception e) {
+            PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                    "Exception querying for other registered PolicyDBDaos");
             logger.warn("List of remote PolicyDBDaos will be empty", e);
         }
-        try{
+        try {
             em.getTransaction().commit();
-        } catch(Exception e){
+        } catch (Exception e) {
             logger.warn("List of remote PolicyDBDaos will be empty", e);
-            try{
+            try {
                 em.getTransaction().rollback();
-            } catch(Exception e2){
+            } catch (Exception e2) {
                 logger.debug("List of remote PolicyDBDaos will be empty", e2);
             }
         }
@@ -253,22 +261,21 @@ public class PolicyDBDao {
         return policyDBDaoEntityList;
     }
 
-    public PolicyDBDaoTransaction getNewTransaction(){
+    public PolicyDBDaoTransaction getNewTransaction() {
         logger.debug("getNewTransaction() as getNewTransaction() called");
         return new PolicyDBDaoTransactionInstance();
     }
 
     /*
-     * Because the normal transactions are not used in audits, we can use the same transaction
-     * mechanism to get a transaction and obtain the emlock and the DB lock.  We just need to
-     * provide different transaction timeout values in ms because the audit will run longer
-     * than normal transactions.
+     * Because the normal transactions are not used in audits, we can use the same transaction mechanism to get a
+     * transaction and obtain the emlock and the DB lock. We just need to provide different transaction timeout values
+     * in ms because the audit will run longer than normal transactions.
      */
-    public PolicyDBDaoTransaction getNewAuditTransaction(){
+    public PolicyDBDaoTransaction getNewAuditTransaction() {
         logger.debug("getNewAuditTransaction() as getNewAuditTransaction() called");
-        //Use the standard transaction wait time in ms
+        // Use the standard transaction wait time in ms
         int auditWaitMs = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_TRANS_WAIT));
-        //Use the (extended) audit timeout time in ms
+        // Use the (extended) audit timeout time in ms
         int auditTimeoutMs = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_AUDIT_TIMEOUT));
         return new PolicyDBDaoTransactionInstance(auditTimeoutMs, auditWaitMs);
     }
@@ -276,15 +283,16 @@ public class PolicyDBDao {
 
     /**
      * Checks if two strings are equal. Null strings ARE allowed.
+     *
      * @param one A String or null to compare
      * @param two A String or null to compare
      */
-    private static boolean stringEquals(String one, String two){
-        logger.debug("stringEquals(String one, String two) as stringEquals("+one+", "+two+") called");
-        if(one == null && two == null){
+    private static boolean stringEquals(String one, String two) {
+        logger.debug("stringEquals(String one, String two) as stringEquals(" + one + ", " + two + ") called");
+        if (one == null && two == null) {
             return true;
         }
-        if(one == null || two == null){
+        if (one == null || two == null) {
             return false;
         }
         return one.equals(two);
@@ -292,75 +300,78 @@ public class PolicyDBDao {
 
     /**
      * Returns the url of this local pap server, removing the username and password, if they are present
+     *
      * @return The url of this local pap server
      */
-    private String[] getPapUrlUserPass(){
+    private String[] getPapUrlUserPass() {
         logger.debug("getPapUrl() as getPapUrl() called");
         String url = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_URL);
-        if(url == null){
+        if (url == null) {
             return null;
         }
         return splitPapUrlUserPass(url);
     }
 
-    private String[] splitPapUrlUserPass(String url){
+    private String[] splitPapUrlUserPass(String url) {
         String[] urlUserPass = new String[3];
         String[] commaSplit = url.split(",");
         urlUserPass[0] = commaSplit[0];
-        if(commaSplit.length > 2){
+        if (commaSplit.length > 2) {
             urlUserPass[1] = commaSplit[1];
             urlUserPass[2] = commaSplit[2];
         }
-        if(urlUserPass[1] == null || "".equals(urlUserPass[1])){
+        if (urlUserPass[1] == null || "".equals(urlUserPass[1])) {
             String usernamePropertyValue = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_USERID);
-            if(usernamePropertyValue != null){
+            if (usernamePropertyValue != null) {
                 urlUserPass[1] = usernamePropertyValue;
             }
         }
-        if(urlUserPass[2] == null || "".equals(urlUserPass[2])){
+        if (urlUserPass[2] == null || "".equals(urlUserPass[2])) {
             String passwordPropertyValue = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_PASS);
-            if(passwordPropertyValue != null){
+            if (passwordPropertyValue != null) {
                 urlUserPass[2] = passwordPropertyValue;
             }
         }
-        //if there is no comma, for some reason there is no username and password, so don't try to cut them off
+        // if there is no comma, for some reason there is no username and password, so don't try to cut them off
         return urlUserPass;
     }
 
     /**
      * Register the PolicyDBDao instance in the PolicyDBDaoEntity table
+     *
      * @return Boolean, were we able to register?
      */
-    private boolean register(){
+    private boolean register() {
         logger.debug("register() as register() called");
         String[] url = getPapUrlUserPass();
-        //--- check URL length
-        if(url == null || url.length<3){
+        // --- check URL length
+        if (url == null || url.length < 3) {
             return false;
         }
         EntityManager em = emf.createEntityManager();
-        try{
+        try {
             startTransactionSynced(em, 1000);
-        } catch(IllegalStateException e){
-            logger.debug ("\nPolicyDBDao.register() caught an IllegalStateException: \n" +e + "\n");
+        } catch (IllegalStateException e) {
+            logger.debug("\nPolicyDBDao.register() caught an IllegalStateException: \n" + e + "\n");
             DatabaseLockEntity lock;
             lock = em.find(DatabaseLockEntity.class, 1);
-            if(lock==null){
+            if (lock == null) {
                 lock = new DatabaseLockEntity();
                 em.persist(lock);
                 lock.setKey(1);
-                try{
+                try {
                     em.flush();
                     em.getTransaction().commit();
                     em.close();
-                } catch(Exception e2){
-                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e2, policyDBDaoVar, "COULD NOT CREATE DATABASELOCK ROW.  WILL TRY ONE MORE TIME");
+                } catch (Exception e2) {
+                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e2, policyDBDaoVar,
+                            "COULD NOT CREATE DATABASELOCK ROW.  WILL TRY ONE MORE TIME");
                 }
 
                 em = emf.createEntityManager();
-                try{
+                try {
                     startTransactionSynced(em, 1000);
-                } catch(Exception e3){
+                } catch (Exception e3) {
                     String msg = "DATABASE LOCKING NOT WORKING. CONCURRENCY CONTROL NOT WORKING";
                     PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e3, policyDBDaoVar, msg);
                     throw new IllegalStateException("msg" + "\n" + e3);
@@ -369,52 +380,55 @@ public class PolicyDBDao {
         }
         logger.debug("\nPolicyDBDao.register. Database locking and concurrency control is initialized\n");
         PolicyDBDaoEntity foundPolicyDBDaoEntity = em.find(PolicyDBDaoEntity.class, url[0]);
-        Query getPolicyDBDaoEntityQuery = em.createQuery("SELECT e FROM PolicyDBDaoEntity e WHERE e.policyDBDaoUrl=:url");
+        Query getPolicyDBDaoEntityQuery =
+                em.createQuery("SELECT e FROM PolicyDBDaoEntity e WHERE e.policyDBDaoUrl=:url");
         getPolicyDBDaoEntityQuery.setParameter("url", url[0]);
         // encrypt the password
         String txt = null;
-        try{
+        try {
             txt = CryptoUtils.encryptTxt(url[2].getBytes(StandardCharsets.UTF_8));
-        } catch(Exception e){
+        } catch (Exception e) {
             logger.debug(e);
             PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Could not encrypt PAP password");
         }
-        if(foundPolicyDBDaoEntity == null){
+        if (foundPolicyDBDaoEntity == null) {
             PolicyDBDaoEntity newPolicyDBDaoEntity = new PolicyDBDaoEntity();
             em.persist(newPolicyDBDaoEntity);
             newPolicyDBDaoEntity.setPolicyDBDaoUrl(url[0]);
-            newPolicyDBDaoEntity.setDescription("PAP server at "+url[0]);
+            newPolicyDBDaoEntity.setDescription("PAP server at " + url[0]);
             newPolicyDBDaoEntity.setUsername(url[1]);
             newPolicyDBDaoEntity.setPassword(txt);
-            try{
+            try {
                 em.getTransaction().commit();
-            } catch(Exception e){
+            } catch (Exception e) {
                 logger.debug(e);
-                try{
+                try {
                     em.getTransaction().rollback();
-                } catch(Exception e2){
+                } catch (Exception e2) {
                     logger.debug(e2);
-                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e2, policyDBDaoVar, "Could not add new PolicyDBDao to the database");
+                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e2, policyDBDaoVar,
+                            "Could not add new PolicyDBDao to the database");
                 }
             }
         } else {
-            //just want to update in order to change modified date
-            if(url[1] != null && !stringEquals(url[1], foundPolicyDBDaoEntity.getUsername())){
+            // just want to update in order to change modified date
+            if (url[1] != null && !stringEquals(url[1], foundPolicyDBDaoEntity.getUsername())) {
                 foundPolicyDBDaoEntity.setUsername(url[1]);
             }
-            if(txt != null && !stringEquals(txt, foundPolicyDBDaoEntity.getPassword())){
+            if (txt != null && !stringEquals(txt, foundPolicyDBDaoEntity.getPassword())) {
                 foundPolicyDBDaoEntity.setPassword(txt);
             }
             foundPolicyDBDaoEntity.preUpdate();
-            try{
+            try {
                 em.getTransaction().commit();
-            } catch(Exception e){
+            } catch (Exception e) {
                 logger.debug(e);
-                try{
+                try {
                     em.getTransaction().rollback();
-                } catch(Exception e2){
+                } catch (Exception e2) {
                     logger.debug(e2);
-                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e2, policyDBDaoVar, "Could not update PolicyDBDao in the database");
+                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e2, policyDBDaoVar,
+                            "Could not update PolicyDBDao in the database");
                 }
             }
         }
@@ -423,87 +437,67 @@ public class PolicyDBDao {
         return true;
     }
 
-    private void notifyOthers(long entityId,String entityType){
-        notifyOthers(entityId,entityType,null);
-    }
-
-    private void notifyOthers(long entityId, String entityType, String newGroupId){
-        logger.debug("notifyOthers(long entityId, String entityType, long newGroupId) as notifyOthers("+entityId+","+entityType+","+newGroupId+") called");
-        LinkedList<Thread> notifyThreads = new LinkedList<>();
-
-        //we're going to run notifications in parallel threads to speed things up
-        for(Object obj : otherServers){
-            Thread newNotifyThread = new Thread(new NotifyOtherThread(obj, entityId, entityType, newGroupId));
-            newNotifyThread.start();
-            notifyThreads.add(newNotifyThread);
-        }
-        //we want to wait for all notifications to complete or timeout before we unlock the interface and allow more changes
-        for(Thread t : notifyThreads){
-            try {
-                t.join();
-            } catch (Exception e) {
-                logger.warn("Could not join a notifcation thread" + e);
-            }
-        }
-    }
-
     private class NotifyOtherThread implements Runnable {
-        public NotifyOtherThread(Object obj, long entityId, String entityType, String newGroupId){
+        public NotifyOtherThread(Object obj, long entityId, String entityType, String newGroupId) {
             this.obj = obj;
             this.entityId = entityId;
             this.entityType = entityType;
             this.newGroupId = newGroupId;
         }
+
         private Object obj;
         private long entityId;
         private String entityType;
         private String newGroupId;
+
         @Override
-        public void run(){
-            //naming of 'o' is for backwards compatibility with the rest of the function
-            PolicyDBDaoEntity dbdEntity = (PolicyDBDaoEntity)obj;
+        public void run() {
+            // naming of 'o' is for backwards compatibility with the rest of the function
+            PolicyDBDaoEntity dbdEntity = (PolicyDBDaoEntity) obj;
             String o = dbdEntity.getPolicyDBDaoUrl();
             String username = dbdEntity.getUsername();
             String txt;
-            try{
+            try {
                 txt = new String(CryptoUtils.decryptTxt(dbdEntity.getPassword()), StandardCharsets.UTF_8);
-            } catch(Exception e){
+            } catch (Exception e) {
                 logger.debug(e);
-                //if we can't decrypt, might as well try it anyway
+                // if we can't decrypt, might as well try it anyway
                 txt = dbdEntity.getPassword();
             }
             Base64.Encoder encoder = Base64.getEncoder();
-            String encoding = encoder.encodeToString((username+":"+txt).getBytes(StandardCharsets.UTF_8));
+            String encoding = encoder.encodeToString((username + ":" + txt).getBytes(StandardCharsets.UTF_8));
             HttpURLConnection connection = null;
             UUID requestID = UUID.randomUUID();
             URL url;
             String papUrl;
             try {
                 String[] papUrlUserPass = getPapUrlUserPass();
-                if(papUrlUserPass == null ){
+                if (papUrlUserPass == null) {
                     papUrl = "undefined";
                 } else {
                     papUrl = papUrlUserPass[0];
                 }
-                logger.debug("We are going to try to notify "+o);
-                //is this our own url?
+                logger.debug("We are going to try to notify " + o);
+                // is this our own url?
                 String ourUrl = o;
-                try{
-                    ourUrl = splitPapUrlUserPass((String)o)[0];
-                }catch(Exception e){
+                try {
+                    ourUrl = splitPapUrlUserPass((String) o)[0];
+                } catch (Exception e) {
                     logger.debug(e);
                 }
-                if(o == null){
+                if (o == null) {
                     o = "undefined";
                 }
-                if(papUrl.equals(ourUrl)){
-                    logger.debug(o+" is our url, skipping notify");
+                if (papUrl.equals(ourUrl)) {
+                    logger.debug(o + " is our url, skipping notify");
                     return;
                 }
-                if(newGroupId == null){
-                    url = new URL(o+"?policydbdaourl="+papUrl+"&entityid="+entityId+"&entitytype="+entityType);
+                if (newGroupId == null) {
+                    url = new URL(
+                            o + "?policydbdaourl=" + papUrl + "&entityid=" + entityId + "&entitytype=" + entityType);
                 } else {
-                    url = new URL(o+"?policydbdaourl="+papUrl+"&entityid="+entityId+"&entitytype="+entityType+"&extradata="+newGroupId);
+                    url = new URL(o + "?policydbdaourl=" + papUrl + "&entityid=" + entityId + "&entitytype="
+                            + entityType + "&extradata=" + newGroupId);
                 }
             } catch (MalformedURLException e) {
                 logger.warn("Caught MalformedURLException on: new URL()", e);
@@ -513,11 +507,11 @@ public class PolicyDBDao {
             // Open up the connection
             //
             logger.info("PolicyDBDao: NotifyOtherThread: notifying other PAPs of an update");
-            logger.info("Connecting with url: "+url);
+            logger.info("Connecting with url: " + url);
             try {
-                connection = (HttpURLConnection)url.openConnection();
+                connection = (HttpURLConnection) url.openConnection();
             } catch (Exception e) {
-                logger.warn("Caught exception on: url.openConnection()",e);
+                logger.warn("Caught exception on: url.openConnection()", e);
                 return;
             }
             //
@@ -526,8 +520,8 @@ public class PolicyDBDao {
             try {
                 connection.setRequestMethod("PUT");
             } catch (ProtocolException e) {
-                //why would this error ever occur?
-                logger.warn("Caught ProtocolException on connection.setRequestMethod(\"PUT\");",e);
+                // why would this error ever occur?
+                logger.warn("Caught ProtocolException on connection.setRequestMethod(\"PUT\");", e);
                 return;
             }
             connection.setRequestProperty("Authorization", "Basic " + encoding);
@@ -535,9 +529,10 @@ public class PolicyDBDao {
             connection.setRequestProperty("Content-Type", "text/x-java-properties");
             connection.setRequestProperty("requestID", requestID.toString());
             int readTimeout;
-            try{
-                readTimeout = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_NOTIFY_TIMEOUT));
-            } catch(Exception e){
+            try {
+                readTimeout =
+                        Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_NOTIFY_TIMEOUT));
+            } catch (Exception e) {
                 logger.error("xacml.rest.pap.notify.timeoutms property not set, using a default.", e);
                 readTimeout = 10000;
             }
@@ -557,14 +552,15 @@ public class PolicyDBDao {
             try {
                 connection.connect();
             } catch (Exception e) {
-                logger.warn("Caught exception on: connection.connect()",e);
+                logger.warn("Caught exception on: connection.connect()", e);
                 return;
             }
             try {
                 if (connection.getResponseCode() == 200) {
                     logger.info("PolicyDBDao: NotifyOtherThread received response 200 from pap server on notify");
                 } else {
-                    logger.warn("PolicyDBDao: NotifyOtherThread connection response code not 200, received: "+connection.getResponseCode());
+                    logger.warn("PolicyDBDao: NotifyOtherThread connection response code not 200, received: "
+                            + connection.getResponseCode());
                 }
             } catch (Exception e) {
                 logger.warn("Caught Exception on: connection.getResponseCode() ", e);
@@ -579,7 +575,7 @@ public class PolicyDBDao {
 
         DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
         String description = "";
-        try{
+        try {
             DocumentBuilder db = dbf.newDocumentBuilder();
             Document document = db.parse(source);
 
@@ -587,8 +583,8 @@ public class PolicyDBDao {
             XPath xpath = xpathFactory.newXPath();
 
             description = xpath.evaluate(expression, document);
-        }catch(Exception e){
-            logger.error("Exception Occured while evaluating path"+e);
+        } catch (Exception e) {
+            logger.error("Exception Occured while evaluating path" + e);
         }
         return description;
     }
@@ -596,236 +592,270 @@ public class PolicyDBDao {
     private static final String POLICY_NOTIFICATION = "policy";
     private static final String PDP_NOTIFICATION = "pdp";
     private static final String GROUP_NOTIFICATION = "group";
-    public void handleIncomingHttpNotification(String url, String entityId, String entityType, String extraData, XACMLPapServlet xacmlPapServlet){
-        logger.info("DBDao url: " + url + " has reported an update on "+entityType+" entity "+entityId);
+
+    public void handleIncomingHttpNotification(String url, String entityId, String entityType, String extraData,
+            XACMLPapServlet xacmlPapServlet) {
+        logger.info("DBDao url: " + url + " has reported an update on " + entityType + " entity " + entityId);
         PolicyDBDaoTransaction transaction = this.getNewTransaction();
-        //although its named retries, this is the total number of tries
+        // although its named retries, this is the total number of tries
         int retries;
-        try{
-            retries = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_INCOMINGNOTIFICATION_TRIES));
-        } catch(Exception e){
-            logger.error("xacml.rest.pap.incomingnotification.tries property not set, using a default of 3."+e);
+        try {
+            retries = Integer
+                    .parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_INCOMINGNOTIFICATION_TRIES));
+        } catch (Exception e) {
+            logger.error("xacml.rest.pap.incomingnotification.tries property not set, using a default of 3." + e);
             retries = 3;
         }
-        //if someone sets it to some dumb value, we need to make sure it will try at least once
-        if(retries < 1){
+        // if 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){
+        switch (entityType) {
 
             case POLICY_NOTIFICATION:
-                for(int i=0; i<retries;i++){
-                    try{
+                for (int i = 0; i < retries; i++) {
+                    try {
                         handleIncomingPolicyChange(entityId);
                         break;
-                    } catch(Exception e){
+                    } catch (Exception e) {
                         logger.debug(e);
-                        PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught exception on handleIncomingPolicyChange("+url+", "+entityId+", "+extraData+")");
+                        PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                                "Caught exception on handleIncomingPolicyChange(" + url + ", " + entityId + ", "
+                                        + extraData + ")");
                     }
-                    try{
+                    try {
                         Thread.sleep(pauseBetweenRetries);
-                    }catch(InterruptedException ie){
+                    } catch (InterruptedException ie) {
                         Thread.currentThread().interrupt();
                         break;
                     }
                 }
                 break;
             case PDP_NOTIFICATION:
-                for(int i=0; i<retries;i++){
-                    try{
+                for (int i = 0; i < retries; i++) {
+                    try {
                         handleIncomingPdpChange(entityId, transaction);
                         break;
-                    } catch(Exception e){
+                    } catch (Exception e) {
                         logger.debug(e);
-                        PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught exception on handleIncomingPdpChange("+url+", "+entityId+", "+transaction+")");
+                        PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                                "Caught exception on handleIncomingPdpChange(" + url + ", " + entityId + ", "
+                                        + transaction + ")");
                     }
-                    try{
+                    try {
                         Thread.sleep(pauseBetweenRetries);
-                    }catch(InterruptedException ie){
+                    } catch (InterruptedException ie) {
                         Thread.currentThread().interrupt();
                         break;
                     }
                 }
                 break;
             case GROUP_NOTIFICATION:
-                for(int i=0; i<retries;i++){
-                    try{
+                for (int i = 0; i < retries; i++) {
+                    try {
                         handleIncomingGroupChange(entityId, extraData, transaction);
                         break;
-                    }catch(Exception e){
+                    } catch (Exception e) {
                         logger.debug(e);
-                        PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught exception on handleIncomingGroupChange("+url+", "+entityId+", "+extraData+", "+transaction+", "+xacmlPapServlet+")");
+                        PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                                "Caught exception on handleIncomingGroupChange(" + url + ", " + entityId + ", "
+                                        + extraData + ", " + transaction + ", " + xacmlPapServlet + ")");
                     }
-                    try{
+                    try {
                         Thread.sleep(pauseBetweenRetries);
-                    }catch(InterruptedException ie){
+                    } catch (InterruptedException ie) {
                         Thread.currentThread().interrupt();
                         break;
                     }
                 }
                 break;
         }
-        //no changes should be being made in this function, we still need to close
+        // no changes should be being made in this function, we still need to close
         transaction.rollbackTransaction();
     }
 
-    private void handleIncomingGroupChange(String groupId, String extraData,PolicyDBDaoTransaction transaction) throws PAPException, PolicyDBException{
+    private void handleIncomingGroupChange(String groupId, String extraData, PolicyDBDaoTransaction transaction)
+            throws PAPException, PolicyDBException {
         GroupEntity groupRecord = null;
         long groupIdLong = -1;
-        try{
+        try {
             groupIdLong = Long.parseLong(groupId);
-        } catch(NumberFormatException e){
-            throw new IllegalArgumentException("groupId "+groupId+" cannot be parsed into a long");
+        } catch (NumberFormatException e) {
+            throw new IllegalArgumentException("groupId " + groupId + " cannot be parsed into a long");
         }
-        try{
+        try {
             groupRecord = transaction.getGroup(groupIdLong);
-        } catch(Exception e){
-            PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception trying to get pdp group record with transaction.getGroup("+groupIdLong+");");
-            throw new PAPException("Could not get local group "+groupIdLong);
+        } catch (Exception e) {
+            PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                    "Caught Exception trying to get pdp group record with transaction.getGroup(" + groupIdLong + ");");
+            throw new PAPException("Could not get local group " + groupIdLong);
         }
-        if(groupRecord == null){
+        if (groupRecord == null) {
             throw new PersistenceException("The group record returned is null");
         }
-        //compare to local fs
-        //does group folder exist
+        // compare to local fs
+        // does group folder exist
         OnapPDPGroup localGroup = null;
         try {
             localGroup = papEngine.getGroup(groupRecord.getGroupId());
         } catch (Exception e) {
-            logger.warn("Caught PAPException trying to get local pdp group with papEngine.getGroup("+groupId+");",e);
+            logger.warn("Caught PAPException trying to get local pdp group with papEngine.getGroup(" + groupId + ");",
+                    e);
         }
-        if(localGroup == null && extraData != null){
-            //here we can try to load an old group id from the extraData
-            try{
+        if (localGroup == null && extraData != null) {
+            // here we can try to load an old group id from the extraData
+            try {
                 localGroup = papEngine.getGroup(extraData);
-            }catch(Exception e){
-                logger.warn("Caught PAPException trying to get local pdp group with papEngine.getGroup("+extraData+");",e);
+            } catch (Exception e) {
+                logger.warn(
+                        "Caught PAPException trying to get local pdp group with papEngine.getGroup(" + extraData + ");",
+                        e);
             }
         }
-        if(localGroup != null && groupRecord.isDeleted()){
+        if (localGroup != null && groupRecord.isDeleted()) {
             OnapPDPGroup newLocalGroup = null;
-            if(extraData != null){
+            if (extraData != null) {
                 try {
                     newLocalGroup = papEngine.getGroup(extraData);
                 } catch (PAPException e) {
-                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught PAPException trying to get new pdp group with papEngine.getGroup("+extraData+");");
+                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                            "Caught PAPException trying to get new pdp group with papEngine.getGroup(" + extraData
+                                    + ");");
                 }
             }
             try {
                 papEngine.removeGroup(localGroup, newLocalGroup);
             } catch (NullPointerException | PAPException e) {
-                PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught PAPException trying to get remove pdp group with papEngine.removeGroup("+localGroup+", "+newLocalGroup+");");
-                throw new PAPException("Could not remove group "+groupId);
+                PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                        "Caught PAPException trying to get remove pdp group with papEngine.removeGroup(" + localGroup
+                                + ", " + newLocalGroup + ");");
+                throw new PAPException("Could not remove group " + groupId);
             }
-        }
-        else if(localGroup == null){
-            //creating a new group
+        } else if (localGroup == null) {
+            // creating a new group
             try {
                 papEngine.newGroup(groupRecord.getgroupName(), groupRecord.getDescription());
             } catch (NullPointerException | PAPException e) {
-                PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught PAPException trying to create pdp group with papEngine.newGroup(groupRecord.getgroupName(), groupRecord.getDescription());");
-                throw new PAPException("Could not create group "+groupRecord);
+                PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                        "Caught PAPException trying to create pdp group with papEngine.newGroup(groupRecord"
+                                + ".getgroupName(), groupRecord.getDescription());");
+                throw new PAPException("Could not create group " + groupRecord);
             }
             try {
                 localGroup = papEngine.getGroup(groupRecord.getGroupId());
             } catch (PAPException e1) {
-                PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e1, policyDBDaoVar, "Caught PAPException trying to get pdp group we just created with papEngine.getGroup(groupRecord.getGroupId());\nAny PDPs or policies in the new group may not have been added");
+                PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e1, policyDBDaoVar,
+                        "Caught PAPException trying to get pdp group we just created with papEngine.getGroup"
+                                + "(groupRecord.getGroupId());\nAny PDPs or policies in the new group may not have been added");
                 return;
             }
-            //add possible pdps to group
+            // add possible pdps to group
             List<?> pdpsInGroup = transaction.getPdpsInGroup(Long.parseLong(groupRecord.getGroupId()));
-            for(Object pdpO : pdpsInGroup){
-                PdpEntity pdp = (PdpEntity)pdpO;
+            for (Object pdpO : pdpsInGroup) {
+                PdpEntity pdp = (PdpEntity) pdpO;
                 try {
-                    papEngine.newPDP(pdp.getPdpId(), localGroup, pdp.getPdpName(), pdp.getDescription(), pdp.getJmxPort());
+                    papEngine.newPDP(pdp.getPdpId(), localGroup, pdp.getPdpName(), pdp.getDescription(),
+                            pdp.getJmxPort());
                 } catch (NullPointerException | PAPException e) {
-                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught PAPException trying to get create pdp with papEngine.newPDP(pdp.getPdpId(), localGroup, pdp.getPdpName(), pdp.getDescription(), pdp.getJmxPort());");
-                    throw new PAPException("Could not create pdp "+pdp);
+                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                            "Caught PAPException trying to get create pdp with papEngine.newPDP(pdp.getPdpId(), "
+                                    + "localGroup, pdp.getPdpName(), pdp.getDescription(), pdp.getJmxPort());");
+                    throw new PAPException("Could not create pdp " + pdp);
                 }
             }
-            //add possible policies to group (filesystem only, apparently)
+            // add possible policies to group (filesystem only, apparently)
         } else {
-            if(!(localGroup instanceof StdPDPGroup)){
+            if (!(localGroup instanceof StdPDPGroup)) {
                 throw new PAPException("group is not a StdPDPGroup");
             }
-            //clone the object
-            //because it will be comparing the new group to its own version
-            StdPDPGroup localGroupClone = new StdPDPGroup(localGroup.getId(),localGroup.isDefaultGroup(),localGroup.getName(),localGroup.getDescription(),((StdPDPGroup)localGroup).getDirectory());
+            // clone the object
+            // because it will be comparing the new group to its own version
+            StdPDPGroup localGroupClone = new StdPDPGroup(localGroup.getId(), localGroup.isDefaultGroup(),
+                    localGroup.getName(), localGroup.getDescription(), ((StdPDPGroup) localGroup).getDirectory());
             localGroupClone.setOnapPdps(localGroup.getOnapPdps());
             localGroupClone.setPipConfigs(localGroup.getPipConfigs());
             localGroupClone.setStatus(localGroup.getStatus());
-            //we are updating a group or adding a policy or changing default
-            //set default if it should be
-            if(!localGroupClone.isDefaultGroup() && groupRecord.isDefaultGroup()){
+            // we are updating a group or adding a policy or changing default
+            // set default if it should be
+            if (!localGroupClone.isDefaultGroup() && groupRecord.isDefaultGroup()) {
                 try {
                     papEngine.setDefaultGroup(localGroup);
                     return;
                 } catch (PAPException e) {
-                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught PAPException trying to set default group with papEngine.SetDefaultGroup("+localGroupClone+");");
-                    throw new PAPException("Could not set default group to "+localGroupClone);
+                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                            "Caught PAPException trying to set default group with papEngine.SetDefaultGroup("
+                                    + localGroupClone + ");");
+                    throw new PAPException("Could not set default group to " + localGroupClone);
                 }
             }
             boolean needToUpdate = false;
-            if(updateGroupPoliciesInFileSystem(localGroupClone,localGroup, groupRecord, transaction)){
+            if (updateGroupPoliciesInFileSystem(localGroupClone, localGroup, groupRecord)) {
                 needToUpdate = true;
             }
-            if(!stringEquals(localGroupClone.getId(),groupRecord.getGroupId()) || !stringEquals(localGroupClone.getName(),groupRecord.getgroupName())){
-                //changing ids
-                //we do not want to change the id, the papEngine will do this for us, it needs to know the old id
+            if (!stringEquals(localGroupClone.getId(), groupRecord.getGroupId())
+                    || !stringEquals(localGroupClone.getName(), groupRecord.getgroupName())) {
+                // changing ids
+                // we do not want to change the id, the papEngine will do this for us, it needs to know the old id
                 localGroupClone.setName(groupRecord.getgroupName());
                 needToUpdate = true;
             }
-            if(!stringEquals(localGroupClone.getDescription(),groupRecord.getDescription())){
+            if (!stringEquals(localGroupClone.getDescription(), groupRecord.getDescription())) {
                 localGroupClone.setDescription(groupRecord.getDescription());
                 needToUpdate = true;
             }
-            if(needToUpdate){
+            if (needToUpdate) {
                 try {
                     papEngine.updateGroup(localGroupClone);
                 } catch (PAPException e) {
-                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught PAPException trying to update group with papEngine.updateGroup("+localGroupClone+");");
-                    throw new PAPException("Could not update group "+localGroupClone);
+                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                            "Caught PAPException trying to update group with papEngine.updateGroup(" + localGroupClone
+                                    + ");");
+                    throw new PAPException("Could not update group " + localGroupClone);
                 }
             }
         }
     }
 
-    //this will also handle removes, since incoming pdpGroup has no policies internally, we are just going to add them all in from the db
-    private boolean updateGroupPoliciesInFileSystem(OnapPDPGroup pdpGroup,OnapPDPGroup oldPdpGroup, GroupEntity groupRecord, PolicyDBDaoTransaction transaction) throws PAPException, PolicyDBException{
-        if(!(pdpGroup instanceof StdPDPGroup)){
+    // this will also handle removes, since incoming pdpGroup has no policies internally, we are just going to add
+    // them all in from the db
+    private boolean updateGroupPoliciesInFileSystem(OnapPDPGroup pdpGroup, OnapPDPGroup oldPdpGroup,
+            GroupEntity groupRecord) throws PAPException, PolicyDBException {
+        if (!(pdpGroup instanceof StdPDPGroup)) {
             throw new PAPException("group is not a StdPDPGroup");
         }
-        StdPDPGroup group = (StdPDPGroup)pdpGroup;
-        //this must always be true since we don't explicitly know when a delete is occuring
+        StdPDPGroup group = (StdPDPGroup) pdpGroup;
+        // this must always be true since we don't explicitly know when a delete is occuring
         boolean didUpdate = true;
-        HashMap<String,PDPPolicy> currentPolicySet = new HashMap<>(oldPdpGroup.getPolicies().size());
+        HashMap<String, PDPPolicy> currentPolicySet = new HashMap<>(oldPdpGroup.getPolicies().size());
         HashSet<PDPPolicy> newPolicySet = new HashSet<>();
-        for(PDPPolicy pdpPolicy : oldPdpGroup.getPolicies()){
+        for (PDPPolicy pdpPolicy : oldPdpGroup.getPolicies()) {
             currentPolicySet.put(pdpPolicy.getId(), pdpPolicy);
         }
-        for(PolicyEntity policy : groupRecord.getPolicies()){
+        for (PolicyEntity policy : groupRecord.getPolicies()) {
             String pdpPolicyName = getPdpPolicyName(policy.getPolicyName(), policy.getScope());
-            if(group.getPolicy(pdpPolicyName) == null){
+            if (group.getPolicy(pdpPolicyName) == null) {
                 didUpdate = true;
-                if(currentPolicySet.containsKey(pdpPolicyName)){
+                if (currentPolicySet.containsKey(pdpPolicyName)) {
                     newPolicySet.add(currentPolicySet.get(pdpPolicyName));
-                } else{
-                    logger.info("PolicyDBDao: Adding the new policy to the PDP group after notification: " + pdpPolicyName);
+                } else {
+                    logger.info(
+                            "PolicyDBDao: Adding the new policy to the PDP group after notification: " + pdpPolicyName);
                     InputStream policyStream = new ByteArrayInputStream(policy.getPolicyData().getBytes());
-                    group.copyPolicyToFile(pdpPolicyName,policyStream);
-                    ((StdPDPPolicy)(group.getPolicy(pdpPolicyName))).setName(removeExtensionAndVersionFromPolicyName(pdpPolicyName));
+                    group.copyPolicyToFile(pdpPolicyName, policyStream);
+                    ((StdPDPPolicy) (group.getPolicy(pdpPolicyName)))
+                            .setName(removeExtensionAndVersionFromPolicyName(pdpPolicyName));
                     try {
                         policyStream.close();
                     } catch (IOException e) {
                         didUpdate = false;
-                        PolicyLogger.error(e.getMessage() +e);
+                        PolicyLogger.error(e.getMessage() + e);
                     }
                 }
             }
         }
         logger.info("PolicyDBDao: Adding updated policies to group after notification.");
-        if(didUpdate){
+        if (didUpdate) {
             newPolicySet.addAll(group.getPolicies());
             group.setPolicies(newPolicySet);
         }
@@ -833,50 +863,56 @@ public class PolicyDBDao {
     }
 
     /*
-     *  This method is called during all pushPolicy transactions and makes sure the file system
-     *  group is in sync with the database groupentity
+     * This method is called during all pushPolicy transactions and makes sure the file system group is in sync with the
+     * database groupentity
      */
-    private StdPDPGroup synchronizeGroupPoliciesInFileSystem(StdPDPGroup pdpGroup, GroupEntity groupentity) throws PAPException, PolicyDBException{
+    private StdPDPGroup synchronizeGroupPoliciesInFileSystem(StdPDPGroup pdpGroup, GroupEntity groupentity)
+            throws PAPException, PolicyDBException {
 
-        HashMap<String,PDPPolicy> currentPolicyMap = new HashMap<>();
+        HashMap<String, PDPPolicy> currentPolicyMap = new HashMap<>();
         HashSet<String> newPolicyIdSet = new HashSet<>();
         HashSet<PDPPolicy> newPolicySet = new HashSet<>();
 
-        for(PDPPolicy pdpPolicy : pdpGroup.getPolicies()){
+        for (PDPPolicy pdpPolicy : pdpGroup.getPolicies()) {
             currentPolicyMap.put(pdpPolicy.getId(), pdpPolicy);
         }
 
-        for(PolicyEntity policy : groupentity.getPolicies()){
+        for (PolicyEntity policy : groupentity.getPolicies()) {
             String pdpPolicyId = getPdpPolicyName(policy.getPolicyName(), policy.getScope());
             newPolicyIdSet.add(pdpPolicyId);
 
-            if(currentPolicyMap.containsKey(pdpPolicyId)){
+            if (currentPolicyMap.containsKey(pdpPolicyId)) {
                 newPolicySet.add(currentPolicyMap.get(pdpPolicyId));
             } else {
-                //convert PolicyEntity object to PDPPolicy
+                // convert PolicyEntity object to PDPPolicy
                 String name = pdpPolicyId.replace(".xml", "");
                 name = name.substring(0, name.lastIndexOf('.'));
                 InputStream policyStream = new ByteArrayInputStream(policy.getPolicyData().getBytes());
-                pdpGroup.copyPolicyToFile(pdpPolicyId,name,policyStream);
+                pdpGroup.copyPolicyToFile(pdpPolicyId, name, policyStream);
                 URI location = Paths.get(pdpGroup.getDirectory().toAbsolutePath().toString(), pdpPolicyId).toUri();
                 StdPDPPolicy newPolicy = null;
                 try {
-                    newPolicy = new StdPDPPolicy(pdpPolicyId, true, removeExtensionAndVersionFromPolicyName(pdpPolicyId),location);
+                    newPolicy = new StdPDPPolicy(pdpPolicyId, true,
+                            removeExtensionAndVersionFromPolicyName(pdpPolicyId), location);
                     newPolicySet.add(newPolicy);
                 } catch (Exception e) {
                     logger.debug(e);
-                    PolicyLogger.error("PolicyDBDao: Exception occurred while creating the StdPDPPolicy newPolicy object " + e.getMessage());
+                    PolicyLogger
+                            .error("PolicyDBDao: Exception occurred while creating the StdPDPPolicy newPolicy object "
+                                    + e.getMessage());
                 }
             }
         }
 
-        for(String id : currentPolicyMap.keySet()) {
-            if(!newPolicyIdSet.contains(id)){
+        for (String id : currentPolicyMap.keySet()) {
+            if (!newPolicyIdSet.contains(id)) {
                 try {
                     Files.delete(Paths.get(currentPolicyMap.get(id).getLocation()));
                 } catch (Exception e) {
                     logger.debug(e);
-                    PolicyLogger.error("PolicyDBDao: Exception occurred while attempting to delete the old version of the policy file from the group. " + e.getMessage());
+                    PolicyLogger
+                            .error("PolicyDBDao: Exception occurred while attempting to delete the old version of the"
+                                    + " policy file from the group. " + e.getMessage());
                 }
             }
         }
@@ -887,139 +923,154 @@ public class PolicyDBDao {
         return pdpGroup;
     }
 
-    private String removeExtensionAndVersionFromPolicyName(String originalPolicyName) throws PolicyDBException{
+    private String removeExtensionAndVersionFromPolicyName(String originalPolicyName) throws PolicyDBException {
         return getPolicyNameAndVersionFromPolicyFileName(originalPolicyName)[0];
     }
 
     /**
      * Splits apart the policy name and version from a policy file path
+     *
      * @param originalPolicyName: a policy file name ex: Config_policy.2.xml
      * @return An array [0]: The policy name, [1]: the policy version, as a string
      */
-    private String[] getPolicyNameAndVersionFromPolicyFileName(String originalPolicyName) throws PolicyDBException{
+    private String[] getPolicyNameAndVersionFromPolicyFileName(String originalPolicyName) throws PolicyDBException {
         String policyName = originalPolicyName;
         String[] nameAndVersion = new String[2];
-        try{
+        try {
             policyName = removeFileExtension(policyName);
-            nameAndVersion[0] = policyName.substring(0,policyName.lastIndexOf('.'));
-            if(isNullOrEmpty(nameAndVersion[0])){
+            nameAndVersion[0] = policyName.substring(0, policyName.lastIndexOf('.'));
+            if (isNullOrEmpty(nameAndVersion[0])) {
                 throw new PolicyDBException();
             }
-        } catch(Exception e){
+        } catch (Exception e) {
             nameAndVersion[0] = originalPolicyName;
             logger.debug(e);
         }
-        try{
-            nameAndVersion[1] = policyName.substring(policyName.lastIndexOf('.')+1);
-            if(isNullOrEmpty(nameAndVersion[1])){
+        try {
+            nameAndVersion[1] = policyName.substring(policyName.lastIndexOf('.') + 1);
+            if (isNullOrEmpty(nameAndVersion[1])) {
                 throw new PolicyDBException();
             }
-        } catch(Exception e){
+        } catch (Exception e) {
             nameAndVersion[1] = "1";
             logger.debug(e);
         }
         return nameAndVersion;
     }
 
-    private void handleIncomingPdpChange(String pdpId, PolicyDBDaoTransaction transaction) throws PAPException{
-        //get pdp
+    private void handleIncomingPdpChange(String pdpId, PolicyDBDaoTransaction transaction) throws PAPException {
+        // get pdp
         long pdpIdLong = -1;
-        try{
+        try {
             pdpIdLong = Long.parseLong(pdpId);
-        }catch(NumberFormatException e){
-            throw new IllegalArgumentException("pdpId "+pdpId+" cannot be parsed into a long");
+        } catch (NumberFormatException e) {
+            throw new IllegalArgumentException("pdpId " + pdpId + " cannot be parsed into a long");
         }
         PdpEntity pdpRecord = null;
-        try{
+        try {
             pdpRecord = transaction.getPdp(pdpIdLong);
-        }catch(Exception e){
-            PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception trying to get pdp record with transaction.getPdp("+pdpIdLong+");");
-            throw new PAPException("Could not get local pdp "+pdpIdLong);
+        } catch (Exception e) {
+            PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                    "Caught Exception trying to get pdp record with transaction.getPdp(" + pdpIdLong + ");");
+            throw new PAPException("Could not get local pdp " + pdpIdLong);
         }
-        if(pdpRecord == null){
+        if (pdpRecord == null) {
             throw new PersistenceException("The pdpRecord returned is null");
         }
         PDP localPdp = null;
         try {
             localPdp = papEngine.getPDP(pdpRecord.getPdpId());
         } catch (PAPException e) {
-            logger.warn("Caught PAPException trying to get local pdp  with papEngine.getPDP("+pdpId+");",e);
+            logger.warn("Caught PAPException trying to get local pdp  with papEngine.getPDP(" + pdpId + ");", e);
         }
-        if(localPdp != null && pdpRecord.isDeleted()){
+        if (localPdp != null && pdpRecord.isDeleted()) {
             try {
                 papEngine.removePDP((OnapPDP) localPdp);
             } catch (PAPException e) {
-                PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught PAPException trying to get remove pdp with papEngine.removePDP("+localPdp+");");
-                throw new PAPException("Could not remove pdp "+pdpId);
+                PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                        "Caught PAPException trying to get remove pdp with papEngine.removePDP(" + localPdp + ");");
+                throw new PAPException("Could not remove pdp " + pdpId);
             }
-        }
-        else if(localPdp == null){
-            //add new pdp
-            //get group
+        } else if (localPdp == null) {
+            // add new pdp
+            // get group
             OnapPDPGroup localGroup = null;
             try {
                 localGroup = papEngine.getGroup(pdpRecord.getGroup().getGroupId());
             } catch (PAPException e1) {
-                PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e1, policyDBDaoVar, "Caught PAPException trying to get local group to add pdp to with papEngine.getGroup(pdpRecord.getGroup().getGroupId());");
+                PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e1, policyDBDaoVar,
+                        "Caught PAPException trying to get local group to add pdp to with papEngine.getGroup"
+                                + "(pdpRecord.getGroup().getGroupId());");
                 throw new PAPException("Could not get local group");
             }
             try {
-                papEngine.newPDP(pdpRecord.getPdpId(), localGroup, pdpRecord.getPdpName(), pdpRecord.getDescription(), pdpRecord.getJmxPort());
+                papEngine.newPDP(pdpRecord.getPdpId(), localGroup, pdpRecord.getPdpName(), pdpRecord.getDescription(),
+                        pdpRecord.getJmxPort());
             } catch (NullPointerException | PAPException e) {
-                PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught PAPException trying to create pdp with papEngine.newPDP("+pdpRecord.getPdpId()+", "+localGroup+", "+pdpRecord.getPdpName()+", "+pdpRecord.getDescription()+", "+pdpRecord.getJmxPort()+");");
-                throw new PAPException("Could not create pdp "+pdpRecord);
+                PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                        "Caught PAPException trying to create pdp with papEngine.newPDP(" + pdpRecord.getPdpId() + ", "
+                                + localGroup + ", " + pdpRecord.getPdpName() + ", " + pdpRecord.getDescription() + ", "
+                                + pdpRecord.getJmxPort() + ");");
+                throw new PAPException("Could not create pdp " + pdpRecord);
             }
         } else {
             boolean needToUpdate = false;
-            if(!stringEquals(localPdp.getId(),pdpRecord.getPdpId()) || !stringEquals(localPdp.getName(),pdpRecord.getPdpName())){
-                //again, we don't want to change the id, the papEngine will do this
+            if (!stringEquals(localPdp.getId(), pdpRecord.getPdpId())
+                    || !stringEquals(localPdp.getName(), pdpRecord.getPdpName())) {
+                // again, we don't want to change the id, the papEngine will do this
                 localPdp.setName(pdpRecord.getPdpName());
                 needToUpdate = true;
             }
-            if(!stringEquals(localPdp.getDescription(),pdpRecord.getDescription())){
+            if (!stringEquals(localPdp.getDescription(), pdpRecord.getDescription())) {
                 localPdp.setDescription(pdpRecord.getDescription());
                 needToUpdate = true;
             }
             String localPdpGroupId = null;
-            try{
+            try {
                 localPdpGroupId = papEngine.getPDPGroup((OnapPDP) localPdp).getId();
-            } catch(PAPException e){
-                //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);
+            } 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())){
+            if (!stringEquals(localPdpGroupId, pdpRecord.getGroup().getGroupId())) {
                 OnapPDPGroup newPdpGroup = null;
-                try{
+                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, policyDBDaoVar, "Caught PAPException trying to get id of local group to move pdp to with papEngine.getGroup(pdpRecord.getGroup().getGroupId());");
+                } catch (PAPException e) {
+                    // ok, now we have an issue. Time to stop things
+                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                            "Caught PAPException trying to get id of local group to move pdp to with papEngine"
+                                    + ".getGroup(pdpRecord.getGroup().getGroupId());");
                     throw new PAPException("Could not get local group");
                 }
-                try{
+                try {
                     papEngine.movePDP((OnapPDP) localPdp, newPdpGroup);
-                }catch(PAPException e){
-                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught PAPException trying to move pdp with papEngine.movePDP(localPdp, newPdpGroup);");
-                    throw new PAPException("Could not move pdp "+localPdp);
+                } catch (PAPException e) {
+                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                            "Caught PAPException trying to move pdp with papEngine.movePDP(localPdp, newPdpGroup);");
+                    throw new PAPException("Could not move pdp " + localPdp);
                 }
             }
-            if(((PdpEntity) localPdp).getJmxPort() != pdpRecord.getJmxPort()){
+            if (((PdpEntity) localPdp).getJmxPort() != pdpRecord.getJmxPort()) {
                 ((PdpEntity) localPdp).setJmxPort(pdpRecord.getJmxPort());
                 needToUpdate = true;
             }
-            if(needToUpdate){
+            if (needToUpdate) {
                 try {
                     papEngine.updatePDP((OnapPDP) localPdp);
                 } catch (PAPException e) {
-                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught PAPException trying to update pdp with papEngine.updatePdp("+localPdp+");");
-                    throw new PAPException("Could not update pdp "+localPdp);
+                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                            "Caught PAPException trying to update pdp with papEngine.updatePdp(" + localPdp + ");");
+                    throw new PAPException("Could not update pdp " + localPdp);
                 }
             }
         }
-        //compare to local situation
-        //call command to update
+        // compare to local situation
+        // call command to update
     }
-    private void handleIncomingPolicyChange(String policyId){
+
+    private void handleIncomingPolicyChange(String policyId) {
         String policyName = null;
         EntityManager em = emf.createEntityManager();
         Query getPolicyEntityQuery = em.createNamedQuery("PolicyEntity.FindById");
@@ -1028,38 +1079,39 @@ public class PolicyDBDao {
         @SuppressWarnings("unchecked")
         List<PolicyEntity> policies = getPolicyEntityQuery.getResultList();
         PolicyEntity policy = null;
-        if (!policies.isEmpty()){
+        if (!policies.isEmpty()) {
             policy = policies.get(0);
         }
         String action = "unknown action";
         try {
-            if(policy != null){
+            if (policy != null) {
                 policyName = policy.getPolicyName();
                 logger.info("Deleting old Policy Config File for " + policy.getPolicyName());
                 action = "delete";
                 Path subFile = null;
 
-                if (policy.getConfigurationData()!= null){
+                if (policy.getConfigurationData() != null) {
                     subFile = getPolicySubFile(policy.getConfigurationData().getConfigurationName(), config);
-                }else if(policy.getActionBodyEntity()!= null){
+                } else if (policy.getActionBodyEntity() != null) {
                     subFile = getPolicySubFile(policy.getActionBodyEntity().getActionBodyName(), action);
                 }
 
-                if(subFile != null){
+                if (subFile != null) {
                     Files.deleteIfExists(subFile);
                 }
-                if (policy.getConfigurationData()!= null){
+                if (policy.getConfigurationData() != null) {
                     writePolicySubFile(policy, config);
-                }else if(policy.getActionBodyEntity()!= null){
+                } else if (policy.getActionBodyEntity() != null) {
                     writePolicySubFile(policy, action);
                 }
             }
         } catch (IOException e1) {
-            PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e1, policyDBDaoVar, "Error occurred while performing [" + action + "] of Policy File: " + policyName);
+            PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e1, policyDBDaoVar,
+                    "Error occurred while performing [" + action + "] of Policy File: " + policyName);
         }
     }
 
-    private String getPdpPolicyName(String name, String scope){
+    private String getPdpPolicyName(String name, String scope) {
         String finalName = "";
         finalName += scope;
         finalName += ".";
@@ -1067,11 +1119,12 @@ public class PolicyDBDao {
         finalName += ".xml";
         return finalName;
     }
-    private String removeFileExtension(String fileName){
+
+    private String removeFileExtension(String fileName) {
         return fileName.substring(0, fileName.lastIndexOf('.'));
     }
 
-    private Path getPolicySubFile(String inputFileName, String subFileType){
+    private Path getPolicySubFile(String inputFileName, String subFileType) {
         String filename = inputFileName;
         logger.info("getPolicySubFile(" + filename + ", " + subFileType + ")");
         Path filePath = Paths.get(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_WEBAPPS), subFileType);
@@ -1079,14 +1132,14 @@ public class PolicyDBDao {
 
         filename = FilenameUtils.removeExtension(filename);
 
-        for(File tmpFile : filePath.toFile().listFiles()){
-            if (FilenameUtils.removeExtension(tmpFile.getName()).equals(filename)){
+        for (File tmpFile : filePath.toFile().listFiles()) {
+            if (FilenameUtils.removeExtension(tmpFile.getName()).equals(filename)) {
                 file = tmpFile;
             }
         }
 
         Path finalPath = null;
-        if (file!= null){
+        if (file != null) {
             finalPath = Paths.get(file.getAbsolutePath());
         }
 
@@ -1094,12 +1147,13 @@ public class PolicyDBDao {
         return finalPath;
     }
 
-    private boolean writePolicySubFile(PolicyEntity policy, String policyType){
-        logger.info("writePolicySubFile with policyName[" + policy.getPolicyName() + "] and policyType[" + policyType + "]");
+    private boolean writePolicySubFile(PolicyEntity policy, String policyType) {
+        logger.info("writePolicySubFile with policyName[" + policy.getPolicyName() + "] and policyType[" + policyType
+                + "]");
         String type = null;
         String subTypeName = null;
         String subTypeBody = null;
-        if (config.equalsIgnoreCase(policyType)){
+        if (config.equalsIgnoreCase(policyType)) {
             type = config;
             subTypeName = FilenameUtils.removeExtension(policy.getConfigurationData().getConfigurationName());
             subTypeBody = policy.getConfigurationData().getConfigBody();
@@ -1120,47 +1174,48 @@ public class PolicyDBDao {
                     subTypeName = subTypeName + ".txt";
                 }
             }
-        }else if (action.equalsIgnoreCase(policyType)){
+        } else if (action.equalsIgnoreCase(policyType)) {
             type = action;
             subTypeName = policy.getActionBodyEntity().getActionBodyName();
             subTypeBody = policy.getActionBodyEntity().getActionBody();
         }
         Path filePath = Paths.get(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_WEBAPPS).toString(), type);
 
-        if(subTypeBody == null){
+        if (subTypeBody == null) {
             subTypeBody = "";
         }
         boolean success = false;
         try {
             Files.deleteIfExists(Paths.get(filePath.toString(), subTypeName));
-            File file = Paths.get(filePath.toString(),subTypeName).toFile();
+            File file = Paths.get(filePath.toString(), subTypeName).toFile();
             boolean value = file.createNewFile();
-            logger.debug("New file created successfully"+value);
-            try(FileWriter fileWriter = new FileWriter(file, false)){
+            logger.debug("New file created successfully" + value);
+            try (FileWriter fileWriter = new FileWriter(file, false)) {
                 // false to overwrite
                 fileWriter.write(subTypeBody);
                 fileWriter.close();
                 success = true;
             }
         } catch (Exception e) {
-            PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Exception occured while creating Configuration File for Policy : " + policy.getPolicyName());
+            PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                    "Exception occured while creating Configuration File for Policy : " + policy.getPolicyName());
         }
         return success;
     }
 
-    public void auditLocalDatabase(PAPPolicyEngine papEngine2){
+    public void auditLocalDatabase(PAPPolicyEngine papEngine2) {
         logger.debug("PolicyDBDao.auditLocalDatabase() is called");
-        try{
+        try {
             deleteAllGroupTables();
             auditGroups(papEngine2);
-        } catch(Exception e){
+        } catch (Exception e) {
             PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "auditLocalDatabase() error");
-            logger.error("Exception Occured"+e);
+            logger.error("Exception Occured" + e);
         }
     }
 
 
-    public StdPDPGroup auditLocalFileSystem(StdPDPGroup group){
+    public StdPDPGroup auditLocalFileSystem(StdPDPGroup group) {
 
         logger.info("Starting Local File System group audit");
         EntityManager em = emf.createEntityManager();
@@ -1172,8 +1227,8 @@ public class PolicyDBDao {
             groupQuery.setParameter(groupIdVar, group.getId());
             groupQuery.setParameter(deletedVar, false);
             List<?> groupQueryList = groupQuery.getResultList();
-            if(groupQueryList!=null && !groupQueryList.isEmpty()){
-                GroupEntity dbgroup = (GroupEntity)groupQueryList.get(0);
+            if (groupQueryList != null && !groupQueryList.isEmpty()) {
+                GroupEntity dbgroup = (GroupEntity) groupQueryList.get(0);
                 updatedGroup = synchronizeGroupPoliciesInFileSystem(group, dbgroup);
                 logger.info("Group was updated during file system audit: " + updatedGroup.toString());
             }
@@ -1181,8 +1236,9 @@ public class PolicyDBDao {
             logger.error(e);
         } catch (Exception e) {
             logger.error(e);
-            PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception trying to check if group exists groupQuery.getResultList()");
-            throw new PersistenceException("Query failed trying to check if group "+group.getId()+" exists");
+            PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                    "Caught Exception trying to check if group exists groupQuery.getResultList()");
+            throw new PersistenceException("Query failed trying to check if group " + group.getId() + " exists");
         }
 
         em.getTransaction().commit();
@@ -1192,7 +1248,7 @@ public class PolicyDBDao {
 
     }
 
-    public void deleteAllGroupTables(){
+    public void deleteAllGroupTables() {
         logger.debug("PolicyDBDao.deleteAllGroupTables() called");
         EntityManager em = emf.createEntityManager();
         em.getTransaction().begin();
@@ -1208,18 +1264,18 @@ public class PolicyDBDao {
     }
 
     @SuppressWarnings("unchecked")
-    public void auditGroups(PAPPolicyEngine papEngine2){
+    public void auditGroups(PAPPolicyEngine papEngine2) {
         logger.debug("PolicyDBDao.auditGroups() called");
 
         EntityManager em = emf.createEntityManager();
         em.getTransaction().begin();
         final String AUDIT_STR = "Audit";
-        try{
+        try {
 
             Set<OnapPDPGroup> groups = papEngine2.getOnapPDPGroups();
 
-            for (OnapPDPGroup grp : groups){
-                try{
+            for (OnapPDPGroup grp : groups) {
+                try {
                     GroupEntity groupEntity = new GroupEntity();
                     em.persist(groupEntity);
                     groupEntity.setGroupName(grp.getName());
@@ -1228,9 +1284,9 @@ public class PolicyDBDao {
                     groupEntity.setCreatedBy(AUDIT_STR);
                     groupEntity.setGroupId(createNewPDPGroupId(grp.getId()));
                     groupEntity.setModifiedBy(AUDIT_STR);
-                    Set<OnapPDP> pdps =  grp.getOnapPdps();
+                    Set<OnapPDP> pdps = grp.getOnapPdps();
 
-                    for(OnapPDP pdp : pdps){
+                    for (OnapPDP pdp : pdps) {
                         PdpEntity pdpEntity = new PdpEntity();
                         em.persist(pdpEntity);
                         pdpEntity.setGroup(groupEntity);
@@ -1244,11 +1300,12 @@ public class PolicyDBDao {
 
                     Set<PDPPolicy> policies = grp.getPolicies();
 
-                    for(PDPPolicy policy : policies){
-                        try{
+                    for (PDPPolicy policy : policies) {
+                        try {
                             String[] stringArray = getNameScopeAndVersionFromPdpPolicy(policy.getId());
-                            if(stringArray == null) {
-                                throw new IllegalArgumentException("Invalid input - policyID must contain name, scope and version");
+                            if (stringArray == null) {
+                                throw new IllegalArgumentException(
+                                        "Invalid input - policyID must contain name, scope and version");
                             }
                             List<PolicyEntity> policyEntityList;
                             Query getPolicyEntitiesQuery = em.createNamedQuery("PolicyEntity.findByNameAndScope");
@@ -1257,21 +1314,23 @@ public class PolicyDBDao {
 
                             policyEntityList = getPolicyEntitiesQuery.getResultList();
                             PolicyEntity policyEntity = null;
-                            if(!policyEntityList.isEmpty()){
+                            if (!policyEntityList.isEmpty()) {
                                 policyEntity = policyEntityList.get(0);
                             }
-                            if(policyEntity != null){
+                            if (policyEntity != null) {
                                 groupEntity.addPolicyToGroup(policyEntity);
                             }
-                        }catch(Exception e2){
-                            PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e2, policyDBDaoVar, "Exception auditGroups inner catch");
+                        } catch (Exception e2) {
+                            PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e2, policyDBDaoVar,
+                                    "Exception auditGroups inner catch");
                         }
                     }
-                }catch(Exception e1){
-                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e1, policyDBDaoVar, "Exception auditGroups middle catch");
+                } catch (Exception e1) {
+                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e1, policyDBDaoVar,
+                            "Exception auditGroups middle catch");
                 }
             }
-        }catch(Exception e){
+        } catch (Exception e) {
             em.getTransaction().rollback();
             PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Exception auditGroups outer catch");
             em.close();
@@ -1283,18 +1342,20 @@ public class PolicyDBDao {
 
     }
 
-    private String getConfigFile(String filename, PolicyRestAdapter policy){
-        if(policy == null){
-            return getConfigFile(filename, (String)null);
+    private String getConfigFile(String filename, PolicyRestAdapter policy) {
+        if (policy == null) {
+            return getConfigFile(filename, (String) null);
         }
         return getConfigFile(filename, policy.getConfigType());
     }
-    //copied from ConfigPolicy.java and modified
+
+    // copied from ConfigPolicy.java and modified
     // Here we are adding the extension for the configurations file based on the
     // config type selection for saving.
     private String getConfigFile(String inputFilename, String configType) {
         String filename = inputFilename;
-        logger.debug("getConfigFile(String filename, String scope, String configType) as getConfigFile("+filename+", "+configType+") called");
+        logger.debug("getConfigFile(String filename, String scope, String configType) as getConfigFile(" + filename
+                + ", " + configType + ") called");
         filename = FilenameUtils.removeExtension(filename);
         String id = configType;
 
@@ -1315,20 +1376,20 @@ public class PolicyDBDao {
         return filename;
     }
 
-    private String[] getNameScopeAndVersionFromPdpPolicy(String fileName){
+    private String[] getNameScopeAndVersionFromPdpPolicy(String fileName) {
         String[] splitByDots = fileName.split("\\.");
-        if(splitByDots.length < 3){
+        if (splitByDots.length < 3) {
             return null;
         }
-        String policyName = splitByDots[splitByDots.length-3];
-        String version = splitByDots[splitByDots.length-2];
-        //policy names now include version
+        String policyName = splitByDots[splitByDots.length - 3];
+        String version = splitByDots[splitByDots.length - 2];
+        // policy names now include version
         String scope = "";
-        for(int i=0;i<splitByDots.length-3;i++){
+        for (int i = 0; i < splitByDots.length - 3; i++) {
             scope += ".".concat(splitByDots[i]);
         }
-        //remove the first dot
-        if(scope.length() > 0){
+        // remove the first dot
+        if (scope.length() > 0) {
             scope = scope.substring(1);
         }
         String[] returnArray = new String[3];
@@ -1361,12 +1422,13 @@ public class PolicyDBDao {
 
     /**
      * Checks if any of the given strings are empty or null
+     *
      * @param strings One or more Strings (or nulls) to check if they are null or empty
      * @return true if one or more of the given strings are empty or null
      */
-    public static boolean isNullOrEmpty(String... strings){
-        for(String s : strings){
-            if(s == null || "".equals(s)){
+    public static boolean isNullOrEmpty(String... strings) {
+        for (String s : strings) {
+            if (s == null || "".equals(s)) {
                 return true;
             }
         }
@@ -1384,153 +1446,165 @@ public class PolicyDBDao {
         private boolean operationRun = false;
         private final Thread transactionTimer;
 
-        private PolicyDBDaoTransactionInstance(){
-            //call the constructor with arguments
+        private PolicyDBDaoTransactionInstance() {
+            // call the constructor with arguments
             this(Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_TRANS_TIMEOUT)),
                     Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_TRANS_WAIT)));
         }
-        //timeout is how long the transaction can sit before rolling back
-        //wait time is how long to wait for the transaction to start before throwing an exception
-        private PolicyDBDaoTransactionInstance(int transactionTimeout, int transactionWaitTime){
-            if(logger.isDebugEnabled()){
+
+        // timeout is how long the transaction can sit before rolling back
+        // wait time is how long to wait for the transaction to start before throwing an exception
+        private PolicyDBDaoTransactionInstance(int transactionTimeout, int transactionWaitTime) {
+            if (logger.isDebugEnabled()) {
                 logger.debug("\n\nPolicyDBDaoTransactionInstance() as PolicyDBDaoTransactionInstance() called:"
-                        + "\n   transactionTimeout = " + transactionTimeout
-                        + "\n   transactionWaitTime = " + transactionWaitTime + "\n\n");
+                        + "\n   transactionTimeout = " + transactionTimeout + "\n   transactionWaitTime = "
+                        + transactionWaitTime + "\n\n");
             }
             this.em = emf.createEntityManager();
             policyId = -1;
             groupId = -1;
             pdpId = -1;
             newGroupId = null;
-            synchronized(emLock){
-                try{
-                    startTransactionSynced(this.em,transactionWaitTime);
-                } catch(Exception e){
+            synchronized (emLock) {
+                try {
+                    startTransactionSynced(this.em, transactionWaitTime);
+                } catch (Exception e) {
                     logger.debug(e);
-                    throw new PersistenceException("Could not lock transaction within "+transactionWaitTime+" milliseconds");
+                    throw new PersistenceException(
+                            "Could not lock transaction within " + transactionWaitTime + " milliseconds");
                 }
             }
             class TransactionTimer implements Runnable {
 
                 private int sleepTime;
-                public TransactionTimer(int timeout){
+
+                public TransactionTimer(int timeout) {
                     this.sleepTime = timeout;
                 }
+
                 @Override
                 public void run() {
-                    if(logger.isDebugEnabled()){
-                        Date date= new java.util.Date();
-                        logger.debug("\n\nTransactionTimer.run() - SLEEPING: "
-                                + "\n   sleepTime (ms) = " + sleepTime
-                                + "\n   TimeStamp = " + date.getTime()
-                                + "\n\n");
+                    if (logger.isDebugEnabled()) {
+                        Date date = new java.util.Date();
+                        logger.debug("\n\nTransactionTimer.run() - SLEEPING: " + "\n   sleepTime (ms) = " + sleepTime
+                                + TIMESTAMP + date.getTime() + "\n\n");
                     }
                     try {
                         Thread.sleep(sleepTime);
                     } catch (InterruptedException e) {
-                        //probably, the transaction was completed, the last thing we want to do is roll back
-                        if(logger.isDebugEnabled()){
-                            Date date= new java.util.Date();
-                            logger.debug("\n\nTransactionTimer.run() - WAKE Interrupt: "
-                                    + "\n   TimeStamp = " + date.getTime()
-                                    + "\n\n");
+                        // probably, the transaction was completed, the last thing we want to do is roll back
+                        if (logger.isDebugEnabled()) {
+                            Date date = new java.util.Date();
+                            logger.debug("\n\nTransactionTimer.run() - WAKE Interrupt: " + TIMESTAMP
+                                    + date.getTime() + "\n\n");
                         }
                         Thread.currentThread().interrupt();
                         return;
                     }
-                    if(logger.isDebugEnabled()){
-                        Date date= new java.util.Date();
-                        logger.debug("\n\nTransactionTimer.run() - WAKE Timeout: "
-                                + "\n   TimeStamp = " + date.getTime()
-                                + "\n\n");
+                    if (logger.isDebugEnabled()) {
+                        Date date = new java.util.Date();
+                        logger.debug("\n\nTransactionTimer.run() - WAKE Timeout: " + TIMESTAMP
+                                + date.getTime() + "\n\n");
                     }
                     rollbackTransaction();
                 }
 
             }
 
-            transactionTimer = new Thread(new TransactionTimer(transactionTimeout),"transactionTimerThread");
+            transactionTimer = new Thread(new TransactionTimer(transactionTimeout), "transactionTimerThread");
             transactionTimer.start();
 
 
         }
 
-        private void checkBeforeOperationRun(){
+        private void checkBeforeOperationRun() {
             checkBeforeOperationRun(false);
         }
-        private void checkBeforeOperationRun(boolean justCheckOpen){
-            if(!isTransactionOpen()){
+
+        private void checkBeforeOperationRun(boolean justCheckOpen) {
+            if (!isTransactionOpen()) {
                 PolicyLogger.error("There is no transaction currently open");
                 throw new IllegalStateException("There is no transaction currently open");
             }
-            if(operationRun && !justCheckOpen){
-                PolicyLogger.error("An operation has already been performed and the current transaction should be committed");
-                throw new IllegalStateException("An operation has already been performed and the current transaction should be committed");
+            if (operationRun && !justCheckOpen) {
+                PolicyLogger.error(
+                        "An operation has already been performed and the current transaction should be " + "committed");
+                throw new IllegalStateException(
+                        "An operation has already been performed and the current transaction should be committed");
             }
             operationRun = true;
         }
+
         @Override
         public void commitTransaction() {
-            synchronized(emLock){
+            synchronized (emLock) {
                 logger.debug("commitTransaction() as commitTransaction() called");
-                if(!isTransactionOpen()){
+                if (!isTransactionOpen()) {
                     logger.warn("There is no open transaction to commit");
-                    try{
+                    try {
                         em.close();
-                    } catch(Exception e){
-                        logger.error("Exception Occured"+e);
+                    } catch (Exception e) {
+                        logger.error("Exception Occured" + e);
                     }
                     return;
                 }
-                try{
+                try {
                     em.getTransaction().commit();
-                } catch(RollbackException e){
-                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught RollbackException on em.getTransaction().commit()");
-                    throw new PersistenceException("The commit failed. Message:\n"+e.getMessage());
+                } catch (RollbackException e) {
+                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                            "Caught RollbackException on em.getTransaction().commit()");
+                    throw new PersistenceException("The commit failed. Message:\n" + e.getMessage());
                 }
                 em.close();
                 // need to revisit
-                if(policyId >= 0){
-                    if(newGroupId != null){
-                        try{
-                            notifyOthers(policyId,POLICY_NOTIFICATION,newGroupId);
-                        } catch(Exception e){
-                            PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception on notifyOthers("+policyId+","+POLICY_NOTIFICATION+","+newGroupId+")");
+                if (policyId >= 0) {
+                    if (newGroupId != null) {
+                        try {
+                            notifyOthers(policyId, POLICY_NOTIFICATION, newGroupId);
+                        } catch (Exception e) {
+                            PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                                    CAUGHTEXCEPTIONONNOTIFY + policyId + "," + POLICY_NOTIFICATION + ","
+                                            + newGroupId + ")");
                         }
                     } else {
-                        try{
-                            notifyOthers(policyId,POLICY_NOTIFICATION);
-                        } catch(Exception e){
-                            PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception on notifyOthers("+policyId+","+POLICY_NOTIFICATION+")");
+                        try {
+                            notifyOthers(policyId, POLICY_NOTIFICATION);
+                        } catch (Exception e) {
+                            PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                                    CAUGHTEXCEPTIONONNOTIFY + policyId + "," + POLICY_NOTIFICATION + ")");
                         }
                     }
                 }
-                if(groupId >= 0){
-                    //we don't want commit to fail just because this does
-                    if(newGroupId != null){
-                        try{
-                            notifyOthers(groupId,GROUP_NOTIFICATION,newGroupId);
-                        } catch(Exception e){
-                            PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception on notifyOthers("+groupId+","+GROUP_NOTIFICATION+","+newGroupId+")");
+                if (groupId >= 0) {
+                    // we don't want commit to fail just because this does
+                    if (newGroupId != null) {
+                        try {
+                            notifyOthers(groupId, GROUP_NOTIFICATION, newGroupId);
+                        } catch (Exception e) {
+                            PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                                    CAUGHTEXCEPTIONONNOTIFY + groupId + "," + GROUP_NOTIFICATION + ","
+                                            + newGroupId + ")");
                         }
                     } else {
-                        try{
-                            notifyOthers(groupId,GROUP_NOTIFICATION);
-                        } catch(Exception e){
-                            PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception on notifyOthers("+groupId+","+GROUP_NOTIFICATION+")");
+                        try {
+                            notifyOthers(groupId, GROUP_NOTIFICATION);
+                        } catch (Exception e) {
+                            PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                                    CAUGHTEXCEPTIONONNOTIFY + groupId + "," + GROUP_NOTIFICATION + ")");
                         }
                     }
                 }
-                if(pdpId >= 0){
-                    //we don't want commit to fail just because this does
-                    try{
-                        notifyOthers(pdpId,PDP_NOTIFICATION);
-                    } catch(Exception e){
-                        PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception on notifyOthers("+pdpId+","+PDP_NOTIFICATION+")");
+                if (pdpId >= 0) {
+                    // we don't want commit to fail just because this does
+                    try {
+                        notifyOthers(pdpId, PDP_NOTIFICATION);
+                    } catch (Exception e) {
+                        PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                                CAUGHTEXCEPTIONONNOTIFY + pdpId + "," + PDP_NOTIFICATION + ")");
                     }
                 }
             }
-            if(transactionTimer != null){
+            if (transactionTimer != null) {
                 transactionTimer.interrupt();
             }
         }
@@ -1538,201 +1612,222 @@ public class PolicyDBDao {
         @Override
         public void rollbackTransaction() {
             logger.debug("rollbackTransaction() as rollbackTransaction() called");
-            synchronized(emLock){
-                if(isTransactionOpen()){
+            synchronized (emLock) {
+                if (isTransactionOpen()) {
 
-                    try{
+                    try {
                         em.getTransaction().rollback();
-                    } catch(Exception e){
-                        PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Could not rollback transaction");
+                    } catch (Exception e) {
+                        PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                                "Could not rollback transaction");
                     }
-                    try{
+                    try {
                         em.close();
-                    }catch(Exception e){
-                        PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Could not close EntityManager");
+                    } catch (Exception e) {
+                        PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                                "Could not close EntityManager");
                     }
 
                 } else {
-                    try{
+                    try {
                         em.close();
-                    }catch(Exception e){
+                    } catch (Exception e) {
                         logger.warn("Could not close already closed transaction", e);
                     }
                 }
 
             }
-            if(transactionTimer != null){
+            if (transactionTimer != null) {
                 transactionTimer.interrupt();
             }
         }
 
-        private void createPolicy(PolicyRestAdapter policy, String username, String policyScope, String inputPolicyName, String policyDataString) {
+        private void createPolicy(PolicyRestAdapter policy, String username, String policyScope, String inputPolicyName,
+                String policyDataString) {
             String policyName = inputPolicyName;
-            logger.debug("createPolicy(PolicyRestAdapter policy, String username, String policyScope, String policyName, String policyDataString) as createPolicy("+policy+", "+username+", "+policyScope+", "+policyName+", "+policyDataString+") called");
-            synchronized(emLock){
+            logger.debug(
+                    "createPolicy(PolicyRestAdapter policy, String username, String policyScope, String policyName, "
+                            + "String policyDataString) as createPolicy(" + policy + ", " + username + ", "
+                            + policyScope + ", " + policyName + ", " + policyDataString + ") called");
+            synchronized (emLock) {
                 checkBeforeOperationRun();
                 String configName = policyName;
-                if(policyName.contains("Config_")){
+                if (policyName.contains("Config_")) {
                     policyName = policyName.replace(".Config_", ":Config_");
-                }else if(policyName.contains("Action_")){
+                } else if (policyName.contains("Action_")) {
                     policyName = policyName.replace(".Action_", ":Action_");
-                }else if(policyName.contains("Decision_")){
+                } else if (policyName.contains("Decision_")) {
                     policyName = policyName.replace(".Decision_", ":Decision_");
                 }
                 policyName = policyName.split(":")[1];
-                Query createPolicyQuery = em.createQuery("SELECT p FROM PolicyEntity p WHERE p.scope=:scope AND p.policyName=:policyName");
+                Query createPolicyQuery = em
+                        .createQuery("SELECT p FROM PolicyEntity p WHERE p.scope=:scope AND p.policyName=:policyName");
                 createPolicyQuery.setParameter(scope, policyScope);
                 createPolicyQuery.setParameter("policyName", policyName);
                 List<?> createPolicyQueryList = createPolicyQuery.getResultList();
                 PolicyEntity newPolicyEntity;
                 boolean update;
-                if(createPolicyQueryList.isEmpty()){
+                if (createPolicyQueryList.isEmpty()) {
                     newPolicyEntity = new PolicyEntity();
                     update = false;
-                } else if(createPolicyQueryList.size() > 1){
-                    PolicyLogger.error("Somehow, more than one policy with the same scope, name, and deleted status were found in the database");
-                    throw new PersistenceException("Somehow, more than one policy with the same scope, name, and deleted status were found in the database");
+                } else if (createPolicyQueryList.size() > 1) {
+                    PolicyLogger
+                            .error("Somehow, more than one policy with the same scope, name, and deleted status were "
+                                    + "found in the database");
+                    throw new PersistenceException(
+                            "Somehow, more than one policy with the same scope, name, and deleted status were found "
+                                    + "in the database");
                 } else {
-                    newPolicyEntity = (PolicyEntity)createPolicyQueryList.get(0);
+                    newPolicyEntity = (PolicyEntity) createPolicyQueryList.get(0);
                     update = true;
                 }
 
                 ActionBodyEntity newActionBodyEntity = null;
-                if(policy.getPolicyType().equals(action)){
+                if (policy.getPolicyType().equals(action)) {
                     boolean abupdate = false;
-                    if(newPolicyEntity.getActionBodyEntity() == null){
+                    if (newPolicyEntity.getActionBodyEntity() == null) {
                         newActionBodyEntity = new ActionBodyEntity();
-                    }else{
-                        newActionBodyEntity = em.find(ActionBodyEntity.class, newPolicyEntity.getActionBodyEntity().getActionBodyId());
+                    } else {
+                        newActionBodyEntity = em.find(ActionBodyEntity.class,
+                                newPolicyEntity.getActionBodyEntity().getActionBodyId());
                         abupdate = true;
                     }
 
-                    if(newActionBodyEntity != null){
-                        if(!abupdate){
+                    if (newActionBodyEntity != null) {
+                        if (!abupdate) {
                             em.persist(newActionBodyEntity);
                         }
-                        //build the file path
-                        //trim the .xml off the end
+                        // build the file path
+                        // trim the .xml off the end
                         String policyNameClean = FilenameUtils.removeExtension(configName);
-                        String actionBodyName =  policyNameClean + ".json";
+                        String actionBodyName = policyNameClean + ".json";
 
-                        //get the action body
+                        // get the action body
                         String actionBodyString = policy.getActionBody();
-                        if(actionBodyString == null){
+                        if (actionBodyString == null) {
                             actionBodyString = "{}";
                         }
                         newActionBodyEntity.setActionBody(actionBodyString);
                         newActionBodyEntity.setActionBodyName(actionBodyName);
                         newActionBodyEntity.setModifiedBy("PolicyDBDao.createPolicy()");
                         newActionBodyEntity.setDeleted(false);
-                        if(!abupdate){
+                        if (!abupdate) {
                             newActionBodyEntity.setCreatedBy("PolicyDBDao.createPolicy()");
                         }
-                        if(logger.isDebugEnabled()){
-                            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 (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
+                        // 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
+                    } 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);
+                                + "actionBody, but it could not be found in the DB for update." + "\n  policyScope = "
+                                + policyScope + "\n  policyName = " + policyName + "\n\n";
+                        PolicyLogger
+                                .error("PolicyDBDao.createPolicy - Incoming Action policy had an actionBody, but it "
+                                        + "could not be found in the DB for update: policyName = " + policyName);
                         throw new IllegalArgumentException(msg);
                     }
                 }
 
                 ConfigurationDataEntity newConfigurationDataEntity;
-                if(policy.getPolicyType().equals(config)){
+                if (policy.getPolicyType().equals(config)) {
                     boolean configUpdate;
-                    if(newPolicyEntity.getConfigurationData() == null){
+                    if (newPolicyEntity.getConfigurationData() == null) {
                         newConfigurationDataEntity = new ConfigurationDataEntity();
                         configUpdate = false;
                     } else {
-                        newConfigurationDataEntity = em.find(ConfigurationDataEntity.class, newPolicyEntity.getConfigurationData().getConfigurationDataId());
+                        newConfigurationDataEntity = em.find(ConfigurationDataEntity.class,
+                                newPolicyEntity.getConfigurationData().getConfigurationDataId());
                         configUpdate = true;
                     }
 
-                    if(newConfigurationDataEntity != null){
-                        if(!configUpdate){
+                    if (newConfigurationDataEntity != null) {
+                        if (!configUpdate) {
                             em.persist(newConfigurationDataEntity);
                         }
-                        if(!stringEquals(newConfigurationDataEntity.getConfigurationName(),getConfigFile(configName,policy))){
-                            newConfigurationDataEntity.setConfigurationName(getConfigFile(configName,policy));
+                        if (!stringEquals(newConfigurationDataEntity.getConfigurationName(),
+                                getConfigFile(configName, policy))) {
+                            newConfigurationDataEntity.setConfigurationName(getConfigFile(configName, policy));
                         }
-                        if(newConfigurationDataEntity.getConfigType() == null || !newConfigurationDataEntity.getConfigType().equals(policy.getConfigType())){
+                        if (newConfigurationDataEntity.getConfigType() == null
+                                || !newConfigurationDataEntity.getConfigType().equals(policy.getConfigType())) {
                             newConfigurationDataEntity.setConfigType(policy.getConfigType());
                         }
-                        if(!configUpdate){
+                        if (!configUpdate) {
                             newConfigurationDataEntity.setCreatedBy(username);
                         }
-                        if(newConfigurationDataEntity.getModifiedBy() == null || !newConfigurationDataEntity.getModifiedBy().equals(username)){
+                        if (newConfigurationDataEntity.getModifiedBy() == null
+                                || !newConfigurationDataEntity.getModifiedBy().equals(username)) {
                             newConfigurationDataEntity.setModifiedBy(username);
                         }
-                        if(newConfigurationDataEntity.getDescription() == null || !newConfigurationDataEntity.getDescription().equals("")){
+                        if (newConfigurationDataEntity.getDescription() == null
+                                || !"".equals(newConfigurationDataEntity.getDescription())) {
                             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()){
+                        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{
+                            } else {
                                 newConfigurationDataEntity.setConfigBody(policy.getConfigBodyData());
                             }
                         }
-                        if(newConfigurationDataEntity.isDeleted()){
+                        if (newConfigurationDataEntity.isDeleted()) {
                             newConfigurationDataEntity.setDeleted(false);
                         }
 
                         em.flush();
-                    }else{
-                        //We have a configurationData body in the policy but we found no configurationData body in the DB
+                    } else {
+                        // We have a configurationData body in the policy but we found no configurationData body in
+                        // the DB
                         String msg = "\n\nPolicyDBDao.createPolicy - Incoming Config policy had a "
                                 + "configurationData body, but it could not be found in the DB for update."
-                                + "\n  policyScope = " + policyScope
-                                + "\n  policyName = " + policyName + "\n\n";
-                        PolicyLogger.error("PolicyDBDao.createPolicy - Incoming Config policy had a configurationData body, but it could not be found in the DB for update: policyName = " + policyName);
+                                + "\n  policyScope = " + policyScope + "\n  policyName = " + policyName + "\n\n";
+                        PolicyLogger.error("PolicyDBDao.createPolicy - Incoming Config policy had a configurationData "
+                                + "body, but it could not be found in the DB for update: policyName = " + policyName);
                         throw new IllegalArgumentException(msg);
                     }
 
                 } else {
                     newConfigurationDataEntity = null;
                 }
-                if(!update){
+                if (!update) {
                     em.persist(newPolicyEntity);
                 }
 
                 policyId = newPolicyEntity.getPolicyId();
 
-                if(!stringEquals(newPolicyEntity.getPolicyName(),policyName)){
+                if (!stringEquals(newPolicyEntity.getPolicyName(), policyName)) {
                     newPolicyEntity.setPolicyName(policyName);
                 }
-                if(!stringEquals(newPolicyEntity.getCreatedBy(),username)){
+                if (!stringEquals(newPolicyEntity.getCreatedBy(), username)) {
                     newPolicyEntity.setCreatedBy(username);
                 }
-                if(!stringEquals(newPolicyEntity.getDescription(),policy.getPolicyDescription())){
+                if (!stringEquals(newPolicyEntity.getDescription(), policy.getPolicyDescription())) {
                     newPolicyEntity.setDescription(policy.getPolicyDescription());
                 }
-                if(!stringEquals(newPolicyEntity.getModifiedBy(),username)){
+                if (!stringEquals(newPolicyEntity.getModifiedBy(), username)) {
                     newPolicyEntity.setModifiedBy(username);
                 }
-                if(!stringEquals(newPolicyEntity.getPolicyData(),policyDataString)){
+                if (!stringEquals(newPolicyEntity.getPolicyData(), policyDataString)) {
                     newPolicyEntity.setPolicyData(policyDataString);
                 }
-                if(!stringEquals(newPolicyEntity.getScope(),policyScope)){
+                if (!stringEquals(newPolicyEntity.getScope(), policyScope)) {
                     newPolicyEntity.setScope(policyScope);
                 }
-                if(newPolicyEntity.isDeleted() == true){
+                if (newPolicyEntity.isDeleted() == true) {
                     newPolicyEntity.setDeleted(false);
                 }
                 newPolicyEntity.setConfigurationData(newConfigurationDataEntity);
@@ -1741,120 +1836,128 @@ public class PolicyDBDao {
                 em.flush();
                 this.policyId = newPolicyEntity.getPolicyId();
             }
-            return;
         }
 
         @SuppressWarnings("unused")
-        public PolicyEntity getPolicy(int policyID){
-            return getPolicy(policyID,null,null);
+        public PolicyEntity getPolicy(int policyID) {
+            return getPolicy(policyID, null, null);
         }
-        public PolicyEntity getPolicy(String policyName,String scope){
-            return getPolicy(-1,policyName,scope);
+
+        public PolicyEntity getPolicy(String policyName, String scope) {
+            return getPolicy(-1, policyName, scope);
         }
-        private PolicyEntity getPolicy(int policyID, String policyName,String scope){
-            logger.debug("getPolicy(int policyId, String policyName) as getPolicy("+policyID+","+policyName+") called");
-            if(policyID < 0 && isNullOrEmpty(policyName,scope)){
-                throw new IllegalArgumentException("policyID must be at least 0 or policyName must be not null or blank");
+
+        private PolicyEntity getPolicy(int policyID, String policyName, String scope) {
+            logger.debug("getPolicy(int policyId, String policyName) as getPolicy(" + policyID + "," + policyName
+                    + ") called");
+            if (policyID < 0 && isNullOrEmpty(policyName, scope)) {
+                throw new IllegalArgumentException(
+                        "policyID must be at least 0 or policyName must be not null or blank");
             }
 
-            synchronized(emLock){
+            synchronized (emLock) {
                 checkBeforeOperationRun(true);
-                //check if group exists
+                // check if group exists
                 String policyId;
                 Query policyQuery;
-                if(!isNullOrEmpty(policyName,scope)){
+                if (!isNullOrEmpty(policyName, scope)) {
                     policyId = policyName;
-                    policyQuery = em.createQuery("SELECT p FROM PolicyEntity p WHERE p.policyName=:name AND p.scope=:scope");
+                    policyQuery =
+                            em.createQuery("SELECT p FROM PolicyEntity p WHERE p.policyName=:name AND p.scope=:scope");
                     policyQuery.setParameter("name", policyId);
                     policyQuery.setParameter("scope", scope);
-                } else{
+                } else {
                     policyId = String.valueOf(policyID);
                     policyQuery = em.createNamedQuery("PolicyEntity.FindById");
                     policyQuery.setParameter("id", policyId);
                 }
                 List<?> policyQueryList;
-                try{
+                try {
                     policyQueryList = policyQuery.getResultList();
-                }catch(Exception e){
-                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception trying to get policy with policyQuery.getResultList()");
-                    throw new PersistenceException("Query failed trying to get policy "+policyId);
+                } catch (Exception e) {
+                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                            "Caught Exception trying to get policy with policyQuery.getResultList()");
+                    throw new PersistenceException("Query failed trying to get policy " + policyId);
                 }
-                if(policyQueryList.isEmpty()){
-                    PolicyLogger.error("Policy does not exist with id "+policyId);
-                    throw new PersistenceException("Group policy is being added to does not exist with id "+policyId);
-                } else if(policyQueryList.size() > 1){
-                    PolicyLogger.error(duplicatePolicyId+policyId+foundInDB);
-                    throw new PersistenceException(duplicatePolicyId+policyId+foundInDB);
+                if (policyQueryList.isEmpty()) {
+                    PolicyLogger.error("Policy does not exist with id " + policyId);
+                    throw new PersistenceException("Group policy is being added to does not exist with id " + policyId);
+                } else if (policyQueryList.size() > 1) {
+                    PolicyLogger.error(duplicatePolicyId + policyId + foundInDB);
+                    throw new PersistenceException(duplicatePolicyId + policyId + foundInDB);
                 }
-                return (PolicyEntity)policyQueryList.get(0);
+                return (PolicyEntity) policyQueryList.get(0);
             }
         }
 
         @Override
-        public GroupEntity getGroup(long groupKey){
-            logger.debug("getGroup(int groupKey) as getGroup("+groupKey+") called");
-            if(groupKey < 0){
+        public GroupEntity getGroup(long groupKey) {
+            logger.debug("getGroup(int groupKey) as getGroup(" + groupKey + ") called");
+            if (groupKey < 0) {
                 throw new IllegalArgumentException("groupKey must be at least 0");
             }
-            synchronized(emLock){
+            synchronized (emLock) {
                 checkBeforeOperationRun(true);
-                //check if group exists
+                // check if group exists
                 Query groupQuery = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupKey=:groupKey");
                 groupQuery.setParameter("groupKey", groupKey);
                 List<?> groupQueryList;
-                try{
+                try {
                     groupQueryList = groupQuery.getResultList();
-                }catch(Exception e){
-                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception trying to get group with groupQuery.getResultList()");
-                    throw new PersistenceException(queryFailedToGetGroup+groupKey);
+                } catch (Exception e) {
+                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                            "Caught Exception trying to get group with groupQuery.getResultList()");
+                    throw new PersistenceException(queryFailedToGetGroup + groupKey);
                 }
-                if(groupQueryList.isEmpty()){
-                    PolicyLogger.error("Group does not exist with groupKey "+groupKey);
-                    throw new PersistenceException("Group does not exist with groupKey "+groupKey);
-                } else if(groupQueryList.size() > 1){
-                    PolicyLogger.error("Somehow, more than one group with the groupKey "+groupKey+foundInDB);
-                    throw new PersistenceException("Somehow, more than one group with the groupKey "+groupKey+foundInDB);
+                if (groupQueryList.isEmpty()) {
+                    PolicyLogger.error("Group does not exist with groupKey " + groupKey);
+                    throw new PersistenceException("Group does not exist with groupKey " + groupKey);
+                } else if (groupQueryList.size() > 1) {
+                    PolicyLogger.error("Somehow, more than one group with the groupKey " + groupKey + foundInDB);
+                    throw new PersistenceException(
+                            "Somehow, more than one group with the groupKey " + groupKey + foundInDB);
                 }
-                return (GroupEntity)groupQueryList.get(0);
+                return (GroupEntity) groupQueryList.get(0);
             }
         }
 
         @Override
-        public GroupEntity getGroup(String groupId){
-            logger.debug("getGroup(String groupId) as getGroup("+groupId+") called");
-            if(isNullOrEmpty(groupId)){
+        public GroupEntity getGroup(String groupId) {
+            logger.debug("getGroup(String groupId) as getGroup(" + groupId + ") called");
+            if (isNullOrEmpty(groupId)) {
                 throw new IllegalArgumentException("groupId must not be null or empty");
             }
-            synchronized(emLock){
+            synchronized (emLock) {
                 checkBeforeOperationRun(true);
-                //check if group exists
+                // check if group exists
                 Query groupQuery = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId");
                 groupQuery.setParameter(groupIdVar, groupId);
                 List<?> groupQueryList;
-                try{
+                try {
                     groupQueryList = groupQuery.getResultList();
-                }catch(Exception e){
-                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception trying to get group with groupQuery.getResultList()");
-                    throw new PersistenceException(queryFailedToGetGroup+groupId);
+                } catch (Exception e) {
+                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                            "Caught Exception trying to get group with groupQuery.getResultList()");
+                    throw new PersistenceException(queryFailedToGetGroup + groupId);
                 }
-                if(groupQueryList.isEmpty()){
-                    PolicyLogger.error("Group does not exist with id "+groupId);
-                    throw new PersistenceException("Group does not exist with id "+groupId);
-                } else if(groupQueryList.size() > 1){
-                    PolicyLogger.error(duplicateGroupId +groupId+foundInDB);
-                    throw new PersistenceException(duplicateGroupId+groupId+foundInDB);
+                if (groupQueryList.isEmpty()) {
+                    PolicyLogger.error("Group does not exist with id " + groupId);
+                    throw new PersistenceException("Group does not exist with id " + groupId);
+                } else if (groupQueryList.size() > 1) {
+                    PolicyLogger.error(duplicateGroupId + groupId + foundInDB);
+                    throw new PersistenceException(duplicateGroupId + groupId + foundInDB);
                 }
-                return (GroupEntity)groupQueryList.get(0);
+                return (GroupEntity) groupQueryList.get(0);
             }
         }
 
         @Override
-        public List<?> getPdpsInGroup(long groupKey){
-            logger.debug("getPdpsInGroup(int groupKey) as getPdpsInGroup("+groupKey+") called");
-            if(groupKey < 0){
+        public List<?> getPdpsInGroup(long groupKey) {
+            logger.debug("getPdpsInGroup(int groupKey) as getPdpsInGroup(" + groupKey + ") called");
+            if (groupKey < 0) {
                 throw new IllegalArgumentException("groupId must not be < 0");
             }
-            synchronized(emLock){
+            synchronized (emLock) {
                 checkBeforeOperationRun(true);
                 Query pdpsQuery = em.createQuery("SELECT p FROM PdpEntity p WHERE p.groupEntity=:group");
                 pdpsQuery.setParameter("group", getGroup(groupKey));
@@ -1863,103 +1966,114 @@ public class PolicyDBDao {
         }
 
         @Override
-        public PdpEntity getPdp(long pdpKey){
-            logger.debug("getPdp(int pdpKey) as getPdp("+pdpKey+") called");
-            if(pdpKey < 0){
+        public PdpEntity getPdp(long pdpKey) {
+            logger.debug("getPdp(int pdpKey) as getPdp(" + pdpKey + ") called");
+            if (pdpKey < 0) {
                 throw new IllegalArgumentException("pdpKey must be at least 0");
             }
-            synchronized(emLock){
+            synchronized (emLock) {
                 checkBeforeOperationRun(true);
-                //check if group exists
+                // check if group exists
                 Query pdpQuery = em.createQuery("SELECT p FROM PdpEntity p WHERE p.pdpKey=:pdpKey");
                 pdpQuery.setParameter("pdpKey", pdpKey);
                 List<?> pdpQueryList;
-                try{
+                try {
                     pdpQueryList = pdpQuery.getResultList();
-                }catch(Exception e){
-                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception trying to get pdp with pdpQuery.getResultList()");
-                    throw new PersistenceException("Query failed trying to get pdp "+pdpKey);
+                } catch (Exception e) {
+                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                            "Caught Exception trying to get pdp with pdpQuery.getResultList()");
+                    throw new PersistenceException("Query failed trying to get pdp " + pdpKey);
                 }
-                if(pdpQueryList.isEmpty()){
-                    PolicyLogger.error("Pdp does not exist with pdpKey "+pdpKey);
-                    throw new PersistenceException("Pdp does not exist with pdpKey "+pdpKey);
-                } else if(pdpQueryList.size() > 1){
-                    PolicyLogger.error("Somehow, more than one pdp with the pdpKey "+pdpKey+foundInDB);
-                    throw new PersistenceException("Somehow, more than one pdp with the pdpKey "+pdpKey+foundInDB);
+                if (pdpQueryList.isEmpty()) {
+                    PolicyLogger.error("Pdp does not exist with pdpKey " + pdpKey);
+                    throw new PersistenceException("Pdp does not exist with pdpKey " + pdpKey);
+                } else if (pdpQueryList.size() > 1) {
+                    PolicyLogger.error("Somehow, more than one pdp with the pdpKey " + pdpKey + foundInDB);
+                    throw new PersistenceException("Somehow, more than one pdp with the pdpKey " + pdpKey + foundInDB);
                 }
-                return (PdpEntity)pdpQueryList.get(0);
+                return (PdpEntity) pdpQueryList.get(0);
             }
         }
 
         @Override
         public boolean isTransactionOpen() {
             logger.debug("isTransactionOpen() as isTransactionOpen() called");
-            synchronized(emLock){
+            synchronized (emLock) {
                 return em.isOpen() && em.getTransaction().isActive();
             }
         }
 
-        private String processConfigPath(String inputConfigPath){
+        private String processConfigPath(String inputConfigPath) {
             String configPath = inputConfigPath;
             String webappsPath = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_WEBAPPS);
-            if(webappsPath == null){
+            if (webappsPath == null) {
                 logger.error("Webapps property does not exist");
                 throw new IllegalArgumentException("Webapps property does not exist");
             }
             configPath = configPath.replace("$URL", webappsPath);
-            //make sure the correct slashes are in
-            try{
+            // make sure the correct slashes are in
+            try {
                 configPath = Paths.get(configPath).toString();
-            } catch(InvalidPathException e){
-                logger.error("Invalid config path: "+configPath, e);
-                throw new IllegalArgumentException("Invalid config path: "+configPath);
+            } catch (InvalidPathException e) {
+                logger.error("Invalid config path: " + configPath, e);
+                throw new IllegalArgumentException("Invalid config path: " + configPath);
             }
             return configPath;
         }
 
-        private String readConfigFile(String configPath){
+        private String readConfigFile(String configPath) {
             String configDataString = null;
-            try(InputStream configContentStream = new FileInputStream(configPath);) {
+            try (InputStream configContentStream = new FileInputStream(configPath);) {
                 configDataString = IOUtils.toString(configContentStream);
             } catch (FileNotFoundException e) {
-                logger.error("Caught FileNotFoundException on new FileInputStream("+configPath+")",e);
+                logger.error("Caught FileNotFoundException on new FileInputStream(" + configPath + ")", e);
                 throw new IllegalArgumentException("The config file path does not exist");
-            } catch(IOException e2){
-                logger.error("Caught IOException on newIOUtils.toString(configContentStream)",e2);
+            } catch (IOException e2) {
+                logger.error("Caught IOException on newIOUtils.toString(configContentStream)", e2);
                 throw new IllegalArgumentException("The config file path cannot be read");
             }
-            if(configDataString == null){
+            if (configDataString == null) {
                 throw new IllegalArgumentException("The config file path cannot be read");
             }
             return configDataString;
         }
 
         @Override
-        public void createPolicy(Policy policy, String username){
+        public void createPolicy(Policy policy, String username) {
 
-            try{
-                logger.debug("createPolicy(PolicyRestAdapter policy, String username) as createPolicy("+policy+","+username+") called");
+            try {
+                logger.debug("createPolicy(PolicyRestAdapter policy, String username) as createPolicy(" + policy + ","
+                        + username + ") called");
                 String policyScope = policy.policyAdapter.getDomainDir().replace(File.separator, ".");
-                //Does not need to be XACMLPolicyWriterWithPapNotify since it is already in the PAP
-                //and this transaction is intercepted up stream.
+                // Does not need to be XACMLPolicyWriterWithPapNotify since it is already in the PAP
+                // and this transaction is intercepted up stream.
 
-                String policyDataString = getPolicyDataString((PolicyType)policy.getCorrectPolicyDataObject());
-                if(isJunit){
-                    //Using parentPath object to set policy data.
+                String policyDataString = getPolicyDataString(policy);
+                if (isJunit) {
+                    // Using parentPath object to set policy data.
                     policyDataString = policy.policyAdapter.getParentPath();
                 }
                 String configPath = "";
                 if (policy.policyAdapter.getPolicyType().equalsIgnoreCase(config)) {
-                    configPath = evaluateXPath("/Policy/Rule/AdviceExpressions/AdviceExpression[contains(@AdviceId,'ID')]/AttributeAssignmentExpression[@AttributeId='URLID']/AttributeValue/text()", policyDataString);
+                    configPath = evaluateXPath(
+                            "/Policy/Rule/AdviceExpressions/AdviceExpression[contains(@AdviceId,'ID')"
+                                    + "]/AttributeAssignmentExpression[@AttributeId='URLID']/AttributeValue/text()",
+                            policyDataString);
                 } else if (policy.policyAdapter.getPolicyType().equalsIgnoreCase(action)) {
-                    configPath = evaluateXPath("/Policy/Rule/ObligationExpressions/ObligationExpression[contains(@ObligationId, " +policy.policyAdapter.getActionAttribute()+ ")]/AttributeAssignmentExpression[@AttributeId='body']/AttributeValue/text()", policyDataString);
+                    configPath = evaluateXPath(
+                            "/Policy/Rule/ObligationExpressions/ObligationExpression[contains(@ObligationId, "
+                                    + policy.policyAdapter.getActionAttribute()
+                                    + ")]/AttributeAssignmentExpression[@AttributeId='body']/AttributeValue/text()",
+                            policyDataString);
                 }
 
                 String prefix = null;
                 if (policy.policyAdapter.getPolicyType().equalsIgnoreCase(config)) {
 
-                    prefix = configPath.substring(configPath.indexOf(policyScope+".")+policyScope.concat(".").length(), configPath.lastIndexOf(policy.policyAdapter.getPolicyName()));
-                    if(isNullOrEmpty(policy.policyAdapter.getConfigBodyData())){
+                    prefix = configPath.substring(
+                            configPath.indexOf(policyScope + ".") + policyScope.concat(".").length(),
+                            configPath.lastIndexOf(policy.policyAdapter.getPolicyName()));
+                    if (isNullOrEmpty(policy.policyAdapter.getConfigBodyData())) {
                         policy.policyAdapter.setConfigBodyData(getConfigData(configPath));
                     }
                 } else if (action.equalsIgnoreCase(policy.policyAdapter.getPolicyType())) {
@@ -1968,78 +2082,88 @@ public class PolicyDBDao {
                     prefix = "Decision_";
                 }
 
-                if(!(policy.policyAdapter.getData() instanceof PolicyType)){
-                    PolicyLogger.error("The data field is not an instance of PolicyType");
-                    throw new IllegalArgumentException("The data field is not an instance of PolicyType");
+                if (!(policy.policyAdapter.getData() instanceof PolicyType)
+                        && !(policy.policyAdapter.getData() instanceof PolicySetType)) {
+                    PolicyLogger.error("The data field is not an instance of PolicyType or PolicySetType");
+                    throw new IllegalArgumentException(
+                            "The data field is not an instance of PolicyType or PolicySetType");
                 }
-                String finalName = policyScope + "." + prefix+policy.policyAdapter.getPolicyName()+"."+((PolicyType)policy.policyAdapter.getData()).getVersion()+".xml";
-                if(policy.policyAdapter.getConfigType() == null || "".equals(policy.policyAdapter.getConfigType())){
-                    //get the config file extension
+                String finalName = policyScope + "." + prefix + policy.policyAdapter.getPolicyName() + "."
+                        + policy.policyAdapter.getHighestVersion() + ".xml";
+                if (policy.policyAdapter.getConfigType() == null || "".equals(policy.policyAdapter.getConfigType())) {
+                    // get the config file extension
                     String ext = "";
                     if (configPath != null && !"".equalsIgnoreCase(configPath)) {
                         ext = configPath.substring(configPath.lastIndexOf('.'), configPath.length());;
                     }
 
-                    if(ext.contains("txt")){
+                    if (ext.contains("txt")) {
                         policy.policyAdapter.setConfigType(OTHER_CONFIG);
-                    } else if(ext.contains("json")){
+                    } else if (ext.contains("json")) {
                         policy.policyAdapter.setConfigType(JSON_CONFIG);
-                    } else if(ext.contains("xml")){
+                    } else if (ext.contains("xml")) {
                         policy.policyAdapter.setConfigType(XML_CONFIG);
-                    } else if(ext.contains("properties")){
+                    } else if (ext.contains("properties")) {
                         policy.policyAdapter.setConfigType(PROPERTIES_CONFIG);
                     } else {
-                        if (policy.policyAdapter.getPolicyType().equalsIgnoreCase(action)){
+                        if (policy.policyAdapter.getPolicyType().equalsIgnoreCase(action)) {
                             policy.policyAdapter.setConfigType(JSON_CONFIG);
                         }
                     }
                 }
-                createPolicy(policy.policyAdapter, username, policyScope,finalName,policyDataString);
+                createPolicy(policy.policyAdapter, username, policyScope, finalName, policyDataString);
             } catch (Exception e) {
-                logger.error("Could not create policy for "+policy,e);
+                logger.error("Could not create policy for " + policy, e);
                 throw e;
             }
         }
 
         private String getConfigData(String configPath) {
             String configData = "";
-            try{
+            try {
                 configData = getConfigPath(configPath);
-            }catch(Exception e){
-                logger.error("Could not read config body data for "+configPath,e);
+            } catch (Exception e) {
+                logger.error("Could not read config body data for " + configPath, e);
             }
             return configData;
         }
 
         private String getConfigPath(String configPath) {
-            try{
+            try {
                 String newConfigPath = processConfigPath(configPath);
                 return readConfigFile(newConfigPath);
-            } catch(IllegalArgumentException e2){
-                logger.error("Could not process config path: "+configPath,e2);
+            } catch (IllegalArgumentException e2) {
+                logger.error("Could not process config path: " + configPath, e2);
             }
             return "";
         }
 
-        private String getPolicyDataString(PolicyType policyType) {
-            try (InputStream policyXmlStream = XACMLPolicyWriter.getXmlAsInputStream(policyType)) {
-                return IOUtils.toString(policyXmlStream, StandardCharsets.UTF_8);
+
+        /**
+         * @param policy input policy Object.
+         * @return read the stream and return policy xml data.
+         */
+        private String getPolicyDataString(Policy policy) {
+            try (InputStream policyXmlStream =
+                    XACMLPolicyWriter.getXmlAsInputStream(policy.getCorrectPolicyDataObject())) {
+                return IOUtils.toString(policyXmlStream);
             } catch (IOException e) {
-                PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught IOException on IOUtils.toString(policyXmlStream)");
-                throw new IllegalArgumentException("Cannot parse the policy xml from the PolicyRestAdapter.", e);
+                PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                        "Caught IOException on reading Policy Data.");
+                throw new IllegalArgumentException("Cannot parse the policy xml from the PolicyRestAdapter.");
             }
         }
 
         @Override
-        public void close(){
-            synchronized(emLock){
-                if(em.isOpen()){
-                    if(em.getTransaction().isActive()){
+        public void close() {
+            synchronized (emLock) {
+                if (em.isOpen()) {
+                    if (em.getTransaction().isActive()) {
                         em.getTransaction().rollback();
                     }
                     em.close();
                 }
-                if(transactionTimer != null){
+                if (transactionTimer != null) {
                     transactionTimer.interrupt();
                 }
             }
@@ -2048,29 +2172,31 @@ public class PolicyDBDao {
         @Override
         public void createGroup(String groupId, String groupName, String inputGroupDescription, String username) {
             String groupDescription = inputGroupDescription;
-            logger.debug("deletePolicy(String policyToDeletes) as createGroup("+groupId+", "+groupName+", "+groupDescription+") called");
-            if(isNullOrEmpty(groupId, groupName, username)){
+            logger.debug("deletePolicy(String policyToDeletes) as createGroup(" + groupId + ", " + groupName + ", "
+                    + groupDescription + ") called");
+            if (isNullOrEmpty(groupId, groupName, username)) {
                 throw new IllegalArgumentException("groupId, groupName, and username must not be null or empty");
             }
-            if(groupDescription == null){
+            if (groupDescription == null) {
                 groupDescription = "";
             }
 
-            synchronized(emLock){
+            synchronized (emLock) {
                 checkBeforeOperationRun();
                 Query checkGroupQuery = em.createQuery(groupEntitySelectQuery);
                 checkGroupQuery.setParameter(groupIdVar, groupId);
                 checkGroupQuery.setParameter(deletedVar, false);
                 List<?> checkGroupQueryList;
-                try{
+                try {
                     checkGroupQueryList = checkGroupQuery.getResultList();
-                } catch(Exception e){
-                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception on checkGroupQuery.getResultList()");
+                } catch (Exception e) {
+                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                            "Caught Exception on checkGroupQuery.getResultList()");
                     throw new PersistenceException(queryFailedToCheckExisting);
                 }
-                if(!checkGroupQueryList.isEmpty()){
-                    PolicyLogger.error("The group being added already exists with id "+groupId);
-                    throw new PersistenceException("The group being added already exists with id "+groupId);
+                if (!checkGroupQueryList.isEmpty()) {
+                    PolicyLogger.error("The group being added already exists with id " + groupId);
+                    throw new PersistenceException("The group being added already exists with id " + groupId);
                 }
                 GroupEntity newGroup = new GroupEntity();
                 em.persist(newGroup);
@@ -2086,81 +2212,86 @@ public class PolicyDBDao {
         }
 
         @Override
-        public void updateGroup(OnapPDPGroup group, String username){
-            logger.info("PolicyDBDao: updateGroup(PDPGroup group) as updateGroup("+group+","+username+") called");
-            if(group == null){
+        public void updateGroup(OnapPDPGroup group, String username) {
+            logger.info(
+                    "PolicyDBDao: updateGroup(PDPGroup group) as updateGroup(" + group + "," + username + ") called");
+            if (group == null) {
                 throw new IllegalArgumentException("PDPGroup group must not be null");
             }
-            if(isNullOrEmpty(group.getId(), username)){
+            if (isNullOrEmpty(group.getId(), username)) {
                 throw new IllegalArgumentException("group.getId() and username must not be null or empty");
             }
 
-            synchronized(emLock){
+            synchronized (emLock) {
                 checkBeforeOperationRun();
                 Query getGroupQuery = em.createQuery(groupEntitySelectQuery);
                 getGroupQuery.setParameter(groupIdVar, group.getId());
                 getGroupQuery.setParameter(deletedVar, false);
                 List<?> getGroupQueryList;
-                try{
+                try {
                     getGroupQueryList = getGroupQuery.getResultList();
-                } catch(Exception e){
-                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception on getGroupQuery.getResultList()");
-                    throw new PersistenceException(queryFailedToGetGroup+group.getId()+" for editing");
-                }
-                if(getGroupQueryList.isEmpty()){
-                    PolicyLogger.error("The group cannot be found to update with id "+group.getId());
-                    throw new PersistenceException("The group cannot be found to update with id "+group.getId());
-                } else if(getGroupQueryList.size() > 1){
-                    PolicyLogger.error(duplicateGroupId+group.getId()+deletedStatusFound);
-                    throw new PersistenceException(duplicateGroupId+group.getId()+deletedStatusFound);
-                }
-                GroupEntity groupToUpdateInDB = (GroupEntity)getGroupQueryList.get(0);
-                if(!stringEquals(groupToUpdateInDB.getModifiedBy(), username)){
+                } catch (Exception e) {
+                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                            "Caught Exception on getGroupQuery.getResultList()");
+                    throw new PersistenceException(queryFailedToGetGroup + group.getId() + " for editing");
+                }
+                if (getGroupQueryList.isEmpty()) {
+                    PolicyLogger.error("The group cannot be found to update with id " + group.getId());
+                    throw new PersistenceException("The group cannot be found to update with id " + group.getId());
+                } else if (getGroupQueryList.size() > 1) {
+                    PolicyLogger.error(duplicateGroupId + group.getId() + deletedStatusFound);
+                    throw new PersistenceException(duplicateGroupId + group.getId() + deletedStatusFound);
+                }
+                GroupEntity groupToUpdateInDB = (GroupEntity) getGroupQueryList.get(0);
+                if (!stringEquals(groupToUpdateInDB.getModifiedBy(), username)) {
                     groupToUpdateInDB.setModifiedBy(username);
                 }
-                if(group.getDescription() != null && !stringEquals(group.getDescription(),groupToUpdateInDB.getDescription())){
+                if (group.getDescription() != null
+                        && !stringEquals(group.getDescription(), groupToUpdateInDB.getDescription())) {
                     groupToUpdateInDB.setDescription(group.getDescription());
                 }
-                //let's find out what policies have been deleted
+                // 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, policyDBDaoVar, "We cannot get the group from the papEngine to delete policies");
+                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e1, policyDBDaoVar,
+                            "We cannot get the group from the papEngine to delete policies");
                 }
-                if(oldGroup == null){
+                if (oldGroup == null) {
                     PolicyLogger.error("We cannot get the group from the papEngine to delete policies");
                 } else {
                     Set<String> newPolicySet = new HashSet<>(group.getPolicies().size());
-                    //a multiple of n runtime is faster than n^2, so I am using a hashset to do the comparison
-                    for(PDPPolicy pol: group.getPolicies()){
+                    // 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())){
+                    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());
                             deletePolicyInScope(username, groupToUpdateInDB, pol, scopeAndName);
                         }
                     }
                 }
 
-                if(group.getName() != null && !stringEquals(group.getName(),groupToUpdateInDB.getgroupName())){
-                    //we need to check if the new id exists in the database
+                if (group.getName() != null && !stringEquals(group.getName(), groupToUpdateInDB.getgroupName())) {
+                    // we need to check if the new id exists in the database
                     String newGroupId = createNewPDPGroupId(group.getName());
                     Query checkGroupQuery = em.createQuery(groupEntitySelectQuery);
                     checkGroupQuery.setParameter(groupIdVar, newGroupId);
                     checkGroupQuery.setParameter(deletedVar, false);
                     List<?> checkGroupQueryList;
-                    try{
+                    try {
                         checkGroupQueryList = checkGroupQuery.getResultList();
-                    } catch(Exception e){
-                        PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception on checkGroupQuery.getResultList()");
+                    } catch (Exception e) {
+                        PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                                "Caught Exception on checkGroupQuery.getResultList()");
                         throw new PersistenceException(queryFailedToCheckExisting);
                     }
-                    if(!checkGroupQueryList.isEmpty()){
-                        PolicyLogger.error("The new group name already exists, group id "+newGroupId);
-                        throw new PersistenceException("The new group name already exists, group id "+newGroupId);
+                    if (!checkGroupQueryList.isEmpty()) {
+                        PolicyLogger.error("The new group name already exists, group id " + newGroupId);
+                        throw new PersistenceException("The new group name already exists, group id " + newGroupId);
                     }
                     groupToUpdateInDB.setGroupId(newGroupId);
                     groupToUpdateInDB.setGroupName(group.getName());
@@ -2171,13 +2302,14 @@ public class PolicyDBDao {
             }
         }
 
-        private void deletePolicyInScope(String username, GroupEntity groupToUpdateInDB, PDPPolicy pol, String[] scopeAndName) {
+        private void deletePolicyInScope(String username, GroupEntity groupToUpdateInDB, PDPPolicy pol,
+                String[] scopeAndName) {
             PolicyEntity policyToDelete;
             if (scopeAndName == null) {
                 return;
             }
-            try{
-                policyToDelete = getPolicy(scopeAndName[0],scopeAndName[1]);
+            try {
+                policyToDelete = getPolicy(scopeAndName[0], scopeAndName[1]);
                 if ("XACMLPapServlet.doDelete".equals(username)) {
                     Iterator<PolicyEntity> dbPolicyIt = groupToUpdateInDB.getPolicies().iterator();
                     String policyName = getPolicyNameAndVersionFromPolicyFileName(policyToDelete.getPolicyName())[0];
@@ -2185,50 +2317,58 @@ public class PolicyDBDao {
                     logger.info("PolicyDBDao: delete policy from GroupEntity");
                     deletePolicyFromGroupEntity(groupToUpdateInDB, policyToDelete, dbPolicyIt, policyName);
                 }
-            }catch(Exception e){
-                PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Could not get policy to remove: "+pol.getId());
-                throw new PersistenceException("Could not get policy to remove: "+pol.getId());
+            } catch (Exception e) {
+                PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                        "Could not get policy to remove: " + pol.getId());
+                throw new PersistenceException("Could not get policy to remove: " + pol.getId());
             }
         }
 
-        private void deletePolicyFromGroupEntity(GroupEntity groupToUpdateInDB, PolicyEntity policyToDelete, Iterator<PolicyEntity> dbPolicyIt, String policyName) {
-            try{
-                while(dbPolicyIt.hasNext()){
+        private void deletePolicyFromGroupEntity(GroupEntity groupToUpdateInDB, PolicyEntity policyToDelete,
+                Iterator<PolicyEntity> dbPolicyIt, String policyName) {
+            try {
+                while (dbPolicyIt.hasNext()) {
                     PolicyEntity dbpolicy = dbPolicyIt.next();
-                    if(policyToDelete.getScope().equals(dbpolicy.getScope()) &&
-                            getPolicyNameAndVersionFromPolicyFileName(dbpolicy.getPolicyName())[0].equals(policyName)) {
+                    if (policyToDelete.getScope().equals(dbpolicy.getScope())
+                            && getPolicyNameAndVersionFromPolicyFileName(dbpolicy.getPolicyName())[0]
+                                    .equals(policyName)) {
                         dbPolicyIt.remove();
 
-                        logger.info("PolicyDBDao: deleting policy from the existing group:\n "
-                                + "policyName is " + policyToDelete.getScope()+"."+policyToDelete.getPolicyName() + "\n"
-                                + "group is " + groupToUpdateInDB.getGroupId());
+                        logger.info("PolicyDBDao: deleting policy from the existing group:\n " + "policyName is "
+                                + policyToDelete.getScope() + "." + policyToDelete.getPolicyName() + "\n" + "group is "
+                                + groupToUpdateInDB.getGroupId());
                     }
                 }
-            }catch(Exception e){
+            } catch (Exception e) {
                 logger.debug(e);
-                PolicyLogger.error("Could not delete policy with name: "+ policyToDelete.getScope()+"."+policyToDelete.getPolicyName()+"\n ID: "+ policyToDelete.getPolicyId());
+                PolicyLogger.error("Could not delete policy with name: " + policyToDelete.getScope() + "."
+                        + policyToDelete.getPolicyName() + "\n ID: " + policyToDelete.getPolicyId());
             }
         }
 
         @Override
-        public void addPdpToGroup(String pdpID, String groupID, String pdpName, String pdpDescription, int pdpJmxPort, String username) {
-            logger.debug("addPdpToGroup(String pdpID, String groupID, String pdpName, String pdpDescription, int pdpJmxPort, String username) as addPdpToGroup("+pdpID+", "+groupID+", "+pdpName+", "+pdpDescription+", "+pdpJmxPort+", "+username+") called");
-            if(isNullOrEmpty(pdpID, groupID,pdpName,username)){
+        public void addPdpToGroup(String pdpID, String groupID, String pdpName, String pdpDescription, int pdpJmxPort,
+                String username) {
+            logger.debug("addPdpToGroup(String pdpID, String groupID, String pdpName, String pdpDescription, int "
+                    + "pdpJmxPort, String username) as addPdpToGroup(" + pdpID + ", " + groupID + ", " + pdpName + ", "
+                    + pdpDescription + ", " + pdpJmxPort + ", " + username + ") called");
+            if (isNullOrEmpty(pdpID, groupID, pdpName, username)) {
                 throw new IllegalArgumentException("pdpID, groupID, pdpName, and username must not be null or empty");
             }
-            synchronized(emLock){
+            synchronized (emLock) {
                 checkBeforeOperationRun();
                 Query checkGroupQuery = em.createQuery(groupEntitySelectQuery);
                 checkGroupQuery.setParameter(groupIdVar, groupID);
                 checkGroupQuery.setParameter(deletedVar, false);
                 List<?> checkGroupQueryList;
-                try{
+                try {
                     checkGroupQueryList = checkGroupQuery.getResultList();
-                } catch(Exception e){
-                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception trying to check for existing group on checkGroupQuery.getResultList()");
+                } catch (Exception e) {
+                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                            "Caught Exception trying to check for existing group on checkGroupQuery.getResultList()");
                     throw new PersistenceException(queryFailedToCheckExisting);
                 }
-                if(checkGroupQueryList.size() != 1){
+                if (checkGroupQueryList.size() != 1) {
                     PolicyLogger.error("The group does not exist");
                     throw new PersistenceException("The group does not exist");
                 }
@@ -2236,16 +2376,18 @@ public class PolicyDBDao {
                 checkDuplicateQuery.setParameter(pdpIdVariable, pdpID);
                 checkDuplicateQuery.setParameter(deletedVar, false);
                 List<?> checkDuplicateList;
-                try{
+                try {
                     checkDuplicateList = checkDuplicateQuery.getResultList();
-                } catch(Exception e){
-                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception trying to check for duplicate PDP "+pdpID+" on checkDuplicateQuery.getResultList()");
-                    throw new PersistenceException("Query failed trying to check for duplicate PDP "+pdpID);
+                } catch (Exception e) {
+                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                            "Caught Exception trying to check for duplicate PDP " + pdpID
+                                    + " on checkDuplicateQuery.getResultList()");
+                    throw new PersistenceException("Query failed trying to check for duplicate PDP " + pdpID);
                 }
                 PdpEntity newPdp;
-                if(!checkDuplicateList.isEmpty()){
-                    logger.warn("PDP already exists with id "+pdpID);
-                    newPdp = (PdpEntity)checkDuplicateList.get(0);
+                if (!checkDuplicateList.isEmpty()) {
+                    logger.warn("PDP already exists with id " + pdpID);
+                    newPdp = (PdpEntity) checkDuplicateList.get(0);
                 } else {
                     newPdp = new PdpEntity();
                     em.persist(newPdp);
@@ -2254,7 +2396,7 @@ public class PolicyDBDao {
                 newPdp.setCreatedBy(username);
                 newPdp.setDeleted(false);
                 newPdp.setDescription(pdpDescription);
-                newPdp.setGroup((GroupEntity)checkGroupQueryList.get(0));
+                newPdp.setGroup((GroupEntity) checkGroupQueryList.get(0));
                 newPdp.setJmxPort(pdpJmxPort);
                 newPdp.setModifiedBy(username);
                 newPdp.setPdpId(pdpID);
@@ -2267,45 +2409,46 @@ public class PolicyDBDao {
 
 
         @Override
-        public void updatePdp(OnapPDP pdp, String username){
-            logger.debug("updatePdp(PDP pdp, String username) as updatePdp("+pdp+","+username+") called");
-            if(pdp == null){
+        public void updatePdp(OnapPDP pdp, String username) {
+            logger.debug("updatePdp(PDP pdp, String username) as updatePdp(" + pdp + "," + username + ") called");
+            if (pdp == null) {
                 throw new IllegalArgumentException("PDP pdp must not be null");
             }
-            if(isNullOrEmpty(pdp.getId(),username)){
+            if (isNullOrEmpty(pdp.getId(), username)) {
                 throw new IllegalArgumentException("pdp.getId() and username must not be null or empty");
             }
 
-            synchronized(emLock){
+            synchronized (emLock) {
                 checkBeforeOperationRun();
                 Query getPdpQuery = em.createQuery(pdpEntitySelectQuery);
                 getPdpQuery.setParameter(pdpIdVariable, pdp.getId());
                 getPdpQuery.setParameter(deletedVar, false);
                 List<?> getPdpQueryList;
-                try{
+                try {
                     getPdpQueryList = getPdpQuery.getResultList();
-                } catch(Exception e){
-                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception on getPdpQuery.getResultList()");
-                    throw new PersistenceException("Query failed trying to get PDP "+pdp.getId());
-                }
-                if(getPdpQueryList.isEmpty()){
-                    PolicyLogger.error("The pdp cannot be found to update with id "+pdp.getId());
-                    throw new PersistenceException("The pdp cannot be found to update with id "+pdp.getId());
-                } else if(getPdpQueryList.size() > 1){
-                    PolicyLogger.error(moreThanOnePDP+pdp.getId()+deletedStatusFound);
-                    throw new PersistenceException(moreThanOnePDP+pdp.getId()+deletedStatusFound);
-                }
-                PdpEntity pdpToUpdate = (PdpEntity)getPdpQueryList.get(0);
-                if(!stringEquals(pdpToUpdate.getModifiedBy(), username)){
+                } catch (Exception e) {
+                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                            "Caught Exception on getPdpQuery.getResultList()");
+                    throw new PersistenceException("Query failed trying to get PDP " + pdp.getId());
+                }
+                if (getPdpQueryList.isEmpty()) {
+                    PolicyLogger.error("The pdp cannot be found to update with id " + pdp.getId());
+                    throw new PersistenceException("The pdp cannot be found to update with id " + pdp.getId());
+                } else if (getPdpQueryList.size() > 1) {
+                    PolicyLogger.error(moreThanOnePDP + pdp.getId() + deletedStatusFound);
+                    throw new PersistenceException(moreThanOnePDP + pdp.getId() + deletedStatusFound);
+                }
+                PdpEntity pdpToUpdate = (PdpEntity) getPdpQueryList.get(0);
+                if (!stringEquals(pdpToUpdate.getModifiedBy(), username)) {
                     pdpToUpdate.setModifiedBy(username);
                 }
-                if(pdp.getDescription() != null && !stringEquals(pdp.getDescription(),pdpToUpdate.getDescription())){
+                if (pdp.getDescription() != null && !stringEquals(pdp.getDescription(), pdpToUpdate.getDescription())) {
                     pdpToUpdate.setDescription(pdp.getDescription());
                 }
-                if(pdp.getName() != null && !stringEquals(pdp.getName(),pdpToUpdate.getPdpName())){
+                if (pdp.getName() != null && !stringEquals(pdp.getName(), pdpToUpdate.getPdpName())) {
                     pdpToUpdate.setPdpName(pdp.getName());
                 }
-                if(pdp.getJmxPort() != null && !pdp.getJmxPort().equals(pdpToUpdate.getJmxPort())){
+                if (pdp.getJmxPort() != null && !pdp.getJmxPort().equals(pdpToUpdate.getJmxPort())) {
                     pdpToUpdate.setJmxPort(pdp.getJmxPort());
                 }
 
@@ -2315,55 +2458,59 @@ public class PolicyDBDao {
         }
 
         @Override
-        public void movePdp(OnapPDP pdp, OnapPDPGroup group, String username){
-            logger.debug("movePdp(PDP pdp, PDPGroup group, String username) as movePdp("+pdp+","+group+","+username+") called");
-            if(pdp == null || group == null){
+        public void movePdp(OnapPDP pdp, OnapPDPGroup group, String username) {
+            logger.debug("movePdp(PDP pdp, PDPGroup group, String username) as movePdp(" + pdp + "," + group + ","
+                    + username + ") called");
+            if (pdp == null || group == null) {
                 throw new IllegalArgumentException("PDP pdp and PDPGroup group must not be null");
             }
-            if(isNullOrEmpty(username,pdp.getId(),group.getId())){
-                throw new IllegalArgumentException("pdp.getId(), group.getId(), and username must not be null or empty");
+            if (isNullOrEmpty(username, pdp.getId(), group.getId())) {
+                throw new IllegalArgumentException(
+                        "pdp.getId(), group.getId(), and username must not be null or empty");
             }
 
-            synchronized(emLock){
+            synchronized (emLock) {
                 checkBeforeOperationRun();
-                //check if pdp exists
+                // check if pdp exists
                 Query getPdpQuery = em.createQuery(pdpEntitySelectQuery);
                 getPdpQuery.setParameter(pdpIdVariable, pdp.getId());
                 getPdpQuery.setParameter(deletedVar, false);
                 List<?> getPdpQueryList;
-                try{
+                try {
                     getPdpQueryList = getPdpQuery.getResultList();
-                } catch(Exception e){
-                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception on getPdpQuery.getResultList()");
-                    throw new PersistenceException("Query failed trying to get pdp to move with id "+pdp.getId());
+                } catch (Exception e) {
+                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                            "Caught Exception on getPdpQuery.getResultList()");
+                    throw new PersistenceException("Query failed trying to get pdp to move with id " + pdp.getId());
                 }
-                if(getPdpQueryList.isEmpty()){
-                    PolicyLogger.error("The pdp cannot be found to move with id "+pdp.getId());
-                    throw new PersistenceException("The pdp cannot be found to move with id "+pdp.getId());
-                } else if(getPdpQueryList.size() > 1){
-                    PolicyLogger.error(moreThanOnePDP+pdp.getId()+deletedStatusFound);
-                    throw new PersistenceException(moreThanOnePDP+pdp.getId()+deletedStatusFound);
+                if (getPdpQueryList.isEmpty()) {
+                    PolicyLogger.error("The pdp cannot be found to move with id " + pdp.getId());
+                    throw new PersistenceException("The pdp cannot be found to move with id " + pdp.getId());
+                } else if (getPdpQueryList.size() > 1) {
+                    PolicyLogger.error(moreThanOnePDP + pdp.getId() + deletedStatusFound);
+                    throw new PersistenceException(moreThanOnePDP + pdp.getId() + deletedStatusFound);
                 }
 
-                //check if new group exists
+                // check if new group exists
                 Query checkGroupQuery = em.createQuery(groupEntitySelectQuery);
                 checkGroupQuery.setParameter(groupIdVar, group.getId());
                 checkGroupQuery.setParameter(deletedVar, false);
                 List<?> checkGroupQueryList;
-                try{
+                try {
                     checkGroupQueryList = checkGroupQuery.getResultList();
-                } catch(Exception e){
-                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception trying to get group on checkGroupQuery.getResultList()");
-                    throw new PersistenceException("Query failed trying to get new group "+group.getId());
+                } catch (Exception e) {
+                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                            "Caught Exception trying to get group on checkGroupQuery.getResultList()");
+                    throw new PersistenceException("Query failed trying to get new group " + group.getId());
                 }
-                if(checkGroupQueryList.size() != 1){
-                    PolicyLogger.error("The group "+group.getId()+" does not exist");
-                    throw new PersistenceException("The group "+group.getId()+" does not exist");
+                if (checkGroupQueryList.size() != 1) {
+                    PolicyLogger.error("The group " + group.getId() + " does not exist");
+                    throw new PersistenceException("The group " + group.getId() + " does not exist");
                 }
-                GroupEntity groupToMoveInto = (GroupEntity)checkGroupQueryList.get(0);
-                PdpEntity pdpToUpdate = (PdpEntity)getPdpQueryList.get(0);
+                GroupEntity groupToMoveInto = (GroupEntity) checkGroupQueryList.get(0);
+                PdpEntity pdpToUpdate = (PdpEntity) getPdpQueryList.get(0);
                 pdpToUpdate.setGroup(groupToMoveInto);
-                if(!stringEquals(pdpToUpdate.getModifiedBy(), username)){
+                if (!stringEquals(pdpToUpdate.getModifiedBy(), username)) {
                     pdpToUpdate.setModifiedBy(username);
                 }
 
@@ -2373,51 +2520,56 @@ public class PolicyDBDao {
         }
 
         @Override
-        public void changeDefaultGroup(OnapPDPGroup group, String username){
-            logger.debug("changeDefaultGroup(PDPGroup group, String username) as changeDefaultGroup("+group+","+username+") called");
-            if(group == null){
+        public void changeDefaultGroup(OnapPDPGroup group, String username) {
+            logger.debug("changeDefaultGroup(PDPGroup group, String username) as changeDefaultGroup(" + group + ","
+                    + username + ") called");
+            if (group == null) {
                 throw new IllegalArgumentException("PDPGroup group must not be null");
             }
-            if(isNullOrEmpty(group.getId(),username)){
+            if (isNullOrEmpty(group.getId(), username)) {
                 throw new IllegalArgumentException("group.getId() and username must not be null or empty");
             }
 
-            synchronized(emLock){
+            synchronized (emLock) {
                 checkBeforeOperationRun();
                 Query getGroupQuery = em.createQuery(groupEntitySelectQuery);
                 getGroupQuery.setParameter(groupIdVar, group.getId());
                 getGroupQuery.setParameter(deletedVar, false);
                 List<?> getGroupQueryList;
-                try{
+                try {
                     getGroupQueryList = getGroupQuery.getResultList();
-                } catch(Exception e){
-                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception on getGroupQuery.getResultList()");
-                    throw new PersistenceException(queryFailedToGetGroup+group.getId());
-                }
-                if(getGroupQueryList.isEmpty()){
-                    PolicyLogger.error("The group cannot be found to set default with id "+group.getId());
-                    throw new PersistenceException("The group cannot be found to set default with id "+group.getId());
-                } else if(getGroupQueryList.size() > 1){
-                    PolicyLogger.error(duplicateGroupId+group.getId()+deletedStatusFound);
-                    throw new PersistenceException(duplicateGroupId+group.getId()+deletedStatusFound);
-                }
-                GroupEntity newDefaultGroup = (GroupEntity)getGroupQueryList.get(0);
+                } catch (Exception e) {
+                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                            "Caught Exception on getGroupQuery.getResultList()");
+                    throw new PersistenceException(queryFailedToGetGroup + group.getId());
+                }
+                if (getGroupQueryList.isEmpty()) {
+                    PolicyLogger.error("The group cannot be found to set default with id " + group.getId());
+                    throw new PersistenceException("The group cannot be found to set default with id " + group.getId());
+                } else if (getGroupQueryList.size() > 1) {
+                    PolicyLogger.error(duplicateGroupId + group.getId() + deletedStatusFound);
+                    throw new PersistenceException(duplicateGroupId + group.getId() + deletedStatusFound);
+                }
+                GroupEntity newDefaultGroup = (GroupEntity) getGroupQueryList.get(0);
                 newDefaultGroup.setDefaultGroup(true);
-                if(!stringEquals(newDefaultGroup.getModifiedBy(), username)){
+                if (!stringEquals(newDefaultGroup.getModifiedBy(), username)) {
                     newDefaultGroup.setModifiedBy(username);
                 }
 
                 em.flush();
                 this.groupId = newDefaultGroup.getGroupKey();
-                Query setAllGroupsNotDefault = em.createQuery("UPDATE GroupEntity g SET g.defaultGroup=:defaultGroup WHERE g.deleted=:deleted AND g.groupKey<>:groupKey");
-                //not going to set modified by for all groups
+                Query setAllGroupsNotDefault = em.createQuery(
+                        "UPDATE GroupEntity g SET g.defaultGroup=:defaultGroup WHERE g.deleted=:deleted AND g"
+                                + ".groupKey<>:groupKey");
+                // not going to set modified by for all groups
                 setAllGroupsNotDefault.setParameter("defaultGroup", false);
                 setAllGroupsNotDefault.setParameter(deletedVar, false);
                 setAllGroupsNotDefault.setParameter("groupKey", newDefaultGroup.getGroupKey());
-                try{
+                try {
                     logger.info("set " + setAllGroupsNotDefault.executeUpdate() + " groups as not default");
-                } catch(Exception e){
-                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception on setAllGroupsNotDefault.executeUpdate()");
+                } catch (Exception e) {
+                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                            "Caught Exception on setAllGroupsNotDefault.executeUpdate()");
                     throw new PersistenceException("Could not set all other groups default to false");
                 }
                 em.flush();
@@ -2426,94 +2578,107 @@ public class PolicyDBDao {
 
 
         @Override
-        public void deleteGroup(OnapPDPGroup group, OnapPDPGroup moveToGroup, String username) throws PolicyDBException {
-            logger.debug("deleteGroup(PDPGroup group, PDPGroup moveToGroup, String username) as deleteGroup("+group+", "+moveToGroup+","+username+") called");
-            if(group == null){
+        public void deleteGroup(OnapPDPGroup group, OnapPDPGroup moveToGroup, String username)
+                throws PolicyDBException {
+            logger.debug("deleteGroup(PDPGroup group, PDPGroup moveToGroup, String username) as deleteGroup(" + group
+                    + ", " + moveToGroup + "," + username + ") called");
+            if (group == null) {
                 throw new IllegalArgumentException("PDPGroup group cannot be null");
             }
-            if(isNullOrEmpty(username,group.getId())){
+            if (isNullOrEmpty(username, group.getId())) {
                 throw new IllegalArgumentException("group.getId() and and username must not be null or empty");
             }
 
-            if(group.isDefaultGroup()){
-                PolicyLogger.error("The default group "+group.getId()+" was attempted to be deleted. It cannot be.");
+            if (group.isDefaultGroup()) {
+                PolicyLogger
+                        .error("The default group " + group.getId() + " was attempted to be deleted. It cannot be.");
                 throw new PolicyDBException("You cannot delete the default group.");
             }
-            synchronized(emLock){
+            synchronized (emLock) {
                 checkBeforeOperationRun();
                 Query deleteGroupQuery = em.createQuery(groupEntitySelectQuery);
                 deleteGroupQuery.setParameter(groupIdVar, group.getId());
                 deleteGroupQuery.setParameter(deletedVar, false);
                 List<?> deleteGroupQueryList;
-                try{
+                try {
                     deleteGroupQueryList = deleteGroupQuery.getResultList();
-                } catch(Exception e){
-                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception trying to check if group exists deleteGroupQuery.getResultList()");
+                } catch (Exception e) {
+                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                            "Caught Exception trying to check if group exists deleteGroupQuery.getResultList()");
                     throw new PersistenceException("Query failed trying to check if group exists");
                 }
-                if(deleteGroupQueryList.isEmpty()){
+                if (deleteGroupQueryList.isEmpty()) {
                     logger.warn(groupCannotBeFound + group.getId());
                     return;
-                } else if(deleteGroupQueryList.size() > 1){
-                    PolicyLogger.error(duplicateGroupId+group.getId()+foundInDBNotDeleted);
-                    throw new PersistenceException(duplicateGroupId+group.getId()+foundInDBNotDeleted);
+                } else if (deleteGroupQueryList.size() > 1) {
+                    PolicyLogger.error(duplicateGroupId + group.getId() + foundInDBNotDeleted);
+                    throw new PersistenceException(duplicateGroupId + group.getId() + foundInDBNotDeleted);
                 }
 
-                Query pdpsInGroupQuery = em.createQuery("SELECT p FROM PdpEntity p WHERE p.groupEntity=:group and p.deleted=:deleted");
-                pdpsInGroupQuery.setParameter("group", ((GroupEntity)deleteGroupQueryList.get(0)));
+                Query pdpsInGroupQuery =
+                        em.createQuery("SELECT p FROM PdpEntity p WHERE p.groupEntity=:group and p.deleted=:deleted");
+                pdpsInGroupQuery.setParameter("group", ((GroupEntity) deleteGroupQueryList.get(0)));
                 pdpsInGroupQuery.setParameter(deletedVar, false);
                 List<?> pdpsInGroupList;
-                try{
+                try {
                     pdpsInGroupList = pdpsInGroupQuery.getResultList();
-                } catch(Exception e){
-                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception trying to get PDPs in group on pdpsInGroupQuery.getResultList()");
+                } catch (Exception e) {
+                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                            "Caught Exception trying to get PDPs in group on pdpsInGroupQuery.getResultList()");
                     throw new PersistenceException("Query failed trying to get PDPs in group");
                 }
-                if(!pdpsInGroupList.isEmpty()){
-                    if(moveToGroup != null){
-                        Query checkMoveToGroupQuery = em.createQuery("SELECT o FROM GroupEntity o WHERE o.groupId=:groupId AND o.deleted=:deleted");
+                if (!pdpsInGroupList.isEmpty()) {
+                    if (moveToGroup != null) {
+                        Query checkMoveToGroupQuery = em.createQuery(
+                                "SELECT o FROM GroupEntity o WHERE o.groupId=:groupId AND o.deleted=:deleted");
                         checkMoveToGroupQuery.setParameter(groupIdVar, moveToGroup.getId());
                         checkMoveToGroupQuery.setParameter(deletedVar, false);
                         List<?> checkMoveToGroupList;
-                        try{
+                        try {
                             checkMoveToGroupList = checkMoveToGroupQuery.getResultList();
-                        } catch(Exception e){
-                            PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception trying to check if group exists checkMoveToGroupQuery.getResultList()");
+                        } catch (Exception e) {
+                            PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                                    "Caught Exception trying to check if group exists checkMoveToGroupQuery"
+                                            + ".getResultList()");
                             throw new PersistenceException("Query failed trying to check if group exists");
                         }
-                        if(checkMoveToGroupList.isEmpty()){
+                        if (checkMoveToGroupList.isEmpty()) {
                             PolicyLogger.error(groupCannotBeFound + moveToGroup.getId());
                             throw new PersistenceException(groupCannotBeFound + moveToGroup.getId());
-                        } else if(checkMoveToGroupList.size() > 1){
-                            PolicyLogger.error(duplicateGroupId+moveToGroup.getId()+foundInDBNotDeleted);
-                            throw new PersistenceException(duplicateGroupId+moveToGroup.getId()+foundInDBNotDeleted);
+                        } else if (checkMoveToGroupList.size() > 1) {
+                            PolicyLogger.error(duplicateGroupId + moveToGroup.getId() + foundInDBNotDeleted);
+                            throw new PersistenceException(
+                                    duplicateGroupId + moveToGroup.getId() + foundInDBNotDeleted);
                         } else {
-                            GroupEntity newGroup = (GroupEntity)checkMoveToGroupList.get(0);
-                            for(Object pdpObject : pdpsInGroupList){
-                                PdpEntity pdp = (PdpEntity)pdpObject;
+                            GroupEntity newGroup = (GroupEntity) checkMoveToGroupList.get(0);
+                            for (Object pdpObject : pdpsInGroupList) {
+                                PdpEntity pdp = (PdpEntity) pdpObject;
                                 pdp.setGroup(newGroup);
-                                if(!stringEquals(pdp.getModifiedBy(),username)){
+                                if (!stringEquals(pdp.getModifiedBy(), username)) {
                                     pdp.setModifiedBy(username);
                                 }
-                                try{
+                                try {
                                     em.flush();
                                     this.newGroupId = newGroup.getGroupId();
-                                } catch(PersistenceException e){
-                                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught PersistenceException trying to set pdp group to null on em.flush()");
+                                } catch (PersistenceException e) {
+                                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                                            "Caught PersistenceException trying to set pdp group to null on em.flush"
+                                                    + "()");
                                     throw new PersistenceException("Query failed trying to set pdp group to ");
                                 }
                             }
                         }
                     } else {
-                        PolicyLogger.error("Group "+group.getId()+" is trying to be delted with PDPs. No group was provided to move them to");
+                        PolicyLogger.error("Group " + group.getId()
+                                + " is trying to be delted with PDPs. No group was provided to move them to");
                         throw new PolicyDBException("Group has PDPs. Must provide a group for them to move to");
                     }
                 }
 
-                //delete group here
-                GroupEntity groupToDelete = (GroupEntity)deleteGroupQueryList.get(0);
+                // delete group here
+                GroupEntity groupToDelete = (GroupEntity) deleteGroupQueryList.get(0);
                 groupToDelete.setDeleted(true);
-                if(!stringEquals(groupToDelete.getModifiedBy(), username)){
+                if (!stringEquals(groupToDelete.getModifiedBy(), username)) {
                     groupToDelete.setModifiedBy(username);
                 }
                 em.flush();
@@ -2523,119 +2688,136 @@ public class PolicyDBDao {
 
         @Override
         public StdPDPGroup addPolicyToGroup(String groupID, String policyID, String username) throws PolicyDBException {
-            logger.info("PolicyDBDao: addPolicyToGroup(String groupID, String policyID, String username) as addPolicyToGroup("+groupID+", "+policyID+","+username+") called");
-            if(isNullOrEmpty(groupID, policyID, username)){
+            logger.info("PolicyDBDao: addPolicyToGroup(String groupID, String policyID, String username) as "
+                    + "addPolicyToGroup(" + groupID + ", " + policyID + "," + username + ") called");
+            if (isNullOrEmpty(groupID, policyID, username)) {
                 throw new IllegalArgumentException("groupID, policyID, and username must not be null or empty");
             }
-            synchronized(emLock){
+            synchronized (emLock) {
                 checkBeforeOperationRun();
-                //check if group exists
+                // check if group exists
                 Query groupQuery = em.createQuery(groupEntitySelectQuery);
                 groupQuery.setParameter(groupIdVar, groupID);
                 groupQuery.setParameter(deletedVar, false);
                 List<?> groupQueryList;
-                try{
+                try {
                     groupQueryList = groupQuery.getResultList();
-                }catch(Exception e){
-                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception trying to check if group exists groupQuery.getResultList()");
-                    throw new PersistenceException("Query failed trying to check if group "+groupID+" exists");
+                } catch (Exception e) {
+                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                            "Caught Exception trying to check if group exists groupQuery.getResultList()");
+                    throw new PersistenceException("Query failed trying to check if group " + groupID + " exists");
                 }
-                if(groupQueryList.isEmpty()){
-                    PolicyLogger.error("Group policy is being added to does not exist with id "+groupID);
-                    throw new PersistenceException("Group policy is being added to does not exist with id "+groupID);
-                } else if(groupQueryList.size() > 1){
-                    PolicyLogger.error(duplicateGroupId+groupID+foundInDBNotDeleted);
-                    throw new PersistenceException(duplicateGroupId+groupID+foundInDBNotDeleted);
+                if (groupQueryList.isEmpty()) {
+                    PolicyLogger.error("Group policy is being added to does not exist with id " + groupID);
+                    throw new PersistenceException("Group policy is being added to does not exist with id " + groupID);
+                } else if (groupQueryList.size() > 1) {
+                    PolicyLogger.error(duplicateGroupId + groupID + foundInDBNotDeleted);
+                    throw new PersistenceException(duplicateGroupId + groupID + foundInDBNotDeleted);
                 }
 
-                //we need to convert the form of the policy id that is used groups into the form that is used
-                //for the database. (com.Config_mypol.1.xml) to (Config_mypol.xml)
+                // we need to convert the form of the policy id that is used groups into the form that is used
+                // for the database. (com.Config_mypol.1.xml) to (Config_mypol.xml)
                 String[] policyNameScopeAndVersion = getNameScopeAndVersionFromPdpPolicy(policyID);
-                if(policyNameScopeAndVersion == null) {
+                if (policyNameScopeAndVersion == null) {
                     throw new IllegalArgumentException("Invalid input - policyID must contain name, scope and version");
                 }
-                Query policyQuery = em.createQuery("SELECT p FROM PolicyEntity p WHERE p.policyName=:policyName AND p.scope=:scope AND p.deleted=:deleted");
+                Query policyQuery = em.createQuery(
+                        "SELECT p FROM PolicyEntity p WHERE p.policyName=:policyName AND p.scope=:scope AND p"
+                                + ".deleted=:deleted");
                 policyQuery.setParameter("policyName", policyNameScopeAndVersion[0]);
                 policyQuery.setParameter(scope, policyNameScopeAndVersion[1]);
                 policyQuery.setParameter(deletedVar, false);
                 List<?> policyQueryList;
-                try{
+                try {
                     policyQueryList = policyQuery.getResultList();
-                } catch(Exception e){
+                } catch (Exception e) {
                     logger.debug(e);
-                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception trying to check if policy exists policyQuery.getResultList()");
-                    throw new PersistenceException("Query failed trying to check if policy "+policyNameScopeAndVersion[0]+" exists");
-                }
-                if(policyQueryList.isEmpty()){
-                    PolicyLogger.error("Policy being added to the group does not exist with policy id "+policyNameScopeAndVersion[0]);
-                    throw new PersistenceException("Policy being added to the group does not exist with policy id "+policyNameScopeAndVersion[0]);
-                } else if(policyQueryList.size() > 1){
-                    PolicyLogger.error(duplicatePolicyId+policyNameScopeAndVersion[0]+foundInDBNotDeleted);
-                    throw new PersistenceException(duplicateGroupId+policyNameScopeAndVersion[0]+foundInDBNotDeleted);
+                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                            "Caught Exception trying to check if policy exists policyQuery.getResultList()");
+                    throw new PersistenceException(
+                            "Query failed trying to check if policy " + policyNameScopeAndVersion[0] + " exists");
+                }
+                if (policyQueryList.isEmpty()) {
+                    PolicyLogger.error("Policy being added to the group does not exist with policy id "
+                            + policyNameScopeAndVersion[0]);
+                    throw new PersistenceException("Policy being added to the group does not exist with policy id "
+                            + policyNameScopeAndVersion[0]);
+                } else if (policyQueryList.size() > 1) {
+                    PolicyLogger.error(duplicatePolicyId + policyNameScopeAndVersion[0] + foundInDBNotDeleted);
+                    throw new PersistenceException(
+                            duplicateGroupId + policyNameScopeAndVersion[0] + foundInDBNotDeleted);
                 }
                 logger.info("PolicyDBDao: Getting group and policy from database");
-                GroupEntity group = (GroupEntity)groupQueryList.get(0);
-                PolicyEntity policy = (PolicyEntity)policyQueryList.get(0);
+                GroupEntity group = (GroupEntity) groupQueryList.get(0);
+                PolicyEntity policy = (PolicyEntity) policyQueryList.get(0);
                 Iterator<PolicyEntity> policyIt = group.getPolicies().iterator();
                 String policyName = getPolicyNameAndVersionFromPolicyFileName(policy.getPolicyName())[0];
 
                 logger.info("PolicyDBDao: policyName retrieved is " + policyName);
-                try{
-                    while(policyIt.hasNext()){
+                try {
+                    while (policyIt.hasNext()) {
                         PolicyEntity pol = policyIt.next();
-                        if(policy.getScope().equals(pol.getScope()) &&
-                                getPolicyNameAndVersionFromPolicyFileName(pol.getPolicyName())[0].equals(policyName)) {
+                        if (policy.getScope().equals(pol.getScope())
+                                && getPolicyNameAndVersionFromPolicyFileName(pol.getPolicyName())[0]
+                                        .equals(policyName)) {
                             policyIt.remove();
                         }
                     }
-                }catch(Exception e){
+                } catch (Exception e) {
                     logger.debug(e);
-                    PolicyLogger.error("Could not delete old versions for policy "+policy.getPolicyName()+", ID: "+policy.getPolicyId());
+                    PolicyLogger.error("Could not delete old versions for policy " + policy.getPolicyName() + ", ID: "
+                            + policy.getPolicyId());
                 }
                 group.addPolicyToGroup(policy);
                 em.flush();
 
-                // After adding policy to the db group we need to make sure the filesytem group is in sync with the db group
+                // After adding policy to the db group we need to make sure the filesytem group is in sync with the db
+                // group
                 try {
                     StdPDPGroup pdpGroup = (StdPDPGroup) papEngine.getGroup(group.getGroupId());
                     return synchronizeGroupPoliciesInFileSystem(pdpGroup, group);
                 } catch (PAPException e) {
                     logger.debug(e);
-                    PolicyLogger.error("PolicyDBDao: Could not synchronize the filesystem group with the database group. " + e.getMessage());
+                    PolicyLogger
+                            .error("PolicyDBDao: Could not synchronize the filesystem group with the database group. "
+                                    + e.getMessage());
                 }
                 return null;
             }
         }
 
-        //this means delete pdp not just remove from group
+        // this means delete pdp not just remove from group
         @Override
         public void removePdpFromGroup(String pdpID, String username) {
-            logger.debug("removePdpFromGroup(String pdpID, String username) as removePdpFromGroup("+pdpID+","+username+") called");
-            if(isNullOrEmpty(pdpID,username)){
+            logger.debug("removePdpFromGroup(String pdpID, String username) as removePdpFromGroup(" + pdpID + ","
+                    + username + ") called");
+            if (isNullOrEmpty(pdpID, username)) {
                 throw new IllegalArgumentException("pdpID and username must not be null or empty");
             }
-            synchronized(emLock){
+            synchronized (emLock) {
                 checkBeforeOperationRun();
                 Query pdpQuery = em.createQuery(pdpEntitySelectQuery);
                 pdpQuery.setParameter(pdpIdVariable, pdpID);
                 pdpQuery.setParameter(deletedVar, false);
                 List<?> pdpList;
-                try{
+                try {
                     pdpList = pdpQuery.getResultList();
-                } catch(Exception e){
-                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar, "Caught Exception trying to check if pdp exists  pdpQuery.getResultList()");
-                    throw new PersistenceException("Query failed trying to check if pdp "+pdpID+" exists");
-                }
-                if(pdpList.size() > 1){
-                    PolicyLogger.error("Somehow, more than one pdp with the id "+pdpID+foundInDBNotDeleted);
-                    throw new PersistenceException("Somehow, more than one pdp with the id "+pdpID+foundInDBNotDeleted);
-                } else if(pdpList.isEmpty()){
-                    PolicyLogger.error("Pdp being removed does not exist with id "+pdpID);
+                } catch (Exception e) {
+                    PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, policyDBDaoVar,
+                            "Caught Exception trying to check if pdp exists  pdpQuery.getResultList()");
+                    throw new PersistenceException("Query failed trying to check if pdp " + pdpID + " exists");
+                }
+                if (pdpList.size() > 1) {
+                    PolicyLogger.error("Somehow, more than one pdp with the id " + pdpID + foundInDBNotDeleted);
+                    throw new PersistenceException(
+                            "Somehow, more than one pdp with the id " + pdpID + foundInDBNotDeleted);
+                } else if (pdpList.isEmpty()) {
+                    PolicyLogger.error("Pdp being removed does not exist with id " + pdpID);
                     return;
                 }
-                PdpEntity pdp = (PdpEntity)pdpList.get(0);
+                PdpEntity pdp = (PdpEntity) pdpList.get(0);
                 pdp.setGroup(null);
-                if(!stringEquals(pdp.getModifiedBy(),username)){
+                if (!stringEquals(pdp.getModifiedBy(), username)) {
                     pdp.setModifiedBy(username);
                 }
                 pdp.setDeleted(true);
@@ -2644,23 +2826,50 @@ public class PolicyDBDao {
                 this.pdpId = pdp.getPdpKey();
             }
         }
+
+        private void notifyOthers(long entityId, String entityType) {
+            notifyOthers(entityId, entityType, null);
+        }
+
+        private void notifyOthers(long entityId, String entityType, String newGroupId) {
+            logger.debug("notifyOthers(long entityId, String entityType, long newGroupId) as notifyOthers(" + entityId
+                    + "," + entityType + "," + newGroupId + ") called");
+            LinkedList<Thread> notifyThreads = new LinkedList<>();
+
+            // we're going to run notifications in parallel threads to speed things up
+            for (Object obj : otherServers) {
+                Thread newNotifyThread = new Thread(new NotifyOtherThread(obj, entityId, entityType, newGroupId));
+                newNotifyThread.start();
+                notifyThreads.add(newNotifyThread);
+            }
+            // we want to wait for all notifications to complete or timeout before we unlock the interface and allow
+            // more changes
+            for (Thread t : notifyThreads) {
+                try {
+                    t.join();
+                } catch (Exception e) {
+                    logger.warn("Could not join a notifcation thread" + e);
+                }
+            }
+        }
     }
 
-    private PolicyDBDao(){
-        //empty constructor
+    private PolicyDBDao() {
+        // empty constructor
     }
 
-    public static PolicyDBDaoTestClass getPolicyDBDaoTestClass(){
+    public static PolicyDBDaoTestClass getPolicyDBDaoTestClass() {
         return new PolicyDBDao().new PolicyDBDaoTestClass();
     }
 
     final class PolicyDBDaoTestClass {
-        String getConfigFile(String filename, String scope, PolicyRestAdapter policy){
+        String getConfigFile(String filename, String scope, PolicyRestAdapter policy) {
             return scope + "." + PolicyDBDao.this.getConfigFile(filename, policy);
         }
-        String[] getPolicyNameAndVersionFromPolicyFileName(String originalPolicyName) throws PolicyDBException{
+
+        String[] getPolicyNameAndVersionFromPolicyFileName(String originalPolicyName) throws PolicyDBException {
             return PolicyDBDao.this.getPolicyNameAndVersionFromPolicyFileName(originalPolicyName);
         }
     }
 
-}
\ No newline at end of file
+}