[ 
https://issues.apache.org/jira/browse/IO-137?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Niall Pemberton resolved IO-137.
--------------------------------

       Resolution: Fixed
    Fix Version/s:     (was: 2.x)
                   2.0
         Assignee: Niall Pemberton

Thanks for the patch Nikunj, I looked at this again and have applied aslightly 
modified version:

 - I made the new toInputStream() method in ByteArrayOutputStream private and 
copied the static method from IOUtils into ByteArrayOutputStream - this removes 
the safety/consistency issue I had
 - I used Jukka's suggestion/improvement of using ByteArrayOutputStream's 
write(InputStream) suggestion which further removes array copying

http://svn.apache.org/viewvc?view=rev&revision=723507

> Added method for getting InputStream from ByteArrayOutputStream & IOUtils 
> avoiding unnecessary array allocation and copy
> ------------------------------------------------------------------------------------------------------------------------
>
>                 Key: IO-137
>                 URL: https://issues.apache.org/jira/browse/IO-137
>             Project: Commons IO
>          Issue Type: New Feature
>          Components: Streams/Writers, Utilities
>    Affects Versions: 1.3.2
>         Environment: Any OS with appropriate JVM
>            Reporter: Nikunj Trivedi
>            Assignee: Niall Pemberton
>             Fix For: 2.0
>
>         Attachments: baos_to_inputstream.patch, baos_toIstream.patch
>
>
> Patch inclues following two methods and test cases for both.
> 1) New Method: ByteArrayOutputStream.toInputStream
> ByteArrayOutputStream exposes its byte buffers by toByteArray(), which 
> creates a fresh buffer and copy existing data to it.
> A new method toInputStream() available in patch returns the current contents 
> of baos, as an InputStream, avoiding unnecessary allocation and copying.
> 2) New Method: IOUtils.toFullyBufferedInputStream
> There are situations where the InputStream source is available and it has to 
> be passed to different modules for processing.
> It is needed to fetch the full contents of the InputStream in internal 
> buffer(IOUtils.toByteArray() ), convert this buffer to ByteArrayInputStream 
> and use that stream instead. But this is wasteful since toByteArray() 
> requires one fresh allocation and copy operation.
> New method copies InputStream to ByteArrayOutputStream and returns 
> baos.toInputStream(), avoiding unnecessary memory allocation and copy.
> Testcases are available in respective classes.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to