private void testWithBuffer(ByteBuffer buffer) throws IOException { assertThat(asList(buffer.position(), buffer.remaining()), is(asList(0, EXAMPLE_DATA_SIZE))); ByteArrayOutputStream output = new ByteArrayOutputStream(EXAMPLE_DATA_SIZE * 2); EncoderFactory encoderFactory = new EncoderFactory(); encoderFactory.configureBufferSize(ENCODER_BUFFER_SIZE); Encoder encoder = encoderFactory.binaryEncoder(output, null); new GenericDatumWriter<ByteBuffer>(Schema.create(Schema.Type.BYTES)).write(buffer, encoder); encoder.flush(); assertThat(output.toByteArray(), equalTo(avroEncoded(someBytes(EXAMPLE_DATA_SIZE)))); assertThat(asList(buffer.position(), buffer.remaining()), is(asList(0, EXAMPLE_DATA_SIZE))); // fails if buffer is not array-backed and buffer overflow occurs }