in src/main/java/org/apache/sling/i18n/impl/JcrResourceBundleProvider.java [391:418]
void reloadBundle(final Key key) {
log.info("Reloading resource bundle for {}", key);
if (!this.preloadBundles) {
resourceBundleRegistry.unregisterResourceBundle(key);
}
Collection<JcrResourceBundle> dependentBundles = new ArrayList<>();
// this bundle might be a parent of a cached bundle -> invalidate those dependent bundles as well
for (JcrResourceBundle bundle : resourceBundleRegistry.getResourceBundles()) {
if (bundle.getParent() instanceof JcrResourceBundle) {
JcrResourceBundle parentBundle = (JcrResourceBundle) bundle.getParent();
Key parentKey = new Key(parentBundle.getBaseName(), parentBundle.getLocale());
if (parentKey.equals(key)) {
log.debug(
"Also invalidate dependent bundle {} which has bundle {} as parent", bundle, parentBundle);
dependentBundles.add(bundle);
}
}
}
for (JcrResourceBundle dependentBundle : dependentBundles) {
reloadBundle(new Key(dependentBundle.getBaseName(), dependentBundle.getLocale()));
}
if (this.preloadBundles && !resourceBundleRegistry.isClosed()) {
// reload the bundle from the repository (will also fill cache and register as a service)
getResourceBundleInternal(null, key.baseName, key.locale, true);
}
}