1 package org.opensrf.util;
9 * Config reader and accesor module. This module reads an XML config file,
10 * then loads the file into an internal config, whose values may be accessed
11 * by xpath-style lookup paths.
15 /** The globl config instance */
16 private static Config config;
17 /** The object form of the parsed config */
18 private Map configObject;
20 * The log parsing context. This is used as a prefix to the
21 * config item search path. This allows config XML chunks to
22 * be inserted into arbitrary XML files.
24 private String context;
27 * @param context The config context
29 public Config(String context) {
30 this.context = context;
34 * Sets the global config object.
35 * @param c The config object to use.
37 public static void setConfig(Config c) {
42 * Parses an XML config file.
43 * @param filename The path to the file to parse.
45 public void parse(String filename) throws Exception {
46 String xml = Utils.fileToString(filename);
47 JSONObject jobj = XML.toJSONObject(xml);
48 configObject = (Map) new JSONReader(jobj.toString()).readObject();
52 * Returns the configuration value found at the requested path.
53 * @param path The search path
54 * @return The config value, or null if no value exists at the given path.
55 * @throws ConfigException thrown if nothing is found at the path
57 public static String getString(String path) throws ConfigException {
59 return (String) get(path);
60 } catch(Exception e) {
62 ConfigException("No config string found at " + path);
67 * Gets the int value at the given path
68 * @param path The search path
70 public static int getInt(String path) throws ConfigException {
72 return Integer.parseInt(getString(path));
73 } catch(Exception e) {
75 ConfigException("No config int found at " + path);
80 * Returns the configuration object found at the requested path.
81 * @param path The search path
82 * @return The config value
83 * @throws ConfigException thrown if nothing is found at the path
85 public static Object get(String path) throws ConfigException {
87 Object obj = Utils.findPath(config.configObject, config.context + path);
89 throw new ConfigException("");
91 } catch(Exception e) {
93 throw new ConfigException("No config object found at " + path);
98 * Returns the first item in the list found at the given path. If
99 * no list is found, ConfigException is thrown.
100 * @param path The search path
102 public static Object getFirst(String path) throws ConfigException {
103 Object obj = get(path);
104 if(obj instanceof List)
105 return ((List) obj).get(0);
111 * Returns the config as a JSON string
113 public String toString() {
114 return new JSONWriter(configObject).write();