Skip to content

Commit 562a324

Browse files
committed
JAVA-2564: Overload all MongoCollection methods to take a ClientSession
1 parent 3437705 commit 562a324

16 files changed

+1607
-404
lines changed

driver/src/main/com/mongodb/AggregateIterableImpl.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,11 @@ class AggregateIterableImpl<TDocument, TResult> extends MongoIterableImpl<TResul
5050
private Boolean bypassDocumentValidation;
5151
private Collation collation;
5252

53-
AggregateIterableImpl(final MongoNamespace namespace, final Class<TDocument> documentClass, final Class<TResult> resultClass,
54-
final CodecRegistry codecRegistry, final ReadPreference readPreference, final ReadConcern readConcern,
55-
final WriteConcern writeConcern, final OperationExecutor executor, final List<? extends Bson> pipeline) {
56-
super(executor, readConcern, readPreference);
53+
AggregateIterableImpl(final ClientSession clientSession, final MongoNamespace namespace, final Class<TDocument> documentClass,
54+
final Class<TResult> resultClass, final CodecRegistry codecRegistry, final ReadPreference readPreference,
55+
final ReadConcern readConcern, final WriteConcern writeConcern, final OperationExecutor executor,
56+
final List<? extends Bson> pipeline) {
57+
super(clientSession, executor, readConcern, readPreference);
5758
this.namespace = notNull("namespace", namespace);
5859
this.documentClass = notNull("documentClass", documentClass);
5960
this.resultClass = notNull("resultClass", resultClass);
@@ -70,7 +71,7 @@ public void toCollection() {
7071
throw new IllegalStateException("The last stage of the aggregation pipeline must be $out");
7172
}
7273

73-
getExecutor().execute(createAggregateToCollectionOperation(aggregateList));
74+
getExecutor().execute(createAggregateToCollectionOperation(aggregateList), getClientSession());
7475
}
7576

7677
@Override
@@ -126,7 +127,7 @@ ReadOperation<BatchCursor<TResult>> asReadOperation() {
126127
BsonValue outCollection = getOutCollection(aggregateList);
127128

128129
if (outCollection != null) {
129-
getExecutor().execute(createAggregateToCollectionOperation(aggregateList));
130+
getExecutor().execute(createAggregateToCollectionOperation(aggregateList), getClientSession());
130131
FindOperation<TResult> findOperation =
131132
new FindOperation<TResult>(new MongoNamespace(namespace.getDatabaseName(), outCollection.asString().getValue()),
132133
codecRegistry.get(resultClass))

driver/src/main/com/mongodb/ChangeStreamIterableImpl.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,10 @@ final class ChangeStreamIterableImpl<TResult> extends MongoIterableImpl<ChangeSt
4949
private Collation collation;
5050

5151

52-
ChangeStreamIterableImpl(final MongoNamespace namespace, final CodecRegistry codecRegistry, final ReadPreference readPreference,
53-
final ReadConcern readConcern, final OperationExecutor executor, final List<? extends Bson> pipeline,
54-
final Class<TResult> resultClass) {
55-
super(executor, readConcern, readPreference);
52+
ChangeStreamIterableImpl(final ClientSession clientSession, final MongoNamespace namespace, final CodecRegistry codecRegistry,
53+
final ReadPreference readPreference, final ReadConcern readConcern, final OperationExecutor executor,
54+
final List<? extends Bson> pipeline, final Class<TResult> resultClass) {
55+
super(clientSession, executor, readConcern, readPreference);
5656
this.namespace = notNull("namespace", namespace);
5757
this.codecRegistry = notNull("codecRegistry", codecRegistry);
5858
this.pipeline = notNull("pipeline", pipeline);
@@ -92,7 +92,7 @@ public ChangeStreamIterable<TResult> collation(final Collation collation) {
9292

9393
@Override
9494
public <TDocument> MongoIterable<TDocument> withDocumentClass(final Class<TDocument> clazz) {
95-
return new MongoIterableImpl<TDocument>(getExecutor(), getReadConcern(), getReadPreference()) {
95+
return new MongoIterableImpl<TDocument>(getClientSession(), getExecutor(), getReadConcern(), getReadPreference()) {
9696
private ReadOperation<BatchCursor<TDocument>> operation = createChangeStreamOperation(codecRegistry.get(clazz));
9797

9898
@Override

driver/src/main/com/mongodb/DB.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@ public String getName() {
258258
*/
259259
public Set<String> getCollectionNames() {
260260
List<String> collectionNames =
261-
new MongoIterableImpl<DBObject>(executor, ReadConcern.DEFAULT, primary()) {
261+
new MongoIterableImpl<DBObject>(null, executor, ReadConcern.DEFAULT, primary()) {
262262
@Override
263263
ReadOperation<BatchCursor<DBObject>> asReadOperation() {
264264
return new ListCollectionsOperation<DBObject>(name, commandCodec);

driver/src/main/com/mongodb/DBCollection.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1171,7 +1171,8 @@ public List distinct(final String fieldName, final DBObject query, final ReadPre
11711171
@SuppressWarnings("unchecked")
11721172
public List distinct(final String fieldName, final DBCollectionDistinctOptions options) {
11731173
notNull("fieldName", fieldName);
1174-
return new MongoIterableImpl<BsonValue>(executor, options.getReadConcern() != null ? options.getReadConcern() : getReadConcern(),
1174+
return new MongoIterableImpl<BsonValue>(null, executor,
1175+
options.getReadConcern() != null ? options.getReadConcern() : getReadConcern(),
11751176
options.getReadPreference() != null ? options.getReadPreference() : getReadPreference()) {
11761177
@Override
11771178
ReadOperation<BatchCursor<BsonValue>> asReadOperation() {
@@ -2143,7 +2144,7 @@ public synchronized void setDBEncoderFactory(final DBEncoderFactory factory) {
21432144
* @mongodb.driver.manual core/indexes/ Indexes
21442145
*/
21452146
public List<DBObject> getIndexInfo() {
2146-
return new MongoIterableImpl<DBObject>(executor, ReadConcern.DEFAULT, primary()) {
2147+
return new MongoIterableImpl<DBObject>(null, executor, ReadConcern.DEFAULT, primary()) {
21472148
@Override
21482149
ReadOperation<BatchCursor<DBObject>> asReadOperation() {
21492150
return new ListIndexesOperation<DBObject>(getNamespace(), getDefaultDBObjectCodec());

driver/src/main/com/mongodb/DistinctIterableImpl.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,10 @@ class DistinctIterableImpl<TDocument, TResult> extends MongoIterableImpl<TResult
4141
private Collation collation;
4242

4343

44-
DistinctIterableImpl(final MongoNamespace namespace, final Class<TDocument> documentClass, final Class<TResult> resultClass,
45-
final CodecRegistry codecRegistry, final ReadPreference readPreference, final ReadConcern readConcern,
46-
final OperationExecutor executor, final String fieldName, final Bson filter) {
47-
super(executor, readConcern, readPreference);
44+
DistinctIterableImpl(final ClientSession clientSession, final MongoNamespace namespace, final Class<TDocument> documentClass,
45+
final Class<TResult> resultClass, final CodecRegistry codecRegistry, final ReadPreference readPreference,
46+
final ReadConcern readConcern, final OperationExecutor executor, final String fieldName, final Bson filter) {
47+
super(clientSession, executor, readConcern, readPreference);
4848
this.namespace = notNull("namespace", namespace);
4949
this.documentClass = notNull("documentClass", documentClass);
5050
this.resultClass = notNull("resultClass", resultClass);

driver/src/main/com/mongodb/ListIndexesIterableImpl.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ final class ListIndexesIterableImpl<TResult> extends MongoIterableImpl<TResult>
3333
private final CodecRegistry codecRegistry;
3434
private long maxTimeMS;
3535

36-
ListIndexesIterableImpl(final MongoNamespace namespace, final Class<TResult> resultClass, final CodecRegistry codecRegistry,
37-
final ReadPreference readPreference, final OperationExecutor executor) {
38-
super(executor, ReadConcern.DEFAULT, readPreference); // TODO: ReadConcern?
36+
ListIndexesIterableImpl(final ClientSession clientSession, final MongoNamespace namespace, final Class<TResult> resultClass,
37+
final CodecRegistry codecRegistry, final ReadPreference readPreference, final OperationExecutor executor) {
38+
super(clientSession, executor, ReadConcern.DEFAULT, readPreference);
3939
this.namespace = notNull("namespace", namespace);
4040
this.resultClass = notNull("resultClass", resultClass);
4141
this.codecRegistry = notNull("codecRegistry", codecRegistry);

driver/src/main/com/mongodb/MapReduceIterableImpl.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,11 @@ class MapReduceIterableImpl<TDocument, TResult> extends MongoIterableImpl<TResul
6363
private Boolean bypassDocumentValidation;
6464
private Collation collation;
6565

66-
MapReduceIterableImpl(final MongoNamespace namespace, final Class<TDocument> documentClass, final Class<TResult> resultClass,
67-
final CodecRegistry codecRegistry, final ReadPreference readPreference, final ReadConcern readConcern,
68-
final WriteConcern writeConcern, final OperationExecutor executor, final String mapFunction,
69-
final String reduceFunction) {
70-
super(executor, readConcern, readPreference);
66+
MapReduceIterableImpl(final ClientSession clientSession, final MongoNamespace namespace, final Class<TDocument> documentClass,
67+
final Class<TResult> resultClass, final CodecRegistry codecRegistry, final ReadPreference readPreference,
68+
final ReadConcern readConcern, final WriteConcern writeConcern, final OperationExecutor executor,
69+
final String mapFunction, final String reduceFunction) {
70+
super(clientSession, executor, readConcern, readPreference);
7171
this.namespace = notNull("namespace", namespace);
7272
this.documentClass = notNull("documentClass", documentClass);
7373
this.resultClass = notNull("resultClass", resultClass);
@@ -83,7 +83,7 @@ public void toCollection() {
8383
throw new IllegalStateException("The options must specify a non-inline result");
8484
}
8585

86-
getExecutor().execute(createMapReduceToCollectionOperation());
86+
getExecutor().execute(createMapReduceToCollectionOperation(), getClientSession());
8787
}
8888

8989
@Override
@@ -215,7 +215,7 @@ ReadOperation<BatchCursor<TResult>> asReadOperation() {
215215
}
216216
return new WrappedMapReduceReadOperation<TResult>(operation);
217217
} else {
218-
getExecutor().execute(createMapReduceToCollectionOperation());
218+
getExecutor().execute(createMapReduceToCollectionOperation(), getClientSession());
219219

220220
String dbName = databaseName != null ? databaseName : namespace.getDatabaseName();
221221
return new FindOperation<TResult>(new MongoNamespace(dbName, collectionName), codecRegistry.get(resultClass))

driver/src/main/com/mongodb/Mongo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -467,7 +467,7 @@ public ReplicaSetStatus getReplicaSetStatus() {
467467
*/
468468
@Deprecated
469469
public List<String> getDatabaseNames() {
470-
return new MongoIterableImpl<DBObject>(createOperationExecutor(), ReadConcern.DEFAULT, primary()) {
470+
return new MongoIterableImpl<DBObject>(null, createOperationExecutor(), ReadConcern.DEFAULT, primary()) {
471471
@Override
472472
ReadOperation<BatchCursor<DBObject>> asReadOperation() {
473473
return new ListDatabasesOperation<DBObject>(MongoClient.getCommandCodec());

0 commit comments

Comments
 (0)