Skip to content

Commit 2284a51

Browse files
author
Mark Pollack
committed
DATADOC-88 - Create MongoDbFactory to consolidate DB, Server location, and user credentials into one location
1 parent 46e2cf6 commit 2284a51

File tree

9 files changed

+128
-221
lines changed

9 files changed

+128
-221
lines changed

spring-data-mongodb-cross-store/src/test/resources/META-INF/spring/applicationContext.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
<property name="port" value="27017"/>
2626
</bean>
2727

28-
<bean id="mongoDbFactory" class="org.springframework.data.document.mongodb.MongoDbFactoryBean">
28+
<bean id="mongoDbFactory" class="org.springframework.data.document.mongodb.SimpleMongoDbFactory">
2929
<constructor-arg name="mongo" ref="mongo"/>
3030
<constructor-arg name="databaseName" value="database"/>
3131
</bean>

spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/MongoDbFactory.java

-2
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,4 @@ public interface MongoDbFactory {
1111

1212
Mongo getMongo();
1313

14-
String getDatabaseName();
15-
1614
}

spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/MongoDbFactoryBean.java

-154
This file was deleted.

spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/MongoTemplate.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware {
122122
* @param databaseName
123123
*/
124124
public MongoTemplate(Mongo mongo, String databaseName) {
125-
this(new MongoDbFactoryBean(mongo, databaseName), null, null, null);
125+
this(new SimpleMongoDbFactory(mongo, databaseName), null, null, null);
126126
}
127127

128128
/**
@@ -134,7 +134,7 @@ public MongoTemplate(Mongo mongo, String databaseName) {
134134
* @param userCredentials
135135
*/
136136
public MongoTemplate(Mongo mongo, String databaseName, UserCredentials userCredentials) {
137-
this(new MongoDbFactoryBean(mongo, databaseName, userCredentials));
137+
this(new SimpleMongoDbFactory(mongo, databaseName, userCredentials));
138138
}
139139

140140
/**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package org.springframework.data.document.mongodb;
2+
3+
import org.apache.commons.logging.Log;
4+
import org.apache.commons.logging.LogFactory;
5+
import org.springframework.dao.DataAccessException;
6+
import org.springframework.data.authentication.UserCredentials;
7+
import org.springframework.util.Assert;
8+
9+
import com.mongodb.DB;
10+
import com.mongodb.Mongo;
11+
12+
public class SimpleMongoDbFactory implements MongoDbFactory {
13+
14+
/**
15+
* Logger, available to subclasses.
16+
*/
17+
protected final Log logger = LogFactory.getLog(getClass());
18+
19+
private Mongo mongo;
20+
private String databaseName;
21+
private String username;
22+
private String password;
23+
24+
/**
25+
* Create an instance of SimpleMongoDbFactory given the Mongo instance and database name
26+
* @param mongo Mongo instance, not null
27+
* @param databaseName Database name, not null
28+
*/
29+
public SimpleMongoDbFactory(Mongo mongo, String databaseName) {
30+
Assert.notNull(mongo, "Mongo must not be null");
31+
Assert.hasText(databaseName, "Database name must not be empty");
32+
this.mongo = mongo;
33+
this.databaseName = databaseName;
34+
}
35+
36+
/**
37+
* Create an instance of SimpleMongoDbFactory given the Mongo instance, database name, and username/password
38+
* @param mongo Mongo instance, not null
39+
* @param databaseName Database name, not null
40+
* @param userCredentials username and password
41+
*/
42+
public SimpleMongoDbFactory(Mongo mongo, String databaseName, UserCredentials userCredentials) {
43+
this(mongo, databaseName);
44+
this.username = userCredentials.getUsername();
45+
this.password = userCredentials.getPassword();
46+
}
47+
48+
public DB getDb() throws DataAccessException {
49+
Assert.notNull(mongo, "Mongo must not be null");
50+
Assert.hasText(databaseName, "Database name must not be empty");
51+
return MongoDbUtils.getDB(mongo, databaseName, username, password == null ? null : password.toCharArray());
52+
}
53+
54+
public Mongo getMongo() {
55+
return this.mongo;
56+
}
57+
58+
}

spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/config/AbstractMongoConfiguration.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@
2626
import org.springframework.core.type.filter.AnnotationTypeFilter;
2727
import org.springframework.data.annotation.Persistent;
2828
import org.springframework.data.document.mongodb.MongoDbFactory;
29-
import org.springframework.data.document.mongodb.MongoDbFactoryBean;
3029
import org.springframework.data.document.mongodb.MongoTemplate;
30+
import org.springframework.data.document.mongodb.SimpleMongoDbFactory;
3131
import org.springframework.data.document.mongodb.convert.MappingMongoConverter;
3232
import org.springframework.data.document.mongodb.mapping.Document;
3333
import org.springframework.data.document.mongodb.mapping.MongoMappingContext;
@@ -48,7 +48,7 @@ public abstract class AbstractMongoConfiguration {
4848

4949
@Bean
5050
public MongoDbFactory mongoDbFactory() throws Exception {
51-
return new MongoDbFactoryBean(mongo(), defaultDatabaseName());
51+
return new SimpleMongoDbFactory(mongo(), defaultDatabaseName());
5252
}
5353

5454
public String mappingBasePackage() {

0 commit comments

Comments
 (0)