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();
}