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/13 16:35:00 UTC

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

Tomas Shestakov created CODEC-259:
-------------------------------------

             Summary: Broken 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.12, 1.11
            Reporter: Tomas Shestakov


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:

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)