diff --git a/src/main/java/com/baidu/xuper/config/Config.java b/src/main/java/com/baidu/xuper/config/Config.java index b0d3143..9161259 100644 --- a/src/main/java/com/baidu/xuper/config/Config.java +++ b/src/main/java/com/baidu/xuper/config/Config.java @@ -5,10 +5,13 @@ import java.io.File; import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.InputStream; public class Config { private static Config singletonConfig; private static String confFilePath; + private static InputStream confFileInputStream; private String endorseServiceHost; private ComplianceCheck complianceCheck; @@ -18,12 +21,15 @@ public class Config { private Config() { } - public static void setConfigPath(String path) { + public static void setConfigPath(String path) throws FileNotFoundException { confFilePath = path; + setConfigInputStream(new FileInputStream(path)); + } + public static void setConfigInputStream(InputStream inputStream) { + confFileInputStream = inputStream; } - public static boolean hasConfigFile() { - return confFilePath != null; + return confFilePath != null || confFileInputStream != null; } public static Config getInstance() { @@ -31,7 +37,7 @@ public static Config getInstance() { return singletonConfig; } - if (confFilePath != null) { + if (hasConfigFile()) { try { singletonConfig = getConfigFromYaml(); } catch (Exception e) { @@ -46,7 +52,7 @@ public static Config getInstance() { private static Config getConfigFromYaml() throws Exception { Yaml yaml = new Yaml(new Constructor(Config.class)); - return yaml.load(new FileInputStream(new File(confFilePath))); + return yaml.load(confFileInputStream!=null?confFileInputStream:new FileInputStream(new File(confFilePath))); } private static Config getDefaultConfig() {