aboutsummaryrefslogtreecommitdiffstats
path: root/catalog-be/src/main/java/org/openecomp/sdc/be/listen/BEAppContextListener.java
diff options
context:
space:
mode:
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.java52
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);
+ }
+ }
}