private static <D, T> void executeCommandAsync(final String database, final BsonDocument command,
                                                   final Decoder<D> decoder, final AsyncConnection connection,
                                                   final ReadPreference readPreference,
                                                   final CommandWriteTransformerAsync<D, T> transformer,
                                                   final SessionContext sessionContext,
                                                   final SingleResultCallback<T> callback) {
        connection.commandAsync(database, command, new NoOpFieldNameValidator(), readPreference, decoder, sessionContext,
                new SingleResultCallback<D>() {
                    @Override
                    public void onResult(final D result, final Throwable t) {
                        if (t != null) {
                            callback.onResult(null, t);
                        } else {
                            try {
                                T transformedResult = transformer.apply(result, connection);
                                callback.onResult(transformedResult, null);
                            } catch (Exception e) {
                                callback.onResult(null, e);
                            }
                        }
                    }
                });

    }
private static <D, T> void executeCommandAsync(final String database, final BsonDocument command,
                                                   final Decoder<D> decoder, final AsyncConnection connection,
                                                   final ReadPreference readPreference,
                                                   final CommandWriteTransformerAsync<D, T> transformer,
                                                   final SessionContext sessionContext,
                                                   final SingleResultCallback<T> callback) {
        connection.commandAsync(database, command, new NoOpFieldNameValidator(), readPreference, decoder, sessionContext,
                new SingleResultCallback<D>() {
                    @Override
                    public void onResult(final D result, final Throwable t) {
                        if (t != null) {
                            callback.onResult(null, t);
                        } else {
                            try {
                                T transformedResult = transformer.apply(result, connection);
                                callback.onResult(transformedResult, null);
                            } catch (Exception e) {
                                callback.onResult(null, e);
                            }
                        }
                    }
                });

    }
private static < D , T > void executeCommandAsync ( final String database , final BsonDocument command , final Decoder < D > decoder , final AsyncConnection connection , final ReadPreference readPreference , final CommandWriteTransformerAsync < D , T > transformer , final SessionContext sessionContext , final SingleResultCallback < T > callback ) { connection . commandAsync ( database , command , new NoOpFieldNameValidator ( ) , readPreference , decoder , sessionContext , new SingleResultCallback < D > ( ) { @ Override public void onResult ( final D result , final Throwable t ) { if ( t != null ) { callback . onResult ( null , t ) ; } else { try { T transformedResult = transformer . apply ( result , connection ) ; callback . onResult ( transformedResult , null ) ; } catch ( Exception e ) { callback . onResult ( null , e ) ; } } } } ) ; }
/* Async Connection Helpers
/ * Async Connection Helpers