|
17 | 17 | package org.apache.logging.log4j.core.config;
|
18 | 18 |
|
19 | 19 | import java.io.File;
|
20 |
| -import java.net.URI; |
21 |
| -import java.util.HashMap; |
22 | 20 | import java.util.List;
|
23 |
| -import java.util.Map; |
24 | 21 | import org.apache.logging.log4j.core.util.AbstractWatcher;
|
25 | 22 | import org.apache.logging.log4j.core.util.FileWatcher;
|
26 | 23 | import org.apache.logging.log4j.core.util.Source;
|
|
31 | 28 | */
|
32 | 29 | public class ConfigurationFileWatcher extends AbstractWatcher implements FileWatcher {
|
33 | 30 |
|
34 |
| - private Map<File, Long> monitoredFiles = new HashMap<>(); |
| 31 | + private File file; |
| 32 | + private long lastModifiedMillis; |
35 | 33 |
|
36 | 34 | public ConfigurationFileWatcher(
|
37 | 35 | final Configuration configuration,
|
38 | 36 | final Reconfigurable reconfigurable,
|
39 | 37 | final List<ConfigurationListener> configurationListeners,
|
40 | 38 | long lastModifiedMillis) {
|
41 | 39 | super(configuration, reconfigurable, configurationListeners);
|
| 40 | + this.lastModifiedMillis = lastModifiedMillis; |
42 | 41 | }
|
43 | 42 |
|
44 | 43 | @Override
|
45 | 44 | public long getLastModified() {
|
46 |
| - Long lastModifiedMillis = 0L; |
47 |
| - for (final File monitoredFile : monitoredFiles.keySet()) { |
48 |
| - if (monitoredFile.lastModified() > lastModifiedMillis) { |
49 |
| - lastModifiedMillis = monitoredFile.lastModified(); |
50 |
| - } |
51 |
| - } |
52 |
| - return lastModifiedMillis; |
| 45 | + return file != null ? file.lastModified() : 0; |
53 | 46 | }
|
54 | 47 |
|
55 | 48 | @Override
|
56 | 49 | public void fileModified(final File file) {
|
57 |
| - monitoredFiles.entrySet().stream() |
58 |
| - .forEach(monitoredFile -> |
59 |
| - monitoredFile.setValue(monitoredFile.getKey().lastModified())); |
| 50 | + lastModifiedMillis = file.lastModified(); |
60 | 51 | }
|
61 | 52 |
|
62 | 53 | @Override
|
63 | 54 | public void watching(final Source source) {
|
64 |
| - File file = source.getFile(); |
65 |
| - monitoredFiles.put(file, file.lastModified()); |
| 55 | + file = source.getFile(); |
| 56 | + lastModifiedMillis = file.lastModified(); |
66 | 57 | super.watching(source);
|
67 | 58 | }
|
68 | 59 |
|
69 |
| - /** |
70 |
| - * Add the given URIs to be watched. |
71 |
| - * |
72 |
| - * @param monitorUris URIs to also watch |
73 |
| - */ |
74 |
| - public void addMonitorUris(final List<URI> monitorUris) { |
75 |
| - monitorUris.forEach(uri -> { |
76 |
| - File additionalFile = new Source(uri).getFile(); |
77 |
| - monitoredFiles.put(additionalFile, additionalFile.lastModified()); |
78 |
| - }); |
79 |
| - } |
80 |
| - |
81 | 60 | @Override
|
82 | 61 | public boolean isModified() {
|
83 |
| - return monitoredFiles.entrySet().stream() |
84 |
| - .anyMatch(file -> file.getValue() != file.getKey().lastModified()); |
| 62 | + return lastModifiedMillis != file.lastModified(); |
85 | 63 | }
|
86 | 64 |
|
87 | 65 | @Override
|
|
0 commit comments