I replaced sun.io converters by an adaptor to sun.nio.cs coders

Ulf Zibis Ulf.Zibis at gmx.de
Tue Sep 16 14:03:03 UTC 2008

Hi Sherman,

your answer is short, so I assume you are in heavy work.
Thanks for your code sample. BTW, ByteToCharNIOAdaptor.java had no 
content, but anyway, it's informative to learn from your code. I could 
see details, I oversaw.
It's funny, that on my first approach I choosed the same names for the 
classes. Later I merged them together with XToYConverter's, as there is 
no more need to have them as abstract base class.
In your code I also discovered some deficits:
(1) It's not compatible to always throw IndexOutOfBoundsException, if 
the preconditions on the offset and length parameters do not hold, as 
XToYConverter's hehave different.
(2) You don't reuse the x-Buffer's for consecutive invocations of convert.
(3) In case of unmappable, you don't set badInputLength = cr.length()
(4) In case of overflow in flush(), you don't set charOff = 0
Also you reengineered xAll() and xAny() methods, which I didn't.
Helpful for me was, to reset encoder in catch block.

So I merged all aspects together:

Please also not my integration of XToYConverter's in Converter class.


Am 15.09.2008 18:45, Xueming Shen schrieb:
> Ulf Zibis wrote:
>> Hi Sherman,
>> I see only 1 solution: ByteToCharConverter#flush() should first 
>> invoke decoder.decode(src, dst, true) before decoder.flush(), because 
>> there is no compatible endOfInput-logic in sun.io package.
>> In this context, I must admit, that I don't understand the necessity 
>> of  this endOfInput-logic. It forces an additional invocation of 
>> encodeLoop() even if there is nothing to do in most cases. Why can't 
>> decoder.flush() do this job as in sun.io package???
> Attached are the code I wrote back to 2006 when we were struggling 
> whether or not to remove
> the whole sun.io package. This is only a "prototype" for the proposal, 
> so I did not even test it...
> yes, I finally dug it out to see what I dealt with back them:-)
> X-code(buffer, buffer, boolean) and flush() have different 
> role/functionality.
> We do have some mapping testing cases for sun.io package, but I've not 
> yet pushed them to the
> "open" area of JDK7.
> sherman

More information about the core-libs-dev mailing list