Steven Wurster created CODEC-183:
------------------------------------

             Summary: BaseNCodecOutputStream only supports writing EOF on 
close()
                 Key: CODEC-183
                 URL: https://issues.apache.org/jira/browse/CODEC-183
             Project: Commons Codec
          Issue Type: Bug
    Affects Versions: 1.6
         Environment: I'm running with version 1.6, but quick look shows it's 
present in 1.8.
            Reporter: Steven Wurster


The only way to add the EOF marker when encoding or decoding with the 
BaseNCodecOutputStream is via the close() function.  The flush() function does 
not perform this logic, and it is questionable whether or not it should.

The problem is that I want to write to a Base64OutputStream in the middle of 
writing to another stream.  That is, I will write some content to a stream, 
then wrap that stream with a Base64OutputStream to write some more (encoded) 
content, and then finish writing directly to the original stream (and so not 
encoded).  Calling flush() on the Base64OutputStream will not write the EOF 
marker, which means bytes can be lost.  I do not want to call close() on the 
Base64OutputStream as that will propagate to my original stream, which I need 
to leave open.

Ideas for resolving this include the following:
* Adding a separate function for writing the final (EOF) bytes without an 
explicit close (hacky solution).
* Changing the visibility of various functions and members so that I can write 
my own descendant that provides the functionality I want.  Note that the 
encode() and decode() functions on BaseNCodec used in the close() routine are 
package-private, and so I cannot call them within a descendant.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to