Hexagonal pattern: Improve connection properties handling
This commit is contained in:
parent
27e8cb7f2d
commit
3cf2b34d2a
@ -28,6 +28,7 @@ import com.iluwatar.hexagonal.domain.LotteryAdministration;
|
||||
import com.iluwatar.hexagonal.domain.LotteryNumbers;
|
||||
import com.iluwatar.hexagonal.domain.LotteryService;
|
||||
import com.iluwatar.hexagonal.module.LotteryModule;
|
||||
import com.iluwatar.hexagonal.mongo.MongoConnectionPropertiesLoader;
|
||||
import com.iluwatar.hexagonal.sampledata.SampleData;
|
||||
|
||||
import java.util.Scanner;
|
||||
@ -41,6 +42,7 @@ public class ConsoleAdministration {
|
||||
* Program entry point
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
MongoConnectionPropertiesLoader.load();
|
||||
Injector injector = Guice.createInjector(new LotteryModule());
|
||||
LotteryAdministration administartion = injector.getInstance(LotteryAdministration.class);
|
||||
LotteryService service = injector.getInstance(LotteryService.class);
|
||||
|
@ -22,7 +22,6 @@
|
||||
*/
|
||||
package com.iluwatar.hexagonal.banking;
|
||||
|
||||
import com.iluwatar.hexagonal.mongo.MongoConnectionProperties;
|
||||
import com.mongodb.MongoClient;
|
||||
import com.mongodb.client.MongoCollection;
|
||||
import com.mongodb.client.MongoDatabase;
|
||||
@ -71,8 +70,8 @@ public class MongoBank implements WireTransfers {
|
||||
if (mongoClient != null) {
|
||||
mongoClient.close();
|
||||
}
|
||||
MongoConnectionProperties properties = new MongoConnectionProperties().load();
|
||||
mongoClient = new MongoClient(properties.getHost(), properties.getPort());
|
||||
mongoClient = new MongoClient(System.getProperty("mongo-host"),
|
||||
Integer.parseInt(System.getProperty("mongo-port")));
|
||||
database = mongoClient.getDatabase(dbName);
|
||||
accountsCollection = database.getCollection(accountsCollectionName);
|
||||
}
|
||||
|
@ -26,7 +26,6 @@ import com.iluwatar.hexagonal.domain.LotteryNumbers;
|
||||
import com.iluwatar.hexagonal.domain.LotteryTicket;
|
||||
import com.iluwatar.hexagonal.domain.LotteryTicketId;
|
||||
import com.iluwatar.hexagonal.domain.PlayerDetails;
|
||||
import com.iluwatar.hexagonal.mongo.MongoConnectionProperties;
|
||||
import com.mongodb.MongoClient;
|
||||
import com.mongodb.client.MongoCollection;
|
||||
import com.mongodb.client.MongoDatabase;
|
||||
@ -83,8 +82,8 @@ public class MongoTicketRepository implements LotteryTicketRepository {
|
||||
if (mongoClient != null) {
|
||||
mongoClient.close();
|
||||
}
|
||||
MongoConnectionProperties properties = new MongoConnectionProperties().load();
|
||||
mongoClient = new MongoClient(properties.getHost(), properties.getPort());
|
||||
mongoClient = new MongoClient(System.getProperty("mongo-host"),
|
||||
Integer.parseInt(System.getProperty("mongo-port")));
|
||||
database = mongoClient.getDatabase(dbName);
|
||||
ticketsCollection = database.getCollection(ticketsCollectionName);
|
||||
countersCollection = database.getCollection(countersCollectionName);
|
||||
|
@ -26,55 +26,33 @@ import java.io.FileInputStream;
|
||||
import java.util.Properties;
|
||||
|
||||
/**
|
||||
* Mongo connection properties
|
||||
* Mongo connection properties loader
|
||||
*/
|
||||
public class MongoConnectionProperties {
|
||||
public class MongoConnectionPropertiesLoader {
|
||||
|
||||
private static final String DEFAULT_HOST = "localhost";
|
||||
private static final int DEFAULT_PORT = 27017;
|
||||
|
||||
private String host;
|
||||
private int port;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public MongoConnectionProperties() {
|
||||
this.host = DEFAULT_HOST;
|
||||
this.port = DEFAULT_PORT;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return host name
|
||||
*/
|
||||
public String getHost() {
|
||||
return host;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return port number
|
||||
*/
|
||||
public int getPort() {
|
||||
return port;
|
||||
}
|
||||
|
||||
/**
|
||||
* Try to load connection properties from file.
|
||||
* Fall back to default connection properties.
|
||||
*/
|
||||
public MongoConnectionProperties load() {
|
||||
public static void load() {
|
||||
String host = DEFAULT_HOST;
|
||||
int port = DEFAULT_PORT;
|
||||
String path = System.getProperty("hexagonal.properties.path");
|
||||
Properties properties = new Properties();
|
||||
if (path != null) {
|
||||
try (FileInputStream fin = new FileInputStream(path)) {
|
||||
properties.load(fin);
|
||||
this.host = properties.getProperty("host");
|
||||
this.port = Integer.parseInt(properties.getProperty("port"));
|
||||
host = properties.getProperty("mongo-host");
|
||||
port = Integer.parseInt(properties.getProperty("mongo-port"));
|
||||
} catch (Exception e) {
|
||||
// error occurred, use default properties
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return this;
|
||||
System.setProperty("mongo-host", host);
|
||||
System.setProperty("mongo-port", String.format("%d", port));
|
||||
}
|
||||
}
|
@ -32,6 +32,7 @@ import com.iluwatar.hexagonal.domain.LotteryTicketCheckResult;
|
||||
import com.iluwatar.hexagonal.domain.LotteryTicketId;
|
||||
import com.iluwatar.hexagonal.domain.PlayerDetails;
|
||||
import com.iluwatar.hexagonal.module.LotteryModule;
|
||||
import com.iluwatar.hexagonal.mongo.MongoConnectionPropertiesLoader;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Optional;
|
||||
@ -48,6 +49,7 @@ public class ConsoleLottery {
|
||||
* Program entry point
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
MongoConnectionPropertiesLoader.load();
|
||||
Injector injector = Guice.createInjector(new LotteryModule());
|
||||
LotteryService service = injector.getInstance(LotteryService.class);
|
||||
WireTransfers bank = injector.getInstance(WireTransfers.class);
|
||||
|
@ -22,7 +22,7 @@
|
||||
*/
|
||||
package com.iluwatar.hexagonal.banking;
|
||||
|
||||
import com.iluwatar.hexagonal.mongo.MongoConnectionProperties;
|
||||
import com.iluwatar.hexagonal.mongo.MongoConnectionPropertiesLoader;
|
||||
import com.mongodb.MongoClient;
|
||||
import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
@ -43,8 +43,9 @@ public class MongoBankTest {
|
||||
|
||||
@Before
|
||||
public void init() {
|
||||
MongoConnectionProperties properties = new MongoConnectionProperties().load();
|
||||
MongoClient mongoClient = new MongoClient(properties.getHost(), properties.getPort());
|
||||
MongoConnectionPropertiesLoader.load();
|
||||
MongoClient mongoClient = new MongoClient(System.getProperty("mongo-host"),
|
||||
Integer.parseInt(System.getProperty("mongo-port")));
|
||||
mongoClient.dropDatabase(TEST_DB);
|
||||
mongoClient.close();
|
||||
mongoBank = new MongoBank(TEST_DB, TEST_ACCOUNTS_COLLECTION);
|
||||
|
@ -26,7 +26,7 @@ import com.iluwatar.hexagonal.domain.LotteryNumbers;
|
||||
import com.iluwatar.hexagonal.domain.LotteryTicket;
|
||||
import com.iluwatar.hexagonal.domain.LotteryTicketId;
|
||||
import com.iluwatar.hexagonal.domain.PlayerDetails;
|
||||
import com.iluwatar.hexagonal.mongo.MongoConnectionProperties;
|
||||
import com.iluwatar.hexagonal.mongo.MongoConnectionPropertiesLoader;
|
||||
import com.mongodb.MongoClient;
|
||||
import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
@ -51,8 +51,9 @@ public class MongoTicketRepositoryTest {
|
||||
|
||||
@Before
|
||||
public void init() {
|
||||
MongoConnectionProperties properties = new MongoConnectionProperties().load();
|
||||
MongoClient mongoClient = new MongoClient(properties.getHost(), properties.getPort());
|
||||
MongoConnectionPropertiesLoader.load();
|
||||
MongoClient mongoClient = new MongoClient(System.getProperty("mongo-host"),
|
||||
Integer.parseInt(System.getProperty("mongo-port")));
|
||||
mongoClient.dropDatabase(TEST_DB);
|
||||
mongoClient.close();
|
||||
repository = new MongoTicketRepository(TEST_DB, TEST_TICKETS_COLLECTION,
|
||||
|
Loading…
x
Reference in New Issue
Block a user