ecolombo commented on code in PR #15:
URL:
https://github.com/apache/sling-org-apache-sling-i18n/pull/15#discussion_r1716442974
##########
src/main/java/org/apache/sling/i18n/impl/JcrResourceBundleProvider.java:
##########
@@ -791,4 +733,102 @@ public String toString() {
return "Key(" + baseName + ", " + locale + ")";
}
}
+
+ /**
+ * Registry of the loaded <code>resource bundles</code> and the associated
<code>service registrations</code>
+ * The <code>ResourceBundleRegistry</code> takes care of the
registration/deregistration of the resource bundles as OSGi services.
+ * It stores the references to the registered resource bundles and to the
associated service registrations.
+ */
+ private static class ResourceBundleRegistry {
+ private final Logger log = LoggerFactory.getLogger(getClass());
+ private final BundleContext bundleContext;
+ final AtomicBoolean isClosed = new AtomicBoolean(false);
+ private final Map<Key, Entry> bundleServiceRegistrations = new
ConcurrentHashMap<>();
+
+ private static class Entry {
+ final JcrResourceBundle resourceBundle;
+ final ServiceRegistration<ResourceBundle> serviceRegistration;
+ Entry(JcrResourceBundle resourceBundle,
ServiceRegistration<ResourceBundle> serviceRegistration) {
+ this.resourceBundle = resourceBundle;
+ this.serviceRegistration = serviceRegistration;
+ }
+ }
+
+ ResourceBundleRegistry(BundleContext bundleContext) {
+ this.bundleContext = bundleContext;
+ }
+
+ JcrResourceBundle getRB(Key key) {
+ Entry entry = bundleServiceRegistrations.get(key);
+ return entry != null ? entry.resourceBundle : null;
+ }
+
+ Collection<JcrResourceBundle> getRBs() {
+ return bundleServiceRegistrations.values().stream().map(e ->
e.resourceBundle).collect(Collectors.toList());
+ }
+
+ void updateRB(Key key, JcrResourceBundle resourceBundle) {
Review Comment:
Ok for me. One can easily see in the code that an update is performed if RB
is already registered.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]