Skip to content

Commit 3cf2b34

Browse files
committed
Hexagonal pattern: Improve connection properties handling
1 parent 27e8cb7 commit 3cf2b34

File tree

7 files changed

+25
-43
lines changed

7 files changed

+25
-43
lines changed

hexagonal/src/main/java/com/iluwatar/hexagonal/administration/ConsoleAdministration.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import com.iluwatar.hexagonal.domain.LotteryNumbers;
2929
import com.iluwatar.hexagonal.domain.LotteryService;
3030
import com.iluwatar.hexagonal.module.LotteryModule;
31+
import com.iluwatar.hexagonal.mongo.MongoConnectionPropertiesLoader;
3132
import com.iluwatar.hexagonal.sampledata.SampleData;
3233

3334
import java.util.Scanner;
@@ -41,6 +42,7 @@ public class ConsoleAdministration {
4142
* Program entry point
4243
*/
4344
public static void main(String[] args) {
45+
MongoConnectionPropertiesLoader.load();
4446
Injector injector = Guice.createInjector(new LotteryModule());
4547
LotteryAdministration administartion = injector.getInstance(LotteryAdministration.class);
4648
LotteryService service = injector.getInstance(LotteryService.class);

hexagonal/src/main/java/com/iluwatar/hexagonal/banking/MongoBank.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
*/
2323
package com.iluwatar.hexagonal.banking;
2424

25-
import com.iluwatar.hexagonal.mongo.MongoConnectionProperties;
2625
import com.mongodb.MongoClient;
2726
import com.mongodb.client.MongoCollection;
2827
import com.mongodb.client.MongoDatabase;
@@ -71,8 +70,8 @@ public void connect(String dbName, String accountsCollectionName) {
7170
if (mongoClient != null) {
7271
mongoClient.close();
7372
}
74-
MongoConnectionProperties properties = new MongoConnectionProperties().load();
75-
mongoClient = new MongoClient(properties.getHost(), properties.getPort());
73+
mongoClient = new MongoClient(System.getProperty("mongo-host"),
74+
Integer.parseInt(System.getProperty("mongo-port")));
7675
database = mongoClient.getDatabase(dbName);
7776
accountsCollection = database.getCollection(accountsCollectionName);
7877
}

hexagonal/src/main/java/com/iluwatar/hexagonal/database/MongoTicketRepository.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import com.iluwatar.hexagonal.domain.LotteryTicket;
2727
import com.iluwatar.hexagonal.domain.LotteryTicketId;
2828
import com.iluwatar.hexagonal.domain.PlayerDetails;
29-
import com.iluwatar.hexagonal.mongo.MongoConnectionProperties;
3029
import com.mongodb.MongoClient;
3130
import com.mongodb.client.MongoCollection;
3231
import com.mongodb.client.MongoDatabase;
@@ -83,8 +82,8 @@ public void connect(String dbName, String ticketsCollectionName,
8382
if (mongoClient != null) {
8483
mongoClient.close();
8584
}
86-
MongoConnectionProperties properties = new MongoConnectionProperties().load();
87-
mongoClient = new MongoClient(properties.getHost(), properties.getPort());
85+
mongoClient = new MongoClient(System.getProperty("mongo-host"),
86+
Integer.parseInt(System.getProperty("mongo-port")));
8887
database = mongoClient.getDatabase(dbName);
8988
ticketsCollection = database.getCollection(ticketsCollectionName);
9089
countersCollection = database.getCollection(countersCollectionName);

hexagonal/src/main/java/com/iluwatar/hexagonal/mongo/MongoConnectionProperties.java renamed to hexagonal/src/main/java/com/iluwatar/hexagonal/mongo/MongoConnectionPropertiesLoader.java

Lines changed: 9 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -26,55 +26,33 @@
2626
import java.util.Properties;
2727

2828
/**
29-
* Mongo connection properties
29+
* Mongo connection properties loader
3030
*/
31-
public class MongoConnectionProperties {
31+
public class MongoConnectionPropertiesLoader {
3232

3333
private static final String DEFAULT_HOST = "localhost";
3434
private static final int DEFAULT_PORT = 27017;
3535

36-
private String host;
37-
private int port;
38-
39-
/**
40-
* Constructor
41-
*/
42-
public MongoConnectionProperties() {
43-
this.host = DEFAULT_HOST;
44-
this.port = DEFAULT_PORT;
45-
}
46-
47-
/**
48-
* @return host name
49-
*/
50-
public String getHost() {
51-
return host;
52-
}
53-
54-
/**
55-
* @return port number
56-
*/
57-
public int getPort() {
58-
return port;
59-
}
60-
6136
/**
6237
* Try to load connection properties from file.
6338
* Fall back to default connection properties.
6439
*/
65-
public MongoConnectionProperties load() {
40+
public static void load() {
41+
String host = DEFAULT_HOST;
42+
int port = DEFAULT_PORT;
6643
String path = System.getProperty("hexagonal.properties.path");
6744
Properties properties = new Properties();
6845
if (path != null) {
6946
try (FileInputStream fin = new FileInputStream(path)) {
7047
properties.load(fin);
71-
this.host = properties.getProperty("host");
72-
this.port = Integer.parseInt(properties.getProperty("port"));
48+
host = properties.getProperty("mongo-host");
49+
port = Integer.parseInt(properties.getProperty("mongo-port"));
7350
} catch (Exception e) {
7451
// error occurred, use default properties
7552
e.printStackTrace();
7653
}
7754
}
78-
return this;
55+
System.setProperty("mongo-host", host);
56+
System.setProperty("mongo-port", String.format("%d", port));
7957
}
8058
}

hexagonal/src/main/java/com/iluwatar/hexagonal/service/ConsoleLottery.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import com.iluwatar.hexagonal.domain.LotteryTicketId;
3333
import com.iluwatar.hexagonal.domain.PlayerDetails;
3434
import com.iluwatar.hexagonal.module.LotteryModule;
35+
import com.iluwatar.hexagonal.mongo.MongoConnectionPropertiesLoader;
3536

3637
import java.util.HashSet;
3738
import java.util.Optional;
@@ -48,6 +49,7 @@ public class ConsoleLottery {
4849
* Program entry point
4950
*/
5051
public static void main(String[] args) {
52+
MongoConnectionPropertiesLoader.load();
5153
Injector injector = Guice.createInjector(new LotteryModule());
5254
LotteryService service = injector.getInstance(LotteryService.class);
5355
WireTransfers bank = injector.getInstance(WireTransfers.class);

hexagonal/src/test/java/com/iluwatar/hexagonal/banking/MongoBankTest.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
*/
2323
package com.iluwatar.hexagonal.banking;
2424

25-
import com.iluwatar.hexagonal.mongo.MongoConnectionProperties;
25+
import com.iluwatar.hexagonal.mongo.MongoConnectionPropertiesLoader;
2626
import com.mongodb.MongoClient;
2727
import org.junit.Before;
2828
import org.junit.Ignore;
@@ -43,8 +43,9 @@ public class MongoBankTest {
4343

4444
@Before
4545
public void init() {
46-
MongoConnectionProperties properties = new MongoConnectionProperties().load();
47-
MongoClient mongoClient = new MongoClient(properties.getHost(), properties.getPort());
46+
MongoConnectionPropertiesLoader.load();
47+
MongoClient mongoClient = new MongoClient(System.getProperty("mongo-host"),
48+
Integer.parseInt(System.getProperty("mongo-port")));
4849
mongoClient.dropDatabase(TEST_DB);
4950
mongoClient.close();
5051
mongoBank = new MongoBank(TEST_DB, TEST_ACCOUNTS_COLLECTION);

hexagonal/src/test/java/com/iluwatar/hexagonal/database/MongoTicketRepositoryTest.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import com.iluwatar.hexagonal.domain.LotteryTicket;
2727
import com.iluwatar.hexagonal.domain.LotteryTicketId;
2828
import com.iluwatar.hexagonal.domain.PlayerDetails;
29-
import com.iluwatar.hexagonal.mongo.MongoConnectionProperties;
29+
import com.iluwatar.hexagonal.mongo.MongoConnectionPropertiesLoader;
3030
import com.mongodb.MongoClient;
3131
import org.junit.Before;
3232
import org.junit.Ignore;
@@ -51,8 +51,9 @@ public class MongoTicketRepositoryTest {
5151

5252
@Before
5353
public void init() {
54-
MongoConnectionProperties properties = new MongoConnectionProperties().load();
55-
MongoClient mongoClient = new MongoClient(properties.getHost(), properties.getPort());
54+
MongoConnectionPropertiesLoader.load();
55+
MongoClient mongoClient = new MongoClient(System.getProperty("mongo-host"),
56+
Integer.parseInt(System.getProperty("mongo-port")));
5657
mongoClient.dropDatabase(TEST_DB);
5758
mongoClient.close();
5859
repository = new MongoTicketRepository(TEST_DB, TEST_TICKETS_COLLECTION,

0 commit comments

Comments
 (0)