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


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
        }

   } 
}



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

Reply via email to