36
36
import java .util .ArrayList ;
37
37
import java .util .List ;
38
38
39
- import static com .mongodb .MongoClient .getDefaultCodecRegistry ;
40
39
import static com .mongodb .MongoNamespace .checkDatabaseNameValidity ;
41
40
import static com .mongodb .assertions .Assertions .notNull ;
42
41
@@ -132,25 +131,71 @@ public <TResult> TResult runCommand(final Bson command, final Class<TResult> res
132
131
133
132
@ Override
134
133
public <TResult > TResult runCommand (final Bson command , final ReadPreference readPreference , final Class <TResult > resultClass ) {
134
+ return executeCommand (null , command , readPreference , resultClass );
135
+ }
136
+
137
+ @ Override
138
+ public Document runCommand (final ClientSession clientSession , final Bson command ) {
139
+ return runCommand (clientSession , command , ReadPreference .primary (), Document .class );
140
+ }
141
+
142
+ @ Override
143
+ public Document runCommand (final ClientSession clientSession , final Bson command , final ReadPreference readPreference ) {
144
+ return runCommand (clientSession , command , readPreference , Document .class );
145
+ }
146
+
147
+ @ Override
148
+ public <TResult > TResult runCommand (final ClientSession clientSession , final Bson command , final Class <TResult > resultClass ) {
149
+ return runCommand (clientSession , command , ReadPreference .primary (), resultClass );
150
+ }
151
+
152
+ @ Override
153
+ public <TResult > TResult runCommand (final ClientSession clientSession , final Bson command , final ReadPreference readPreference ,
154
+ final Class <TResult > resultClass ) {
155
+ notNull ("clientSession" , clientSession );
156
+ return executeCommand (clientSession , command , readPreference , resultClass );
157
+ }
158
+
159
+ private <TResult > TResult executeCommand (final ClientSession clientSession , final Bson command , final ReadPreference readPreference ,
160
+ final Class <TResult > resultClass ) {
135
161
notNull ("readPreference" , readPreference );
136
162
return executor .execute (new CommandReadOperation <TResult >(getName (), toBsonDocument (command ), codecRegistry .get (resultClass )),
137
- readPreference );
163
+ readPreference , clientSession );
138
164
}
139
165
140
166
@ Override
141
167
public void drop () {
142
- executor .execute (new DropDatabaseOperation (name , getWriteConcern ()));
168
+ executeDrop (null );
169
+ }
170
+
171
+ @ Override
172
+ public void drop (final ClientSession clientSession ) {
173
+ executeDrop (clientSession );
174
+ }
175
+
176
+ private void executeDrop (final ClientSession clientSession ) {
177
+ executor .execute (new DropDatabaseOperation (name , getWriteConcern ()), clientSession );
143
178
}
144
179
145
180
@ Override
146
181
public MongoIterable <String > listCollectionNames () {
147
- return new ListCollectionsIterableImpl <BsonDocument >(name , BsonDocument .class , getDefaultCodecRegistry (), ReadPreference .primary (),
148
- executor ).map (new Function <BsonDocument , String >() {
149
- @ Override
150
- public String apply (final BsonDocument result ) {
151
- return result .getString ("name" ).getValue ();
152
- }
153
- });
182
+ return executeListCollectionNames (null );
183
+ }
184
+
185
+ @ Override
186
+ public MongoIterable <String > listCollectionNames (final ClientSession clientSession ) {
187
+ return executeListCollectionNames (clientSession );
188
+ }
189
+
190
+ private MongoIterable <String > executeListCollectionNames (final ClientSession clientSession ) {
191
+ notNull ("clientSession" , clientSession );
192
+ return executeListCollections (clientSession , BsonDocument .class )
193
+ .map (new Function <BsonDocument , String >() {
194
+ @ Override
195
+ public String apply (final BsonDocument result ) {
196
+ return result .getString ("name" ).getValue ();
197
+ }
198
+ });
154
199
}
155
200
156
201
@ Override
@@ -160,7 +205,24 @@ public ListCollectionsIterable<Document> listCollections() {
160
205
161
206
@ Override
162
207
public <TResult > ListCollectionsIterable <TResult > listCollections (final Class <TResult > resultClass ) {
163
- return new ListCollectionsIterableImpl <TResult >(name , resultClass , codecRegistry , ReadPreference .primary (), executor );
208
+ return executeListCollections (null , resultClass );
209
+ }
210
+
211
+ @ Override
212
+ public ListCollectionsIterable <Document > listCollections (final ClientSession clientSession ) {
213
+ return listCollections (clientSession , Document .class );
214
+ }
215
+
216
+ @ Override
217
+ public <TResult > ListCollectionsIterable <TResult > listCollections (final ClientSession clientSession , final Class <TResult > resultClass ) {
218
+ notNull ("clientSession" , clientSession );
219
+ return executeListCollections (clientSession , resultClass );
220
+ }
221
+
222
+ private <TResult > ListCollectionsIterable <TResult > executeListCollections (final ClientSession clientSession ,
223
+ final Class <TResult > resultClass ) {
224
+ return new ListCollectionsIterableImpl <TResult >(clientSession , name , resultClass , codecRegistry , ReadPreference .primary (),
225
+ executor );
164
226
}
165
227
166
228
@ Override
@@ -169,8 +231,25 @@ public void createCollection(final String collectionName) {
169
231
}
170
232
171
233
@ Override
172
- @ SuppressWarnings ("deprecation" )
173
234
public void createCollection (final String collectionName , final CreateCollectionOptions createCollectionOptions ) {
235
+ executeCreateCollection (null , collectionName , createCollectionOptions );
236
+ }
237
+
238
+ @ Override
239
+ public void createCollection (final ClientSession clientSession , final String collectionName ) {
240
+ createCollection (clientSession , collectionName , new CreateCollectionOptions ());
241
+ }
242
+
243
+ @ Override
244
+ public void createCollection (final ClientSession clientSession , final String collectionName ,
245
+ final CreateCollectionOptions createCollectionOptions ) {
246
+ notNull ("clientSession" , clientSession );
247
+ executeCreateCollection (clientSession , collectionName , createCollectionOptions );
248
+ }
249
+
250
+ @ SuppressWarnings ("deprecation" )
251
+ private void executeCreateCollection (final ClientSession clientSession , final String collectionName ,
252
+ final CreateCollectionOptions createCollectionOptions ) {
174
253
CreateCollectionOperation operation = new CreateCollectionOperation (name , collectionName , writeConcern )
175
254
.collation (createCollectionOptions .getCollation ())
176
255
.capped (createCollectionOptions .isCapped ())
@@ -194,7 +273,7 @@ public void createCollection(final String collectionName, final CreateCollection
194
273
if (validationOptions .getValidationAction () != null ) {
195
274
operation .validationAction (validationOptions .getValidationAction ());
196
275
}
197
- executor .execute (operation );
276
+ executor .execute (operation , clientSession );
198
277
}
199
278
200
279
@ Override
@@ -205,9 +284,28 @@ public void createView(final String viewName, final String viewOn, final List<?
205
284
@ Override
206
285
public void createView (final String viewName , final String viewOn , final List <? extends Bson > pipeline ,
207
286
final CreateViewOptions createViewOptions ) {
287
+ executeCreateView (null , viewName , viewOn , pipeline , createViewOptions );
288
+ }
289
+
290
+ @ Override
291
+ public void createView (final ClientSession clientSession , final String viewName , final String viewOn ,
292
+ final List <? extends Bson > pipeline ) {
293
+ createView (clientSession , viewName , viewOn , pipeline , new CreateViewOptions ());
294
+ }
295
+
296
+ @ Override
297
+ public void createView (final ClientSession clientSession , final String viewName , final String viewOn ,
298
+ final List <? extends Bson > pipeline , final CreateViewOptions createViewOptions ) {
299
+ executeCreateView (clientSession , viewName , viewOn , pipeline , createViewOptions );
300
+ }
301
+
302
+ private void executeCreateView (final ClientSession clientSession , final String viewName , final String viewOn ,
303
+ final List <? extends Bson > pipeline , final CreateViewOptions createViewOptions ) {
304
+ notNull ("clientSession" , clientSession );
208
305
notNull ("createViewOptions" , createViewOptions );
209
306
executor .execute (new CreateViewOperation (name , viewName , viewOn , createBsonDocumentList (pipeline ), writeConcern )
210
- .collation (createViewOptions .getCollation ()));
307
+ .collation (createViewOptions .getCollation ()),
308
+ clientSession );
211
309
}
212
310
213
311
private List <BsonDocument > createBsonDocumentList (final List <? extends Bson > pipeline ) {
0 commit comments