diff options
Diffstat (limited to 'java/com/ibm/icu/impl/ICUConfig.java')
-rw-r--r-- | java/com/ibm/icu/impl/ICUConfig.java | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/java/com/ibm/icu/impl/ICUConfig.java b/java/com/ibm/icu/impl/ICUConfig.java new file mode 100644 index 0000000..b875286 --- /dev/null +++ b/java/com/ibm/icu/impl/ICUConfig.java @@ -0,0 +1,77 @@ +/* + ******************************************************************************* + * Copyright (C) 2008-2010, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ +package com.ibm.icu.impl; + +import java.io.IOException; +import java.io.InputStream; +import java.security.AccessControlException; +import java.security.AccessController; +import java.security.PrivilegedAction; +import java.util.MissingResourceException; +import java.util.Properties; + +/** + * ICUConfig is a class used for accessing ICU4J runtime configuration. + */ +public class ICUConfig { + public static final String CONFIG_PROPS_FILE = "/com/ibm/icu/ICUConfig.properties"; + private static final Properties CONFIG_PROPS; + + static { + CONFIG_PROPS = new Properties(); + try { + InputStream is = ICUData.getStream(CONFIG_PROPS_FILE); + if (is != null) { + CONFIG_PROPS.load(is); + } + } catch (MissingResourceException mre) { + // If it does not exist, ignore. + } catch (IOException ioe) { + // Any IO errors, ignore + } + } + + /** + * Get ICU configuration property value for the given name. + * @param name The configuration property name + * @return The configuration property value, or null if it does not exist. + */ + public static String get(String name) { + return get(name, null); + } + + /** + * Get ICU configuration property value for the given name. + * @param name The configuration property name + * @param def The default value + * @return The configuration property value. If the property does not + * exist, <code>def</code> is returned. + */ + public static String get(String name, String def) { + String val = null; + final String fname = name; + if (System.getSecurityManager() != null) { + try { + val = AccessController.doPrivileged(new PrivilegedAction<String>() { + public String run() { + return System.getProperty(fname); + } + }); + } catch (AccessControlException e) { + // ignore + // TODO log this message + } + } else { + val = System.getProperty(name); + } + + if (val == null) { + val = CONFIG_PROPS.getProperty(name, def); + } + return val; + } +} |