You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Tomas Shestakov (JIRA)" <ji...@apache.org> on 2019/07/21 06:43:00 UTC

[jira] [Reopened] (CODEC-259) Broken direct java.nio.ByteBuffer support in org.apache.commons.codec.binary.Hex

     [ 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)