From cb60d030f49ec48fb2021480919cb364d5ff442d Mon Sep 17 00:00:00 2001
From: rsanchez <rsanchez@curisit.net>
Date: Fri, 12 Dec 2014 11:34:08 +0000
Subject: [PATCH] #2140 feature - fix - Added load of config file from ENV variable and changes on Http client connections

---
 src/main/java/net/curisit/securis/utils/Params.java |  331 +++++++++++++++++++++++++++++--------------------------
 1 files changed, 174 insertions(+), 157 deletions(-)

diff --git a/src/main/java/net/curisit/securis/utils/Params.java b/src/main/java/net/curisit/securis/utils/Params.java
index 622335b..af21626 100644
--- a/src/main/java/net/curisit/securis/utils/Params.java
+++ b/src/main/java/net/curisit/securis/utils/Params.java
@@ -1,5 +1,7 @@
 package net.curisit.securis.utils;
 
+import java.io.File;
+import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.text.MessageFormat;
@@ -17,193 +19,208 @@
  */
 public class Params {
 
-    private static final Logger LOG = LogManager.getLogger(Params.class);
+	private static final Logger LOG = LogManager.getLogger(Params.class);
 
-    /**
-     * Key used to store config file resource location. In a web application,
-     * can be set as initial parameter in a servlet loaded on startup
-     */
-    public static final String DEFAUT_SERVER_URL = "https://securis.curistec.com/api";
-    public static final String KEY_CONFIG_FILE = "/securis-client.properties";
+	/**
+	 * Key used to store config file resource location. In a web application,
+	 * can be set as initial parameter in a servlet loaded on startup
+	 */
+	public static final String DEFAUT_SERVER_URL = "https://securis.curistec.com/api";
+	public static final String CONFIG_FILE_RESOURCE = "/securis-client.properties";
+	public static final String ENV_PARAM_CONFIGFILE = "SECURIS_CLIENT_CONFIG_FILE";
 
-    private static Properties params = null;
+	private static Properties params = null;
 
-    static {
-        try {
-            loadParameters(KEY_CONFIG_FILE);
-        } catch (IOException e) {
-            LOG.error("Config file {} was not found in classpath", KEY_CONFIG_FILE);
-            System.exit(-2);
-        }
-    }
+	static {
+		try {
+			loadParameters();
+		} catch (IOException e) {
+			LOG.error("Config file {} was not found in classpath", CONFIG_FILE_RESOURCE);
+			System.exit(-2);
+		}
+	}
 
-    /**
-     * Loads application global parameters from a classpath resource
-     * 
-     * @param resource
-     *            : Resource location in classpath, i.e:
-     *            "/resource/cp-securis.conf"
-     * @throws IOException
-     */
-    public static void loadParameters(String resource) throws IOException {
+	/**
+	 * Loads application global parameters from a classpath resource
+	 * 
+	 * @param resource
+	 *            : Resource location in classpath, i.e:
+	 *            "/resource/cp-securis.conf"
+	 * @throws IOException
+	 */
+	public static void loadParameters() throws IOException {
 
-        LOG.debug("Loading params from " + resource);
-        InputStream fileis = Params.class.getResourceAsStream(resource);
+		String configPath = System.getenv(ENV_PARAM_CONFIGFILE);
+		if (configPath == null) {
+			configPath = System.getProperty(ENV_PARAM_CONFIGFILE);
+		}
+		InputStream fileis = null;
+		if (configPath != null) {
+			File configFile = new File(configPath);
+			if (configFile.exists()) {
+				LOG.info("Securis client config file read from: {}", configFile.getAbsolutePath());
+				fileis = new FileInputStream(configFile);
+			}
+		}
+		if (fileis == null) {
+			LOG.info("Securis client config file read from resource: {}", CONFIG_FILE_RESOURCE);
+			fileis = Params.class.getResourceAsStream(CONFIG_FILE_RESOURCE);
+		}
 
-        params = new Properties();
-        try {
+		params = new Properties();
+		try {
 
-            params.load(fileis);
-            LOG.debug("Params loaded OK from {}", resource);
-        } catch (IOException e) {
-            LOG.error("Error loading config file: " + e);
-            params = null;
-            throw e;
-        }
+			params.load(fileis);
+			LOG.debug("Params loaded OK");
+		} catch (IOException e) {
+			LOG.error("Error loading config file", e);
+			params = null;
+			throw e;
+		}
 
-    }
+	}
 
-    public static String getByDomain(String domain, String paramname) {
-        return getByDomain(domain, paramname, null);
-    }
+	public static String getByDomain(String domain, String paramname) {
+		return getByDomain(domain, paramname, null);
+	}
 
-    public static String getByPrefix(String prefix, String paramname) {
-        return get(prefix + "." + paramname, get(paramname));
-    }
+	public static String getByPrefix(String prefix, String paramname) {
+		return get(prefix + "." + paramname, get(paramname));
+	}
 
-    public static String getByPrefix(String prefix, String paramname, String defaultVal) {
-        return get(prefix + "." + paramname, get(paramname, defaultVal));
-    }
+	public static String getByPrefix(String prefix, String paramname, String defaultVal) {
+		return get(prefix + "." + paramname, get(paramname, defaultVal));
+	}
 
-    public static String getByDomain(String domain, String paramname, String defaultval) {
-        return get(paramname + "." + domain, defaultval);
-    }
+	public static String getByDomain(String domain, String paramname, String defaultval) {
+		return get(paramname + "." + domain, defaultval);
+	}
 
-    public static int getIntByDomain(String domain, String paramname) {
-        return getInt(paramname + "." + domain, getInt(paramname));
-    }
+	public static int getIntByDomain(String domain, String paramname) {
+		return getInt(paramname + "." + domain, getInt(paramname));
+	}
 
-    public static int getIntByDomain(String domain, String paramname, int defaultval) {
-        return getInt(paramname + "." + domain, defaultval);
-    }
+	public static int getIntByDomain(String domain, String paramname, int defaultval) {
+		return getInt(paramname + "." + domain, defaultval);
+	}
 
-    /**
-     * Gets a List with all values of properties that begins with
-     * <code>prefix</code> It reads sequentially. For example:
-     * 
-     * <pre>
-     * 	securis.sort.comparator.0: net.cp.securis.comparators.ComparePttidVsPtn
-     * 	securis.sort.comparator.1: net.cp.securis.comparators.CompareFrequency
-     * 	securis.sort.comparator.2: net.cp.securis.comparators.CompareOutgoingVsIncomming
-     * 	securis.sort.comparator.3: net.cp.securis.comparators.CompareDuration 
-     * 	securis.sort.comparator.4: net.cp.securis.comparators.CompareCallVsSms
-     * </pre>
-     * 
-     * That config (for prefix: "securis.sort.comparator" ) will return a
-     * List<String> with values:
-     * 
-     * <pre>
-     * 	"net.cp.securis.comparators.ComparePttidVsPtn", 
-     * 	"net.cp.securis.comparators.CompareFrequency", 
-     * 	"net.cp.securis.comparators.CompareOutgoingVsIncomming", 
-     * 	"net.cp.securis.comparators.CompareDuration", 
-     * 	"net.cp.securis.comparators.CompareCallVsSms"
-     * </pre>
-     * 
-     * Note: If there is a gap between suffixes process will stop, that is, only
-     * will be returned properties found before gap.
-     * 
-     * @param prefix
-     * @return
-     */
-    public static List<String> getListByPrefix(String prefix) {
-        List<String> list = new ArrayList<String>();
+	/**
+	 * Gets a List with all values of properties that begins with
+	 * <code>prefix</code> It reads sequentially. For example:
+	 * 
+	 * <pre>
+	 * 	securis.sort.comparator.0: net.cp.securis.comparators.ComparePttidVsPtn
+	 * 	securis.sort.comparator.1: net.cp.securis.comparators.CompareFrequency
+	 * 	securis.sort.comparator.2: net.cp.securis.comparators.CompareOutgoingVsIncomming
+	 * 	securis.sort.comparator.3: net.cp.securis.comparators.CompareDuration 
+	 * 	securis.sort.comparator.4: net.cp.securis.comparators.CompareCallVsSms
+	 * </pre>
+	 * 
+	 * That config (for prefix: "securis.sort.comparator" ) will return a
+	 * List<String> with values:
+	 * 
+	 * <pre>
+	 * 	"net.cp.securis.comparators.ComparePttidVsPtn", 
+	 * 	"net.cp.securis.comparators.CompareFrequency", 
+	 * 	"net.cp.securis.comparators.CompareOutgoingVsIncomming", 
+	 * 	"net.cp.securis.comparators.CompareDuration", 
+	 * 	"net.cp.securis.comparators.CompareCallVsSms"
+	 * </pre>
+	 * 
+	 * Note: If there is a gap between suffixes process will stop, that is, only
+	 * will be returned properties found before gap.
+	 * 
+	 * @param prefix
+	 * @return
+	 */
+	public static List<String> getListByPrefix(String prefix) {
+		List<String> list = new ArrayList<String>();
 
-        String tpl = prefix + ".{0}";
+		String tpl = prefix + ".{0}";
 
-        int i = 0;
-        String value = get(MessageFormat.format(tpl, i++));
-        while (value != null) {
-            list.add(value);
-            value = get(MessageFormat.format(tpl, i++));
-        }
+		int i = 0;
+		String value = get(MessageFormat.format(tpl, i++));
+		while (value != null) {
+			list.add(value);
+			value = get(MessageFormat.format(tpl, i++));
+		}
 
-        return list;
-    }
+		return list;
+	}
 
-    /**
-     * Gets param value in config file or environment variables
-     * 
-     * @param paramname
-     *            Global parameter's name
-     * @return Value of paramname or null if paramname is not found neither in
-     *         config file nor in environment variables
-     */
-    public static String get(String paramname) {
+	/**
+	 * Gets param value in config file or environment variables
+	 * 
+	 * @param paramname
+	 *            Global parameter's name
+	 * @return Value of paramname or null if paramname is not found neither in
+	 *         config file nor in environment variables
+	 */
+	public static String get(String paramname) {
 
-        assert (params != null) : "Parameters have not been loaded. Call method loadParameters(resource) before use Params.";
+		assert (params != null) : "Parameters have not been loaded. Call method loadParameters(resource) before use Params.";
 
-        String value = params.getProperty(paramname);
-        if (value == null)
-            value = System.getenv(paramname);
-        return value;
-    }
+		String value = params.getProperty(paramname);
+		if (value == null)
+			value = System.getenv(paramname);
+		return value;
+	}
 
-    /**
-     * Gets param value from config file or environment variables
-     * 
-     * @param paramname
-     *            Global parameter's name
-     * @param defaultval
-     * @return Value of paramname or defaultval if paramname is not found
-     */
-    public static String get(String paramname, String defaultval) {
-        String value = get(paramname);
-        return (value == null ? defaultval : value);
-    }
+	/**
+	 * Gets param value from config file or environment variables
+	 * 
+	 * @param paramname
+	 *            Global parameter's name
+	 * @param defaultval
+	 * @return Value of paramname or defaultval if paramname is not found
+	 */
+	public static String get(String paramname, String defaultval) {
+		String value = get(paramname);
+		return (value == null ? defaultval : value);
+	}
 
-    /**
-     * Gets param value in config file or environment variables
-     * 
-     * @param paramname
-     *            Global parameter's name
-     * @return Integer value of paramname or -1 if paramname is not found
-     *         neither in config file nor in environment variables
-     */
-    public static int getInt(String paramname) {
-        String value = get(paramname);
-        return (value == null ? -1 : Integer.parseInt(value));
-    }
+	/**
+	 * Gets param value in config file or environment variables
+	 * 
+	 * @param paramname
+	 *            Global parameter's name
+	 * @return Integer value of paramname or -1 if paramname is not found
+	 *         neither in config file nor in environment variables
+	 */
+	public static int getInt(String paramname) {
+		String value = get(paramname);
+		return (value == null ? -1 : Integer.parseInt(value));
+	}
 
-    /**
-     * Gets param value from config file or environment variables
-     * 
-     * @param paramname
-     *            Global parameter's name
-     * @param defaultval
-     * @return Integer value of paramname or defaultval if paramname is not
-     *         found
-     */
-    public static int getInt(String paramname, int defaultval) {
-        String value = get(paramname);
-        return (value == null ? defaultval : Integer.parseInt(value));
-    }
+	/**
+	 * Gets param value from config file or environment variables
+	 * 
+	 * @param paramname
+	 *            Global parameter's name
+	 * @param defaultval
+	 * @return Integer value of paramname or defaultval if paramname is not
+	 *         found
+	 */
+	public static int getInt(String paramname, int defaultval) {
+		String value = get(paramname);
+		return (value == null ? defaultval : Integer.parseInt(value));
+	}
 
-    public static class KEYS {
+	public static class KEYS {
 
-        /**
-         * Public key file, Usually in "PEM" format
-         */
-        public static final String PUBLIC_KEY_FILE = "public.key.file";
+		/**
+		 * Public key file, Usually in "PEM" format
+		 */
+		public static final String PUBLIC_KEY_FILE = "public.key.file";
 
-        public static final String APPLICATION_CODE = "app.code";
+		public static final String APPLICATION_CODE = "app.code";
 
-        public static final String CUSTOMER_CODE = "customer.code";
+		public static final String CUSTOMER_CODE = "customer.code";
 
-        public static final String PACK_CODE = "pack.code";
+		public static final String PACK_CODE = "pack.code";
 
-        public static final String LICENSE_SERVER_URL = "license.server.url";
+		public static final String LICENSE_SERVER_URL = "license.server.url";
 
-    }
+	}
 
 }

--
Gitblit v1.3.2