Don't fail when using ResourceBundle.Control in JPMS named module.
Signed-off-by: Roman Grigoriadi <roman.grigoriadi@oracle.com>
diff --git a/src/main/java/org/eclipse/yasson/internal/properties/Messages.java b/src/main/java/org/eclipse/yasson/internal/properties/Messages.java
index a99d37c..5bc6b70 100644
--- a/src/main/java/org/eclipse/yasson/internal/properties/Messages.java
+++ b/src/main/java/org/eclipse/yasson/internal/properties/Messages.java
@@ -55,11 +55,22 @@
* @return Formatted message in string.
*/
public static String getMessage(MessageKeys key, Locale locale, Object... objects) {
- ResourceBundle messages = ResourceBundle.getBundle(MESSAGE_BUNDLE, locale, new UTF8Control());
+ ResourceBundle messages = getResourceBundle(locale);
MessageFormat formatter = new MessageFormat(messages.getString(key.key));
return formatter.format(objects);
}
+ /**
+ * ResourceBundle.Control is not supported when loaded from JPMS native module.
+ */
+ private static ResourceBundle getResourceBundle(Locale locale) {
+ try {
+ return ResourceBundle.getBundle(MESSAGE_BUNDLE, locale, new UTF8Control());
+ } catch (UnsupportedOperationException e) {
+ return ResourceBundle.getBundle(MESSAGE_BUNDLE, locale);
+ }
+ }
+
static class UTF8Control extends ResourceBundle.Control {
public ResourceBundle newBundle
(String baseName, Locale locale, String format, ClassLoader loader, boolean reload)