This is an automated email from the ASF dual-hosted git repository.
cziegeler pushed a commit to branch master
in repository
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-i18n.git
The following commit(s) were added to refs/heads/master by this push:
new 00fc752 SLING-7542 : Avoid shared session/resource resolver usage
SLING-7543 : Reduce reloading of bundles
00fc752 is described below
commit 00fc7524ff3b936802b92dace38e9e7bae4fe5d6
Author: Carsten Ziegeler <[email protected]>
AuthorDate: Fri Mar 16 13:40:45 2018 +0100
SLING-7542 : Avoid shared session/resource resolver usage
SLING-7543 : Reduce reloading of bundles
---
.../sling/i18n/impl/JcrResourceBundleProvider.java | 33 ++++++++++++++--------
1 file changed, 21 insertions(+), 12 deletions(-)
diff --git
a/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundleProvider.java
b/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundleProvider.java
index 512d491..c1d64c0 100644
--- a/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundleProvider.java
+++ b/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundleProvider.java
@@ -201,14 +201,7 @@ public class JcrResourceBundleProvider implements
ResourceBundleProvider, Resour
locale = defaultLocale;
}
- try ( final ResourceResolver resolver = createResourceResolver() ) {
-
- return getResourceBundleInternal(resolver, baseName, locale);
- } catch ( final LoginException le) {
- throw (MissingResourceException)new
MissingResourceException("Unable to create service resource resolver",
- baseName,
- locale.toString()).initCause(le);
- }
+ return getResourceBundleInternal(null, baseName, locale);
}
// ---------- ResourceChangeListener
------------------------------------------------
@@ -446,7 +439,7 @@ public class JcrResourceBundleProvider implements
ResourceBundleProvider, Resour
* created and the <code>ResourceResolver</code> is not
* available to access the resources.
*/
- private ResourceBundle getResourceBundleInternal(final ResourceResolver
resolver, final String baseName, final Locale locale) {
+ private ResourceBundle getResourceBundleInternal(ResourceResolver
optionalResolver, final String baseName, final Locale locale) {
final Key key = new Key(baseName, locale);
JcrResourceBundle resourceBundle = resourceBundleCache.get(key);
if (resourceBundle != null) {
@@ -463,9 +456,25 @@ public class JcrResourceBundleProvider implements
ResourceBundleProvider, Resour
log.debug("getResourceBundleInternal({}): got cache hit on
second try", key);
} else {
log.debug("getResourceBundleInternal({}): reading from
Repository", key);
- resourceBundle = createResourceBundle(resolver,
key.baseName, key.locale);
- resourceBundleCache.put(key, resourceBundle);
- registerResourceBundle(key, resourceBundle);
+ ResourceResolver localResolver = null;
+ try {
+ if ( optionalResolver == null ) {
+ localResolver = createResourceResolver();
+ optionalResolver = localResolver;
+ }
+
+ resourceBundle =
createResourceBundle(optionalResolver, key.baseName, key.locale);
+ resourceBundleCache.put(key, resourceBundle);
+ registerResourceBundle(key, resourceBundle);
+ } catch ( final LoginException le) {
+ throw (MissingResourceException)new
MissingResourceException("Unable to create service resource resolver",
+ baseName,
+ locale.toString()).initCause(le);
+ } finally {
+ if ( localResolver != null ) {
+ localResolver.close();
+ }
+ }
}
} catch (InterruptedException e) {
Thread.interrupted();
--
To stop receiving notification emails like this one, please contact
[email protected].