[ https://issues.apache.org/jira/browse/CODEC-259?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16889659#comment-16889659 ]
Tomas Shestakov commented on CODEC-259: --------------------------------------- Fixed only for DirectBuffer. But fails for HeapByteBuffer which arrayOffset() or byteBuffer.position() greater than zero or byteBuffer.remaining() is not equal byteBuffer.array().{color:#660e7a}length{color}: {code:java} @Test public void testEncodeHexByteBufferEmpty() { ByteBuffer zeroCapacity = allocate(0); ByteBuffer tenCapacity = allocate(10); tenCapacity.flip(); assertEquals(zeroCapacity, tenCapacity); assertTrue(Arrays.equals(new char[0], Hex.encodeHex(zeroCapacity))); assertTrue(Arrays.equals(new char[0], Hex.encodeHex(tenCapacity))); } {code} zeroCapacity and tenCapacity buffers are equal but Hex.encodeHex(zeroCapacity)) is not equal Hex.encodeHex(tenCapacity)) > Broken direct java.nio.ByteBuffer support in > org.apache.commons.codec.binary.Hex > -------------------------------------------------------------------------------- > > Key: CODEC-259 > URL: https://issues.apache.org/jira/browse/CODEC-259 > Project: Commons Codec > Issue Type: Bug > Affects Versions: 1.11, 1.12 > Reporter: Tomas Shestakov > Priority: Major > Fix For: 1.13 > > Time Spent: 20m > Remaining Estimate: 0h > > java.nio.ByteBuffer support in org.apache.commons.codec.binary.Hex does not > work properly for direct ByteBuffer created by ByteBuffer.allocateDirect > method and for heap ByteBuffers which arrayOffset() or byteBuffer.position() > greater than zero or byteBuffer.remaining() is not equal > byteBuffer.array().{color:#660e7a}length{color}: > This test will produce java.lang.UnsupportedOperationException > {code:java} > @Test > public void testEncodeHexByteBufferEmpty() { > assertTrue(Arrays.equals(new char[0], > Hex.encodeHex(ByteBuffer.allocateDirect(0)))); > } > {code} > This one will fail > {code:java} > @Test > public void testEncodeHexByteBufferHelloWorldLowerCaseHex() { > final ByteBuffer b = ByteBuffer.wrap(StringUtils.getBytesUtf8("[Hello > World]"), 1, 11); > final String expected = "48656c6c6f20576f726c64"; > char[] actual; > actual = Hex.encodeHex(b); > assertEquals(expected, new String(actual)); > actual = Hex.encodeHex(b, true); > assertEquals(expected, new String(actual)); > actual = Hex.encodeHex(b, false); > assertFalse(expected.equals(new String(actual))); > } > {code} -- This message was sent by Atlassian JIRA (v7.6.14#76016)