KNOX-1077 - Knox should notice simple descriptors on startup (Phil Zampino via 
lmccay)

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

Branch: refs/heads/KNOX-1049
Commit: 8ecac9216e6512afe84e0325a6e6b27d87689fde
Parents: 2288231
Author: Larry McCay <lmc...@hortonworks.com>
Authored: Thu Oct 19 15:11:45 2017 -0400
Committer: Larry McCay <lmc...@hortonworks.com>
Committed: Thu Oct 19 15:12:04 2017 -0400

----------------------------------------------------------------------
 .../topology/impl/DefaultTopologyService.java        | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/knox/blob/8ecac921/gateway-server/src/main/java/org/apache/hadoop/gateway/services/topology/impl/DefaultTopologyService.java
----------------------------------------------------------------------
diff --git 
a/gateway-server/src/main/java/org/apache/hadoop/gateway/services/topology/impl/DefaultTopologyService.java
 
b/gateway-server/src/main/java/org/apache/hadoop/gateway/services/topology/impl/DefaultTopologyService.java
index a493bc4..a8d6de8 100644
--- 
a/gateway-server/src/main/java/org/apache/hadoop/gateway/services/topology/impl/DefaultTopologyService.java
+++ 
b/gateway-server/src/main/java/org/apache/hadoop/gateway/services/topology/impl/DefaultTopologyService.java
@@ -496,6 +496,17 @@ public class DefaultTopologyService
       SharedProviderConfigMonitor spm = new SharedProviderConfigMonitor(dm, 
descriptorsDirectory);
       initListener(sharedProvidersDirectory, spm, spm);
 
+      // For all the descriptors currently in the descriptors dir at start-up 
time, trigger topology generation.
+      // This happens prior to the start-up loading of the topologies.
+      String[] descriptorFilenames =  descriptorsDirectory.list();
+      if (descriptorFilenames != null) {
+          for (String descriptorFilename : descriptorFilenames) {
+              if (DescriptorsMonitor.isDescriptorFile(descriptorFilename)) {
+                  dm.onFileChange(new File(descriptorsDirectory, 
descriptorFilename));
+              }
+          }
+      }
+
     } catch (IOException | SAXException io) {
       throw new ServiceLifecycleException(io.getMessage());
     }
@@ -521,6 +532,10 @@ public class DefaultTopologyService
     private Map<String, List<String>> providerConfigReferences = new 
HashMap<>();
 
 
+    static boolean isDescriptorFile(String filename) {
+      return 
SUPPORTED_EXTENSIONS.contains(FilenameUtils.getExtension(filename));
+    }
+
     public DescriptorsMonitor(File topologiesDir, AliasService aliasService) {
       this.topologiesDir  = topologiesDir;
       this.aliasService   = aliasService;

Reply via email to