4646import static com .mongodb .operation .OperationHelper .AsyncCallableWithConnection ;
4747import static com .mongodb .operation .OperationHelper .CallableWithConnection ;
4848import static com .mongodb .operation .OperationHelper .LOGGER ;
49- import static com .mongodb .operation .OperationHelper .bypassDocumentValidationNotSupported ;
50- import static com .mongodb .operation .OperationHelper .getBypassDocumentValidationException ;
49+ import static com .mongodb .operation .OperationHelper .checkBypassDocumentValidationIsSupported ;
5150import static com .mongodb .operation .OperationHelper .releasingCallback ;
5251import static com .mongodb .operation .OperationHelper .serverIsAtLeastVersionTwoDotSix ;
5352import static com .mongodb .operation .OperationHelper .withConnection ;
@@ -135,9 +134,7 @@ public WriteConcernResult execute(final WriteBinding binding) {
135134 @ Override
136135 public WriteConcernResult call (final Connection connection ) {
137136 try {
138- if (bypassDocumentValidationNotSupported (bypassDocumentValidation , writeConcern , connection .getDescription ())) {
139- throw getBypassDocumentValidationException ();
140- }
137+ checkBypassDocumentValidationIsSupported (connection , bypassDocumentValidation , writeConcern );
141138 if (writeConcern .isAcknowledged () && serverIsAtLeastVersionTwoDotSix (connection .getDescription ())) {
142139 return translateBulkWriteResult (executeCommandProtocol (connection ));
143140 } else {
@@ -155,36 +152,45 @@ public void executeAsync(final AsyncWriteBinding binding, final SingleResultCall
155152 withConnection (binding , new AsyncCallableWithConnection () {
156153 @ Override
157154 public void call (final AsyncConnection connection , final Throwable t ) {
158- SingleResultCallback <WriteConcernResult > errHandlingCallback = errorHandlingCallback (callback , LOGGER );
155+ final SingleResultCallback <WriteConcernResult > errHandlingCallback = errorHandlingCallback (callback , LOGGER );
159156 if (t != null ) {
160157 errHandlingCallback .onResult (null , t );
161- } else if (bypassDocumentValidationNotSupported (bypassDocumentValidation , writeConcern , connection .getDescription ())) {
162- releasingCallback (errHandlingCallback , connection ).onResult (null , getBypassDocumentValidationException ());
163158 } else {
164- final SingleResultCallback <WriteConcernResult > wrappedCallback = releasingCallback (errHandlingCallback , connection );
165- if (writeConcern .isAcknowledged () && serverIsAtLeastVersionTwoDotSix (connection .getDescription ())) {
166- executeCommandProtocolAsync (connection , new SingleResultCallback <BulkWriteResult >() {
167- @ Override
168- public void onResult (final BulkWriteResult result , final Throwable t ) {
169- if (t != null ) {
170- wrappedCallback .onResult (null , translateException (t ));
171- } else {
172- wrappedCallback .onResult (translateBulkWriteResult (result ), null );
159+ checkBypassDocumentValidationIsSupported (connection , bypassDocumentValidation , writeConcern ,
160+ new AsyncCallableWithConnection () {
161+ @ Override
162+ public void call (final AsyncConnection connection , final Throwable t1 ) {
163+ if (t1 != null ) {
164+ releasingCallback (errHandlingCallback , connection ).onResult (null , t1 );
165+ } else {
166+ final SingleResultCallback <WriteConcernResult > wrappedCallback =
167+ releasingCallback (errHandlingCallback , connection );
168+ if (writeConcern .isAcknowledged () && serverIsAtLeastVersionTwoDotSix (connection .getDescription ())) {
169+ executeCommandProtocolAsync (connection , new SingleResultCallback <BulkWriteResult >() {
170+ @ Override
171+ public void onResult (final BulkWriteResult result , final Throwable t ) {
172+ if (t != null ) {
173+ wrappedCallback .onResult (null , translateException (t ));
174+ } else {
175+ wrappedCallback .onResult (translateBulkWriteResult (result ), null );
176+ }
177+ }
178+ });
179+ } else {
180+ executeProtocolAsync (connection , new SingleResultCallback <WriteConcernResult >() {
181+ @ Override
182+ public void onResult (final WriteConcernResult result , final Throwable t ) {
183+ if (t != null ) {
184+ wrappedCallback .onResult (null , translateException (t ));
185+ } else {
186+ wrappedCallback .onResult (result , null );
187+ }
188+ }
189+ });
190+ }
191+ }
173192 }
174- }
175- });
176- } else {
177- executeProtocolAsync (connection , new SingleResultCallback <WriteConcernResult >() {
178- @ Override
179- public void onResult (final WriteConcernResult result , final Throwable t ) {
180- if (t != null ) {
181- wrappedCallback .onResult (null , translateException (t ));
182- } else {
183- wrappedCallback .onResult (result , null );
184- }
185- }
186- });
187- }
193+ });
188194 }
189195 }
190196 });
0 commit comments