Is below code a valid Singleton design pattern for Mongodb in Java?
Please suggest any improvements.
public class Mongo extends MongoClient {
private static Mongo mongoClient = null;
private static MongoDatabase mogoDB = null;
private Mongo(ServerAddress server, List<MongoCredential> mongoCredentialList) {
super(server, mongoCredentialList);
}
public static Mongo getMongoClient() {
return getMongoClient("userName", "password", "127.0.0.1", 27017, "SampleDB");
}
public static Mongo getMongoClient(String userName, String pwd, String ip, int port, String dbName) {
if (mongoClient == null) {
logger.debug("******* Trying to connect to Mongo Server *******");
ServerAddress server = new ServerAddress(ip, port);
List<MongoCredential> mongoCredentialList = new ArrayList();
char[] password = pwd.toCharArray();
mongoCredentialList.add(MongoCredential.createCredential(userName, dbName, password));
mongoClient = new Mongo(server, mongoCredentialList);
logger.debug("******* Connected to the Mongo server Successfully *******");
} else {
logger.debug("Already connected to Mongo server...");
}
return mongoClient;
}
public static MongoDatabase getMongoDatabase() {
if (mogoDB == null) {
logger.debug("******* Trying to get Mongo DB - SampleDB - connection. *******");
mogoDB = getMongoClient().getDatabase("SampleDB");
logger.debug("******* Successfully Connected to - SampleDB - Mongo DB *******");
}
return mogoDB;
}
public static MongoDatabase getMongoDatabase(String dbName) {
if (mogoDB == null) {
logger.debug("******* Trying to get Mongo DB - " + dbName + " - connection. *******");
mogoDB = getMongoClient().getDatabase(dbName);
logger.debug("******* Successfully Connected to - " + dbName + " - Mongo DB *******");
}
return mogoDB;
}
}