You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by hi...@apache.org on 2014/09/21 23:04:22 UTC

svn commit: r1626633 - /synapse/trunk/java/modules/commons/src/main/java/org/apache/synapse/commons/util/MiscellaneousUtil.java

Author: hiranya
Date: Sun Sep 21 21:04:21 2014
New Revision: 1626633

URL: http://svn.apache.org/r1626633
Log:
Fixing SYNAPSE-875 Applying patch from Dushan to support loading properties files from arbitrary locations

Modified:
    synapse/trunk/java/modules/commons/src/main/java/org/apache/synapse/commons/util/MiscellaneousUtil.java

Modified: synapse/trunk/java/modules/commons/src/main/java/org/apache/synapse/commons/util/MiscellaneousUtil.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/commons/src/main/java/org/apache/synapse/commons/util/MiscellaneousUtil.java?rev=1626633&r1=1626632&r2=1626633&view=diff
==============================================================================
--- synapse/trunk/java/modules/commons/src/main/java/org/apache/synapse/commons/util/MiscellaneousUtil.java (original)
+++ synapse/trunk/java/modules/commons/src/main/java/org/apache/synapse/commons/util/MiscellaneousUtil.java Sun Sep 21 21:04:21 2014
@@ -30,6 +30,8 @@ import java.util.Properties;
  */
 public class MiscellaneousUtil {
 
+	private static final String CONF_LOCATION = "conf.location";
+	
     private static Log log = LogFactory.getLog(MiscellaneousUtil.class);
 
     private MiscellaneousUtil() {
@@ -105,12 +107,12 @@ public class MiscellaneousUtil {
     }
 
     /**
-     * Loads the properties from a given property file path
-     *
-     * @param filePath Path of the property file
-     * @return Properties loaded from given file
-     */
-    public static Properties loadProperties(String filePath) {
+	 * Loads the properties from a given property file path
+	 * 
+	 * @param filePath Path of the property file
+	 * @return Properties loaded from given file
+	 */
+	public static Properties loadProperties(String filePath) {
 
         Properties properties = new Properties();
         ClassLoader cl = Thread.currentThread().getContextClassLoader();
@@ -118,15 +120,32 @@ public class MiscellaneousUtil {
         if (log.isDebugEnabled()) {
             log.debug("Loading a file '" + filePath + "' from classpath");
         }
-
-        InputStream in = cl.getResourceAsStream(filePath);
+        
+        InputStream in  = null;
+        
+        // if we reach this point assume that we may have to look into the user provided
+        // external location for the given properties
+		if (System.getProperty(CONF_LOCATION) != null) {
+			try {
+				in = new FileInputStream(System.getProperty(CONF_LOCATION) + File.separator + filePath);
+			} catch (FileNotFoundException e) {
+				log.warn("Error loading properties from a file at the System " +
+                        "defined location: " + filePath, e);
+			}
+		}
+		
+		if (in == null){
+			// if cannot find with system path definition look into the class path for the
+			// given property file
+			in = cl.getResourceAsStream(filePath);
+		}
+       
         if (in == null) {
             if (log.isDebugEnabled()) {
                 log.debug("Unable to load file  '" + filePath + "'");
             }
 
-            filePath = "conf" +
-                    File.separatorChar + filePath;
+            filePath = "conf" + File.separatorChar + filePath;
             if (log.isDebugEnabled()) {
                 log.debug("Loading a file '" + filePath + "' from classpath");
             }
@@ -138,6 +157,7 @@ public class MiscellaneousUtil {
                 }
             }
         }
+
         if (in != null) {
             try {
                 properties.load(in);