Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 11 additions & 5 deletions src/main/java/com/baidu/xuper/config/Config.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -18,20 +21,23 @@ 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() {
if (singletonConfig != null) {
return singletonConfig;
}

if (confFilePath != null) {
if (hasConfigFile()) {
try {
singletonConfig = getConfigFromYaml();
} catch (Exception e) {
Expand All @@ -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() {
Expand Down