diff --git a/pom.xml b/pom.xml
index 74b7a38a74..f4ecb59f51 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
org.springframework.data
spring-data-mongodb-parent
- 1.8.0.BUILD-SNAPSHOT
+ 1.8.0.DATAMONGO-1260-SNAPSHOT
pom
Spring Data MongoDB
diff --git a/spring-data-mongodb-cross-store/pom.xml b/spring-data-mongodb-cross-store/pom.xml
index 7d18f752fc..bf73f370df 100644
--- a/spring-data-mongodb-cross-store/pom.xml
+++ b/spring-data-mongodb-cross-store/pom.xml
@@ -6,7 +6,7 @@
org.springframework.data
spring-data-mongodb-parent
- 1.8.0.BUILD-SNAPSHOT
+ 1.8.0.DATAMONGO-1260-SNAPSHOT
../pom.xml
@@ -48,7 +48,7 @@
org.springframework.data
spring-data-mongodb
- 1.8.0.BUILD-SNAPSHOT
+ 1.8.0.DATAMONGO-1260-SNAPSHOT
diff --git a/spring-data-mongodb-distribution/pom.xml b/spring-data-mongodb-distribution/pom.xml
index 13c0985a6a..b0d6ccae3b 100644
--- a/spring-data-mongodb-distribution/pom.xml
+++ b/spring-data-mongodb-distribution/pom.xml
@@ -13,7 +13,7 @@
org.springframework.data
spring-data-mongodb-parent
- 1.8.0.BUILD-SNAPSHOT
+ 1.8.0.DATAMONGO-1260-SNAPSHOT
../pom.xml
diff --git a/spring-data-mongodb-log4j/pom.xml b/spring-data-mongodb-log4j/pom.xml
index 64d6f7864a..1131c0ac9a 100644
--- a/spring-data-mongodb-log4j/pom.xml
+++ b/spring-data-mongodb-log4j/pom.xml
@@ -5,7 +5,7 @@
org.springframework.data
spring-data-mongodb-parent
- 1.8.0.BUILD-SNAPSHOT
+ 1.8.0.DATAMONGO-1260-SNAPSHOT
../pom.xml
diff --git a/spring-data-mongodb/pom.xml b/spring-data-mongodb/pom.xml
index 819112059b..9ea43cea7d 100644
--- a/spring-data-mongodb/pom.xml
+++ b/spring-data-mongodb/pom.xml
@@ -11,7 +11,7 @@
org.springframework.data
spring-data-mongodb-parent
- 1.8.0.BUILD-SNAPSHOT
+ 1.8.0.DATAMONGO-1260-SNAPSHOT
../pom.xml
diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/SimpleMongoDbFactory.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/SimpleMongoDbFactory.java
index 7916c2525f..5233ef5dee 100644
--- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/SimpleMongoDbFactory.java
+++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/SimpleMongoDbFactory.java
@@ -19,6 +19,7 @@
import org.springframework.beans.factory.DisposableBean;
import org.springframework.dao.DataAccessException;
+import org.springframework.dao.InvalidDataAccessApiUsageException;
import org.springframework.dao.support.PersistenceExceptionTranslator;
import org.springframework.data.authentication.UserCredentials;
import org.springframework.data.mongodb.MongoDbFactory;
@@ -132,6 +133,11 @@ public SimpleMongoDbFactory(MongoClient mongoClient, String databaseName) {
private SimpleMongoDbFactory(Mongo mongo, String databaseName, UserCredentials credentials,
boolean mongoInstanceCreated, String authenticationDatabaseName) {
+ if (mongo instanceof MongoClient && (credentials != null && !UserCredentials.NO_CREDENTIALS.equals(credentials))) {
+ throw new InvalidDataAccessApiUsageException(
+ "Usage of 'UserCredentials' with 'MongoClient' is no longer supported. Please use 'MongoCredential' for 'MongoClient' or just 'Mongo'.");
+ }
+
Assert.notNull(mongo, "Mongo must not be null");
Assert.hasText(databaseName, "Database name must not be empty");
Assert.isTrue(databaseName.matches("[\\w-]+"),
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/SimpleMongoDbFactoryUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/SimpleMongoDbFactoryUnitTests.java
index de2ec283c9..9967de75ec 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/SimpleMongoDbFactoryUnitTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/SimpleMongoDbFactoryUnitTests.java
@@ -22,10 +22,13 @@
import java.net.UnknownHostException;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.ExpectedException;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
+import org.springframework.dao.InvalidDataAccessApiUsageException;
import org.springframework.data.authentication.UserCredentials;
import org.springframework.data.mongodb.MongoDbFactory;
@@ -43,6 +46,7 @@
@RunWith(MockitoJUnitRunner.class)
public class SimpleMongoDbFactoryUnitTests {
+ public @Rule ExpectedException expectedException = ExpectedException.none();
@Mock Mongo mongo;
/**
@@ -115,6 +119,46 @@ public void shouldDefaultAuthenticationDbNameToDbNameWhenUsingMongoClient() thro
assertThat(getField(factory, "authenticationDatabaseName").toString(), is("FooBar"));
}
+ /**
+ * @see DATAMONGO-1260
+ */
+ @Test
+ public void rejectsMongoClientWithUserCredentials() {
+
+ expectedException.expect(InvalidDataAccessApiUsageException.class);
+ expectedException.expectMessage("use 'MongoCredential' for 'MongoClient'");
+
+ new SimpleMongoDbFactory(mock(MongoClient.class), "cairhienin", new UserCredentials("moiraine", "sedai"));
+ }
+
+ /**
+ * @see DATAMONGO-1260
+ */
+ @Test
+ public void rejectsMongoClientWithUserCredentialsAndAuthDb() {
+
+ expectedException.expect(InvalidDataAccessApiUsageException.class);
+ expectedException.expectMessage("use 'MongoCredential' for 'MongoClient'");
+
+ new SimpleMongoDbFactory(mock(MongoClient.class), "malkieri", new UserCredentials("lan", "mandragoran"), "authdb");
+ }
+
+ /**
+ * @see DATAMONGO-1260
+ */
+ @Test
+ public void shouldNotRejectMongoClientWithNoCredentials() {
+ new SimpleMongoDbFactory(mock(MongoClient.class), "andoran", UserCredentials.NO_CREDENTIALS);
+ }
+
+ /**
+ * @see DATAMONGO-1260
+ */
+ @Test
+ public void shouldNotRejectMongoClientWithEmptyUserCredentials() {
+ new SimpleMongoDbFactory(mock(MongoClient.class), "shangtai", new UserCredentials("", ""));
+ }
+
@SuppressWarnings("deprecation")
private void rejectsDatabaseName(String databaseName) {