From 4dc03f7c155017b5102f6b62fec84ef56c2e56eb Mon Sep 17 00:00:00 2001 From: Robert Oschwald Date: Mon, 3 May 2021 12:53:53 +0200 Subject: [PATCH 1/2] GRAILS-11795 preserve order of bean-defined basenames. - fixes GRAILS-11795 --- ...PluginAwareResourceBundleMessageSource.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/grails-core/src/main/groovy/org/grails/spring/context/support/PluginAwareResourceBundleMessageSource.java b/grails-core/src/main/groovy/org/grails/spring/context/support/PluginAwareResourceBundleMessageSource.java index 34f6f9d365a..61648a675e3 100644 --- a/grails-core/src/main/groovy/org/grails/spring/context/support/PluginAwareResourceBundleMessageSource.java +++ b/grails-core/src/main/groovy/org/grails/spring/context/support/PluginAwareResourceBundleMessageSource.java @@ -39,10 +39,7 @@ import java.io.File; import java.io.FilenameFilter; import java.text.MessageFormat; -import java.util.ArrayList; -import java.util.List; -import java.util.Locale; -import java.util.Properties; +import java.util.*; import java.util.concurrent.Callable; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; @@ -65,6 +62,7 @@ public class PluginAwareResourceBundleMessageSource extends ReloadableResourceBu private long pluginCacheMillis = Long.MIN_VALUE; private boolean searchClasspath = false; private String messageBundleLocationPattern = "classpath*:*.properties"; + String[] basenamesDefinition = {}; public PluginAwareResourceBundleMessageSource() { } @@ -86,6 +84,12 @@ public void setResourceResolver(PathMatchingResourcePatternResolver resourceReso this.resourceResolver = resourceResolver; } + @Override + public void setBasenames(String... basenames){ + basenamesDefinition = basenames; + super.setBasenames(basenames); + } + public void afterPropertiesSet() throws Exception { if (pluginCacheMillis == Long.MIN_VALUE) { pluginCacheMillis = cacheMillis; @@ -148,8 +152,10 @@ public boolean accept(File dir, String name) { basenames.add(baseName); } - setBasenames(basenames.toArray( new String[basenames.size()])); - + List mergedBasenames = Arrays.asList(basenamesDefinition); + basenames.removeAll(mergedBasenames); + mergedBasenames.addAll(basenames); + super.setBasenames(mergedBasenames.toArray(new String[0])); } From bac5956cf224cbe5615a7aad11e0776fdb641db2 Mon Sep 17 00:00:00 2001 From: Robert Oschwald Date: Tue, 4 May 2021 18:38:51 +0200 Subject: [PATCH 2/2] Avoid UnsupportedOperationException with some JDKs --- .../context/support/PluginAwareResourceBundleMessageSource.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/grails-core/src/main/groovy/org/grails/spring/context/support/PluginAwareResourceBundleMessageSource.java b/grails-core/src/main/groovy/org/grails/spring/context/support/PluginAwareResourceBundleMessageSource.java index 61648a675e3..ebf28a2a538 100644 --- a/grails-core/src/main/groovy/org/grails/spring/context/support/PluginAwareResourceBundleMessageSource.java +++ b/grails-core/src/main/groovy/org/grails/spring/context/support/PluginAwareResourceBundleMessageSource.java @@ -152,7 +152,7 @@ public boolean accept(File dir, String name) { basenames.add(baseName); } - List mergedBasenames = Arrays.asList(basenamesDefinition); + List mergedBasenames = new ArrayList<>(Arrays.asList(basenamesDefinition)); basenames.removeAll(mergedBasenames); mergedBasenames.addAll(basenames); super.setBasenames(mergedBasenames.toArray(new String[0]));