Should the Anonymous user really be permitted to submit attachments?
We can't really use them unless provenance is clear.
I assume this was submitted by Richard but
-Mark.
On 3/14/06, Anonymous (JIRA) [EMAIL PROTECTED] wrote:
[ http://issues.apache.org/jira/browse/HARMONY-150?page=all ]
updated HARMONY-150:
-
Attachment: CharsetTest_Patch_150.txt
java.nio.charset.Charset.decode(in) doesn't use the same cached decoder.
Key: HARMONY-150
URL: http://issues.apache.org/jira/browse/HARMONY-150
Project: Harmony
Type: Bug
Components: Classlib
Reporter: Richard Liang
Attachments: CharsetTest_Patch_150.txt, Charset_patch_150.txt
java.nio.charset.Charset.decode(in) doesn't use the same cached decoder.
As spec says, An invocation of this method upon a charset cs returns the
same result as the expression cs.newDecoder()
.onMalformedInput(CodingErrorAction.REPLACE)
.onUnmappableCharacter(CodingErrorAction.REPLACE) .decode(bb); except that
it is potentially more efficient because it can cache decoders between
successive invocations.
RI always uses the same cached decoder (the same reference) for the same
name charset. For details, please refer to the test case below:
test case output =
RI 5.0 passes the test case while Harmony fails.
test case===
/*
* test cached decoder
*/
public void testCachedDecoder() throws Exception{
MockCachedCharset cs1 = new
MockCachedCharset(CachedCharset,null);
MockCachedCharset cs2 = new
MockCachedCharset(CachedCharset,null);
ByteBuffer in = ByteBuffer.wrap(new byte[]{0x00});
cs1.decode(in);
in.flip();
cs2.decode(in);
in.flip();
}
/*
* Mock Charset for cached decoder test
*/
static class MockCachedCharset extends Charset{
public MockCachedCharset(String canonicalName, String[]
aliases){
super(canonicalName, aliases);
}
public boolean contains(Charset charset) {
return false;
}
public CharsetEncoder newEncoder() {
return null;
}
public CharsetDecoder newDecoder() {
return new MockCachedDecoder(this);
}
}
/*
* Mock decoder. Only one caller is permitted.
*/
static class MockCachedDecoder extends CharsetDecoder {
static MockCachedDecoder caller = null;
public MockCachedDecoder(Charset cs) {
super(cs, 1, 10);
}
/*
* Only one caller is permitted.
* If there's another caller, throw RuntimeException.
*/
protected CoderResult decodeLoop(ByteBuffer in, CharBuffer
out) {
if(null == caller){
caller = this;
}else{
if(caller != this){
// Another instance
throw new RuntimeException();
}
}
return CoderResult.UNDERFLOW;
}
}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
--
Mark Hindess [EMAIL PROTECTED]
IBM Java Technology Centre, UK.