diff options
Diffstat (limited to 'catalog-be/src/main/java/org/openecomp/sdc/be/listen/BEAppContextListener.java')
-rw-r--r-- | catalog-be/src/main/java/org/openecomp/sdc/be/listen/BEAppContextListener.java | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/listen/BEAppContextListener.java b/catalog-be/src/main/java/org/openecomp/sdc/be/listen/BEAppContextListener.java index 76be33cedf..00d4e4356e 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/listen/BEAppContextListener.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/listen/BEAppContextListener.java @@ -19,13 +19,22 @@ */ package org.openecomp.sdc.be.listen; +import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.util.HashMap; +import java.util.Map; import java.util.jar.Attributes; import java.util.jar.Manifest; import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; + +import org.apache.commons.io.filefilter.FileFilterUtils; +import org.apache.commons.io.filefilter.IOFileFilter; +import org.apache.commons.io.monitor.FileAlterationListenerAdaptor; +import org.apache.commons.io.monitor.FileAlterationMonitor; +import org.apache.commons.io.monitor.FileAlterationObserver; import org.openecomp.sdc.be.config.ConfigurationManager; import org.openecomp.sdc.be.impl.WebAppContextWrapper; import org.openecomp.sdc.be.monitoring.BeMonitoringService; @@ -50,6 +59,7 @@ public class BEAppContextListener extends AppContextListener implements ServletC // Monitoring service BeMonitoringService bms = new BeMonitoringService(context.getServletContext()); bms.start(configurationManager.getConfiguration().getSystemMonitoring().getProbeIntervalInSeconds(15)); + initTlsFileMonitoring(); log.debug("After executing {}", this.getClass()); } @@ -71,4 +81,46 @@ public class BEAppContextListener extends AppContextListener implements ServletC } return version; } + + private void initTlsFileMonitoring() { + final Map<String, IOFileFilter> tlsFileFilters = createTlsFileFilters(); + if (!tlsFileFilters.isEmpty()) { + final TlsFileChangeHandler tlsFileChangeHandler = new TlsFileChangeHandler(); + tlsFileFilters.entrySet().stream().forEach(entry -> listenForChanges(entry.getKey(), tlsFileChangeHandler, entry.getValue())); + } + } + + private Map<String, IOFileFilter> createTlsFileFilters() { + final Map<String, IOFileFilter> filters = new HashMap<>(); + addFilter(filters, ConfigurationManager.getConfigurationManager().getConfiguration().getTlsCert()); + addFilter(filters, ConfigurationManager.getConfigurationManager().getConfiguration().getTlsKey()); + addFilter(filters, ConfigurationManager.getConfigurationManager().getConfiguration().getCaCert()); + return filters; + } + + private void addFilter(final Map<String, IOFileFilter> filters, final String path) { + if (path != null) { + final File file = new File(path); + final IOFileFilter caCertFileFilter = + FileFilterUtils.and(FileFilterUtils.fileFileFilter(), FileFilterUtils.nameFileFilter(file.getName())); + + if (filters.containsKey(file.getParent())) { + filters.put(file.getParent(), FileFilterUtils.or(filters.get(file.getParent()), caCertFileFilter)); + } else { + filters.put(file.getParent(), caCertFileFilter); + } + } + } + + private void listenForChanges(String path, FileAlterationListenerAdaptor changeListener, IOFileFilter ioFileFilter) { + FileAlterationMonitor monitor = new FileAlterationMonitor(); + final FileAlterationObserver observer = new FileAlterationObserver(path, ioFileFilter); + observer.addListener(changeListener); + monitor.addObserver(observer); + try { + monitor.start(); + } catch (final Exception exception) { + log.error("Error starting monitoring of TLS files", exception); + } + } } |