diff --git a/driver-core/src/main/com/mongodb/internal/operation/AbstractWriteSearchIndexOperation.java b/driver-core/src/main/com/mongodb/internal/operation/AbstractWriteSearchIndexOperation.java
index 8410a030185..6ebcfda6dbe 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/AbstractWriteSearchIndexOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/AbstractWriteSearchIndexOperation.java
@@ -37,7 +37,7 @@
*
*
This class is not part of the public API and may be removed or changed at any time
*/
-abstract class AbstractWriteSearchIndexOperation implements AsyncWriteOperation, WriteOperation {
+abstract class AbstractWriteSearchIndexOperation implements WriteOperation {
private final MongoNamespace namespace;
AbstractWriteSearchIndexOperation(final MongoNamespace namespace) {
diff --git a/driver-core/src/main/com/mongodb/internal/operation/AggregateOperation.java b/driver-core/src/main/com/mongodb/internal/operation/AggregateOperation.java
index f9f25cd5fe1..1c9abfc68ca 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/AggregateOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/AggregateOperation.java
@@ -41,7 +41,7 @@
*
* This class is not part of the public API and may be removed or changed at any time
*/
-public class AggregateOperation implements AsyncExplainableReadOperation>, ExplainableReadOperation> {
+public class AggregateOperation implements ReadOperationExplainable {
private final AggregateOperationImpl wrapped;
public AggregateOperation(final MongoNamespace namespace, final List pipeline, final Decoder decoder) {
@@ -151,13 +151,7 @@ public void executeAsync(final AsyncReadBinding binding, final SingleResultCallb
}
@Override
- public ReadOperation asExplainableOperation(@Nullable final ExplainVerbosity verbosity, final Decoder resultDecoder) {
- return createExplainableOperation(verbosity, resultDecoder);
- }
-
- @Override
- public AsyncReadOperation asAsyncExplainableOperation(@Nullable final ExplainVerbosity verbosity,
- final Decoder resultDecoder) {
+ public ReadOperationSimple asExplainableOperation(@Nullable final ExplainVerbosity verbosity, final Decoder resultDecoder) {
return createExplainableOperation(verbosity, resultDecoder);
}
diff --git a/driver-core/src/main/com/mongodb/internal/operation/AggregateOperationImpl.java b/driver-core/src/main/com/mongodb/internal/operation/AggregateOperationImpl.java
index 3a650fc2f9b..4c9bc3828b7 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/AggregateOperationImpl.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/AggregateOperationImpl.java
@@ -52,7 +52,7 @@
import static com.mongodb.internal.operation.SyncOperationHelper.CommandReadTransformer;
import static com.mongodb.internal.operation.SyncOperationHelper.executeRetryableRead;
-class AggregateOperationImpl implements AsyncReadOperation>, ReadOperation> {
+class AggregateOperationImpl implements ReadOperationCursor {
private static final String COMMAND_NAME = "aggregate";
private static final String RESULT = "result";
private static final String CURSOR = "cursor";
diff --git a/driver-core/src/main/com/mongodb/internal/operation/AggregateToCollectionOperation.java b/driver-core/src/main/com/mongodb/internal/operation/AggregateToCollectionOperation.java
index 022c00383bc..16f33ad45e5 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/AggregateToCollectionOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/AggregateToCollectionOperation.java
@@ -54,7 +54,7 @@
*
* This class is not part of the public API and may be removed or changed at any time
*/
-public class AggregateToCollectionOperation implements ReadOperation, AsyncReadOperation {
+public class AggregateToCollectionOperation implements ReadOperationSimple {
private static final String COMMAND_NAME = "aggregate";
private final MongoNamespace namespace;
private final List pipeline;
diff --git a/driver-core/src/main/com/mongodb/internal/operation/AsyncOperations.java b/driver-core/src/main/com/mongodb/internal/operation/AsyncOperations.java
deleted file mode 100644
index a70af7c64fd..00000000000
--- a/driver-core/src/main/com/mongodb/internal/operation/AsyncOperations.java
+++ /dev/null
@@ -1,390 +0,0 @@
-/*
- * Copyright 2008-present MongoDB, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.mongodb.internal.operation;
-
-import com.mongodb.AutoEncryptionSettings;
-import com.mongodb.MongoNamespace;
-import com.mongodb.ReadConcern;
-import com.mongodb.ReadPreference;
-import com.mongodb.WriteConcern;
-import com.mongodb.bulk.BulkWriteResult;
-import com.mongodb.client.cursor.TimeoutMode;
-import com.mongodb.client.model.BulkWriteOptions;
-import com.mongodb.client.model.Collation;
-import com.mongodb.client.model.CountOptions;
-import com.mongodb.client.model.CreateCollectionOptions;
-import com.mongodb.client.model.CreateIndexOptions;
-import com.mongodb.client.model.CreateViewOptions;
-import com.mongodb.client.model.DeleteOptions;
-import com.mongodb.client.model.DropCollectionOptions;
-import com.mongodb.client.model.DropIndexOptions;
-import com.mongodb.client.model.EstimatedDocumentCountOptions;
-import com.mongodb.client.model.FindOneAndDeleteOptions;
-import com.mongodb.client.model.FindOneAndReplaceOptions;
-import com.mongodb.client.model.FindOneAndUpdateOptions;
-import com.mongodb.client.model.IndexModel;
-import com.mongodb.client.model.InsertManyOptions;
-import com.mongodb.client.model.InsertOneOptions;
-import com.mongodb.client.model.RenameCollectionOptions;
-import com.mongodb.client.model.ReplaceOptions;
-import com.mongodb.client.model.SearchIndexModel;
-import com.mongodb.client.model.UpdateOptions;
-import com.mongodb.client.model.WriteModel;
-import com.mongodb.client.model.bulk.ClientBulkWriteOptions;
-import com.mongodb.client.model.bulk.ClientBulkWriteResult;
-import com.mongodb.client.model.bulk.ClientNamespacedWriteModel;
-import com.mongodb.client.model.changestream.FullDocument;
-import com.mongodb.client.model.changestream.FullDocumentBeforeChange;
-import com.mongodb.internal.TimeoutSettings;
-import com.mongodb.internal.async.AsyncBatchCursor;
-import com.mongodb.internal.client.model.AggregationLevel;
-import com.mongodb.internal.client.model.FindOptions;
-import com.mongodb.internal.client.model.changestream.ChangeStreamLevel;
-import com.mongodb.lang.Nullable;
-import org.bson.BsonDocument;
-import org.bson.BsonTimestamp;
-import org.bson.BsonValue;
-import org.bson.codecs.Decoder;
-import org.bson.codecs.configuration.CodecRegistry;
-import org.bson.conversions.Bson;
-
-import java.util.List;
-
-import static com.mongodb.assertions.Assertions.assertNotNull;
-import static java.util.concurrent.TimeUnit.MILLISECONDS;
-
-/**
- * This class is not part of the public API and may be removed or changed at any time
- */
-public final class AsyncOperations {
- private final Operations operations;
- private final TimeoutSettings timeoutSettings;
-
- public AsyncOperations(final MongoNamespace namespace, final Class documentClass, final ReadPreference readPreference,
- final CodecRegistry codecRegistry, final ReadConcern readConcern, final WriteConcern writeConcern,
- final boolean retryWrites, final boolean retryReads, final TimeoutSettings timeoutSettings) {
- WriteConcern writeConcernToUse = writeConcern;
- if (timeoutSettings.getTimeoutMS() != null) {
- writeConcernToUse = assertNotNull(WriteConcernHelper.cloneWithoutTimeout(writeConcern));
- }
- this.operations = new Operations<>(namespace, documentClass, readPreference, codecRegistry, readConcern, writeConcernToUse,
- retryWrites, retryReads);
- this.timeoutSettings = timeoutSettings;
- }
-
- public MongoNamespace getNamespace() {
- return assertNotNull(operations.getNamespace());
- }
-
- public Class getDocumentClass() {
- return operations.getDocumentClass();
- }
-
- public ReadPreference getReadPreference() {
- return operations.getReadPreference();
- }
-
- public CodecRegistry getCodecRegistry() {
- return operations.getCodecRegistry();
- }
-
- public ReadConcern getReadConcern() {
- return operations.getReadConcern();
- }
-
- public WriteConcern getWriteConcern() {
- return operations.getWriteConcern();
- }
-
- public TimeoutSettings getTimeoutSettings() {
- return timeoutSettings;
- }
-
- public boolean isRetryWrites() {
- return operations.isRetryWrites();
- }
-
- public boolean isRetryReads() {
- return operations.isRetryReads();
- }
-
- public TimeoutSettings createTimeoutSettings(final long maxTimeMS) {
- return timeoutSettings.withMaxTimeMS(maxTimeMS);
- }
-
- public TimeoutSettings createTimeoutSettings(final long maxTimeMS, final long maxAwaitTimeMS) {
- return timeoutSettings.withMaxTimeAndMaxAwaitTimeMS(maxTimeMS, maxAwaitTimeMS);
- }
-
- @SuppressWarnings("deprecation") // MaxTime
- public TimeoutSettings createTimeoutSettings(final CountOptions options) {
- return createTimeoutSettings(options.getMaxTime(MILLISECONDS));
- }
-
- @SuppressWarnings("deprecation") // MaxTime
- public TimeoutSettings createTimeoutSettings(final EstimatedDocumentCountOptions options) {
- return createTimeoutSettings(options.getMaxTime(MILLISECONDS));
- }
-
- @SuppressWarnings("deprecation") // MaxTime
- public TimeoutSettings createTimeoutSettings(final FindOptions options) {
- return timeoutSettings.withMaxTimeAndMaxAwaitTimeMS(options.getMaxTime(MILLISECONDS), options.getMaxAwaitTime(MILLISECONDS));
- }
-
- @SuppressWarnings("deprecation") // MaxTime
- public TimeoutSettings createTimeoutSettings(final FindOneAndDeleteOptions options) {
- return createTimeoutSettings(options.getMaxTime(MILLISECONDS));
- }
-
- @SuppressWarnings("deprecation") // MaxTime
- public TimeoutSettings createTimeoutSettings(final FindOneAndReplaceOptions options) {
- return createTimeoutSettings(options.getMaxTime(MILLISECONDS));
- }
-
- @SuppressWarnings("deprecation") // MaxTime
- public TimeoutSettings createTimeoutSettings(final FindOneAndUpdateOptions options) {
- return timeoutSettings.withMaxTimeMS(options.getMaxTime(MILLISECONDS));
- }
-
- public AsyncReadOperation countDocuments(final Bson filter, final CountOptions options) {
- return operations.countDocuments(filter, options);
- }
-
- public AsyncReadOperation estimatedDocumentCount(final EstimatedDocumentCountOptions options) {
- return operations.estimatedDocumentCount(options);
- }
-
- public AsyncReadOperation> findFirst(final Bson filter, final Class resultClass,
- final FindOptions options) {
- return operations.findFirst(filter, resultClass, options);
- }
-
- public AsyncExplainableReadOperation> find(final Bson filter, final Class resultClass,
- final FindOptions options) {
- return operations.find(filter, resultClass, options);
- }
-
- public AsyncReadOperation> find(final MongoNamespace findNamespace, final Bson filter,
- final Class resultClass, final FindOptions options) {
- return operations.find(findNamespace, filter, resultClass, options);
- }
-
- public AsyncReadOperation> distinct(final String fieldName, final Bson filter,
- final Class resultClass, final Collation collation, final BsonValue comment, final Bson hint,
- final String hintString) {
- return operations.distinct(fieldName, filter, resultClass, collation, comment, hint, hintString);
- }
-
- public AsyncExplainableReadOperation> aggregate(
- final List extends Bson> pipeline,
- final Class resultClass,
- @Nullable final TimeoutMode timeoutMode,
- @Nullable final Integer batchSize,
- final Collation collation, final Bson hint,
- final String hintString,
- final BsonValue comment,
- final Bson variables,
- final Boolean allowDiskUse,
- final AggregationLevel aggregationLevel) {
- return operations.aggregate(pipeline, resultClass, timeoutMode, batchSize, collation, hint, hintString,
- comment, variables, allowDiskUse, aggregationLevel);
- }
-
- public AsyncReadOperation aggregateToCollection(final List extends Bson> pipeline,
- @Nullable final TimeoutMode timeoutMode, final Boolean allowDiskUse, final Boolean bypassDocumentValidation,
- final Collation collation, final Bson hint, final String hintString, final BsonValue comment,
- final Bson variables, final AggregationLevel aggregationLevel) {
- return operations.aggregateToCollection(pipeline, timeoutMode, allowDiskUse, bypassDocumentValidation, collation, hint,
- hintString, comment, variables, aggregationLevel);
- }
-
- @SuppressWarnings("deprecation")
- public AsyncWriteOperation mapReduceToCollection(final String databaseName, final String collectionName,
- final String mapFunction, final String reduceFunction,
- final String finalizeFunction, final Bson filter, final int limit,
- final boolean jsMode, final Bson scope,
- final Bson sort, final boolean verbose,
- final com.mongodb.client.model.MapReduceAction action,
- final Boolean bypassDocumentValidation, final Collation collation) {
- return operations.mapReduceToCollection(databaseName, collectionName, mapFunction, reduceFunction, finalizeFunction, filter, limit,
- jsMode, scope, sort, verbose, action, bypassDocumentValidation, collation);
- }
-
- public AsyncReadOperation> mapReduce(final String mapFunction, final String reduceFunction,
- final String finalizeFunction, final Class resultClass,
- final Bson filter, final int limit,
- final boolean jsMode, final Bson scope,
- final Bson sort, final boolean verbose,
- final Collation collation) {
- return operations.mapReduce(mapFunction, reduceFunction, finalizeFunction, resultClass, filter, limit, jsMode, scope,
- sort, verbose, collation);
- }
-
- public AsyncWriteOperation findOneAndDelete(final Bson filter, final FindOneAndDeleteOptions options) {
- return operations.findOneAndDelete(filter, options);
- }
-
- public AsyncWriteOperation findOneAndReplace(final Bson filter, final TDocument replacement,
- final FindOneAndReplaceOptions options) {
- return operations.findOneAndReplace(filter, replacement, options);
- }
-
- public AsyncWriteOperation findOneAndUpdate(final Bson filter, final Bson update, final FindOneAndUpdateOptions options) {
- return operations.findOneAndUpdate(filter, update, options);
- }
-
- public AsyncWriteOperation findOneAndUpdate(final Bson filter, final List extends Bson> update,
- final FindOneAndUpdateOptions options) {
- return operations.findOneAndUpdate(filter, update, options);
- }
-
- public AsyncWriteOperation insertOne(final TDocument document, final InsertOneOptions options) {
- return operations.insertOne(document, options);
- }
-
-
- public AsyncWriteOperation replaceOne(final Bson filter, final TDocument replacement, final ReplaceOptions options) {
- return operations.replaceOne(filter, replacement, options);
- }
-
- public AsyncWriteOperation deleteOne(final Bson filter, final DeleteOptions options) {
- return operations.deleteOne(filter, options);
- }
-
- public AsyncWriteOperation deleteMany(final Bson filter, final DeleteOptions options) {
- return operations.deleteMany(filter, options);
- }
-
- public AsyncWriteOperation updateOne(final Bson filter, final Bson update, final UpdateOptions updateOptions) {
- return operations.updateOne(filter, update, updateOptions);
- }
-
- public AsyncWriteOperation updateOne(final Bson filter, final List extends Bson> update,
- final UpdateOptions updateOptions) {
- return operations.updateOne(filter, update, updateOptions);
- }
-
- public AsyncWriteOperation updateMany(final Bson filter, final Bson update, final UpdateOptions updateOptions) {
- return operations.updateMany(filter, update, updateOptions);
- }
-
- public AsyncWriteOperation updateMany(final Bson filter, final List extends Bson> update,
- final UpdateOptions updateOptions) {
- return operations.updateMany(filter, update, updateOptions);
- }
-
- public AsyncWriteOperation insertMany(final List extends TDocument> documents,
- final InsertManyOptions options) {
- return operations.insertMany(documents, options);
- }
-
- public AsyncWriteOperation bulkWrite(final List extends WriteModel extends TDocument>> requests,
- final BulkWriteOptions options) {
- return operations.bulkWrite(requests, options);
- }
-
- public AsyncWriteOperation clientBulkWriteOperation(
- final List extends ClientNamespacedWriteModel> clientWriteModels,
- @Nullable final ClientBulkWriteOptions options) {
- return operations.clientBulkWriteOperation(clientWriteModels, options);
- }
-
- public AsyncReadOperation commandRead(final Bson command, final Class resultClass) {
- return operations.commandRead(command, resultClass);
- }
-
- public AsyncWriteOperation dropDatabase() {
- return operations.dropDatabase();
- }
-
- public AsyncWriteOperation createCollection(final String collectionName, final CreateCollectionOptions createCollectionOptions,
- final AutoEncryptionSettings autoEncryptionSettings) {
- return operations.createCollection(collectionName, createCollectionOptions, autoEncryptionSettings);
- }
-
-
- public AsyncWriteOperation dropCollection(final DropCollectionOptions dropCollectionOptions,
- final AutoEncryptionSettings autoEncryptionSettings) {
- return operations.dropCollection(dropCollectionOptions, autoEncryptionSettings);
- }
-
- public AsyncWriteOperation renameCollection(final MongoNamespace newCollectionNamespace,
- final RenameCollectionOptions options) {
- return operations.renameCollection(newCollectionNamespace, options);
- }
-
- public AsyncWriteOperation createView(final String viewName, final String viewOn, final List extends Bson> pipeline,
- final CreateViewOptions createViewOptions) {
- return operations.createView(viewName, viewOn, pipeline, createViewOptions);
- }
-
- public AsyncWriteOperation createIndexes(final List indexes, final CreateIndexOptions options) {
- return operations.createIndexes(indexes, options);
- }
-
- public AsyncWriteOperation createSearchIndexes(final List indexes) {
- return operations.createSearchIndexes(indexes);
- }
-
- public AsyncWriteOperation updateSearchIndex(final String indexName, final Bson definition) {
- return operations.updateSearchIndex(indexName, definition);
- }
-
- public AsyncWriteOperation dropSearchIndex(final String indexName) {
- return operations.dropSearchIndex(indexName);
- }
-
- public AsyncExplainableReadOperation> listSearchIndexes(final Class resultClass,
- @Nullable final String indexName, @Nullable final Integer batchSize, @Nullable final Collation collation,
- @Nullable final BsonValue comment, @Nullable final Boolean allowDiskUse) {
- return operations.listSearchIndexes(resultClass, indexName, batchSize, collation, comment, allowDiskUse);
- }
-
- public AsyncWriteOperation dropIndex(final String indexName, final DropIndexOptions options) {
- return operations.dropIndex(indexName, options);
- }
-
- public AsyncWriteOperation dropIndex(final Bson keys, final DropIndexOptions options) {
- return operations.dropIndex(keys, options);
- }
-
- public AsyncReadOperation> listCollections(final String databaseName,
- final Class resultClass, final Bson filter, final boolean collectionNamesOnly, final boolean authorizedCollections,
- @Nullable final Integer batchSize, final BsonValue comment, @Nullable final TimeoutMode timeoutMode) {
- return operations.listCollections(databaseName, resultClass, filter, collectionNamesOnly, authorizedCollections,
- batchSize, comment, timeoutMode);
- }
-
- public AsyncReadOperation> listDatabases(final Class resultClass, final Bson filter,
- final Boolean nameOnly, final Boolean authorizedDatabases, final BsonValue comment) {
- return operations.listDatabases(resultClass, filter, nameOnly, authorizedDatabases, comment);
- }
-
- public AsyncReadOperation> listIndexes(final Class resultClass,
- @Nullable final Integer batchSize, final BsonValue comment, @Nullable final TimeoutMode timeoutMode) {
- return operations.listIndexes(resultClass, batchSize, comment, timeoutMode);
- }
-
- public AsyncReadOperation> changeStream(final FullDocument fullDocument,
- final FullDocumentBeforeChange fullDocumentBeforeChange, final List extends Bson> pipeline,
- final Decoder decoder, final ChangeStreamLevel changeStreamLevel, final Integer batchSize, final Collation collation,
- final BsonValue comment, final BsonDocument resumeToken, final BsonTimestamp startAtOperationTime,
- final BsonDocument startAfter, final boolean showExpandedEvents) {
- return operations.changeStream(fullDocument, fullDocumentBeforeChange, pipeline, decoder, changeStreamLevel, batchSize,
- collation, comment, resumeToken, startAtOperationTime, startAfter, showExpandedEvents);
- }
-}
diff --git a/driver-core/src/main/com/mongodb/internal/operation/AsyncWriteOperation.java b/driver-core/src/main/com/mongodb/internal/operation/AsyncWriteOperation.java
deleted file mode 100644
index ca6f5f910a5..00000000000
--- a/driver-core/src/main/com/mongodb/internal/operation/AsyncWriteOperation.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright 2008-present MongoDB, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.mongodb.internal.operation;
-
-import com.mongodb.internal.async.SingleResultCallback;
-import com.mongodb.internal.binding.AsyncWriteBinding;
-
-/**
- * An operation which asynchronously writes to a MongoDB server.
- *
- * @param the operations result type.
- *
- * This class is not part of the public API and may be removed or changed at any time
- */
-public interface AsyncWriteOperation {
-
- /**
- * @return the command name of the operation, e.g. "insert", "update", "delete", "bulkWrite", etc.
- */
- String getCommandName();
-
- /**
- * General execute which can return anything of type T
- *
- * @param binding the binding to execute in the context of
- * @param callback the callback to be called when the operation has been executed
- */
- void executeAsync(AsyncWriteBinding binding, SingleResultCallback callback);
-}
diff --git a/driver-core/src/main/com/mongodb/internal/operation/BaseFindAndModifyOperation.java b/driver-core/src/main/com/mongodb/internal/operation/BaseFindAndModifyOperation.java
index c1fc6adc9f3..c5d56fda81c 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/BaseFindAndModifyOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/BaseFindAndModifyOperation.java
@@ -45,7 +45,7 @@
*
* This class is not part of the public API and may be removed or changed at any time
*/
-public abstract class BaseFindAndModifyOperation implements AsyncWriteOperation, WriteOperation {
+public abstract class BaseFindAndModifyOperation implements WriteOperation {
private static final String COMMAND_NAME = "findAndModify";
private final MongoNamespace namespace;
private final WriteConcern writeConcern;
diff --git a/driver-core/src/main/com/mongodb/internal/operation/ChangeStreamOperation.java b/driver-core/src/main/com/mongodb/internal/operation/ChangeStreamOperation.java
index 84d5513dd69..f4c896ba6e9 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/ChangeStreamOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/ChangeStreamOperation.java
@@ -51,7 +51,7 @@
*
* This class is not part of the public API and may be removed or changed at any time
*/
-public class ChangeStreamOperation implements AsyncReadOperation>, ReadOperation> {
+public class ChangeStreamOperation implements ReadOperationCursor {
private static final RawBsonDocumentCodec RAW_BSON_DOCUMENT_CODEC = new RawBsonDocumentCodec();
private final AggregateOperationImpl wrapped;
private final FullDocument fullDocument;
diff --git a/driver-core/src/main/com/mongodb/internal/operation/ClientBulkWriteOperation.java b/driver-core/src/main/com/mongodb/internal/operation/ClientBulkWriteOperation.java
index b2a3c93e4d5..2b9e79f6f06 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/ClientBulkWriteOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/ClientBulkWriteOperation.java
@@ -146,7 +146,7 @@
/**
* This class is not part of the public API and may be removed or changed at any time.
*/
-public final class ClientBulkWriteOperation implements AsyncWriteOperation, WriteOperation {
+public final class ClientBulkWriteOperation implements WriteOperation {
private static final ConcreteClientBulkWriteOptions EMPTY_OPTIONS = new ConcreteClientBulkWriteOptions();
private static final String BULK_WRITE_COMMAND_NAME = "bulkWrite";
private static final EncoderContext DEFAULT_ENCODER_CONTEXT = EncoderContext.builder().build();
diff --git a/driver-core/src/main/com/mongodb/internal/operation/CommandReadOperation.java b/driver-core/src/main/com/mongodb/internal/operation/CommandReadOperation.java
index 1e395315c24..6965bfc34a3 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/CommandReadOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/CommandReadOperation.java
@@ -32,7 +32,7 @@
*
* This class is not part of the public API and may be removed or changed at any time
*/
-public class CommandReadOperation implements AsyncReadOperation, ReadOperation {
+public class CommandReadOperation implements ReadOperationSimple {
private final String commandName;
private final String databaseName;
private final CommandCreator commandCreator;
diff --git a/driver-core/src/main/com/mongodb/internal/operation/CountDocumentsOperation.java b/driver-core/src/main/com/mongodb/internal/operation/CountDocumentsOperation.java
index 6789adb093c..9460026062a 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/CountDocumentsOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/CountDocumentsOperation.java
@@ -37,7 +37,7 @@
/**
* This class is not part of the public API and may be removed or changed at any time
*/
-public class CountDocumentsOperation implements AsyncReadOperation, ReadOperation {
+public class CountDocumentsOperation implements ReadOperationSimple {
private static final String COMMAND_NAME = "aggregate";
private static final Decoder DECODER = new BsonDocumentCodec();
private final MongoNamespace namespace;
diff --git a/driver-core/src/main/com/mongodb/internal/operation/CountOperation.java b/driver-core/src/main/com/mongodb/internal/operation/CountOperation.java
index 23dfe4b52e8..6d0b7b78f93 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/CountOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/CountOperation.java
@@ -41,7 +41,7 @@
/**
* This class is not part of the public API and may be removed or changed at any time
*/
-public class CountOperation implements AsyncReadOperation, ReadOperation {
+public class CountOperation implements ReadOperationSimple {
private static final String COMMAND_NAME = "count";
private static final Decoder DECODER = new BsonDocumentCodec();
private final MongoNamespace namespace;
diff --git a/driver-core/src/main/com/mongodb/internal/operation/CreateCollectionOperation.java b/driver-core/src/main/com/mongodb/internal/operation/CreateCollectionOperation.java
index 582a622d21b..5284076eecb 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/CreateCollectionOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/CreateCollectionOperation.java
@@ -66,7 +66,7 @@
*
* This class is not part of the public API and may be removed or changed at any time
*/
-public class CreateCollectionOperation implements AsyncWriteOperation, WriteOperation {
+public class CreateCollectionOperation implements WriteOperation {
private static final String ENCRYPT_PREFIX = "enxcol_.";
private static final BsonDocument ENCRYPT_CLUSTERED_INDEX = BsonDocument.parse("{key: {_id: 1}, unique: true}");
private static final BsonArray SAFE_CONTENT_ARRAY = new BsonArray(
diff --git a/driver-core/src/main/com/mongodb/internal/operation/CreateIndexesOperation.java b/driver-core/src/main/com/mongodb/internal/operation/CreateIndexesOperation.java
index 34eaea3713d..b9b4242a3f4 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/CreateIndexesOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/CreateIndexesOperation.java
@@ -57,7 +57,7 @@
*
* This class is not part of the public API and may be removed or changed at any time
*/
-public class CreateIndexesOperation implements AsyncWriteOperation, WriteOperation {
+public class CreateIndexesOperation implements WriteOperation {
private static final String COMMAND_NAME = "createIndexes";
private final MongoNamespace namespace;
private final List requests;
diff --git a/driver-core/src/main/com/mongodb/internal/operation/CreateViewOperation.java b/driver-core/src/main/com/mongodb/internal/operation/CreateViewOperation.java
index 26ece818ec6..49b47fb7e9c 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/CreateViewOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/CreateViewOperation.java
@@ -46,7 +46,7 @@
*
* This class is not part of the public API and may be removed or changed at any time
*/
-public class CreateViewOperation implements AsyncWriteOperation, WriteOperation {
+public class CreateViewOperation implements WriteOperation {
private final String databaseName;
private final String viewName;
private final String viewOn;
diff --git a/driver-core/src/main/com/mongodb/internal/operation/DistinctOperation.java b/driver-core/src/main/com/mongodb/internal/operation/DistinctOperation.java
index 6fe02f7ac08..489e3923bdc 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/DistinctOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/DistinctOperation.java
@@ -45,7 +45,7 @@
*
* This class is not part of the public API and may be removed or changed at any time
*/
-public class DistinctOperation implements AsyncReadOperation>, ReadOperation> {
+public class DistinctOperation implements ReadOperationCursor {
private static final String COMMAND_NAME = "distinct";
private static final String VALUES = "values";
private final MongoNamespace namespace;
diff --git a/driver-core/src/main/com/mongodb/internal/operation/DropCollectionOperation.java b/driver-core/src/main/com/mongodb/internal/operation/DropCollectionOperation.java
index bf9ac326376..5f61f2980f8 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/DropCollectionOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/DropCollectionOperation.java
@@ -59,7 +59,7 @@
*
* This class is not part of the public API and may be removed or changed at any time
*/
-public class DropCollectionOperation implements AsyncWriteOperation, WriteOperation {
+public class DropCollectionOperation implements WriteOperation {
private static final String ENCRYPT_PREFIX = "enxcol_.";
private static final BsonValueCodec BSON_VALUE_CODEC = new BsonValueCodec();
private final MongoNamespace namespace;
diff --git a/driver-core/src/main/com/mongodb/internal/operation/DropDatabaseOperation.java b/driver-core/src/main/com/mongodb/internal/operation/DropDatabaseOperation.java
index 8900d112bb8..d619176e8a3 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/DropDatabaseOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/DropDatabaseOperation.java
@@ -42,7 +42,7 @@
*
* This class is not part of the public API and may be removed or changed at any time
*/
-public class DropDatabaseOperation implements AsyncWriteOperation, WriteOperation {
+public class DropDatabaseOperation implements WriteOperation {
private final String databaseName;
private final WriteConcern writeConcern;
diff --git a/driver-core/src/main/com/mongodb/internal/operation/DropIndexOperation.java b/driver-core/src/main/com/mongodb/internal/operation/DropIndexOperation.java
index 81fcf5129e7..3671a90aa56 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/DropIndexOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/DropIndexOperation.java
@@ -40,7 +40,7 @@
*
* This class is not part of the public API and may be removed or changed at any time
*/
-public class DropIndexOperation implements AsyncWriteOperation, WriteOperation {
+public class DropIndexOperation implements WriteOperation {
private static final String COMMAND_NAME = "dropIndexes";
private final MongoNamespace namespace;
private final String indexName;
diff --git a/driver-core/src/main/com/mongodb/internal/operation/EstimatedDocumentCountOperation.java b/driver-core/src/main/com/mongodb/internal/operation/EstimatedDocumentCountOperation.java
index 1d8ddd429ea..427cd40dc40 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/EstimatedDocumentCountOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/EstimatedDocumentCountOperation.java
@@ -44,7 +44,7 @@
/**
* This class is not part of the public API and may be removed or changed at any time
*/
-public class EstimatedDocumentCountOperation implements AsyncReadOperation, ReadOperation {
+public class EstimatedDocumentCountOperation implements ReadOperationSimple {
private static final String COMMAND_NAME = "count";
private static final Decoder DECODER = new BsonDocumentCodec();
private final MongoNamespace namespace;
diff --git a/driver-core/src/main/com/mongodb/internal/operation/FindOperation.java b/driver-core/src/main/com/mongodb/internal/operation/FindOperation.java
index ab37613db13..04d4d7afd67 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/FindOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/FindOperation.java
@@ -67,7 +67,7 @@
*
* This class is not part of the public API and may be removed or changed at any time
*/
-public class FindOperation implements AsyncExplainableReadOperation>, ExplainableReadOperation> {
+public class FindOperation implements ReadOperationExplainable {
private static final String COMMAND_NAME = "find";
private static final String FIRST_BATCH = "firstBatch";
@@ -361,11 +361,6 @@ private static SingleResultCallback exceptionTransformingCallback(final S
public CommandReadOperation asExplainableOperation(@Nullable final ExplainVerbosity verbosity, final Decoder resultDecoder) {
return createExplainableOperation(verbosity, resultDecoder);
}
- @Override
- public AsyncReadOperation asAsyncExplainableOperation(@Nullable final ExplainVerbosity verbosity,
- final Decoder resultDecoder) {
- return createExplainableOperation(verbosity, resultDecoder);
- }
CommandReadOperation createExplainableOperation(@Nullable final ExplainVerbosity verbosity, final Decoder resultDecoder) {
return new CommandReadOperation<>(getNamespace().getDatabaseName(), getCommandName(),
diff --git a/driver-core/src/main/com/mongodb/internal/operation/ListCollectionsOperation.java b/driver-core/src/main/com/mongodb/internal/operation/ListCollectionsOperation.java
index cb20bbf897f..8740986b23f 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/ListCollectionsOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/ListCollectionsOperation.java
@@ -69,7 +69,7 @@
*
* This class is not part of the public API and may be removed or changed at any time
*/
-public class ListCollectionsOperation implements AsyncReadOperation>, ReadOperation> {
+public class ListCollectionsOperation implements ReadOperationCursor {
private static final String COMMAND_NAME = "listCollections";
private final String databaseName;
private final Decoder decoder;
diff --git a/driver-core/src/main/com/mongodb/internal/operation/ListDatabasesOperation.java b/driver-core/src/main/com/mongodb/internal/operation/ListDatabasesOperation.java
index ae05eb245b2..4787153190b 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/ListDatabasesOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/ListDatabasesOperation.java
@@ -42,7 +42,7 @@
*
* This class is not part of the public API and may be removed or changed at any time
*/
-public class ListDatabasesOperation implements AsyncReadOperation>, ReadOperation> {
+public class ListDatabasesOperation implements ReadOperationCursor {
private static final String COMMAND_NAME = "listDatabases";
private static final String DATABASES = "databases";
private final Decoder decoder;
diff --git a/driver-core/src/main/com/mongodb/internal/operation/ListIndexesOperation.java b/driver-core/src/main/com/mongodb/internal/operation/ListIndexesOperation.java
index d52021b2dca..a97acd64d58 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/ListIndexesOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/ListIndexesOperation.java
@@ -64,7 +64,7 @@
*
* This class is not part of the public API and may be removed or changed at any time
*/
-public class ListIndexesOperation implements AsyncReadOperation>, ReadOperation> {
+public class ListIndexesOperation implements ReadOperationCursor {
private static final String COMMAND_NAME = "listIndexes";
private final MongoNamespace namespace;
private final Decoder decoder;
diff --git a/driver-core/src/main/com/mongodb/internal/operation/ListSearchIndexesOperation.java b/driver-core/src/main/com/mongodb/internal/operation/ListSearchIndexesOperation.java
index dd28e5f3e25..7fadead0b57 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/ListSearchIndexesOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/ListSearchIndexesOperation.java
@@ -42,8 +42,7 @@
*
* This class is not part of the public API and may be removed or changed at any time
*/
-public final class ListSearchIndexesOperation
- implements AsyncExplainableReadOperation>, ExplainableReadOperation> {
+public final class ListSearchIndexesOperation implements ReadOperationExplainable {
private static final String COMMAND_NAME = "aggregate";
private static final String STAGE_LIST_SEARCH_INDEXES = "$listSearchIndexes";
private final MongoNamespace namespace;
@@ -107,16 +106,10 @@ public void executeAsync(final AsyncReadBinding binding, final SingleResultCallb
}
@Override
- public ReadOperation asExplainableOperation(@Nullable final ExplainVerbosity verbosity, final Decoder resultDecoder) {
+ public ReadOperationSimple asExplainableOperation(@Nullable final ExplainVerbosity verbosity, final Decoder resultDecoder) {
return asAggregateOperation().asExplainableOperation(verbosity, resultDecoder);
}
- @Override
- public AsyncReadOperation asAsyncExplainableOperation(@Nullable final ExplainVerbosity verbosity,
- final Decoder resultDecoder) {
- return asAggregateOperation().asAsyncExplainableOperation(verbosity, resultDecoder);
- }
-
private AggregateOperation asAggregateOperation() {
BsonDocument searchDefinition = getSearchDefinition();
BsonDocument listSearchIndexesStage = new BsonDocument(STAGE_LIST_SEARCH_INDEXES, searchDefinition);
diff --git a/driver-core/src/main/com/mongodb/internal/operation/MapReduceToCollectionOperation.java b/driver-core/src/main/com/mongodb/internal/operation/MapReduceToCollectionOperation.java
index 79151c0fb6e..bfcc73a5aa6 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/MapReduceToCollectionOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/MapReduceToCollectionOperation.java
@@ -58,7 +58,7 @@
*
* This class is not part of the public API and may be removed or changed at any time
*/
-public class MapReduceToCollectionOperation implements AsyncWriteOperation, WriteOperation {
+public class MapReduceToCollectionOperation implements WriteOperation {
private static final String COMMAND_NAME = "mapReduce";
private final MongoNamespace namespace;
private final BsonJavaScript mapFunction;
@@ -234,17 +234,7 @@ public void executeAsync(final AsyncWriteBinding binding, final SingleResultCall
* @param explainVerbosity the explain verbosity
* @return a read operation that when executed will explain this operation
*/
- public ReadOperation asExplainableOperation(final ExplainVerbosity explainVerbosity) {
- return createExplainableOperation(explainVerbosity);
- }
-
- /**
- * Gets an operation whose execution explains this operation.
- *
- * @param explainVerbosity the explain verbosity
- * @return a read operation that when executed will explain this operation
- */
- public AsyncReadOperation asExplainableOperationAsync(final ExplainVerbosity explainVerbosity) {
+ public ReadOperationSimple asExplainableOperation(final ExplainVerbosity explainVerbosity) {
return createExplainableOperation(explainVerbosity);
}
diff --git a/driver-core/src/main/com/mongodb/internal/operation/MapReduceWithInlineResultsOperation.java b/driver-core/src/main/com/mongodb/internal/operation/MapReduceWithInlineResultsOperation.java
index 76f3e674308..3976e5662f3 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/MapReduceWithInlineResultsOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/MapReduceWithInlineResultsOperation.java
@@ -53,8 +53,7 @@
*
* This class is not part of the public API and may be removed or changed at any time
*/
-public class MapReduceWithInlineResultsOperation implements ReadOperation>,
- AsyncReadOperation> {
+public class MapReduceWithInlineResultsOperation implements ReadOperation, MapReduceAsyncBatchCursor> {
private static final String COMMAND_NAME = "mapReduce";
private final MongoNamespace namespace;
private final BsonJavaScript mapFunction;
@@ -185,11 +184,7 @@ public void executeAsync(final AsyncReadBinding binding, final SingleResultCallb
asyncTransformer(), false, errHandlingCallback);
}
- public ReadOperation asExplainableOperation(final ExplainVerbosity explainVerbosity) {
- return createExplainableOperation(explainVerbosity);
- }
-
- public AsyncReadOperation asExplainableOperationAsync(final ExplainVerbosity explainVerbosity) {
+ public ReadOperationSimple asExplainableOperation(final ExplainVerbosity explainVerbosity) {
return createExplainableOperation(explainVerbosity);
}
diff --git a/driver-core/src/main/com/mongodb/internal/operation/MixedBulkWriteOperation.java b/driver-core/src/main/com/mongodb/internal/operation/MixedBulkWriteOperation.java
index 9bc947f0450..39ff2dab17f 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/MixedBulkWriteOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/MixedBulkWriteOperation.java
@@ -78,7 +78,7 @@
*
* This class is not part of the public API and may be removed or changed at any time
*/
-public class MixedBulkWriteOperation implements AsyncWriteOperation, WriteOperation {
+public class MixedBulkWriteOperation implements WriteOperation {
private final MongoNamespace namespace;
private final List extends WriteRequest> writeRequests;
private final boolean ordered;
diff --git a/driver-core/src/main/com/mongodb/internal/operation/Operations.java b/driver-core/src/main/com/mongodb/internal/operation/Operations.java
index 88af67a1204..1cfef2481a3 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/Operations.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/Operations.java
@@ -58,6 +58,7 @@
import com.mongodb.client.model.bulk.ClientNamespacedWriteModel;
import com.mongodb.client.model.changestream.FullDocument;
import com.mongodb.client.model.changestream.FullDocumentBeforeChange;
+import com.mongodb.internal.TimeoutSettings;
import com.mongodb.internal.bulk.DeleteRequest;
import com.mongodb.internal.bulk.IndexRequest;
import com.mongodb.internal.bulk.InsertRequest;
@@ -90,64 +91,137 @@
import static com.mongodb.assertions.Assertions.notNull;
import static java.lang.String.format;
import static java.util.Collections.singletonList;
+import static java.util.concurrent.TimeUnit.MILLISECONDS;
-final class Operations {
+public final class Operations {
+ @Nullable
private final MongoNamespace namespace;
- private final Class documentClass;
+ private final Class documentClass;
private final ReadPreference readPreference;
private final CodecRegistry codecRegistry;
private final ReadConcern readConcern;
private final WriteConcern writeConcern;
private final boolean retryWrites;
private final boolean retryReads;
+ private final TimeoutSettings timeoutSettings;
+
+ public Operations(final Class documentClass, final ReadPreference readPreference, final CodecRegistry codecRegistry,
+ final boolean retryReads, final TimeoutSettings timeoutSettings) {
+ this(null, documentClass, readPreference, codecRegistry, ReadConcern.DEFAULT, WriteConcern.ACKNOWLEDGED,
+ true, retryReads, timeoutSettings);
+ }
+
+ public Operations(@Nullable final MongoNamespace namespace, final Class documentClass, final ReadPreference readPreference,
+ final CodecRegistry codecRegistry, final boolean retryReads, final TimeoutSettings timeoutSettings) {
+ this(namespace, documentClass, readPreference, codecRegistry, ReadConcern.DEFAULT, WriteConcern.ACKNOWLEDGED,
+ true, retryReads, timeoutSettings);
+ }
- Operations(@Nullable final MongoNamespace namespace, final Class documentClass, final ReadPreference readPreference,
+ public Operations(@Nullable final MongoNamespace namespace, final Class documentClass, final ReadPreference readPreference,
final CodecRegistry codecRegistry, final ReadConcern readConcern, final WriteConcern writeConcern, final boolean retryWrites,
- final boolean retryReads) {
+ final boolean retryReads, final TimeoutSettings timeoutSettings) {
this.namespace = namespace;
this.documentClass = documentClass;
this.readPreference = readPreference;
this.codecRegistry = codecRegistry;
this.readConcern = readConcern;
- this.writeConcern = writeConcern;
this.retryWrites = retryWrites;
this.retryReads = retryReads;
+ this.timeoutSettings = timeoutSettings;
+
+ WriteConcern writeConcernToUse = writeConcern;
+ if (timeoutSettings.getTimeoutMS() != null) {
+ writeConcernToUse = assertNotNull(WriteConcernHelper.cloneWithoutTimeout(writeConcern));
+ }
+ this.writeConcern = writeConcernToUse;
}
@Nullable
- MongoNamespace getNamespace() {
+ public MongoNamespace getNamespace() {
return namespace;
}
- Class getDocumentClass() {
+ public Class getDocumentClass() {
return documentClass;
}
- ReadPreference getReadPreference() {
+ public ReadPreference getReadPreference() {
return readPreference;
}
- CodecRegistry getCodecRegistry() {
+ public CodecRegistry getCodecRegistry() {
return codecRegistry;
}
- ReadConcern getReadConcern() {
+ public ReadConcern getReadConcern() {
return readConcern;
}
- WriteConcern getWriteConcern() {
+ public WriteConcern getWriteConcern() {
return writeConcern;
}
- boolean isRetryWrites() {
+ public boolean isRetryWrites() {
return retryWrites;
}
- boolean isRetryReads() {
+ public boolean isRetryReads() {
return retryReads;
}
- CountDocumentsOperation countDocuments(final Bson filter, final CountOptions options) {
+ public TimeoutSettings getTimeoutSettings() {
+ return timeoutSettings;
+ }
+
+ public TimeoutSettings createTimeoutSettings(final long maxTimeMS) {
+ return timeoutSettings.withMaxTimeMS(maxTimeMS);
+ }
+
+ public TimeoutSettings createTimeoutSettings(final long maxTimeMS, final long maxAwaitTimeMS) {
+ return timeoutSettings.withMaxTimeAndMaxAwaitTimeMS(maxTimeMS, maxAwaitTimeMS);
+ }
+
+ @SuppressWarnings("deprecation") // MaxTime
+ public TimeoutSettings createTimeoutSettings(final CountOptions options) {
+ return createTimeoutSettings(options.getMaxTime(MILLISECONDS));
+ }
+
+ @SuppressWarnings("deprecation") // MaxTime
+ public TimeoutSettings createTimeoutSettings(final EstimatedDocumentCountOptions options) {
+ return createTimeoutSettings(options.getMaxTime(MILLISECONDS));
+ }
+
+ @SuppressWarnings("deprecation") // MaxTime
+ public TimeoutSettings createTimeoutSettings(final FindOptions options) {
+ return timeoutSettings.withMaxTimeAndMaxAwaitTimeMS(options.getMaxTime(MILLISECONDS), options.getMaxAwaitTime(MILLISECONDS));
+ }
+
+ @SuppressWarnings("deprecation") // MaxTime
+ public TimeoutSettings createTimeoutSettings(final FindOneAndDeleteOptions options) {
+ return createTimeoutSettings(options.getMaxTime(MILLISECONDS));
+ }
+
+ @SuppressWarnings("deprecation") // MaxTime
+ public TimeoutSettings createTimeoutSettings(final FindOneAndReplaceOptions options) {
+ return createTimeoutSettings(options.getMaxTime(MILLISECONDS));
+ }
+
+ @SuppressWarnings("deprecation") // MaxTime
+ public TimeoutSettings createTimeoutSettings(final FindOneAndUpdateOptions options) {
+ return timeoutSettings.withMaxTimeMS(options.getMaxTime(MILLISECONDS));
+ }
+
+ @SuppressWarnings("deprecation") // MaxTime
+ public TimeoutSettings createTimeoutSettings(final CreateIndexOptions options) {
+ return timeoutSettings.withMaxTimeMS(options.getMaxTime(MILLISECONDS));
+ }
+
+ @SuppressWarnings("deprecation") // MaxTime
+ public TimeoutSettings createTimeoutSettings(final DropIndexOptions options) {
+ return timeoutSettings.withMaxTimeMS(options.getMaxTime(MILLISECONDS));
+ }
+
+ public CountDocumentsOperation countDocuments(final Bson filter, final CountOptions options) {
CountDocumentsOperation operation = new CountDocumentsOperation(
assertNotNull(namespace))
.retryReads(retryReads)
@@ -164,31 +238,31 @@ CountDocumentsOperation countDocuments(final Bson filter, final CountOptions opt
return operation;
}
- EstimatedDocumentCountOperation estimatedDocumentCount(final EstimatedDocumentCountOptions options) {
+ public EstimatedDocumentCountOperation estimatedDocumentCount(final EstimatedDocumentCountOptions options) {
return new EstimatedDocumentCountOperation(
assertNotNull(namespace))
.retryReads(retryReads)
.comment(options.getComment());
}
- FindOperation findFirst(final Bson filter, final Class resultClass,
+ public FindOperation findFirst(final Bson filter, final Class resultClass,
final FindOptions options) {
return createFindOperation(assertNotNull(namespace), filter, resultClass, options).batchSize(0).limit(-1);
}
- FindOperation find(final Bson filter, final Class resultClass,
+ public FindOperation find(final Bson filter, final Class resultClass,
final FindOptions options) {
return createFindOperation(assertNotNull(namespace), filter, resultClass, options);
}
- FindOperation find(final MongoNamespace findNamespace, @Nullable final Bson filter,
- final Class resultClass, final FindOptions options) {
+ public FindOperation find(final MongoNamespace findNamespace, @Nullable final Bson filter,
+ final Class