From 18487ef252c1b4c26dcdbf63e85a824f85a17ad8 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Thu, 6 Jul 2017 14:12:52 +0200 Subject: [PATCH] DATAMONGO-1713 - Polishing. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix typos. Migrate to diamond syntax where applicable. Use Arrays.stream(…) instead of Arrays.asList(…).stream(). Mention percent sign as required char for URL encoding and reference RFC 3986 in documentation. Original pull request: #477. --- .../config/MongoCredentialPropertyEditor.java | 38 +++++++++---------- src/main/asciidoc/reference/mongodb.adoc | 3 +- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MongoCredentialPropertyEditor.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MongoCredentialPropertyEditor.java index 853852593..28ac83a29 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MongoCredentialPropertyEditor.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MongoCredentialPropertyEditor.java @@ -31,7 +31,7 @@ import com.mongodb.MongoCredential; /** * Parse a {@link String} to a Collection of {@link MongoCredential}. - * + * * @author Christoph Strobl * @author Oliver Gierke * @since 1.7 @@ -41,10 +41,10 @@ public class MongoCredentialPropertyEditor extends PropertyEditorSupport { private static final Pattern GROUP_PATTERN = Pattern.compile("(\\\\?')(.*?)\\1"); private static final String AUTH_MECHANISM_KEY = "uri.authMechanism"; - private static final String USERNAME_PASSWORD_DELIMINATOR = ":"; - private static final String DATABASE_DELIMINATOR = "@"; - private static final String OPTIONS_DELIMINATOR = "?"; - private static final String OPTION_VALUE_DELIMINATOR = "&"; + private static final String USERNAME_PASSWORD_DELIMITER = ":"; + private static final String DATABASE_DELIMITER = "@"; + private static final String OPTIONS_DELIMITER = "?"; + private static final String OPTION_VALUE_DELIMITER = "&"; /* * (non-Javadoc) @@ -57,7 +57,7 @@ public class MongoCredentialPropertyEditor extends PropertyEditorSupport { return; } - List credentials = new ArrayList(); + List credentials = new ArrayList<>(); for (String credentialString : extractCredentialsString(text)) { @@ -117,7 +117,7 @@ public class MongoCredentialPropertyEditor extends PropertyEditorSupport { private List extractCredentialsString(String source) { Matcher matcher = GROUP_PATTERN.matcher(source); - List list = new ArrayList(); + List list = new ArrayList<>(); while (matcher.find()) { @@ -134,44 +134,44 @@ public class MongoCredentialPropertyEditor extends PropertyEditorSupport { private static String[] extractUserNameAndPassword(String text) { - int index = text.lastIndexOf(DATABASE_DELIMINATOR); + int index = text.lastIndexOf(DATABASE_DELIMITER); - index = index != -1 ? index : text.lastIndexOf(OPTIONS_DELIMINATOR); + index = index != -1 ? index : text.lastIndexOf(OPTIONS_DELIMITER); if (index == -1) { return new String[] {}; } - return Arrays.asList(text.substring(0, index).split(USERNAME_PASSWORD_DELIMINATOR)).stream() + return Arrays.stream(text.substring(0, index).split(USERNAME_PASSWORD_DELIMITER)) .map(MongoCredentialPropertyEditor::decodeParameter).toArray(String[]::new); } private static String extractDB(String text) { - int dbSeperationIndex = text.lastIndexOf(DATABASE_DELIMINATOR); + int dbSeparationIndex = text.lastIndexOf(DATABASE_DELIMITER); - if (dbSeperationIndex == -1) { + if (dbSeparationIndex == -1) { return ""; } - String tmp = text.substring(dbSeperationIndex + 1); - int optionsSeperationIndex = tmp.lastIndexOf(OPTIONS_DELIMINATOR); + String tmp = text.substring(dbSeparationIndex + 1); + int optionsSeparationIndex = tmp.lastIndexOf(OPTIONS_DELIMITER); - return optionsSeperationIndex > -1 ? tmp.substring(0, optionsSeperationIndex) : tmp; + return optionsSeparationIndex > -1 ? tmp.substring(0, optionsSeparationIndex) : tmp; } private static Properties extractOptions(String text) { - int optionsSeperationIndex = text.lastIndexOf(OPTIONS_DELIMINATOR); - int dbSeperationIndex = text.lastIndexOf(OPTIONS_DELIMINATOR); + int optionsSeparationIndex = text.lastIndexOf(OPTIONS_DELIMITER); + int dbSeparationIndex = text.lastIndexOf(OPTIONS_DELIMITER); - if (optionsSeperationIndex == -1 || dbSeperationIndex > optionsSeperationIndex) { + if (optionsSeparationIndex == -1 || dbSeparationIndex > optionsSeparationIndex) { return new Properties(); } Properties properties = new Properties(); - for (String option : text.substring(optionsSeperationIndex + 1).split(OPTION_VALUE_DELIMINATOR)) { + for (String option : text.substring(optionsSeparationIndex + 1).split(OPTION_VALUE_DELIMITER)) { String[] optionArgs = option.split("="); properties.put(optionArgs[0], optionArgs[1]); } diff --git a/src/main/asciidoc/reference/mongodb.adoc b/src/main/asciidoc/reference/mongodb.adoc index 95ad516ce..5cd978ad5 100644 --- a/src/main/asciidoc/reference/mongodb.adoc +++ b/src/main/asciidoc/reference/mongodb.adoc @@ -362,8 +362,9 @@ public class ApplicationContextEventTestsAppConfig extends AbstractMongoConfigur In order to use authentication with XML configuration use the `credentials` attribue on ``. -NOTE: When using XML configuration along with username/password containing reserved characters `:`, `@`, `,` need to be URL encoded. +NOTE: Username/password credentials used in XML configuration must be URL encoded when these contain reserved characters such as `:`, `%`, `@`, `,`. Example: `m0ng0@dmin:mo_res:bw6},Qsdxx@admin@database` -> `m0ng0%40dmin:mo_res%3Abw6%7D%2CQsdxx%40admin@database` +See https://tools.ietf.org/html/rfc3986#section-2.2[section 2.2 of RFC 3986] for further details. [[mongo.mongo-db-factory-xml]]