ExecuteStatementResult sendExecute()

in src/main/java/software/amazon/qldb/Session.java [192:223]


    ExecuteStatementResult sendExecute(String statement, List<IonValue> parameters, String txnId) {
        final List<ValueHolder> byteParameters = new ArrayList<>(parameters.size());

        if (!parameters.isEmpty()) {
            try {
                final IonBinaryWriterBuilder builder = IonBinaryWriterBuilder.standard();
                final ByteArrayOutputStream stream = new ByteArrayOutputStream();
                final IonWriter writer = builder.build(stream);
                for (IonValue parameter : parameters) {
                    parameter.writeTo(writer);
                    writer.finish();
                    final SdkBytes sdkBytes = SdkBytes.fromByteArray(stream.toByteArray());
                    final ValueHolder value = ValueHolder.builder().ionBinary(sdkBytes).build();
                    byteParameters.add(value);

                    // Reset the stream so that it can be re-used.
                    stream.reset();
                }
            } catch (IOException e) {
                throw QldbDriverException.create(String.format(Errors.SERIALIZING_PARAMS.get(), e.getMessage()),
                                                 e);
            }
        }

        final ExecuteStatementRequest request = ExecuteStatementRequest.builder()
                                                                       .statement(statement)
                                                                       .parameters(byteParameters)
                                                                       .transactionId(txnId)
                                                                       .build();
        SendCommandResponse result = send(SendCommandRequest.builder().executeStatement(request));
        return result.executeStatement();
    }