Skip to content

Commit

Permalink
Merge pull request apolloconfig#607 from nobodyiam/refine-apollo-env-…
Browse files Browse the repository at this point in the history
…search

load config file from working directory first
  • Loading branch information
lepdou authored Apr 30, 2017
2 parents 0e8163e + 26cc170 commit 74a3915
Showing 1 changed file with 18 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,18 @@
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Enumeration;
import java.util.Properties;

public class ResourceUtils {

private static final Logger logger = LoggerFactory.getLogger(ResourceUtils.class);
private static final String[] DEFAULT_FILE_SEARCH_LOCATIONS = new String[]{"./config/", "./"};

@SuppressWarnings("unchecked")
public static Properties readConfigFile(String configPath, Properties defaults) {
InputStream in = ClassLoaderUtil.getLoader().getResourceAsStream(configPath);
InputStream in = loadConfigFileFromDefaultSearchLocations(configPath);
logger.debug("Reading config from resource {}", configPath);
Properties props = new Properties();
try {
Expand Down Expand Up @@ -65,4 +67,19 @@ public static Properties readConfigFile(String configPath, Properties defaults)
}
return props;
}

private static InputStream loadConfigFileFromDefaultSearchLocations(String configPath) {
for (String searchLocation : DEFAULT_FILE_SEARCH_LOCATIONS) {
try {
File candidate = Paths.get(searchLocation, configPath).toFile();
if (candidate.exists() && candidate.isFile() && candidate.canRead()) {
return new FileInputStream(candidate);
}
} catch (Throwable ex) {
//ignore
}
}

return ClassLoaderUtil.getLoader().getResourceAsStream(configPath);
}
}

0 comments on commit 74a3915

Please sign in to comment.