Refactor code for nested stmts in policy std
[policy/engine.git] / PolicyEngineAPI / src / main / java / org / onap / policy / std / ManualClientEndUEB.java
index c04736e..d67e136 100644 (file)
@@ -3,6 +3,7 @@
  * PolicyEngineAPI
  * ================================================================================
  * Copyright (C) 2017 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.
@@ -39,123 +40,127 @@ import com.att.nsa.cambria.client.CambriaPublisher;
 
 @SuppressWarnings("deprecation")
 public class ManualClientEndUEB {
-       private static StdPDPNotification notification = null;
-       private static String resultJson = null;
-       private static Logger logger = FlexLogger.getLogger(ManualClientEndUEB.class.getName());
-       private static CambriaConsumer CConsumer = null;
-       @SuppressWarnings("unused")
-       private static List<String> uebURLList = null; 
-       @SuppressWarnings("unused")
-       private static boolean messageNotReceived = false;
-       @SuppressWarnings("unused")
-       private static String url = null;
-       private static String uniquID = null;
-       private static String topic = null;
+    private static StdPDPNotification notification = null;
+    private static String resultJson = null;
+    private static Logger logger = FlexLogger.getLogger(ManualClientEndUEB.class.getName());
+    private static CambriaConsumer CConsumer = null;
+    @SuppressWarnings("unused")
+    private static List<String> uebURLList = null;
+    @SuppressWarnings("unused")
+    private static boolean messageNotReceived = false;
+    @SuppressWarnings("unused")
+    private static String url = null;
+    private static String uniquID = null;
+    private static String topic = null;
+    private static int RETRY_LIMIT = 4;
 
-       private ManualClientEndUEB() {
-               // Empty constructor
-       }
+    private ManualClientEndUEB() {
+        // Empty constructor
+    }
 
-       public static PDPNotification result(NotificationScheme scheme) {
-               if (resultJson == null || notification == null) {
-                       logger.debug("No Result" );
-                       return null;
-               }
-               if(scheme.equals(NotificationScheme.MANUAL_ALL_NOTIFICATIONS)) {
-                       boolean removed = false;
-                       boolean updated = false; 
-                       if(notification.getRemovedPolicies()!=null && !notification.getRemovedPolicies().isEmpty()){
-                               removed = true;
-                       }
-                       if(notification.getLoadedPolicies()!=null && !notification.getLoadedPolicies().isEmpty()){
-                               updated = true;
-                       }
-                       if(removed && updated) {
-                               notification.setNotificationType(NotificationType.BOTH);
-                       }else if(removed){
-                               notification.setNotificationType(NotificationType.REMOVE);
-                       }else if(updated){
-                               notification.setNotificationType(NotificationType.UPDATE);
-                       }
-                       return notification;
-               }else if(scheme.equals(NotificationScheme.MANUAL_NOTIFICATIONS)) {
-                       return MatchStore.checkMatch(notification);
-               }
-               return null;
-       }
+    public static PDPNotification result(NotificationScheme scheme) {
+        if (resultJson == null || notification == null) {
+            logger.debug("No Result" );
+            return null;
+        }
+        if(scheme.equals(NotificationScheme.MANUAL_ALL_NOTIFICATIONS)) {
+            boolean removed = false;
+            boolean updated = false;
+            if(notification.getRemovedPolicies()!=null && !notification.getRemovedPolicies().isEmpty()){
+                removed = true;
+            }
+            if(notification.getLoadedPolicies()!=null && !notification.getLoadedPolicies().isEmpty()){
+                updated = true;
+            }
+            if(removed && updated) {
+                notification.setNotificationType(NotificationType.BOTH);
+            }else if(removed){
+                notification.setNotificationType(NotificationType.REMOVE);
+            }else if(updated){
+                notification.setNotificationType(NotificationType.UPDATE);
+            }
+            return notification;
+        }else if(scheme.equals(NotificationScheme.MANUAL_NOTIFICATIONS)) {
+            return MatchStore.checkMatch(notification);
+        }
+        return null;
+    }
 
-       private static void publishMessage(String pubTopic, String uniqueID , List<String> uebURLList) {
-               
-               String UEBlist = uebURLList.toString();
-               UEBlist = UEBlist.substring(1,UEBlist.length()-1);
+    private static void publishMessage(String pubTopic, String uniqueID , List<String> uebURLList) {
+
+        String UEBlist = uebURLList.toString();
+        UEBlist = UEBlist.substring(1,UEBlist.length()-1);
         CambriaPublisher pub = null;
-               try {
-                       pub = CambriaClientFactory.createSimplePublisher(null, UEBlist, pubTopic);
-               } catch (Exception e1) {
-                       logger.error("Exception Occured"+e1);
-               }
+        try {
+            pub = CambriaClientFactory.createSimplePublisher(null, UEBlist, pubTopic);
+        } catch (Exception e1) {
+            logger.error("Exception Occured"+e1);
+        }
         final JSONObject msg1 = new JSONObject (); 
 
         msg1.put ( "JSON", "UEB Update Ruest UID=" + uniqueID);  
         if(pub != null){
-                try {
-                       pub.send ( "MyPartitionKey", msg1.toString () );
-                       pub.close ();   
-               } catch (IOException e) {
-                       logger.error("Exception Occured"+e);
-               }
+             try {
+                pub.send ( "MyPartitionKey", msg1.toString () );
+                pub.close ();
+            } catch (IOException e) {
+                logger.error("Exception Occured"+e);
+            }
         }      
-       }
+    }
+
+    public static void createTopic (String url, String uniquID, List<String> uebURLList){
+        URL aURL;
+        try {
+            aURL = new URL(url);
+            topic = aURL.getHost() + aURL.getPort();
+        } catch (MalformedURLException e) {
+            topic = url.replace("[:/]", "");
+        }
+
+        publishMessage(topic+ uniquID , uniquID, uebURLList);
 
-       public static void createTopic (String url, String uniquID, List<String> uebURLList){
-               URL aURL;
-               try {
-                       aURL = new URL(url);
-                       topic = aURL.getHost() + aURL.getPort();
-               } catch (MalformedURLException e) {
-                       topic = url.replace("[:/]", "");
-               }
+    }
+    public static void start(String url, List<String> uebURLList,
+            String uniqueID) {
+        ManualClientEndUEB.uebURLList  = uebURLList;
+        ManualClientEndUEB.url = url;
+        ManualClientEndUEB.uniquID = uniqueID;
+        URL aURL;
+        try {
+            aURL = new URL(url);
+            ManualClientEndUEB.topic = aURL.getHost() + aURL.getPort();
+        } catch (MalformedURLException e) {
+            ManualClientEndUEB.topic = url.replace("[:/]", "");
+        }
+        String id = "0";
+        try {
+            CConsumer = CambriaClientFactory.createConsumer ( null, uebURLList, topic + uniquID, "clientGroup", id, 15*1000, 1000 );
+        } catch (Exception e1) {
+            logger.error("Exception Occured"+e1);
+        }
+        int retries = 1;
+        boolean isSuccess = false;
+        while (retries < RETRY_LIMIT && !isSuccess) {
+            isSuccess = publishMessageAndSetNotification(uebURLList);
+            retries++;
+        }
+    }
 
-               publishMessage(topic+ uniquID , uniquID, uebURLList);
-               
-       }
-       public static void start(String url, List<String> uebURLList,
-                       String uniqueID) {
-               ManualClientEndUEB.uebURLList  = uebURLList;
-               ManualClientEndUEB.url = url;
-               ManualClientEndUEB.uniquID = uniqueID;
-               URL aURL;
-               try {
-                       aURL = new URL(url);
-                       ManualClientEndUEB.topic = aURL.getHost() + aURL.getPort();
-               } catch (MalformedURLException e) {
-                       ManualClientEndUEB.topic = url.replace("[:/]", "");
-               }
-               String id = "0";
-               try {
-                       CConsumer = CambriaClientFactory.createConsumer ( null, uebURLList, topic + uniquID, "clientGroup", id, 15*1000, 1000 );
-               } catch (Exception e1) {
-                       logger.error("Exception Occured"+e1);
-               }               
-               int count = 1;
-               while (count < 4) {
-                               publishMessage(topic + "UpdateRequest", uniquID, uebURLList);
-                               try {
-                                       for ( String msg : CConsumer.fetch () )
-                                       {       
-                                               
-                                               logger.debug("Manual Notification Recieved Message " + msg + " from UEB cluster : " + uebURLList.toString());
-                                               resultJson = msg;
-                                               if (!msg.contains("UEB Update")){
-                                                       notification = NotificationUnMarshal.notificationJSON(msg);
-                                                       count = 4;
-                                               }
-                                       }
-                               }catch (Exception e) {
-                                       logger.error("Error in Manual CLient UEB notification ", e);
-                               } 
-                               count++;
-                       }               
-       }
-       
+    private static boolean publishMessageAndSetNotification(List<String> uebURLList) {
+        publishMessage(topic + "UpdateRequest", uniquID, uebURLList);
+        try {
+            for ( String msg : CConsumer.fetch () ) {
+                logger.debug("Manual Notification Recieved Message " + msg + " from UEB cluster : " + uebURLList.toString());
+                resultJson = msg;
+                if (!msg.contains("UEB Update")){
+                    notification = NotificationUnMarshal.notificationJSON(msg);
+                    return true;
+                }
+            }
+        }catch (Exception e) {
+            logger.error("Error in Manual CLient UEB notification ", e);
+        }
+        return false;
+    }
 }