From 78429eb33dc07e5071904c561e76a13061ef7f86 Mon Sep 17 00:00:00 2001 From: George Moraitis Date: Sun, 1 Apr 2018 23:31:29 +0300 Subject: [PATCH] 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. --- .../data/mongodb/core/SimpleMongoDbFactory.java | 7 +++++-- .../data/mongodb/core/SimpleMongoDbFactoryUnitTests.java | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) 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 224be2270..997a4c785 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 @@ -77,10 +77,13 @@ public class SimpleMongoDbFactory implements DisposableBean, MongoDbFactory { */ private SimpleMongoDbFactory(MongoClient mongoClient, String databaseName, boolean mongoInstanceCreated) { + Boolean isWindows = System.getProperty("os.name").toLowerCase().contains("windows"); + String validNamePattern = isWindows ? "[^/\\\\.$*<>:|?\"]+" : "[^/\\\\.$\"]+"; + Assert.notNull(mongoClient, "MongoClient 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(validNamePattern), + "Database name must not contain any of the symbols[" + (isWindows ? "/\\.$*<>:|?\"" : "/\\.$\"") + "]"); this.mongoClient = mongoClient; this.databaseName = databaseName; 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 bda0dee38..07f45d61f 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 @@ -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