You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by te...@apache.org on 2008/09/24 12:06:20 UTC
svn commit: r698500 -
/harmony/enhanced/classlib/trunk/modules/nio_char/src/main/java/java/nio/charset/Charset.java
Author: tellison
Date: Wed Sep 24 03:06:20 2008
New Revision: 698500
URL: http://svn.apache.org/viewvc?rev=698500&view=rev
Log:
Apply patch for HARMONY-5695 ([classlib][nio_char] speed up of Charset.forNameInternal)
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=698500&r1=698499&r2=698500&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 Wed Sep 24 03:06:20 2008
@@ -106,7 +106,7 @@
private final HashSet<String> aliasesSet;
// cached Charset table
- private static HashMap<String, Charset> cachedCharsetTable = new HashMap<String, Charset>();
+ private final static HashMap<String, Charset> cachedCharsetTable = new HashMap<String, Charset>();
static {
/*
@@ -423,56 +423,54 @@
}
/*
- * Gets a <code> Charset </code> instance for the specified charset name. If
+ * Gets a <code>Charset</code> instance for the specified charset name. If
* the charset is not supported, returns null instead of throwing an
* exception.
*/
- private static Charset forNameInternal(String charsetName)
+ private synchronized static Charset forNameInternal(String charsetName)
throws IllegalCharsetNameException {
+ Charset cs = cachedCharsetTable.get(charsetName);
+ if (null != cs) {
+ return cs;
+ }
+
if (null == charsetName) {
throw new IllegalArgumentException();
}
checkCharsetName(charsetName);
- synchronized (Charset.class) {
- // Try to get Charset from cachedCharsetTable
- Charset cs = getCachedCharset(charsetName);
- if (null != cs) {
- return cs;
- }
- // Try built-in charsets
- if (_builtInProvider == null) {
- _builtInProvider = new CharsetProviderImpl();
- }
- cs = _builtInProvider.charsetForName(charsetName);
- if (null != cs) {
- cacheCharset(cs);
- return cs;
- }
-
- // Collect all charsets provided by charset providers
- ClassLoader contextClassLoader = getContextClassLoader();
- Enumeration<URL> e = null;
- try {
- if (null != contextClassLoader) {
- e = contextClassLoader
- .getResources(PROVIDER_CONFIGURATION_FILE_NAME);
- } else {
- getSystemClassLoader();
- e = systemClassLoader
- .getResources(PROVIDER_CONFIGURATION_FILE_NAME);
- }
- // Examine each configuration file
- while (e.hasMoreElements()) {
- cs = searchConfiguredCharsets(charsetName,
- contextClassLoader, e.nextElement());
- if (null != cs) {
- cacheCharset(cs);
- return cs;
- }
+ // try built-in charsets
+ if (_builtInProvider == null) {
+ _builtInProvider = new CharsetProviderImpl();
+ }
+ cs = _builtInProvider.charsetForName(charsetName);
+ if (null != cs) {
+ cacheCharset(cs);
+ return cs;
+ }
+
+ // collect all charsets provided by charset providers
+ ClassLoader contextClassLoader = getContextClassLoader();
+ Enumeration<URL> e = null;
+ try {
+ if (null != contextClassLoader) {
+ e = contextClassLoader
+ .getResources(PROVIDER_CONFIGURATION_FILE_NAME);
+ } else {
+ getSystemClassLoader();
+ e = systemClassLoader
+ .getResources(PROVIDER_CONFIGURATION_FILE_NAME);
+ }
+ // examine each configuration file
+ while (e.hasMoreElements()) {
+ cs = searchConfiguredCharsets(charsetName, contextClassLoader,
+ e.nextElement());
+ if (null != cs) {
+ cacheCharset(cs);
+ return cs;
}
- } catch (IOException ex) {
- // Unexpected ClassLoader exception, ignore
}
+ } catch (IOException ex) {
+ // Unexpected ClassLoader exception, ignore
}
return null;
}
@@ -492,13 +490,6 @@
}
}
- /*
- * get cached charset reference by name
- */
- private static Charset getCachedCharset(String name) {
- return cachedCharsetTable.get(name);
- }
-
/**
* Gets a <code>Charset</code> instance for the specified charset name.
*