@@ -257,29 +257,42 @@ protected PropertiesHolder getMergedProperties(Locale locale) {
257
257
return mergedHolder ;
258
258
}
259
259
260
- Properties mergedProps = newProperties ();
261
- long latestTimestamp = -1 ;
260
+ List <PropertiesHolder > holders = collectPropertiesToMerge (locale );
261
+
262
+ mergedHolder = merge (holders );
263
+ PropertiesHolder existing = this .cachedMergedProperties .putIfAbsent (locale , mergedHolder );
264
+ if (existing != null ) {
265
+ mergedHolder = existing ;
266
+ }
267
+ return mergedHolder ;
268
+ }
269
+
270
+ protected List <PropertiesHolder > collectPropertiesToMerge (Locale locale ) {
262
271
String [] basenames = StringUtils .toStringArray (getBasenameSet ());
272
+ List <PropertiesHolder > holders = new ArrayList <>(basenames .length );
263
273
for (int i = basenames .length - 1 ; i >= 0 ; i --) {
264
274
List <String > filenames = calculateAllFilenames (basenames [i ], locale );
265
275
for (int j = filenames .size () - 1 ; j >= 0 ; j --) {
266
276
String filename = filenames .get (j );
267
277
PropertiesHolder propHolder = getProperties (filename );
268
278
if (propHolder .getProperties () != null ) {
269
- mergedProps .putAll (propHolder .getProperties ());
270
- if (propHolder .getFileTimestamp () > latestTimestamp ) {
271
- latestTimestamp = propHolder .getFileTimestamp ();
272
- }
279
+ holders .add (propHolder );
273
280
}
274
281
}
275
282
}
283
+ return holders ;
284
+ }
276
285
277
- mergedHolder = new PropertiesHolder (mergedProps , latestTimestamp );
278
- PropertiesHolder existing = this .cachedMergedProperties .putIfAbsent (locale , mergedHolder );
279
- if (existing != null ) {
280
- mergedHolder = existing ;
286
+ protected PropertiesHolder merge (List <PropertiesHolder > holders ) {
287
+ Properties mergedProps = newProperties ();
288
+ long latestTimestamp = -1 ;
289
+ for (PropertiesHolder holder : holders ) {
290
+ mergedProps .putAll (holder .getProperties ());
291
+ if (holder .getFileTimestamp () > latestTimestamp ) {
292
+ latestTimestamp = holder .getFileTimestamp ();
293
+ }
281
294
}
282
- return mergedHolder ;
295
+ return new PropertiesHolder ( mergedProps , latestTimestamp ) ;
283
296
}
284
297
285
298
/**
0 commit comments