Richard Liang wrote:
> 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? :-)

But the name isn't empty, it is "-UTF-8" ?  I must be missing something...

Regards,
Tim


> 
> 
> 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
>>>         }
>>>    } }
>>>     
>>
>>   
> 

-- 

Tim Ellison ([EMAIL PROTECTED])
IBM Java technology centre, UK.

Reply via email to