From 33624fcc6afc1ccf64cd8ad89feb263891297198 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Mon, 15 Jun 2020 14:03:01 +0200 Subject: [PATCH] DATAMONGO-2572 - Remove usage of Oppressive Language. Replaced blacklist with denylist and introduce meta keyword SECONDARY_READS as we no longer use MongoDB API with the initial replication concept. Original Pull Request: #870 --- .../data/mongodb/core/MongoTemplate.java | 2 +- .../mongodb/core/ReactiveMongoTemplate.java | 2 +- ...gDelegatingAggregationOperationContext.java | 18 +++++++++--------- .../core/messaging/ChangeStreamTask.java | 4 ++-- .../data/mongodb/core/query/Meta.java | 14 +++++++++++++- .../data/mongodb/core/query/Query.java | 17 ++++++++++++++++- .../data/mongodb/config/spring-mongo-1.0.xsd | 2 +- .../data/mongodb/config/spring-mongo-1.1.xsd | 2 +- .../mongodb/config/spring-mongo-1.10.2.xsd | 2 +- .../data/mongodb/config/spring-mongo-1.10.xsd | 2 +- .../data/mongodb/config/spring-mongo-1.2.xsd | 2 +- .../data/mongodb/config/spring-mongo-1.3.xsd | 2 +- .../data/mongodb/config/spring-mongo-1.4.xsd | 2 +- .../data/mongodb/config/spring-mongo-1.5.xsd | 2 +- .../data/mongodb/config/spring-mongo-1.7.xsd | 2 +- .../data/mongodb/config/spring-mongo-1.8.xsd | 2 +- .../data/mongodb/core/MongoTemplateTests.java | 8 ++++---- .../query/MongoQueryMethodUnitTests.java | 7 ++++--- 18 files changed, 60 insertions(+), 32 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java index 5b6b3a80a..a82c6d5a3 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java @@ -1191,7 +1191,7 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware, /** * Prepare the collection before any processing is done using it. This allows a convenient way to apply settings like - * slaveOk() etc. Can be overridden in sub-classes. + * withCodecRegistry() etc. Can be overridden in sub-classes. * * @param collection */ diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMongoTemplate.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMongoTemplate.java index 6c7deeccd..5487beae2 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMongoTemplate.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMongoTemplate.java @@ -2458,7 +2458,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati /** * Prepare the collection before any processing is done using it. This allows a convenient way to apply settings like - * slaveOk() etc. Can be overridden in sub-classes. + * withCodecRegistry() etc. Can be overridden in sub-classes. * * @param collection */ diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/PrefixingDelegatingAggregationOperationContext.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/PrefixingDelegatingAggregationOperationContext.java index 86464e726..9d72ad414 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/PrefixingDelegatingAggregationOperationContext.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/PrefixingDelegatingAggregationOperationContext.java @@ -30,7 +30,7 @@ import org.springframework.data.mongodb.core.aggregation.ExposedFields.FieldRefe * {@link AggregationOperationContext} implementation prefixing non-command keys on root level with the given prefix. * Useful when mapping fields to domain specific types while having to prefix keys for query purpose. *

- * Fields to be excluded from prefixing my be added to a {@literal blacklist}. + * Fields to be excluded from prefixing my be added to a {@literal denylist}. * * @author Christoph Strobl * @author Mark Paluch @@ -40,18 +40,18 @@ public class PrefixingDelegatingAggregationOperationContext implements Aggregati private final AggregationOperationContext delegate; private final String prefix; - private final Set blacklist; + private final Set denylist; public PrefixingDelegatingAggregationOperationContext(AggregationOperationContext delegate, String prefix) { this(delegate, prefix, Collections.emptySet()); } public PrefixingDelegatingAggregationOperationContext(AggregationOperationContext delegate, String prefix, - Collection blacklist) { + Collection denylist) { this.delegate = delegate; this.prefix = prefix; - this.blacklist = new HashSet<>(blacklist); + this.denylist = new HashSet<>(denylist); } /* @@ -102,7 +102,7 @@ public class PrefixingDelegatingAggregationOperationContext implements Aggregati } private String prefixKey(String key) { - return (key.startsWith("$") || isBlacklisted(key)) ? key : (prefix + "." + key); + return (key.startsWith("$") || isDenied(key)) ? key : (prefix + "." + key); } private Object prefixCollection(Collection sourceCollection) { @@ -120,9 +120,9 @@ public class PrefixingDelegatingAggregationOperationContext implements Aggregati return prefixed; } - private boolean isBlacklisted(String key) { + private boolean isDenied(String key) { - if (blacklist.contains(key)) { + if (denylist.contains(key)) { return true; } @@ -130,8 +130,8 @@ public class PrefixingDelegatingAggregationOperationContext implements Aggregati return false; } - for (String blacklisted : blacklist) { - if (key.startsWith(blacklisted + ".")) { + for (String denied : denylist) { + if (key.startsWith(denied + ".")) { return true; } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/ChangeStreamTask.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/ChangeStreamTask.java index 7fa34a791..2fe8c484b 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/ChangeStreamTask.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/ChangeStreamTask.java @@ -63,7 +63,7 @@ import com.mongodb.client.model.changestream.FullDocument; */ class ChangeStreamTask extends CursorReadingTask, Object> { - private final Set blacklist = new HashSet<>( + private final Set denylist = new HashSet<>( Arrays.asList("operationType", "fullDocument", "documentKey", "updateDescription", "ns")); private final QueryMapper queryMapper; @@ -165,7 +165,7 @@ class ChangeStreamTask extends CursorReadingTask, template.getConverter().getMappingContext(), queryMapper) : Aggregation.DEFAULT_CONTEXT; - return agg.toPipeline(new PrefixingDelegatingAggregationOperationContext(context, "fullDocument", blacklist)); + return agg.toPipeline(new PrefixingDelegatingAggregationOperationContext(context, "fullDocument", denylist)); } if (filter instanceof List) { diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Meta.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Meta.java index 26e56c4b0..b357fe524 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Meta.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Meta.java @@ -284,9 +284,21 @@ public class Meta { */ EXHAUST, - /** Allows querying of a replica slave. */ + /** + * Allows querying of a replica. + * + * @deprecated since 3.0.2, use {@link #SECONDARY_READS} instead. + */ + @Deprecated SLAVE_OK, + /** + * Allows querying of a replica. + * + * @since 3.0.2 + */ + SECONDARY_READS, + /** * Sets the cursor to return partial data from a query against a sharded cluster in which some shards do not respond * rather than throwing an error. diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Query.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Query.java index 18525b539..8e4facc15 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Query.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Query.java @@ -418,18 +418,33 @@ public class Query { } /** - * Allows querying of a replica slave. + * Allows querying of a replica. * * @return this. * @see org.springframework.data.mongodb.core.query.Meta.CursorOption#SLAVE_OK * @since 1.10 + * @deprecated since 3.0.2, use {@link #allowSecondaryReads()}. */ + @Deprecated public Query slaveOk() { meta.addFlag(Meta.CursorOption.SLAVE_OK); return this; } + /** + * Allows querying of a replica. + * + * @return this. + * @see org.springframework.data.mongodb.core.query.Meta.CursorOption#SECONDARY_READS + * @since 3.0.2 + */ + public Query allowSecondaryReads() { + + meta.addFlag(Meta.CursorOption.SECONDARY_READS); + return this; + } + /** * @return this. * @see org.springframework.data.mongodb.core.query.Meta.CursorOption#PARTIAL diff --git a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.0.xsd b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.0.xsd index 2b4fbee2b..a179fdb9f 100644 --- a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.0.xsd +++ b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.0.xsd @@ -434,7 +434,7 @@ This controls whether or not to fsync. The 'fsync' option to the getlasterror c diff --git a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.1.xsd b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.1.xsd index cd81bf328..5c959b812 100644 --- a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.1.xsd +++ b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.1.xsd @@ -432,7 +432,7 @@ This controls whether or not to fsync. The 'fsync' option to the getlasterror c diff --git a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.10.2.xsd b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.10.2.xsd index 1d4a09be1..6c0fcc67c 100644 --- a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.10.2.xsd +++ b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.10.2.xsd @@ -531,7 +531,7 @@ This controls whether or not to fsync. The 'fsync' option to the getlasterror c diff --git a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.10.xsd b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.10.xsd index 5d06b0a49..dde5cd0a9 100644 --- a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.10.xsd +++ b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.10.xsd @@ -531,7 +531,7 @@ This controls whether or not to fsync. The 'fsync' option to the getlasterror c diff --git a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.2.xsd b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.2.xsd index 71dbf8709..f73f940c7 100644 --- a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.2.xsd +++ b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.2.xsd @@ -447,7 +447,7 @@ This controls whether or not to fsync. The 'fsync' option to the getlasterror c diff --git a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.3.xsd b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.3.xsd index 2aa09c0cd..c9d1b0a25 100644 --- a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.3.xsd +++ b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.3.xsd @@ -462,7 +462,7 @@ This controls whether or not to fsync. The 'fsync' option to the getlasterror c diff --git a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.4.xsd b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.4.xsd index 33874b3f2..541661c8c 100644 --- a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.4.xsd +++ b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.4.xsd @@ -480,7 +480,7 @@ This controls whether or not to fsync. The 'fsync' option to the getlasterror c diff --git a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.5.xsd b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.5.xsd index 43ba06bae..1363480b5 100644 --- a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.5.xsd +++ b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.5.xsd @@ -498,7 +498,7 @@ This controls whether or not to fsync. The 'fsync' option to the getlasterror c diff --git a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.7.xsd b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.7.xsd index ecb082e81..51ff5b3a1 100644 --- a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.7.xsd +++ b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.7.xsd @@ -531,7 +531,7 @@ This controls whether or not to fsync. The 'fsync' option to the getlasterror c diff --git a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.8.xsd b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.8.xsd index cb02bb191..40d6de36d 100644 --- a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.8.xsd +++ b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.8.xsd @@ -537,7 +537,7 @@ This controls whether or not to fsync. The 'fsync' option to the getlasterror c diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java index fd3f0487d..a4bc7c55f 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java @@ -1219,7 +1219,7 @@ public class MongoTemplateTests { assertThat(p5.getFirstName(), is("Mark")); } - @Test + @Test // DATAMONGO-2572 public void testUsingReadPreference() throws Exception { this.template.execute("readPref", new CollectionCallback() { public Object doInCollection(MongoCollection collection) @@ -1230,9 +1230,9 @@ public class MongoTemplateTests { return null; } }); - MongoTemplate slaveTemplate = new MongoTemplate(factory); - slaveTemplate.setReadPreference(ReadPreference.secondary()); - slaveTemplate.execute("readPref", new CollectionCallback() { + MongoTemplate secondaryTemplate = new MongoTemplate(factory); + secondaryTemplate.setReadPreference(ReadPreference.secondary()); + secondaryTemplate.execute("readPref", new CollectionCallback() { public Object doInCollection(MongoCollection collection) throws MongoException, DataAccessException { assertThat(collection.getReadPreference(), is(ReadPreference.secondary())); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/MongoQueryMethodUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/MongoQueryMethodUnitTests.java index b5f13105d..f7a1bdf40 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/MongoQueryMethodUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/MongoQueryMethodUnitTests.java @@ -210,14 +210,14 @@ public class MongoQueryMethodUnitTests { containsInAnyOrder(org.springframework.data.mongodb.core.query.Meta.CursorOption.NO_TIMEOUT)); } - @Test // DATAMONGO-1480 + @Test // DATAMONGO-1480, DATAMONGO-2572 public void createsMongoQueryMethodWithMultipleFlagsCorrectly() throws Exception { MongoQueryMethod method = queryMethod(PersonRepository.class, "metaWithMultipleFlags"); assertThat(method.hasQueryMetaAttributes(), is(true)); assertThat(method.getQueryMetaAttributes().getFlags(), - containsInAnyOrder(org.springframework.data.mongodb.core.query.Meta.CursorOption.NO_TIMEOUT, org.springframework.data.mongodb.core.query.Meta.CursorOption.SLAVE_OK)); + containsInAnyOrder(org.springframework.data.mongodb.core.query.Meta.CursorOption.NO_TIMEOUT, org.springframework.data.mongodb.core.query.Meta.CursorOption.SECONDARY_READS)); } @Test // DATAMONGO-1266 @@ -275,7 +275,8 @@ public class MongoQueryMethodUnitTests { @Meta(flags = { org.springframework.data.mongodb.core.query.Meta.CursorOption.NO_TIMEOUT }) List metaWithNoCursorTimeout(); - @Meta(flags = { org.springframework.data.mongodb.core.query.Meta.CursorOption.NO_TIMEOUT, org.springframework.data.mongodb.core.query.Meta.CursorOption.SLAVE_OK }) + @Meta(flags = { org.springframework.data.mongodb.core.query.Meta.CursorOption.NO_TIMEOUT, + org.springframework.data.mongodb.core.query.Meta.CursorOption.SECONDARY_READS }) List metaWithMultipleFlags(); // DATAMONGO-1266