summaryrefslogtreecommitdiffstats
path: root/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/notifications/NotificationController.java
diff options
context:
space:
mode:
Diffstat (limited to 'ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/notifications/NotificationController.java')
-rw-r--r--ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/notifications/NotificationController.java673
1 files changed, 348 insertions, 325 deletions
diff --git a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/notifications/NotificationController.java b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/notifications/NotificationController.java
index 109d421f8..577d5b347 100644
--- a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/notifications/NotificationController.java
+++ b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/notifications/NotificationController.java
@@ -59,284 +59,301 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectWriter;
/**
- * NotificationController Checks for the Updated and Removed policies. It
- * notifies the Server to send Notifications to the Client.
+ * NotificationController Checks for the Updated and Removed policies. It notifies the Server to send Notifications to
+ * the Client.
*
* @version 0.2
*
*/
public class NotificationController {
- private static final Logger LOGGER = FlexLogger.getLogger(NotificationController.class);
- private static Notification record = new Notification();
- private PDPStatus oldStatus = null;
- private Removed removed = null;
- private Updated updated = null;
- private ManualNotificationUpdateThread registerMaunualNotificationRunnable = null;
- private Thread manualNotificationThread = null;
- private boolean manualThreadStarted = false;
-
- private static String notificationJSON = null;
- private static String propNotificationType = null;
- private static String pdpURL = null;
- private static Boolean notificationFlag = false;
-
- public void check(PDPStatus newStatus,Map<String, PolicyDef> policyContainer) {
- boolean updated = false;
- boolean removed = false;
- Notification notification = new Notification();
- HashSet<Removed> removedPolicies = new HashSet<>();
- HashSet<Updated> updatedPolicies = new HashSet<>();
+ private static final Logger LOGGER = FlexLogger.getLogger(NotificationController.class);
+ private static Notification record = new Notification();
+ private PDPStatus oldStatus = null;
+ private Removed removed = null;
+ private Updated updated = null;
+ private ManualNotificationUpdateThread registerMaunualNotificationRunnable = null;
+ private Thread manualNotificationThread = null;
+ private boolean manualThreadStarted = false;
- if (oldStatus == null) {
- oldStatus = newStatus;
- }
- // Debugging purpose only.
- LOGGER.debug("old config Status :" + oldStatus.getStatus());
- LOGGER.debug("new config Status :" + newStatus.getStatus());
+ private static String notificationJSON = null;
+ private static String propNotificationType = null;
+ private static String pdpURL = null;
+ private static Boolean notificationFlag = false;
- // Depending on the above condition taking the Change as an Update.
- if (oldStatus.getStatus().toString() != newStatus.getStatus().toString()) {
- LOGGER.info("There is an Update to the PDP");
- LOGGER.debug(oldStatus.getLoadedPolicies());
- LOGGER.debug(newStatus.getLoadedPolicies());
- // Check if there is an Update/additions in the policy.
- for (PDPPolicy newPolicy : newStatus.getLoadedPolicies()) {
- boolean change = true;
- for (PDPPolicy oldPolicy : oldStatus.getLoadedPolicies()) {
- // Check if there are same policies.
- if (oldPolicy.getId().equals(newPolicy.getId())) {
- // Check if they have same version.
- if (oldPolicy.getVersion().equals(newPolicy.getVersion())) {
- change = false;
- }
- }
- }
- // if there is a change Send the notifications to the Client.
- if (change) {
- sendUpdate(newPolicy, policyContainer);
- updated = true;
- updatedPolicies.add(this.updated);
- }
- }
- // Check if there is any removal of policy.
- for (PDPPolicy oldPolicy : oldStatus.getLoadedPolicies()) {
- boolean change = true;
- for (PDPPolicy newPolicy : newStatus.getLoadedPolicies()) {
- // Check if there are same policies.
- if (oldPolicy.getId().equals(newPolicy.getId())) {
- // Check if they have same version.
- if (oldPolicy.getVersion().equals(newPolicy.getVersion())) {
- change = false;
- }
- }
- }
- // if there is a change Send the notifications to the Client.
- if (change) {
- sendremove(oldPolicy);
- removed = true;
- removedPolicies.add(this.removed);
- }
- }
- }
- // At the end the oldStatus must be updated with the newStatus.
- oldStatus = newStatus;
- // Sending Notification to the Server to pass over to the clients
- if (updated || removed) {
- // Call the Notification Server..
- notification.setRemovedPolicies(removedPolicies);
- notification.setLoadedPolicies(updatedPolicies);
- notification = setUpdateTypes(updated, removed, notification);
- ObjectWriter om = new ObjectMapper().writer();
- try {
- notificationJSON = om.writeValueAsString(notification);
- LOGGER.info(notificationJSON);
- // NotificationServer Method here.
- propNotificationType = XACMLProperties.getProperty(XACMLRestProperties.PROP_NOTIFICATION_TYPE);
- pdpURL = XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_ID);
- if (("ueb".equals(propNotificationType)||"dmaap".equals(propNotificationType)) && !manualThreadStarted) {
- LOGGER.debug("Starting Thread to accept UEB or DMAAP notfications.");
- this.registerMaunualNotificationRunnable = new ManualNotificationUpdateThread();
- this.manualNotificationThread = new Thread(this.registerMaunualNotificationRunnable);
- this.manualNotificationThread.start();
- manualThreadStarted = true;
- }
- String notificationJSON= null;
- notificationFlag = true;
- try{
- notificationJSON= record(notification);
- }catch(Exception e){
- LOGGER.error(e);
- }
- NotificationServer.setUpdate(notificationJSON);
- ManualNotificationUpdateThread.setUpdate(notificationJSON);
- } catch (JsonProcessingException e) {
- LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e.getMessage() +e);
- }
- }
- }
-
- public static void sendNotification(){
- if(notificationFlag){
- try {
- NotificationServer.sendNotification(notificationJSON, propNotificationType, pdpURL);
- } catch (Exception e) {
- LOGGER.info(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error in sending the Event Notification: "+ e.getMessage() + e);
- }
- notificationFlag = false;
- }
- }
-
- private void sendremove(PDPPolicy oldPolicy) {
- removed = new Removed();
- // Want to know what is removed ?
- LOGGER.info("Policy removed: " + oldPolicy.getId()+ " with version number: " + oldPolicy.getVersion());
- removed.setPolicyName(oldPolicy.getId());
- removed.setVersionNo(oldPolicy.getVersion());
- removeFile(oldPolicy);
- }
+ public void check(PDPStatus newStatus, Map<String, PolicyDef> policyContainer) {
+ boolean updated = false;
+ boolean removed = false;
+ Notification notification = new Notification();
+ HashSet<Removed> removedPolicies = new HashSet<>();
+ HashSet<Updated> updatedPolicies = new HashSet<>();
- private void sendUpdate(PDPPolicy newPolicy,Map<String, PolicyDef> policyContainer) {
- updated = new Updated();
- // Want to know what is new ?
- LOGGER.info("The new Policy is: " + newPolicy.getId());
- LOGGER.info("The version no. is: " + newPolicy.getVersion());
- updated.setPolicyName(newPolicy.getId());
- updated.setVersionNo(newPolicy.getVersion());
- updated.setUpdateType(UpdateType.NEW);
- // If the policy is of Config type then retrieve its matches.
- if (newPolicy.getName().contains(".Config_")) {
- // Take a Configuration copy to PDP webapps.
- final String urlStart = "attributeId=URLID,expression";
- final String urlEnd = "}}},{";
- String policy = policyContainer.get(newPolicy.getId()).toString();
- if(policy.contains(urlStart)){
- String urlFinePartOne = policy.substring(policy.indexOf(urlStart)+urlStart.length());
- String urlFinePart = urlFinePartOne.substring(0,urlFinePartOne.indexOf(urlEnd));
- String urlString = urlFinePart.substring(urlFinePart.indexOf("value=$URL")+6);
- callPap(urlString, "Config");
- }
- Iterator<AnyOf> anyOfs = policyContainer.get(newPolicy.getId()).getTarget().getAnyOfs();
- while (anyOfs.hasNext()) {
- AnyOf anyOf = anyOfs.next();
- Iterator<AllOf> allOfs = anyOf.getAllOfs();
- while (allOfs.hasNext()) {
- AllOf allOf = allOfs.next();
- Iterator<Match> matches = allOf.getMatches();
- HashMap<String, String> matchValues = new HashMap<>();
- while (matches.hasNext()) {
- Match match = matches.next();
- LOGGER.info("Attribute Value is: "+ match.getAttributeValue().getValue().toString());
- String[] result = match.getAttributeRetrievalBase().toString().split("attributeId=");
- result[1] = result[1].replaceAll("}", "");
- if (!result[1].equals("urn:oasis:names:tc:xacml:1.0:subject:subject-id")) {
- LOGGER.info("Attribute id is: " + result[1]);
- }
- matchValues.put(result[1], match.getAttributeValue().getValue().toString());
- LOGGER.info("Match is : "+ result[1]+ " , " + match.getAttributeValue().getValue().toString());
- }
- updated.setMatches(matchValues);
- }
- }
- }else if(newPolicy.getName().contains(".Action_")){
- // Take Configuration copy to PDP Webapps.
- // Action policies have .json as extension.
- String urlString = "$URL/Action/" + newPolicy.getId().substring(0, newPolicy.getId().lastIndexOf(".")) + ".json";
- callPap(urlString, "Action");
- }
- }
+ if (oldStatus == null) {
+ oldStatus = newStatus;
+ }
+ // Debugging purpose only.
+ LOGGER.debug("old config Status :" + oldStatus.getStatus());
+ LOGGER.debug("new config Status :" + newStatus.getStatus());
+
+ // Depending on the above condition taking the Change as an Update.
+ if (oldStatus.getStatus().toString() != newStatus.getStatus().toString()) {
+ LOGGER.info("There is an Update to the PDP");
+ LOGGER.debug(oldStatus.getLoadedPolicies());
+ LOGGER.debug(newStatus.getLoadedPolicies());
+ // Check if there is an Update/additions in the policy.
+ for (PDPPolicy newPolicy : newStatus.getLoadedPolicies()) {
+ boolean change = true;
+ for (PDPPolicy oldPolicy : oldStatus.getLoadedPolicies()) {
+ // Check if there are same policies.
+ if (oldPolicy.getId().equals(newPolicy.getId())) {
+ // Check if they have same version.
+ if (oldPolicy.getVersion().equals(newPolicy.getVersion())) {
+ change = false;
+ }
+ }
+ }
+ // if there is a change Send the notifications to the Client.
+ if (change) {
+ sendUpdate(newPolicy, policyContainer);
+ updated = true;
+ updatedPolicies.add(this.updated);
+ }
+ }
+ // Check if there is any removal of policy.
+ for (PDPPolicy oldPolicy : oldStatus.getLoadedPolicies()) {
+ boolean change = true;
+ for (PDPPolicy newPolicy : newStatus.getLoadedPolicies()) {
+ // Check if there are same policies.
+ if (oldPolicy.getId().equals(newPolicy.getId())) {
+ // Check if they have same version.
+ if (oldPolicy.getVersion().equals(newPolicy.getVersion())) {
+ change = false;
+ }
+ }
+ }
+ // if there is a change Send the notifications to the Client.
+ if (change) {
+ sendremove(oldPolicy);
+ removed = true;
+ removedPolicies.add(this.removed);
+ }
+ }
+ }
+ // At the end the oldStatus must be updated with the newStatus.
+ oldStatus = newStatus;
+ // Sending Notification to the Server to pass over to the clients
+ if (updated || removed) {
+ // Call the Notification Server..
+ notification.setRemovedPolicies(removedPolicies);
+ notification.setLoadedPolicies(updatedPolicies);
+ notification = setUpdateTypes(updated, removed, notification);
+ ObjectWriter om = new ObjectMapper().writer();
+ try {
+ setNotificationJSON(om.writeValueAsString(notification));
+ LOGGER.info(notificationJSON);
+ // NotificationServer Method here.
+ setPropNotification();
+ if (("ueb".equals(propNotificationType) || "dmaap".equals(propNotificationType))
+ && !manualThreadStarted) {
+ LOGGER.debug("Starting Thread to accept UEB or DMAAP notfications.");
+ this.registerMaunualNotificationRunnable = new ManualNotificationUpdateThread();
+ this.manualNotificationThread = new Thread(this.registerMaunualNotificationRunnable);
+ this.manualNotificationThread.start();
+ manualThreadStarted = true;
+ }
+ String notificationJSONString = null;
+ setNotificationFlag(true);
+ try {
+ notificationJSONString = record(notification);
+ } catch (Exception e) {
+ LOGGER.error(e);
+ }
+ NotificationServer.setUpdate(notificationJSONString);
+ ManualNotificationUpdateThread.setUpdate(notificationJSONString);
+ } catch (JsonProcessingException e) {
+ LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e.getMessage() + e);
+ }
+ }
+ }
+
+ private void setNotificationFlag(boolean value) {
+ notificationFlag = value;
+ }
+
+ private static void setNotificationJSON(String message) {
+ notificationJSON = message;
+ }
+
+ private static void setPropNotification() {
+ propNotificationType = XACMLProperties.getProperty(XACMLRestProperties.PROP_NOTIFICATION_TYPE);
+ pdpURL = XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_ID);
+ }
+
+ public static void sendNotification() {
+ if (notificationFlag) {
+ try {
+ NotificationServer.sendNotification(notificationJSON, propNotificationType, pdpURL);
+ } catch (Exception e) {
+ LOGGER.info(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error in sending the Event Notification: "
+ + e.getMessage() + e);
+ }
+ notificationFlag = false;
+ }
+ }
+
+ private void sendremove(PDPPolicy oldPolicy) {
+ removed = new Removed();
+ // Want to know what is removed ?
+ LOGGER.info("Policy removed: " + oldPolicy.getId() + " with version number: " + oldPolicy.getVersion());
+ removed.setPolicyName(oldPolicy.getId());
+ removed.setVersionNo(oldPolicy.getVersion());
+ removeFile(oldPolicy);
+ }
+
+ private void sendUpdate(PDPPolicy newPolicy, Map<String, PolicyDef> policyContainer) {
+ updated = new Updated();
+ // Want to know what is new ?
+ LOGGER.info("The new Policy is: " + newPolicy.getId());
+ LOGGER.info("The version no. is: " + newPolicy.getVersion());
+ updated.setPolicyName(newPolicy.getId());
+ updated.setVersionNo(newPolicy.getVersion());
+ updated.setUpdateType(UpdateType.NEW);
+ // If the policy is of Config type then retrieve its matches.
+ if (newPolicy.getName().contains(".Config_")) {
+ // Take a Configuration copy to PDP webapps.
+ final String urlStart = "attributeId=URLID,expression";
+ final String urlEnd = "}}},{";
+ String policy = policyContainer.get(newPolicy.getId()).toString();
+ if (policy.contains(urlStart)) {
+ String urlFinePartOne = policy.substring(policy.indexOf(urlStart) + urlStart.length());
+ String urlFinePart = urlFinePartOne.substring(0, urlFinePartOne.indexOf(urlEnd));
+ String urlString = urlFinePart.substring(urlFinePart.indexOf("value=$URL") + 6);
+ callPap(urlString, "Config");
+ }
+ Iterator<AnyOf> anyOfs = policyContainer.get(newPolicy.getId()).getTarget().getAnyOfs();
+ while (anyOfs.hasNext()) {
+ AnyOf anyOf = anyOfs.next();
+ Iterator<AllOf> allOfs = anyOf.getAllOfs();
+ while (allOfs.hasNext()) {
+ AllOf allOf = allOfs.next();
+ Iterator<Match> matches = allOf.getMatches();
+ HashMap<String, String> matchValues = new HashMap<>();
+ while (matches.hasNext()) {
+ Match match = matches.next();
+ LOGGER.info("Attribute Value is: " + match.getAttributeValue().getValue().toString());
+ String[] result = match.getAttributeRetrievalBase().toString().split("attributeId=");
+ result[1] = result[1].replaceAll("}", "");
+ if (!result[1].equals("urn:oasis:names:tc:xacml:1.0:subject:subject-id")) {
+ LOGGER.info("Attribute id is: " + result[1]);
+ }
+ matchValues.put(result[1], match.getAttributeValue().getValue().toString());
+ LOGGER.info(
+ "Match is : " + result[1] + " , " + match.getAttributeValue().getValue().toString());
+ }
+ updated.setMatches(matchValues);
+ }
+ }
+ } else if (newPolicy.getName().contains(".Action_")) {
+ // Take Configuration copy to PDP Webapps.
+ // Action policies have .json as extension.
+ String urlString = "$URL/Action/" + newPolicy.getId().substring(0, newPolicy.getId().lastIndexOf("."))
+ + ".json";
+ callPap(urlString, "Action");
+ }
+ }
+
+ // Adding this for Recording the changes to serve Polling requests..
+ private static String record(Notification notification) {
+ // Initialization with updates.
+ if (record.getRemovedPolicies() == null || record.getLoadedPolicies() == null) {
+ record.setRemovedPolicies(notification.getRemovedPolicies());
+ record.setLoadedPolicies(notification.getLoadedPolicies());
+ } else {
+ // Check if there is anything new and update the record..
+ if (record.getLoadedPolicies() != null || record.getRemovedPolicies() != null) {
+ HashSet<Removed> removedPolicies = (HashSet<Removed>) record.getRemovedPolicies();
+ HashSet<Updated> updatedPolicies = (HashSet<Updated>) record.getLoadedPolicies();
- // Adding this for Recording the changes to serve Polling requests..
- private static String record(Notification notification) throws Exception {
- // Initialization with updates.
- if (record.getRemovedPolicies() == null || record.getLoadedPolicies() == null) {
- record.setRemovedPolicies(notification.getRemovedPolicies());
- record.setLoadedPolicies(notification.getLoadedPolicies());
- } else {
- // Check if there is anything new and update the record..
- if (record.getLoadedPolicies() != null || record.getRemovedPolicies() != null) {
- HashSet<Removed> removedPolicies = (HashSet<Removed>) record.getRemovedPolicies();
- HashSet<Updated> updatedPolicies = (HashSet<Updated>) record.getLoadedPolicies();
+ // Checking with New updated policies.
+ if (notification.getLoadedPolicies() != null && !notification.getLoadedPolicies().isEmpty()) {
+ for (Updated newUpdatedPolicy : notification.getLoadedPolicies()) {
+ // If it was removed earlier then we need to remove from our record
+ Iterator<Removed> oldRemovedPolicy = removedPolicies.iterator();
+ while (oldRemovedPolicy.hasNext()) {
+ Removed policy = oldRemovedPolicy.next();
+ if (newUpdatedPolicy.getPolicyName().equals(policy.getPolicyName())) {
+ if (newUpdatedPolicy.getVersionNo().equals(policy.getVersionNo())) {
+ oldRemovedPolicy.remove();
+ }
+ }
+ }
+ // If it was previously updated need to Overwrite it to the record.
+ Iterator<Updated> oldUpdatedPolicy = updatedPolicies.iterator();
+ while (oldUpdatedPolicy.hasNext()) {
+ Updated policy = oldUpdatedPolicy.next();
+ if (newUpdatedPolicy.getPolicyName().equals(policy.getPolicyName())) {
+ if (newUpdatedPolicy.getVersionNo().equals(policy.getVersionNo())) {
+ oldUpdatedPolicy.remove();
+ }
+ }
+ }
+ updatedPolicies.add(newUpdatedPolicy);
+ }
+ }
+ // Checking with New Removed policies.
+ if (notification.getRemovedPolicies() != null && !notification.getRemovedPolicies().isEmpty()) {
+ for (Removed newRemovedPolicy : notification.getRemovedPolicies()) {
+ // If it was previously removed Overwrite it to the record.
+ Iterator<Removed> oldRemovedPolicy = removedPolicies.iterator();
+ while (oldRemovedPolicy.hasNext()) {
+ Removed policy = oldRemovedPolicy.next();
+ if (newRemovedPolicy.getPolicyName().equals(policy.getPolicyName())) {
+ if (newRemovedPolicy.getVersionNo().equals(policy.getVersionNo())) {
+ oldRemovedPolicy.remove();
+ }
+ }
+ }
+ // If it was added earlier then we need to remove from our record.
+ Iterator<Updated> oldUpdatedPolicy = updatedPolicies.iterator();
+ while (oldUpdatedPolicy.hasNext()) {
+ Updated policy = oldUpdatedPolicy.next();
+ if (newRemovedPolicy.getPolicyName().equals(policy.getPolicyName())) {
+ if (newRemovedPolicy.getVersionNo().equals(policy.getVersionNo())) {
+ oldUpdatedPolicy.remove();
+ }
+ }
+ }
+ removedPolicies.add(newRemovedPolicy);
+ }
+ }
+ record.setRemovedPolicies(removedPolicies);
+ record.setLoadedPolicies(updatedPolicies);
+ }
+ }
+ // Send the Result to the caller.
+ ObjectWriter om = new ObjectMapper().writer();
+ String json = null;
+ try {
+ json = om.writeValueAsString(record);
+ } catch (JsonProcessingException e) {
+ LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e.getMessage() + e);
+ }
+ LOGGER.info(json);
+ return json;
+ }
- // Checking with New updated policies.
- if (notification.getLoadedPolicies() != null && !notification.getLoadedPolicies().isEmpty()) {
- for (Updated newUpdatedPolicy : notification.getLoadedPolicies()) {
- // If it was removed earlier then we need to remove from our record
- Iterator<Removed> oldRemovedPolicy = removedPolicies.iterator();
- while (oldRemovedPolicy.hasNext()) {
- Removed policy = oldRemovedPolicy.next();
- if (newUpdatedPolicy.getPolicyName().equals(policy.getPolicyName())) {
- if (newUpdatedPolicy.getVersionNo().equals(policy.getVersionNo())) {
- oldRemovedPolicy.remove();
- }
- }
- }
- // If it was previously updated need to Overwrite it to the record.
- Iterator<Updated> oldUpdatedPolicy = updatedPolicies.iterator();
- while (oldUpdatedPolicy.hasNext()) {
- Updated policy = oldUpdatedPolicy.next();
- if (newUpdatedPolicy.getPolicyName().equals(policy.getPolicyName())) {
- if (newUpdatedPolicy.getVersionNo().equals(policy.getVersionNo())) {
- oldUpdatedPolicy.remove();
- }
- }
- }
- updatedPolicies.add(newUpdatedPolicy);
- }
- }
- // Checking with New Removed policies.
- if (notification.getRemovedPolicies() != null && !notification.getRemovedPolicies().isEmpty()) {
- for (Removed newRemovedPolicy : notification.getRemovedPolicies()) {
- // If it was previously removed Overwrite it to the record.
- Iterator<Removed> oldRemovedPolicy = removedPolicies.iterator();
- while (oldRemovedPolicy.hasNext()) {
- Removed policy = oldRemovedPolicy.next();
- if (newRemovedPolicy.getPolicyName().equals(policy.getPolicyName())) {
- if (newRemovedPolicy.getVersionNo().equals(policy.getVersionNo())) {
- oldRemovedPolicy.remove();
- }
- }
- }
- // If it was added earlier then we need to remove from our record.
- Iterator<Updated> oldUpdatedPolicy = updatedPolicies.iterator();
- while (oldUpdatedPolicy.hasNext()) {
- Updated policy = oldUpdatedPolicy.next();
- if (newRemovedPolicy.getPolicyName().equals(policy.getPolicyName())) {
- if (newRemovedPolicy.getVersionNo().equals(policy.getVersionNo())) {
- oldUpdatedPolicy.remove();
- }
- }
- }
- removedPolicies.add(newRemovedPolicy);
- }
- }
- record.setRemovedPolicies(removedPolicies);
- record.setLoadedPolicies(updatedPolicies);
- }
- }
- // Send the Result to the caller.
- ObjectWriter om = new ObjectMapper().writer();
- String json = null;
- try {
- json = om.writeValueAsString(record);
- } catch (JsonProcessingException e) {
- LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e.getMessage() + e);
- }
- LOGGER.info(json);
- return json;
- }
-
- private static Notification setUpdateTypes(boolean updated, boolean removed, Notification notification) {
- if(notification!=null){
- if(updated && removed){
+ private static Notification setUpdateTypes(boolean updated, boolean removed, Notification notification) {
+ if (notification != null) {
+ if (updated && removed) {
notification.setNotificationType(NotificationType.BOTH);
- if(notification.getLoadedPolicies()!=null){
- HashSet<Updated> updatedPolicies = new HashSet<>();
- for(Updated oldUpdatedPolicy: notification.getLoadedPolicies()){
+ if (notification.getLoadedPolicies() != null) {
+ HashSet<Updated> updatedPolicies = new HashSet<>();
+ for (Updated oldUpdatedPolicy : notification.getLoadedPolicies()) {
Updated updatePolicy = oldUpdatedPolicy;
- if(notification.getRemovedPolicies()!=null){
- for(RemovedPolicy removedPolicy: notification.getRemovedPolicies()){
+ if (notification.getRemovedPolicies() != null) {
+ for (RemovedPolicy removedPolicy : notification.getRemovedPolicies()) {
String regex = ".(\\d)*.xml";
- if(removedPolicy.getPolicyName().replaceAll(regex, "").equals(oldUpdatedPolicy.getPolicyName().replaceAll(regex, ""))){
+ if (removedPolicy.getPolicyName().replaceAll(regex, "")
+ .equals(oldUpdatedPolicy.getPolicyName().replaceAll(regex, ""))) {
updatePolicy.setUpdateType(UpdateType.UPDATE);
break;
}
@@ -346,70 +363,76 @@ public class NotificationController {
}
notification.setLoadedPolicies(updatedPolicies);
}
- }else if(updated){
+ } else if (updated) {
notification.setNotificationType(NotificationType.UPDATE);
- }else if(removed){
+ } else if (removed) {
notification.setNotificationType(NotificationType.REMOVE);
}
}
return notification;
}
-
- private void removeFile(PDPPolicy oldPolicy) {
- try{
- Path removedPolicyFile = Paths.get(XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_CONFIG)+File.separator+oldPolicy.getId());
- Files.deleteIfExists(removedPolicyFile);
- boolean delete=false;
- File dir= null;
- if(oldPolicy.getName().contains(".Config_")){
- delete = true;
- dir = new File(XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_WEBAPPS)+File.separator+"Config");
- }else if(oldPolicy.getName().contains(".Action_")){
- delete = true;
- dir = new File(XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_WEBAPPS)+File.separator+"Action");
- }
- if(delete){
- FileFilter fileFilter = new WildcardFileFilter(oldPolicy.getId().substring(0, oldPolicy.getId().lastIndexOf("."))+".*");
- File[] configFile = dir.listFiles(fileFilter);
- if(configFile.length==1){
- Files.deleteIfExists(configFile[0].toPath());
- }
- }
- }catch(Exception e){
- LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Couldn't remove the policy/config file " + oldPolicy.getName() + e);
- }
- }
-
- private void callPap(String urlString, String type) {
- Path configLocation = Paths.get(XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_WEBAPPS)+File.separator+type);
- if(Files.notExists(configLocation)){
- try {
- Files.createDirectories(configLocation);
- } catch (IOException e) {
- LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW +"Failed to create config directory: " + configLocation.toAbsolutePath().toString(), e);
- }
- }
- PapUrlResolver papUrls = PapUrlResolver.getInstance();
- while(papUrls.hasMoreUrls()){
- String papPath = papUrls.getUrl();
- papPath = papPath.substring(0, papPath.lastIndexOf("/pap"));
- String papAddress= urlString.replace("$URL", papPath);
- String fileName = papAddress.substring(papAddress.lastIndexOf("/")+1);
- String fileLocation = configLocation.toString() + File.separator + fileName;
- try {
- URL papURL = new URL(papAddress);
- LOGGER.info("Calling " +papAddress + " for Configuration Copy.");
- URLConnection urlConnection = papURL.openConnection();
- File file= new File(fileLocation);
- try (InputStream is = urlConnection.getInputStream();
- OutputStream os = new FileOutputStream(file)) {
- IOUtils.copy(is, os);
- break;
- }
- } catch (Exception e) {
- LOGGER.error(e + e.getMessage());
- }
- papUrls.getNext();
- }
- }
+
+ private void removeFile(PDPPolicy oldPolicy) {
+ try {
+ Path removedPolicyFile = Paths.get(XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_CONFIG)
+ + File.separator + oldPolicy.getId());
+ Files.deleteIfExists(removedPolicyFile);
+ boolean delete = false;
+ File dir = null;
+ if (oldPolicy.getName().contains(".Config_")) {
+ delete = true;
+ dir = new File(
+ XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_WEBAPPS) + File.separator + "Config");
+ } else if (oldPolicy.getName().contains(".Action_")) {
+ delete = true;
+ dir = new File(
+ XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_WEBAPPS) + File.separator + "Action");
+ }
+ if (delete) {
+ FileFilter fileFilter = new WildcardFileFilter(
+ oldPolicy.getId().substring(0, oldPolicy.getId().lastIndexOf(".")) + ".*");
+ File[] configFile = dir.listFiles(fileFilter);
+ if (configFile.length == 1) {
+ Files.deleteIfExists(configFile[0].toPath());
+ }
+ }
+ } catch (Exception e) {
+ LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Couldn't remove the policy/config file "
+ + oldPolicy.getName() + e);
+ }
+ }
+
+ private void callPap(String urlString, String type) {
+ Path configLocation = Paths
+ .get(XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_WEBAPPS) + File.separator + type);
+ if (Files.notExists(configLocation)) {
+ try {
+ Files.createDirectories(configLocation);
+ } catch (IOException e) {
+ LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Failed to create config directory: "
+ + configLocation.toAbsolutePath().toString(), e);
+ }
+ }
+ PapUrlResolver papUrls = PapUrlResolver.getInstance();
+ while (papUrls.hasMoreUrls()) {
+ String papPath = papUrls.getUrl();
+ papPath = papPath.substring(0, papPath.lastIndexOf("/pap"));
+ String papAddress = urlString.replace("$URL", papPath);
+ String fileName = papAddress.substring(papAddress.lastIndexOf("/") + 1);
+ String fileLocation = configLocation.toString() + File.separator + fileName;
+ try {
+ URL papURL = new URL(papAddress);
+ LOGGER.info("Calling " + papAddress + " for Configuration Copy.");
+ URLConnection urlConnection = papURL.openConnection();
+ File file = new File(fileLocation);
+ try (InputStream is = urlConnection.getInputStream(); OutputStream os = new FileOutputStream(file)) {
+ IOUtils.copy(is, os);
+ break;
+ }
+ } catch (Exception e) {
+ LOGGER.error(e + e.getMessage());
+ }
+ papUrls.getNext();
+ }
+ }
}