changeset 283:52ee8129e08b

Fix code violations pointed out by PMD plugin Reviewed-by: jerboaa Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2017-October/025335.html
author Miloslav Zezulka <mzezulka@redhat.com>
date Mon, 09 Oct 2017 15:05:27 +0200
parents ca400f9fdbde
children b7ec1ed8117b
files common/mongodb/src/main/java/com/redhat/thermostat/gateway/common/mongodb/ThermostatMongoStorage.java tests/test-utils/src/main/java/com/redhat/thermostat/gateway/tests/utils/MongodTestUtil.java
diffstat 2 files changed, 26 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/common/mongodb/src/main/java/com/redhat/thermostat/gateway/common/mongodb/ThermostatMongoStorage.java	Wed Oct 18 13:50:21 2017 -0400
+++ b/common/mongodb/src/main/java/com/redhat/thermostat/gateway/common/mongodb/ThermostatMongoStorage.java	Mon Oct 09 15:05:27 2017 +0200
@@ -33,11 +33,11 @@
  * library, but you are not obligated to do so.  If you do not wish
  * to do so, delete this exception statement from your version.
  */
-
 package com.redhat.thermostat.gateway.common.mongodb;
 
 import java.net.URI;
 import java.net.URISyntaxException;
+
 import java.util.Collections;
 import java.util.Map;
 import java.util.logging.Level;
@@ -49,22 +49,42 @@
 import com.mongodb.ServerAddress;
 import com.mongodb.client.MongoDatabase;
 import com.redhat.thermostat.gateway.common.mongodb.configuration.MongoConfiguration;
+import com.redhat.thermostat.gateway.common.core.config.IllegalConfigurationException;
+import com.redhat.thermostat.gateway.common.util.LoggingUtil;
 
 public class ThermostatMongoStorage {
 
     private static final String DEFAULT_DB_NAME = "thermostat";
+    private static final Logger LOG = LoggingUtil.getLogger(ThermostatMongoStorage.class);
 
     private final MongoClient mongoClient;
     private final String dbName;
+    private static final int UNSET_PORT = -1;
 
     public ThermostatMongoStorage(Map<String, String> mongoConfiguration) {
         String username = null;
         char[] password = null;
-        String host = "127.0.0.1";
+        String host = null;
         int port = 27518;
         int timeout = 1000;
         String dbName = DEFAULT_DB_NAME;
 
+        if (mongoConfiguration.containsKey(MongoConfiguration.MONGO_URL.toString())) {
+            URI url = null;
+            try {
+                url = new URI(mongoConfiguration.get(MongoConfiguration.MONGO_URL.toString()));
+                host = url.getHost();
+                port = url.getPort();
+            } catch (URISyntaxException e) {
+                LOG.log(Level.SEVERE, "Failed to parse mongo configuration URL: " + url);
+            }
+        }
+        if (host == null) {
+            throw new IllegalConfigurationException("Host name of the mongodb database server must be specified.");
+        }
+        if (port == UNSET_PORT) {
+            throw new IllegalConfigurationException("Port of the mongodb database sever must be specified.");
+        }
         if (mongoConfiguration.containsKey(MongoConfiguration.MONGO_DB.toString())) {
             dbName = mongoConfiguration.get(MongoConfiguration.MONGO_DB.toString());
         }
@@ -74,15 +94,6 @@
         if (mongoConfiguration.containsKey(MongoConfiguration.MONGO_PASSWORD.toString())) {
             password = mongoConfiguration.get(MongoConfiguration.MONGO_PASSWORD.toString()).toCharArray();
         }
-        if (mongoConfiguration.containsKey(MongoConfiguration.MONGO_URL.toString())) {
-            try {
-                URI url = new URI(mongoConfiguration.get(MongoConfiguration.MONGO_URL.toString()));
-                host = url.getHost();
-                port = url.getPort();
-            } catch (URISyntaxException e) {
-                // Do nothing. Defaults will be used.
-            }
-        }
         if (mongoConfiguration.containsKey(MongoConfiguration.MONGO_SERVER_TIMEOUT.toString())) {
             timeout = Integer.valueOf(mongoConfiguration.get(MongoConfiguration.MONGO_SERVER_TIMEOUT.toString()));
         }
@@ -116,4 +127,4 @@
     public MongoDatabase getDatabase() {
         return mongoClient.getDatabase(dbName);
     }
-}
\ No newline at end of file
+}
--- a/tests/test-utils/src/main/java/com/redhat/thermostat/gateway/tests/utils/MongodTestUtil.java	Wed Oct 18 13:50:21 2017 -0400
+++ b/tests/test-utils/src/main/java/com/redhat/thermostat/gateway/tests/utils/MongodTestUtil.java	Mon Oct 09 15:05:27 2017 +0200
@@ -56,6 +56,9 @@
 import java.net.SocketAddress;
 import java.net.InetSocketAddress;
 
+// Please see http://pmd.sourceforge.net/pmd-5.0.5/rules/java/basic.html#AvoidUsingHardCodedIP 
+// and https://pmd.github.io/pmd-5.8.1/usage/suppressing.html for more information
+@SuppressWarnings("PMD.AvoidUsingHardCodedIP")
 public class MongodTestUtil {
 
     private static final int WAIT_FOR_MAX_ITERATIONS = 100;