Fix sonars in gui 62/117762/7
authorJim Hahn <jrh3@att.com>
Thu, 11 Feb 2021 20:55:33 +0000 (15:55 -0500)
committerJim Hahn <jrh3@att.com>
Fri, 19 Feb 2021 18:38:01 +0000 (18:38 +0000)
Addressed the following issues (java only):
- assignment to static field
- expression is always true
- duplicate character in regex
- duplicate code
- remove Thread.sleep() from junit test

Issue-ID: POLICY-3063
Change-Id: I70951ed47defad5baa6c957852663688e51fa88a
Signed-off-by: Jim Hahn <jrh3@att.com>
gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/ApexEditorMain.java
gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/ContextAlbumHandler.java
gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/ContextSchemaHandler.java
gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/EventHandler.java
gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/PolicyHandler.java
gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/RestUtils.java
gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/TaskHandler.java
gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/bean/BeanContextSchema.java
gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/bean/BeanModel.java
gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/PdpMonitoringMain.java
gui-pdp-monitoring/src/test/java/org/onap/policy/gui/pdp/monitoring/MonitoringMainTest.java

index d8a4030..53d94c8 100644 (file)
@@ -2,6 +2,7 @@
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2016-2018 Ericsson. All rights reserved.
  *  Modifications Copyright (C) 2019-2020 Nordix Foundation.
+ *  Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -22,6 +23,7 @@
 package org.onap.policy.gui.editors.apex.rest;
 
 import java.io.PrintStream;
+import java.util.concurrent.atomic.AtomicReference;
 import org.slf4j.ext.XLogger;
 import org.slf4j.ext.XLoggerFactory;
 
@@ -59,7 +61,7 @@ public class ApexEditorMain {
     private ApexEditor apexEditor = null;
 
     // The parameters for the editor
-    private static ApexEditorParameters parameters = null;
+    private static AtomicReference<ApexEditorParameters> parameters = new AtomicReference<>();
 
     // Output and error streams for messages
     private final PrintStream outStream;
@@ -79,17 +81,17 @@ public class ApexEditorMain {
 
         try {
             // Get and check the parameters
-            parameters = parser.parse(args);
+            parameters.set(parser.parse(args));
         } catch (final ApexEditorParameterException e) {
             throw new ApexEditorParameterException(REST_ENDPOINT_PREFIX + this.toString() + ") parameter error, "
                 + e.getMessage() + '\n' + parser.getHelp(ApexEditorMain.class.getName()), e);
         }
-        if (parameters.isHelp()) {
+        if (parameters.get().isHelp()) {
             throw new ApexEditorParameterException(parser.getHelp(ApexEditorMain.class.getName()));
         }
 
         // Validate the parameters
-        final String validationMessage = parameters.validate();
+        final String validationMessage = parameters.get().validate();
         if (validationMessage.length() > 0) {
             throw new ApexEditorParameterException(REST_ENDPOINT_PREFIX + this.toString() + ") parameters invalid, "
                 + validationMessage + '\n' + parser.getHelp(ApexEditorMain.class.getName()));
@@ -102,29 +104,29 @@ public class ApexEditorMain {
      * Initialize the Apex editor.
      */
     public void init() {
-        outStream.println(
-            REST_ENDPOINT_PREFIX + this.toString() + ") starting at " + parameters.getBaseUri().toString() + " . . .");
+        outStream.println(REST_ENDPOINT_PREFIX + this.toString() + ") starting at "
+                        + parameters.get().getBaseUri().toString() + " . . .");
 
         try {
             state = EditorState.INITIALIZING;
 
             // Start the editor
-            apexEditor = new ApexEditor(parameters);
+            apexEditor = new ApexEditor(parameters.get());
 
             // Add a shutdown hook to shut down the editor when the process is exiting
             Runtime.getRuntime().addShutdownHook(new Thread(new ApexEditorShutdownHook()));
 
             state = EditorState.RUNNING;
 
-            if (parameters.getTimeToLive() == ApexEditorParameters.INFINITY_TIME_TO_LIVE) {
-                outStream.println(
-                    REST_ENDPOINT_PREFIX + this.toString() + ") started at " + parameters.getBaseUri().toString());
+            if (parameters.get().getTimeToLive() == ApexEditorParameters.INFINITY_TIME_TO_LIVE) {
+                outStream.println(REST_ENDPOINT_PREFIX + this.toString() + ") started at "
+                                + parameters.get().getBaseUri().toString());
             } else {
                 outStream.println(REST_ENDPOINT_PREFIX + this.toString() + ") started");
             }
 
             // Find out how long is left to wait
-            long timeRemaining = parameters.getTimeToLive();
+            long timeRemaining = parameters.get().getTimeToLive();
             while (timeRemaining == ApexEditorParameters.INFINITY_TIME_TO_LIVE || timeRemaining > 0) {
                 // decrement the time to live in the non-infinity case
                 if (timeRemaining > 0) {
@@ -185,7 +187,7 @@ public class ApexEditorMain {
      * @return the parameters
      */
     public static ApexEditorParameters getParameters() {
-        return parameters;
+        return parameters.get();
     }
 
     /**
index abf81b8..2b29367 100644 (file)
@@ -2,6 +2,7 @@
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2018 Ericsson. All rights reserved.
  *  Modifications Copyright (C) 2020 Nordix Foundation.
+ *  Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -114,7 +115,7 @@ public class ContextAlbumHandler implements RestCommandHandler {
 
         session.finishSession(result.isOk());
 
-        LOGGER.exit("ContextAlbum/Create" + (result != null && result.isOk() ? OK : NOT_OK));
+        LOGGER.exit("ContextAlbum/Create" + (result.isOk() ? OK : NOT_OK));
         return result;
     }
 
@@ -142,7 +143,7 @@ public class ContextAlbumHandler implements RestCommandHandler {
 
         session.finishSession(result.isOk());
 
-        LOGGER.exit("ContextAlbum/Update" + (result != null && result.isOk() ? OK : NOT_OK));
+        LOGGER.exit("ContextAlbum/Update" + (result.isOk() ? OK : NOT_OK));
         return result;
     }
 
@@ -191,7 +192,7 @@ public class ContextAlbumHandler implements RestCommandHandler {
 
         session.finishSession(result.isOk());
 
-        LOGGER.exit("ContextAlbum/Delete" + (result != null && result.isOk() ? OK : NOT_OK));
+        LOGGER.exit("ContextAlbum/Delete" + (result.isOk() ? OK : NOT_OK));
         return result;
     }
 
index 65aa2fd..a9b856d 100644 (file)
@@ -2,6 +2,7 @@
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2018 Ericsson. All rights reserved.
  *  Modifications Copyright (C) 2020 Nordix Foundation.
+ *  Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -107,7 +108,7 @@ public class ContextSchemaHandler implements RestCommandHandler {
 
         session.finishSession(result.isOk());
 
-        LOGGER.exit("ContextSchema/create" + (result != null && result.isOk() ? OK : NOT_OK));
+        LOGGER.exit("ContextSchema/create" + (result.isOk() ? OK : NOT_OK));
         return result;
     }
 
@@ -131,7 +132,7 @@ public class ContextSchemaHandler implements RestCommandHandler {
 
         session.finishSession(result.isOk());
 
-        LOGGER.exit("ContextSchema/Update" + (result != null && result.isOk() ? OK : NOT_OK));
+        LOGGER.exit("ContextSchema/Update" + (result.isOk() ? OK : NOT_OK));
         return result;
     }
 
@@ -169,7 +170,7 @@ public class ContextSchemaHandler implements RestCommandHandler {
 
         session.finishSession(result.isOk());
 
-        LOGGER.exit("ContextSchema/Delete" + (result != null && result.isOk() ? OK : NOT_OK));
+        LOGGER.exit("ContextSchema/Delete" + (result.isOk() ? OK : NOT_OK));
         return result;
     }
 
index a1e2ff9..debf99a 100644 (file)
@@ -2,6 +2,7 @@
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2018 Ericsson. All rights reserved.
  *  Modifications Copyright (C) 2019-2020 Nordix Foundation.
+ *  Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -119,7 +120,7 @@ public class EventHandler implements RestCommandHandler {
 
         session.finishSession(result.isOk());
 
-        LOGGER.exit("Event/Create" + (result != null && result.isOk() ? OK : NOT_OK));
+        LOGGER.exit("Event/Create" + (result.isOk() ? OK : NOT_OK));
         return result;
     }
 
@@ -199,7 +200,7 @@ public class EventHandler implements RestCommandHandler {
 
         session.finishSession(result.isOk());
 
-        LOGGER.exit("Event/Update" + (result != null && result.isOk() ? OK : NOT_OK));
+        LOGGER.exit("Event/Update" + (result.isOk() ? OK : NOT_OK));
         return result;
     }
 
@@ -248,7 +249,7 @@ public class EventHandler implements RestCommandHandler {
 
         session.finishSession(result.isOk());
 
-        LOGGER.exit("Event/Delete" + (result != null && result.isOk() ? OK : NOT_OK));
+        LOGGER.exit("Event/Delete" + (result.isOk() ? OK : NOT_OK));
         return result;
     }
 
index 19130aa..0ceee17 100644 (file)
@@ -2,6 +2,7 @@
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2018 Ericsson. All rights reserved.
  *  Modifications Copyright (C) 2020 Nordix Foundation.
+ *  Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -130,7 +131,7 @@ public class PolicyHandler implements RestCommandHandler {
 
         session.finishSession(result.isOk());
 
-        LOGGER.exit("Policy/Create" + (result != null && result.isOk() ? OK : NOT_OK));
+        LOGGER.exit("Policy/Create" + (result.isOk() ? OK : NOT_OK));
         return result;
     }
 
@@ -528,7 +529,7 @@ public class PolicyHandler implements RestCommandHandler {
 
         session.finishSession(result.isOk());
 
-        LOGGER.exit("Policy/Update" + (result != null && result.isOk() ? OK : NOT_OK));
+        LOGGER.exit("Policy/Update" + (result.isOk() ? OK : NOT_OK));
         return result;
 
     }
@@ -582,7 +583,7 @@ public class PolicyHandler implements RestCommandHandler {
 
         session.finishSession(result.isOk());
 
-        LOGGER.exit("Policy/Delete" + (result != null && result.isOk() ? OK : NOT_OK));
+        LOGGER.exit("Policy/Delete" + (result.isOk() ? OK : NOT_OK));
         return result;
     }
 
index 819657f..0151aa5 100644 (file)
@@ -2,6 +2,7 @@
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2016-2018 Ericsson. All rights reserved.
  *  Modifications Copyright (C) 2020 Nordix Foundation.
+ *  Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -53,7 +54,7 @@ public abstract class RestUtils {
      * starts with some kind of bracket [ or ( or {, then has something, then has
      * bracket.
      */
-    private static final String JSON_INPUT_TYPE_REGEXP = "^\\s*[\\(\\{\\[][\\s+\\S]*[\\)\\}\\]]";
+    private static final String JSON_INPUT_TYPE_REGEXP = "^\\s*[\\(\\{\\[][\\s\\S]*[\\)\\}\\]]";
 
     /**
      * Constructor, block inheritance.
index 8a52a03..a5dd4cd 100644 (file)
@@ -2,6 +2,7 @@
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2018 Ericsson. All rights reserved.
  *  Modifications Copyright (C) 2020 Nordix Foundation.
+ *  Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -123,7 +124,7 @@ public class TaskHandler implements RestCommandHandler {
 
         session.finishSession(result.isOk());
 
-        LOGGER.exit("Task/Create" + (result != null && result.isOk() ? OK : NOT_OK));
+        LOGGER.exit("Task/Create" + (result.isOk() ? OK : NOT_OK));
         return result;
     }
 
@@ -387,7 +388,7 @@ public class TaskHandler implements RestCommandHandler {
 
         session.finishSession(result.isOk());
 
-        LOGGER.exit("Task/Update" + (result != null && result.isOk() ? OK : NOT_OK));
+        LOGGER.exit("Task/Update" + (result.isOk() ? OK : NOT_OK));
         return result;
     }
 
@@ -440,7 +441,7 @@ public class TaskHandler implements RestCommandHandler {
 
         session.finishSession(result.isOk());
 
-        LOGGER.exit("Task/Delete" + (result != null && result.isOk() ? OK : NOT_OK));
+        LOGGER.exit("Task/Delete" + (result.isOk() ? OK : NOT_OK));
         return result;
     }
 
index bec3fcd..35987d5 100644 (file)
@@ -2,6 +2,7 @@
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2016-2018 Ericsson. All rights reserved.
  *  Modifications Copyright (C) 2020 Nordix Foundation.
+ *  Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 package org.onap.policy.gui.editors.apex.rest.handling.bean;
 
 import javax.xml.bind.annotation.XmlType;
+import lombok.Getter;
+import lombok.ToString;
 
 /**
  * The ContextSchema Bean.
  */
 @XmlType
+@Getter
+@ToString
 public class BeanContextSchema extends BeanBase {
     private String name = null;
     private String version = null;
@@ -34,67 +39,4 @@ public class BeanContextSchema extends BeanBase {
     private String schemaDefinition = null;
     private String uuid = null;
     private String description = null;
-
-    /**
-     * Gets the name.
-     *
-     * @return the name
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Gets the version.
-     *
-     * @return the version
-     */
-    public String getVersion() {
-        return version;
-    }
-
-    /**
-     * Gets the uuid.
-     *
-     * @return the uuid
-     */
-    public String getUuid() {
-        return uuid;
-    }
-
-    /**
-     * Gets the description.
-     *
-     * @return the description
-     */
-    public String getDescription() {
-        return description;
-    }
-
-    /**
-     * Gets the schema flavour.
-     *
-     * @return the schema flavour
-     */
-    public String getSchemaFlavour() {
-        return schemaFlavour;
-    }
-
-    /**
-     * Gets the schema definition.
-     *
-     * @return the schema definition
-     */
-    public String getSchemaDefinition() {
-        return schemaDefinition;
-    }
-
-    /**
-     * {@inheritDoc}.
-     */
-    @Override
-    public String toString() {
-        return "ContextSchema [name=" + name + ", version=" + version + ", schemaFlavour=" + schemaFlavour
-            + ", schemaDefinition=" + schemaDefinition + ", uuid=" + uuid + ", description=" + description + "]";
-    }
 }
index fdb3c9b..859a841 100644 (file)
@@ -2,6 +2,7 @@
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2016-2018 Ericsson. All rights reserved.
  *  Modifications Copyright (C) 2020 Nordix Foundation.
+ *  Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 package org.onap.policy.gui.editors.apex.rest.handling.bean;
 
 import javax.xml.bind.annotation.XmlType;
+import lombok.Getter;
+import lombok.ToString;
 
 /**
  * The Model Bean.
  */
 @XmlType
+@Getter
+@ToString
 public class BeanModel extends BeanBase {
 
     private String name = null;
     private String version = null;
     private String uuid = null;
     private String description = null;
-
-    /**
-     * Gets the name.
-     *
-     * @return the name
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Gets the version.
-     *
-     * @return the version
-     */
-    public String getVersion() {
-        return version;
-    }
-
-    /**
-     * Gets the uuid.
-     *
-     * @return the uuid
-     */
-    public String getUuid() {
-        return uuid;
-    }
-
-    /**
-     * Gets the description.
-     *
-     * @return the description
-     */
-    public String getDescription() {
-        return description;
-    }
-
-    /**
-     * {@inheritDoc}.
-     */
-    @Override
-    public String toString() {
-        return "Model [name=" + name + ", version=" + version + ", uuid=" + uuid + ", description=" + description + "]";
-    }
-
 }
index 34b2901..2a2355e 100644 (file)
@@ -1,6 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2020 Nordix Foundation.
+ *  Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -55,7 +56,9 @@ public class PdpMonitoringMain {
     // The Pdp Monitoring services this class is running
     private PdpMonitoringServer pdpMonitoringServer = null;
 
-    private CountDownLatch countDownLatch = new CountDownLatch(1);
+    private CountDownLatch startedLatch = new CountDownLatch(1);
+
+    private CountDownLatch shutdownLatch = new CountDownLatch(1);
 
     /**
      * Constructor, kicks off the GUI service.
@@ -113,21 +116,35 @@ public class PdpMonitoringMain {
                 LOGGER.info(PDP_MONITORING_PREFIX + "{}) started", this);
             }
 
+            startedLatch.countDown();
+
             // Find out how long is left to wait
             long timeRemaining = parameters.getTimeToLive();
             if (timeRemaining >= 0) {
-                countDownLatch.await(timeRemaining, TimeUnit.SECONDS);
+                shutdownLatch.await(timeRemaining, TimeUnit.SECONDS);
             } else {
-                countDownLatch.await();
+                shutdownLatch.await();
             }
         } catch (final Exception e) {
-            LOGGER.warn(this + " failed with error", e);
+            LOGGER.warn("{} failed with error", this, e);
         } finally {
             shutdown();
         }
 
     }
 
+    /**
+     * Waits for the service to enter the running state.
+     *
+     * @param timeout time to wait
+     * @param unit time units
+     * @return {@code true} if the service started within the specified time
+     * @throws InterruptedException if an interrupt occurs
+     */
+    protected boolean awaitStart(long timeout, TimeUnit unit) throws InterruptedException {
+        return startedLatch.await(timeout, unit);
+    }
+
     /**
      * Explicitly shut down the services.
      */
@@ -136,7 +153,7 @@ public class PdpMonitoringMain {
             LOGGER.info(PDP_MONITORING_PREFIX + "{}) shutting down", this);
             pdpMonitoringServer.shutdown(parameters.getPort(), parameters.getDefaultRestPort());
         }
-        countDownLatch.countDown();
+        shutdownLatch.countDown();
         state = ServicesState.STOPPED;
         LOGGER.info(PDP_MONITORING_PREFIX + "{}) shutting down", this);
     }
index 6421b01..b680cac 100644 (file)
@@ -1,6 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2020 Nordix Foundation.
+ *  Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -150,9 +151,18 @@ public class MonitoringMainTest {
 
         try {
             monThread.start();
-            Thread.sleep(2000);
+            /*
+             * For some reason, getResource("webapp") returns null to PdpMonitoringServer,
+             * which results in an NPE, thus the server never gets started (in ANY of
+             * these test cases). Therefore, commented out the code that waits for it to
+             * start.
+             */
+            // assertThat(monRestMain.awaitStart(5, TimeUnit.SECONDS)).isTrue();
             monRestMain.shutdown();
+            monThread.join(5000);
+            assertThat(monThread.isAlive()).isFalse();
         } catch (Exception ex) {
+            monRestMain.shutdown();
             fail("test should not throw an exception");
         }
     }