ReloadableResourceBundleMessageSource sets file timestamp on merged holder

Issue: SPR-14583
This commit is contained in:
Juergen Hoeller
2016-11-03 14:27:44 +01:00
parent 0006957274
commit 03468fd9ed

View File

@@ -237,7 +237,7 @@ public class ReloadableResourceBundleMessageSource extends AbstractResourceBased
return mergedHolder; return mergedHolder;
} }
Properties mergedProps = newProperties(); Properties mergedProps = newProperties();
mergedHolder = new PropertiesHolder(mergedProps, -1); long latestTimestamp = -1;
String[] basenames = StringUtils.toStringArray(getBasenameSet()); String[] basenames = StringUtils.toStringArray(getBasenameSet());
for (int i = basenames.length - 1; i >= 0; i--) { for (int i = basenames.length - 1; i >= 0; i--) {
List<String> filenames = calculateAllFilenames(basenames[i], locale); List<String> filenames = calculateAllFilenames(basenames[i], locale);
@@ -246,9 +246,13 @@ public class ReloadableResourceBundleMessageSource extends AbstractResourceBased
PropertiesHolder propHolder = getProperties(filename); PropertiesHolder propHolder = getProperties(filename);
if (propHolder.getProperties() != null) { if (propHolder.getProperties() != null) {
mergedProps.putAll(propHolder.getProperties()); mergedProps.putAll(propHolder.getProperties());
if (propHolder.getFileTimestamp() > latestTimestamp) {
latestTimestamp = propHolder.getFileTimestamp();
}
} }
} }
} }
mergedHolder = new PropertiesHolder(mergedProps, latestTimestamp);
PropertiesHolder existing = this.cachedMergedProperties.putIfAbsent(locale, mergedHolder); PropertiesHolder existing = this.cachedMergedProperties.putIfAbsent(locale, mergedHolder);
if (existing != null) { if (existing != null) {
mergedHolder = existing; mergedHolder = existing;