[
https://issues.apache.org/jira/browse/CODEC-259?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Tomas Shestakov reopened 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}
> 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)