X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=PolicyEngineAPI%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fpolicy%2Fstd%2FManualClientEnd.java;h=a67b5402e17f48d4a175fded4362457122b3bdc2;hb=3eab022023bd68eee6743e30dd7db21c256bf00b;hp=991bdca9ce42c7f8db6f15a636e581698f152a12;hpb=19f797e3d37c5fde0da8d58208e1256be9376e82;p=policy%2Fengine.git diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/std/ManualClientEnd.java b/PolicyEngineAPI/src/main/java/org/onap/policy/std/ManualClientEnd.java index 991bdca9c..a67b5402e 100644 --- a/PolicyEngineAPI/src/main/java/org/onap/policy/std/ManualClientEnd.java +++ b/PolicyEngineAPI/src/main/java/org/onap/policy/std/ManualClientEnd.java @@ -20,144 +20,115 @@ package org.onap.policy.std; -import java.io.IOException; import java.net.URI; import java.util.concurrent.CountDownLatch; - -import javax.websocket.ClientEndpoint; -import javax.websocket.OnClose; -import javax.websocket.OnError; -import javax.websocket.OnMessage; -import javax.websocket.OnOpen; -import javax.websocket.Session; - import org.java_websocket.client.WebSocketClient; import org.java_websocket.handshake.ServerHandshake; import org.onap.policy.api.NotificationScheme; import org.onap.policy.api.NotificationType; import org.onap.policy.api.PDPNotification; +import org.onap.policy.common.logging.flexlogger.FlexLogger; +import org.onap.policy.common.logging.flexlogger.Logger; import org.onap.policy.std.StdPDPNotification; - import org.onap.policy.xacml.api.XACMLErrorConstants; -import org.onap.policy.common.logging.flexlogger.*; - -@ClientEndpoint public class ManualClientEnd extends WebSocketClient { - private static CountDownLatch latch; - private static StdPDPNotification notification = null; - private static String resultJson = null; - private static Logger logger = FlexLogger.getLogger(ManualClientEnd.class.getName()); - private static ManualClientEnd client; - - public ManualClientEnd(URI serverUri) { - super(serverUri); - } + private static CountDownLatch latch; + private static StdPDPNotification notification = null; + private static String resultJson = null; + private static Logger logger = FlexLogger.getLogger(ManualClientEnd.class.getName()); + private static ManualClientEnd client; + + public ManualClientEnd(URI serverUri) { + super(serverUri); + } + + @Override + public void onClose(int code, String reason, boolean remote) { + logger.info("ManualClientEnd disconnected from: " + getURI() + "; Code: " + code + ", reason : " + reason); + latch.countDown(); + } - @Override - public void onClose(int arg0, String arg1, boolean arg2) { - // Not implemented - } + @Override + public void onError(Exception ex) { + logger.error("XACMLErrorConstants.ERROR_PROCESS_FLOW + ManualClientEnd - Error connecting to: " + getURI() + + ", Exception occured ...\n" + ex); + latch.countDown(); + } - @Override - public void onError(Exception arg0) { - // Not implemented - } + @Override + public void onMessage(String message) { + logger.info("Manual Notification Recieved Message from : " + getURI() + ", Notification: " + message); + ManualClientEnd.resultJson = message; + try { + ManualClientEnd.notification = NotificationUnMarshal.notificationJSON(message); + } catch (Exception e) { + logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e); + } + latch.countDown(); + } - @Override - public void onMessage(String arg0) { - // Not implemented - } + @Override + public void onOpen(ServerHandshake arg0) { + logger.info("Manual Notification Session Started... " + getURI()); + send("Manual"); + } - @Override - public void onOpen(ServerHandshake arg0) { - // Not implemented - } + /** + * Start. + * + * @param url the url + */ + public static void start(String url) { + latch = new CountDownLatch(1); - public static void start(String url) { - latch = new CountDownLatch(1); + if (url.contains("https")) { + url = url.replaceAll("https", "wss"); + } else { + url = url.replaceAll("http", "ws"); + } - if (url.contains("https")) { - url = url.replaceAll("https", "wss"); - } - else { - url = url.replaceAll("http", "ws"); - } - - try { - client = new ManualClientEnd(new URI(url+"notifications")); - latch.await(); - } catch (Exception e) { - logger.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + e); - } - } + try { + client = new ManualClientEnd(new URI(url + "notifications")); + client.connect(); + latch.await(); + client.closeBlocking(); + } catch (Exception e) { + logger.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + e); + } + } - public static PDPNotification result(NotificationScheme scheme) { - if (resultJson == null || notification == null) { - logger.debug("No Result" ); - return null; - } else { - 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); - }else { - return null; - } - } - } - - // WebSockets Code.. - @OnOpen - public void onOpen(Session session) throws IOException { - logger.info("Session Started with : " + session.getId()); - session.getBasicRemote().sendText("Manual"); - } - - @OnError - public void onError(Session session, Throwable e) { - logger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error in: "+ session.getId()); - latch.countDown(); - } - - @OnClose - public void onClose(Session session) { - logger.info("Session ended with "+ session.getId()); - latch.countDown(); - client.close(); - } - - @OnMessage - public static void onMessage(String message, Session session){ - logger.debug(" Manual Notification Recieved Message : " + message +" Session info is : "+ session.getId()); - resultJson = message; - try { - notification = NotificationUnMarshal.notificationJSON(message); - } catch (Exception e) { - logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e); - latch.countDown(); - } - try { - session.close(); - } catch (IOException e) { - logger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + e); - latch.countDown(); - } // For Manual Client.. - latch.countDown(); - } + /** + * Result. + * + * @param scheme the scheme + * @return the PDP notification + */ + public static PDPNotification result(NotificationScheme scheme) { + if (resultJson == null || notification == null) { + logger.info("ManualClientENd - No Result available"); + return null; + } else { + if (scheme.equals(NotificationScheme.MANUAL_ALL_NOTIFICATIONS)) { + boolean removed = false; + boolean updated = false; + if (notification.getRemovedPolicies() != null && !notification.getRemovedPolicies().isEmpty()) { + removed = true; + notification.setNotificationType(NotificationType.REMOVE); + } + if (notification.getLoadedPolicies() != null && !notification.getLoadedPolicies().isEmpty()) { + updated = true; + notification.setNotificationType(NotificationType.UPDATE); + } + if (removed && updated) { + notification.setNotificationType(NotificationType.BOTH); + } + return notification; + } else if (scheme.equals(NotificationScheme.MANUAL_NOTIFICATIONS)) { + return MatchStore.checkMatch(notification); + } else { + return null; + } + } + } }