You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by re...@apache.org on 2010/03/16 03:56:37 UTC

svn commit: r923557 - /harmony/enhanced/classlib/trunk/modules/nio_char/src/main/java/java/nio/charset/Charset.java

Author: regisxu
Date: Tue Mar 16 02:56:37 2010
New Revision: 923557

URL: http://svn.apache.org/viewvc?rev=923557&view=rev
Log:
Apply patch for HARMONY-6461: [classlib][nio_char]Remove alias cache from Charset

Modified:
    harmony/enhanced/classlib/trunk/modules/nio_char/src/main/java/java/nio/charset/Charset.java

Modified: harmony/enhanced/classlib/trunk/modules/nio_char/src/main/java/java/nio/charset/Charset.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/nio_char/src/main/java/java/nio/charset/Charset.java?rev=923557&r1=923556&r2=923557&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/nio_char/src/main/java/java/nio/charset/Charset.java (original)
+++ harmony/enhanced/classlib/trunk/modules/nio_char/src/main/java/java/nio/charset/Charset.java Tue Mar 16 02:56:37 2010
@@ -321,11 +321,6 @@ public abstract class Charset implements
      */
     @SuppressWarnings("unchecked")
     public static SortedMap<String, Charset> availableCharsets() {
-        // workaround: conflicted Charsets with icu4j 4.0
-        Charset.forName("TIS-620");
-        Charset.forName("windows-1258");
-        Charset.forName("cp856");
-        Charset.forName("cp922");
         // Initialize the built-in charsets map cache if necessary
         if (null == _builtInCharsets) {
             synchronized (Charset.class) {
@@ -448,7 +443,7 @@ public abstract class Charset implements
         }
         cs = _builtInProvider.charsetForName(charsetName);
         if (null != cs) {
-            cacheCharset(cs);
+            cacheCharset(cs, charsetName);
             return cs;
         }
 
@@ -477,7 +472,7 @@ public abstract class Charset implements
                         e.nextElement());
 				 inForNameInternal = false;
                 if (null != cs) {
-                    cacheCharset(cs);
+                    cacheCharset(cs, charsetName);
                     return cs;
                 }
             }
@@ -492,18 +487,15 @@ public abstract class Charset implements
     /*
      * save charset into cachedCharsetTable
      */
-    private static void cacheCharset(Charset cs) {
-        if (!cachedCharsetTable.containsKey(cs.name())){
-            cachedCharsetTable.put(cs.name(), cs);
-        }
-        Set<String> aliasesSet = cs.aliases();
-        if (null != aliasesSet) {
-            Iterator<String> iter = aliasesSet.iterator();
-            while (iter.hasNext()) {
-                String alias = iter.next();
-                if (!cachedCharsetTable.containsKey(alias)) {
-                    cachedCharsetTable.put(alias, cs);
-                }
+    private static void cacheCharset(Charset cs, String charsetName) {
+        String canonicalName = cs.name();
+        if (!cachedCharsetTable.containsKey(canonicalName)) {
+            cachedCharsetTable.put(canonicalName, cs);
+        }
+
+        if (!canonicalName.equals(charsetName)) {
+            if (!cachedCharsetTable.containsKey(charsetName)) {
+                cachedCharsetTable.put(charsetName, cs);
             }
         }
     }
@@ -554,7 +546,7 @@ public abstract class Charset implements
             }
             cs = _builtInProvider.charsetForName(charsetName);
             if (null != cs) {
-                cacheCharset(cs);
+                cacheCharset(cs, charsetName);
                 return true;
             }
             return false;