+
+ 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);
+ }
+ }