# HG changeset patch # User Miloslav Zezulka # Date 1507554327 -7200 # Node ID 52ee8129e08b5268fe4478d7259779afb2642964 # Parent ca400f9fdbde48038d9ce59093fb978c8fdb1ac5 Fix code violations pointed out by PMD plugin Reviewed-by: jerboaa Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2017-October/025335.html diff -r ca400f9fdbde -r 52ee8129e08b common/mongodb/src/main/java/com/redhat/thermostat/gateway/common/mongodb/ThermostatMongoStorage.java --- 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 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 +} diff -r ca400f9fdbde -r 52ee8129e08b tests/test-utils/src/main/java/com/redhat/thermostat/gateway/tests/utils/MongodTestUtil.java --- 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;