Github user srdo commented on a diff in the pull request:
https://github.com/apache/storm/pull/2566#discussion_r170301964
--- Diff: storm-client/src/jvm/org/apache/storm/utils/Utils.java ---
@@ -1570,4 +1574,49 @@ public static boolean isLocalhostAddress(String
address) {
}
return result;
}
+
+ private static class JarConfigReader {
+ private Yaml yaml;
+ private Map<String, Object> defaultsConf;
+ private Map<String, Object> stormConf;
+ private File f;
+
+ public JarConfigReader(Yaml yaml, Map<String, Object>
defaultsConf, Map<String, Object> stormConf, File f) {
+ this.yaml = yaml;
+ this.defaultsConf = defaultsConf;
+ this.stormConf = stormConf;
+ this.f = f;
+ }
+
+ public Map<String, Object> getDefaultsConf() {
+ return defaultsConf;
+ }
+
+ public Map<String, Object> getStormConf() {
+ return stormConf;
+ }
+
+ public JarConfigReader invoke() throws IOException {
+ try (JarFile jarFile = new JarFile(f)) {
+ Enumeration<JarEntry> jarEnums = jarFile.entries();
+ while (jarEnums.hasMoreElements()) {
+ JarEntry entry = jarEnums.nextElement();
+ if (!entry.isDirectory()) {
+ if (defaultsConf == null &&
entry.getName().equals("defaults.yaml")) {
+ try (InputStream in =
jarFile.getInputStream(entry)) {
+ defaultsConf = (Map<String, Object>)
yaml.load(new InputStreamReader(in));
+ }
+ }
+
+ if (stormConf == null &&
entry.getName().equals("storm.yaml")) {
+ try (InputStream in =
jarFile.getInputStream(entry)) {
+ stormConf = (Map<String, Object>)
yaml.load(new InputStreamReader(in));
--- End diff --
Nit: Consider moving the InputStreamReader into the try-with-resources, so
it also gets closed.
---