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