You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ek...@apache.org on 2015/06/08 11:46:01 UTC

[40/50] [abbrv] git commit: updated refs/heads/feature/vpc-ipv6 to 6140db5

Allow PropertiesUtil to read from jar files.

PropertiesUtil has code for reading from jar files, but the
findConfigFile method will prevent it from ever returning a file in a
jar on the classpath since it always wants to have a "file:" URL and
use the File class.

This commit moves the jar file loading attempt from a catch block to
an else clause, executed if a config file:// URL could not be found.

Signed-off-by: Daan Hoogland <da...@gmail.com>

This closes #358


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/db69c8e8
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/db69c8e8
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/db69c8e8

Branch: refs/heads/feature/vpc-ipv6
Commit: db69c8e82b555b4fb6d05f059bf64e87189ba6a9
Parents: 0326fb3
Author: jeff <je...@greenqloud.com>
Authored: Thu Jun 4 16:35:34 2015 +0000
Committer: Daan Hoogland <da...@gmail.com>
Committed: Mon Jun 8 09:19:21 2015 +0200

----------------------------------------------------------------------
 utils/src/com/cloud/utils/PropertiesUtil.java | 32 +++++++++++++---------
 1 file changed, 19 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/db69c8e8/utils/src/com/cloud/utils/PropertiesUtil.java
----------------------------------------------------------------------
diff --git a/utils/src/com/cloud/utils/PropertiesUtil.java b/utils/src/com/cloud/utils/PropertiesUtil.java
index fe5a366..4cb89f7 100644
--- a/utils/src/com/cloud/utils/PropertiesUtil.java
+++ b/utils/src/com/cloud/utils/PropertiesUtil.java
@@ -21,7 +21,6 @@ package com.cloud.utils;
 
 import java.io.File;
 import java.io.FileInputStream;
-import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
@@ -44,6 +43,7 @@ public class PropertiesUtil {
     public static File findConfigFile(String path) {
         ClassLoader cl = PropertiesUtil.class.getClassLoader();
         URL url = cl.getResource(path);
+
         if (url != null && "file".equals(url.getProtocol())) {
             return new File(url.getFile());
         }
@@ -124,6 +124,15 @@ public class PropertiesUtil {
         return null;
     }
 
+    public static void loadFromJar(Properties properties, String configFile) throws IOException {
+        InputStream stream = PropertiesUtil.openStreamFromURL(configFile);
+        if (stream != null) {
+            properties.load(stream);
+        } else {
+            s_logger.error("Unable to find properties file: " + configFile);
+        }
+    }
+
     // Returns key=value pairs by parsing a commands.properties/config file
     // with syntax; key=cmd;value (with this syntax cmd is stripped) and key=value
     public static Map<String, String> processConfigFile(String[] configFiles) {
@@ -134,22 +143,18 @@ public class PropertiesUtil {
             if (commandsFile != null) {
                 try {
                     loadFromFile(preProcessedCommands, commandsFile);
-                } catch (FileNotFoundException fnfex) {
-                    // in case of a file within a jar in classpath, try to open stream using url
-                    InputStream stream = PropertiesUtil.openStreamFromURL(configFile);
-                    if (stream != null) {
-                        try {
-                            preProcessedCommands.load(stream);
-                        } catch (IOException e) {
-                            s_logger.error("IO Exception, unable to find properties file:", fnfex);
-                        }
-                    } else {
-                        s_logger.error("Unable to find properites file", fnfex);
-                    }
                 } catch (IOException ioe) {
                     s_logger.error("IO Exception loading properties file", ioe);
                 }
             }
+            else {
+                // in case of a file within a jar in classpath, try to open stream using url
+                try {
+                    loadFromJar(preProcessedCommands, configFile);
+                } catch (IOException e) {
+                    s_logger.error("IO Exception loading properties file from jar", e);
+                }
+            }
         }
 
         for (Object key : preProcessedCommands.keySet()) {
@@ -158,6 +163,7 @@ public class PropertiesUtil {
             String value = preProcessedCommand.substring(splitIndex + 1);
             configMap.put((String)key, value);
         }
+
         return configMap;
     }