[ 
https://issues.apache.org/jira/browse/DIRMINA-946?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13687790#comment-13687790
 ] 

Emmanuel Lecharny commented on DIRMINA-946:
-------------------------------------------

The pb is that the ByteBuffer you are trying to dump is a DirectBuffer. If so, 
the array() method won't work, because the byte[] is not visible in this case. 
Morever, the array() method is not guaranteed to work.

I would suggest a slight modification in the patch : you can check if the BB 
array() method is implemented with a hasArray() call. Always do that, just in 
case. If the array() method is not supported, I suggest to copy the bytes into 
a byte[], to spare the calls to slice.get(), and to avoid a code duplication at 
the end of the method, when the dump is done as ascii.

Note that the current patch is buggy on line 91 : doing a buffer.get( bytes ) 
whithout flipping the buffer will change the buffer's position, thus impacting 
the caller.
                
> ByteBufferDumper fails to dump ByteBuffers that are not backed by an array or 
> that are readonly
> -----------------------------------------------------------------------------------------------
>
>                 Key: DIRMINA-946
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-946
>             Project: MINA
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 3.0.0-trunk
>            Reporter: Raphaƫl P. Barazzutti
>            Assignee: Julien Vermillard
>
> ByteBufferDumper does a call to array() of the ByteBuffer, it throws an 
> exception if that last one isn't read/write and backed by an array.
> fix available here:
> https://github.com/rbarazzutti/mina/tree/bufferdumper-fix

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to