@@ -173,29 +173,18 @@ protected WriteResult insert(List<DBObject> list, boolean shouldApply , WriteCon
173
173
}
174
174
}
175
175
176
- if ( shouldApply ){
177
- for (DBObject o : list ) {
178
- apply (o );
179
- _checkObject (o , false , false );
180
- Object id = o .get ("_id" );
181
- if (id instanceof ObjectId ) {
182
- ((ObjectId ) id ).notNew ();
183
- }
184
- }
185
- }
186
-
187
176
DBPort port = db .getConnector ().getPrimaryPort ();
188
177
try {
189
178
if (useWriteCommands (concern , port )) {
190
179
try {
191
- return translateBulkWriteResult (insertWithCommandProtocol (list , concern , encoder , port ), INSERT , concern ,
180
+ return translateBulkWriteResult (insertWithCommandProtocol (list , concern , encoder , port , shouldApply ), INSERT , concern ,
192
181
port .getAddress ());
193
182
} catch (BulkWriteException e ) {
194
183
throw translateBulkWriteException (e , INSERT );
195
184
}
196
185
}
197
186
else {
198
- return insertWithWriteProtocol (list , concern , encoder , port );
187
+ return insertWithWriteProtocol (list , concern , encoder , port , shouldApply );
199
188
}
200
189
} finally {
201
190
db .getConnector ().releasePort (port );
@@ -365,7 +354,7 @@ public void createIndex(final DBObject keys, final DBObject options, DBEncoder e
365
354
}
366
355
} else {
367
356
db .doGetCollection ("system.indexes" ).insertWithWriteProtocol (asList (index ), WriteConcern .SAFE ,
368
- DefaultDBEncoder .FACTORY .create (), port );
357
+ DefaultDBEncoder .FACTORY .create (), port , false );
369
358
}
370
359
} catch (IOException e ) {
371
360
throw new MongoException .Network ("Operation on server " + port .getAddress () + " failed" , e );
@@ -376,9 +365,9 @@ public void createIndex(final DBObject keys, final DBObject options, DBEncoder e
376
365
377
366
private BulkWriteResult insertWithCommandProtocol (final List <DBObject > list , final WriteConcern writeConcern ,
378
367
final DBEncoder encoder ,
379
- final DBPort port ) {
380
- for ( DBObject o : list ) {
381
- _checkObject ( o , false , false );
368
+ final DBPort port , final boolean shouldApply ) {
369
+ if ( shouldApply ) {
370
+ applyRulesForInsert ( list );
382
371
}
383
372
384
373
BaseWriteCommandMessage message = new InsertCommandMessage (getNamespace (), writeConcern , list ,
@@ -387,6 +376,17 @@ private BulkWriteResult insertWithCommandProtocol(final List<DBObject> list, fin
387
376
return writeWithCommandProtocol (port , INSERT , message , writeConcern );
388
377
}
389
378
379
+ private void applyRulesForInsert (final List <DBObject > list ) {
380
+ for (DBObject o : list ) {
381
+ _checkObject (o , false , false );
382
+ apply (o );
383
+ Object id = o .get ("_id" );
384
+ if (id instanceof ObjectId ) {
385
+ ((ObjectId ) id ).notNew ();
386
+ }
387
+ }
388
+ }
389
+
390
390
private BulkWriteResult removeWithCommandProtocol (final List <RemoveRequest > removeList ,
391
391
final WriteConcern writeConcern ,
392
392
final DBEncoder encoder , final DBPort port ) {
@@ -486,9 +486,9 @@ public CommandResult execute() throws IOException {
486
486
487
487
488
488
private WriteResult insertWithWriteProtocol (final List <DBObject > list , final WriteConcern concern , final DBEncoder encoder ,
489
- final DBPort port ) {
490
- for ( DBObject o : list ) {
491
- _checkObject ( o , false , false );
489
+ final DBPort port , final boolean shouldApply ) {
490
+ if ( shouldApply ) {
491
+ applyRulesForInsert ( list );
492
492
}
493
493
494
494
WriteResult last = null ;
@@ -792,7 +792,7 @@ BulkWriteResult executeWriteCommandProtocol() {
792
792
for (InsertRequest cur : insertRequests ) {
793
793
documents .add (cur .getDocument ());
794
794
}
795
- return insertWithCommandProtocol (documents , writeConcern , encoder , port );
795
+ return insertWithCommandProtocol (documents , writeConcern , encoder , port , true );
796
796
}
797
797
798
798
@ Override
0 commit comments