@Test public void testArrayOffset() { CompositeReadableBuffer buffer = new CompositeReadableBuffer(); assertFalse(buffer.hasArray()); try { buffer.arrayOffset(); fail("Should throw UnsupportedOperationException"); } catch (UnsupportedOperationException e) { } buffer.append(new byte[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}); assertTrue(buffer.hasArray()); assertEquals("Unexpected array offset", 0, buffer.arrayOffset()); }
@Override public int arrayOffset() { if (hasArray()) { return currentOffset - position; } throw new UnsupportedOperationException("Buffer not backed by a single array"); }
CompositeReadableBuffer implements ReadableBuffer { @Override public int arrayOffset() { if (hasArray()) { return currentOffset - position; } throw new UnsupportedOperationException("Buffer not backed by a single array"); } }
CompositeReadableBuffer implements ReadableBuffer { @Override public int arrayOffset() { if (hasArray()) { return currentOffset - position; } throw new UnsupportedOperationException("Buffer not backed by a single array"); } CompositeReadableBuffer(); private  CompositeReadableBuffer(byte[] array, int offset); private  CompositeReadableBuffer(boolean compactable); }
CompositeReadableBuffer implements ReadableBuffer { @Override public int arrayOffset() { if (hasArray()) { return currentOffset - position; } throw new UnsupportedOperationException("Buffer not backed by a single array"); } CompositeReadableBuffer(); private  CompositeReadableBuffer(byte[] array, int offset); private  CompositeReadableBuffer(boolean compactable); List<byte[]> getArrays(); int getCurrentIndex(); int getCurrentArrayPosition(); @Override boolean hasArray(); @Override int capacity(); @Override byte[] array(); @Override int arrayOffset(); @Override byte get(); @Override byte get(int index); @Override int getInt(); @Override long getLong(); @Override short getShort(); @Override float getFloat(); @Override double getDouble(); @Override CompositeReadableBuffer get(byte[] data); @Override CompositeReadableBuffer get(byte[] data, int offset, int length); @Override CompositeReadableBuffer get(WritableBuffer target); @Override CompositeReadableBuffer position(int position); @Override int position(); @Override CompositeReadableBuffer slice(); @Override CompositeReadableBuffer flip(); @Override CompositeReadableBuffer limit(int limit); @Override int limit(); @Override CompositeReadableBuffer mark(); @Override CompositeReadableBuffer reset(); @Override CompositeReadableBuffer rewind(); @Override CompositeReadableBuffer clear(); @Override int remaining(); @Override boolean hasRemaining(); @Override CompositeReadableBuffer duplicate(); @Override ByteBuffer byteBuffer(); @Override String readUTF8(); @Override String readString(CharsetDecoder decoder); @Override CompositeReadableBuffer reclaimRead(); CompositeReadableBuffer append(byte[] array); CompositeReadableBuffer append(CompositeReadableBuffer buffer); CompositeReadableBuffer append(ReadableBuffer buffer); @Override int hashCode(); @Override boolean equals(Object other); @Override String toString(); }
CompositeReadableBuffer implements ReadableBuffer { @Override public int arrayOffset() { if (hasArray()) { return currentOffset - position; } throw new UnsupportedOperationException("Buffer not backed by a single array"); } CompositeReadableBuffer(); private  CompositeReadableBuffer(byte[] array, int offset); private  CompositeReadableBuffer(boolean compactable); List<byte[]> getArrays(); int getCurrentIndex(); int getCurrentArrayPosition(); @Override boolean hasArray(); @Override int capacity(); @Override byte[] array(); @Override int arrayOffset(); @Override byte get(); @Override byte get(int index); @Override int getInt(); @Override long getLong(); @Override short getShort(); @Override float getFloat(); @Override double getDouble(); @Override CompositeReadableBuffer get(byte[] data); @Override CompositeReadableBuffer get(byte[] data, int offset, int length); @Override CompositeReadableBuffer get(WritableBuffer target); @Override CompositeReadableBuffer position(int position); @Override int position(); @Override CompositeReadableBuffer slice(); @Override CompositeReadableBuffer flip(); @Override CompositeReadableBuffer limit(int limit); @Override int limit(); @Override CompositeReadableBuffer mark(); @Override CompositeReadableBuffer reset(); @Override CompositeReadableBuffer rewind(); @Override CompositeReadableBuffer clear(); @Override int remaining(); @Override boolean hasRemaining(); @Override CompositeReadableBuffer duplicate(); @Override ByteBuffer byteBuffer(); @Override String readUTF8(); @Override String readString(CharsetDecoder decoder); @Override CompositeReadableBuffer reclaimRead(); CompositeReadableBuffer append(byte[] array); CompositeReadableBuffer append(CompositeReadableBuffer buffer); CompositeReadableBuffer append(ReadableBuffer buffer); @Override int hashCode(); @Override boolean equals(Object other); @Override String toString();  }