Browse Source

DATAMONGO-1903 - Align database name check in SimpleMongoDbFactory with MongoDB limitations.

We now test database names against the current (3.6) MongoDB specifications for database names.

Original pull request: #546.
pull/553/head
George Moraitis 8 years ago committed by Mark Paluch
parent
commit
b69ddd43ac
  1. 9
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/SimpleMongoDbFactory.java
  2. 2
      spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/SimpleMongoDbFactoryUnitTests.java

9
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/SimpleMongoDbFactory.java

@ -140,8 +140,8 @@ public class SimpleMongoDbFactory implements DisposableBean, MongoDbFactory { @@ -140,8 +140,8 @@ public class SimpleMongoDbFactory implements DisposableBean, MongoDbFactory {
Assert.notNull(mongo, "Mongo must not be null");
Assert.hasText(databaseName, "Database name must not be empty");
Assert.isTrue(databaseName.matches("[\\w-]+"),
"Database name must only contain letters, numbers, underscores and dashes!");
Assert.isTrue(databaseName.matches("[^/\\\\.$\"]+"),
"Database name must not contain any of the symbols[" + "[^/\\\\.$\"]+" + "]");
this.mongo = mongo;
this.databaseName = databaseName;
@ -163,8 +163,13 @@ public class SimpleMongoDbFactory implements DisposableBean, MongoDbFactory { @@ -163,8 +163,13 @@ public class SimpleMongoDbFactory implements DisposableBean, MongoDbFactory {
*/
private SimpleMongoDbFactory(MongoClient client, String databaseName, boolean mongoInstanceCreated) {
Boolean isWindows = System.getProperty("os.name").toLowerCase().contains("windows");
String validNamePattern = isWindows ? "[^/\\\\.$*<>:|?\"]+" : "[^/\\\\.$\"]+";
Assert.notNull(client, "MongoClient must not be null!");
Assert.hasText(databaseName, "Database name must not be empty!");
Assert.isTrue(databaseName.matches(validNamePattern),
"Database name must not contain any of the symbols[" + (isWindows ? "/\\.$*<>:|?\"" : "/\\.$\"") + "]");
this.mongo = client;
this.databaseName = databaseName;

2
spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/SimpleMongoDbFactoryUnitTests.java

@ -52,7 +52,7 @@ public class SimpleMongoDbFactoryUnitTests { @@ -52,7 +52,7 @@ public class SimpleMongoDbFactoryUnitTests {
@Test // DATADOC-254
public void rejectsIllegalDatabaseNames() {
rejectsDatabaseName("foo.bar");
rejectsDatabaseName("foo!bar");
rejectsDatabaseName("foo$bar");
}
@Test // DATADOC-254

Loading…
Cancel
Save