aboutsummaryrefslogtreecommitdiff
path: root/java/com/ibm/icu/impl/ICUConfig.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/ibm/icu/impl/ICUConfig.java')
-rw-r--r--java/com/ibm/icu/impl/ICUConfig.java77
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;
+ }
+}