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());


Reply via email to