Skip to content

Commit 75b5b6e

Browse files
committed
[GR-65574] Include resource bundles with -H:Preserve.
PullRequest: graal/21395
2 parents 55231f8 + 116655b commit 75b5b6e

File tree

3 files changed

+14
-2
lines changed

3 files changed

+14
-2
lines changed

substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/localization/BundleContentSubstitutedLocalizationSupport.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ private static boolean isBundleSupported(ResourceBundle bundle) {
133133
}
134134

135135
@Platforms(Platform.HOSTED_ONLY.class)
136-
private static boolean isBundleSupported(Class<?> bundleClass) {
136+
public static boolean isBundleSupported(Class<?> bundleClass) {
137137
return ListResourceBundle.class.isAssignableFrom(bundleClass) || OpenListResourceBundle.class.isAssignableFrom(bundleClass);
138138
}
139139

substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/ClassLoaderSupportImpl.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,11 @@ public List<ResourceBundle> getResourceBundle(String bundleSpec, Locale locale)
266266
} else {
267267
Modules.addOpensToAllUnnamed(module, packageName);
268268
}
269-
resourceBundles.add(ResourceBundle.getBundle(bundleName, locale, module));
269+
try {
270+
resourceBundles.add(ResourceBundle.getBundle(bundleName, locale, module));
271+
} catch (InternalError e) {
272+
// ignore, nothing we can do
273+
}
270274
}
271275
return resourceBundles;
272276
}

substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/image/PreserveOptionsSupport.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,12 @@
4242
import org.graalvm.nativeimage.impl.RuntimeJNIAccessSupport;
4343
import org.graalvm.nativeimage.impl.RuntimeProxyCreationSupport;
4444
import org.graalvm.nativeimage.impl.RuntimeReflectionSupport;
45+
import org.graalvm.nativeimage.impl.RuntimeResourceSupport;
4546
import org.graalvm.nativeimage.impl.RuntimeSerializationSupport;
4647

4748
import com.oracle.graal.pointsto.ClassInclusionPolicy;
4849
import com.oracle.svm.core.SubstrateOptions;
50+
import com.oracle.svm.core.jdk.localization.BundleContentSubstitutedLocalizationSupport;
4951
import com.oracle.svm.core.option.AccumulatingLocatableMultiOptionValue;
5052
import com.oracle.svm.core.option.LocatableMultiOptionValue;
5153
import com.oracle.svm.core.option.SubstrateOptionsParser;
@@ -149,6 +151,7 @@ public static void registerPreservedClasses(NativeImageClassLoaderSupport classL
149151
.toList();
150152

151153
final RuntimeReflectionSupport reflection = ImageSingletons.lookup(RuntimeReflectionSupport.class);
154+
final RuntimeResourceSupport<ConfigurationCondition> resources = RuntimeResourceSupport.singleton();
152155
final RuntimeProxyCreationSupport proxy = ImageSingletons.lookup(RuntimeProxyCreationSupport.class);
153156
final RuntimeSerializationSupport<ConfigurationCondition> serialization = RuntimeSerializationSupport.singleton();
154157
final ConfigurationCondition always = ConfigurationCondition.alwaysTrue();
@@ -205,6 +208,11 @@ public static void registerPreservedClasses(NativeImageClassLoaderSupport classL
205208
// if we register as unsafe allocated earlier there are build-time
206209
// initialization errors
207210
reflection.register(always, !(c.isArray() || c.isInterface() || c.isPrimitive() || Modifier.isAbstract(c.getModifiers())), c);
211+
212+
/* Register resource bundles */
213+
if (BundleContentSubstitutedLocalizationSupport.isBundleSupported(c)) {
214+
resources.addResourceBundles(always, c.getTypeName());
215+
}
208216
});
209217

210218
/*

0 commit comments

Comments
 (0)