harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Richard Liang <richard.lian...@gmail.com>
Subject Re: [jira] Commented: (HARMONY-68) java.nio.charset.Charset.isSupported(String charsetName) does not throw IllegalCharsetNameException for spoiled standard sharset name
Date Fri, 17 Feb 2006 16:12:58 GMT
Hello Tim,

I think this is caused by different understanding of the java spec:

A charset name **must** begin with either a letter or a digit. The empty 
string is not a legal charset name....

What do think the implication of "must" here? :-)

Richard Liang
China Software Development Lab, IBM



Tim Ellison (JIRA) wrote:
>     [ http://issues.apache.org/jira/browse/HARMONY-68?page=comments#action_12366784 ]

>
> Tim Ellison commented on HARMONY-68:
> ------------------------------------
>
> The test looks invalid to me.  You shoud only expect an java.nio.charset.IllegalCharsetNameException
if the name itself contains disallowed characters, and both underscore and dash are permitted.
>
> The code 
>     Charset.isSupported("-UTF-8")
>
> should return false, not throw an exception.
>
>   
>> java.nio.charset.Charset.isSupported(String charsetName) does not throw IllegalCharsetNameException
for spoiled standard sharset name
>> -------------------------------------------------------------------------------------------------------------------------------------
>>
>>          Key: HARMONY-68
>>          URL: http://issues.apache.org/jira/browse/HARMONY-68
>>      Project: Harmony
>>         Type: Bug
>>   Components: Classlib
>>     Reporter: Svetlana Samoilenko
>>  Attachments: charset_patch.txt
>>
>> According to j2se 1.4.2 specification for Charset.isSupported(String charsetName)
 the method must throw IllegalCharsetNameException  "if the given charset name is illegal
". 
>> "Legal charset name must begin with either a letter or a digit. 
>> The test listed below shows that there is no the exception  if to insert "-" or "_"
symbols before standard sharset name, for example "-UTF-8" or "_US-ASCII".
>> Moreover the method returns "true" in this case.
>> BEA also does not throw the exception but returns "false".
>> Code to reproduce: 
>> import java.nio.charset.*; 
>>  
>> public class test2 { 
>>     public static void main (String[] args) {
>>         // string starts neither a letter nor a digit 
>>         boolean sup=false; 
>>         try{
>>              sup=Charset.isSupported("-UTF-8");
>>              System.out.println("***BAD. should be exception; sup="+sup); 
>>              sup=Charset.isSupported("_US-ASCII");
>>              System.out.println("***BAD. should be exception; sup="+sup); 
>>         } catch (IllegalCharsetNameException e) {  
>>             System.out.println("***OK. Expected IllegalCharsetNameException " + e);

>>         }       
>>     } 
>> } 
>> Steps to Reproduce: 
>> 1. Build Harmony (check-out on 2006-01-30) j2se subset as described in README.txt.

>> 2. Compile test2.java using BEA 1.4 javac 
>>     
>>> javac -d . test2.java 
>>>       
>> 3. Run java using compatible VM (J9) 
>>     
>>> java -showversion test2 
>>>       
>> Output: 
>> C:\tmp>C:\jrockit-j2sdk1.4.2_04\bin\java.exe -showversion test2 
>> java version "1.4.2_04" 
>> Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_04-b05) 
>> BEA WebLogic JRockit(TM) 1.4.2_04 JVM (build ari-31788-20040616-1132-win-ia32, Native
Threads, GC strategy: parallel) 
>> ***BAD. should be exception; sup=false
>> ***BAD. should be exception; sup=false
>> C:\tmp>C:\harmony\trunk\deploy\jre\bin\java -showversion test2 
>> (c) Copyright 1991, 2005 The Apache Software Foundation or its licensors, as applicable.

>> ***BAD. should be exception; sup=true
>> ***BAD. should be exception; sup=true
>> Suggested junit test case:
>> ------------------------ CharserTest.java -------------------------------------------------

>> import java.nio.charset.*; 
>> import junit.framework.*; 
>> public class CharsetTest extends TestCase { 
>>     public static void main(String[] args) { 
>>         junit.textui.TestRunner.run(CharsetTest.class); 
>>     } 
>>     public void test_isSupported() { 
>>       boolean sup=false; 
>>         // string starts neither a letter nor a digit 
>>         try{
>>             sup=Charset.isSupported("-UTF-8");
>>             fail("***BAD. should be exception IllegalCharsetNameException"); 
>>         } catch (IllegalCharsetNameException e) {  //expected
>>         }
>>         // string starts neither a letter nor a digit 
>>         try{
>>              sup=Charset.isSupported("_US-ASCII");
>>              fail("***BAD. should be exception IllegalCharsetNameException");  
>>         } catch (IllegalCharsetNameException e) {  //expected
>>         }
>>    } 
>> }
>>     
>
>   

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message