Author: cziegeler
Date: Wed Dec 14 07:21:46 2016
New Revision: 1774128
URL: http://svn.apache.org/viewvc?rev=1774128&view=rev
Log:
SLING-6395 : Reduce cost of JcrResourceBundleProvider.onChange(). Apply patch
from Marcel Reutegger
Modified:
sling/trunk/bundles/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundleProvider.java
Modified:
sling/trunk/bundles/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundleProvider.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundleProvider.java?rev=1774128&r1=1774127&r2=1774128&view=diff
==============================================================================
---
sling/trunk/bundles/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundleProvider.java
(original)
+++
sling/trunk/bundles/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundleProvider.java
Wed Dec 14 07:21:46 2016
@@ -182,6 +182,7 @@ public class JcrResourceBundleProvider i
@Override
public void onChange(List<ResourceChange> changes) {
+ boolean refreshed = false;
for(final ResourceChange change : changes) {
log.trace("handleEvent: Detecting event {} for path '{}'",
change.getType(), change.getPath());
@@ -211,6 +212,11 @@ public class JcrResourceBundleProvider i
}
}
// may be a completely new dictionary
+ if (!refreshed) {
+ // refresh at most once per onChange()
+ resourceResolver.refresh();
+ refreshed = true;
+ }
if (isDictionaryResource(change)) {
scheduleReloadBundles(true);
}
@@ -223,7 +229,6 @@ public class JcrResourceBundleProvider i
// therefore only consider changes either for sling:MessageEntry's
// or for JSON dictionaries
// get valuemap
- resourceResolver.refresh();
final Resource resource =
resourceResolver.getResource(change.getPath());
if (resource == null) {
log.trace("Could not get resource for '{}' for event {}",
change.getPath(), change.getType());