SONAR suggestion - Synchronize initialization of static fields

Change-Id: I2ddf8220bda49f235ddfc5713174c11a147df354
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/ApplicationResource.java b/web/gui/src/main/java/org/onosproject/ui/impl/ApplicationResource.java
index 16f288a..d8f5a44 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/ApplicationResource.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/ApplicationResource.java
@@ -41,7 +41,8 @@
 @Path("applications")
 public class ApplicationResource extends BaseResource {
 
-    static String lastInstalledAppName = null;
+    private static String lastInstalledAppName = null;
+    private static final Object LAST_INSTALLED_APP_NAME_LOCK = new Object();
 
 
     @Path("upload")
@@ -51,7 +52,9 @@
                            @FormDataParam("file") InputStream stream) throws IOException {
         ApplicationAdminService service = get(ApplicationAdminService.class);
         Application app = service.install(stream);
-        lastInstalledAppName = app.id().name();
+        synchronized (LAST_INSTALLED_APP_NAME_LOCK) {
+            lastInstalledAppName = app.id().name();
+        }
         if (Objects.equals(activate, "true")) {
             service.activate(app.id());
         }
@@ -87,4 +90,10 @@
         Application app = service.getApplication(appId);
         return Response.ok(app.icon()).build();
     }
+
+    static String getLastInstalledAppName() {
+        synchronized (LAST_INSTALLED_APP_NAME_LOCK) {
+            return lastInstalledAppName;
+        }
+    }
 }
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/ApplicationViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/ApplicationViewMessageHandler.java
index 984dce2..6ed92a5 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/ApplicationViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/ApplicationViewMessageHandler.java
@@ -172,7 +172,7 @@
             // If the ID was not specified in the payload, use the name of the
             // most recently uploaded app.
             if (isNullOrEmpty(id)) {
-                id = ApplicationResource.lastInstalledAppName;
+                id = ApplicationResource.getLastInstalledAppName();
             }
 
             ApplicationId appId = as.getId(id);
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/UiWebSocketServlet.java b/web/gui/src/main/java/org/onosproject/ui/impl/UiWebSocketServlet.java
index 24e02e6..cfd2025 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/UiWebSocketServlet.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/UiWebSocketServlet.java
@@ -38,6 +38,7 @@
     private static final long PING_DELAY_MS = 5000;
 
     private static UiWebSocketServlet instance;
+    private static final Object INSTANCE_LOCK = new Object();
 
     private ServiceDirectory directory = new DefaultServiceDirectory();
 
@@ -50,19 +51,23 @@
      * Closes all currently open UI web-sockets.
      */
     public static void closeAll() {
-        if (instance != null) {
-            instance.isStopped = true;
-            instance.sockets.forEach(UiWebSocket::close);
-            instance.sockets.clear();
-            instance.pruner.cancel();
-            instance.timer.cancel();
+        synchronized (INSTANCE_LOCK) {
+            if (instance != null) {
+                instance.isStopped = true;
+                instance.sockets.forEach(UiWebSocket::close);
+                instance.sockets.clear();
+                instance.pruner.cancel();
+                instance.timer.cancel();
+            }
         }
     }
 
     @Override
     public void init() throws ServletException {
         super.init();
-        instance = this;
+        synchronized (INSTANCE_LOCK) {
+            instance = this;
+        }
         timer.schedule(pruner, PING_DELAY_MS, PING_DELAY_MS);
     }
 
@@ -93,8 +98,10 @@
      * @param payload message payload
      */
     static void sendToAll(String type, ObjectNode payload) {
-        if (instance != null) {
-            instance.sockets.forEach(ws -> ws.sendMessage(type, payload));
+        synchronized (INSTANCE_LOCK) {
+            if (instance != null) {
+                instance.sockets.forEach(ws -> ws.sendMessage(type, payload));
+            }
         }
     }
 
@@ -106,9 +113,11 @@
      * @param payload  message payload
      */
     static void sendToUser(String userName, String type, ObjectNode payload) {
-        if (instance != null) {
-            instance.sockets.stream().filter(ws -> userName.equals(ws.userName()))
-                    .forEach(ws -> ws.sendMessage(type, payload));
+        synchronized (INSTANCE_LOCK) {
+            if (instance != null) {
+                instance.sockets.stream().filter(ws -> userName.equals(ws.userName()))
+                        .forEach(ws -> ws.sendMessage(type, payload));
+            }
         }
     }