Author: stefanegli
Date: Fri Nov 18 10:55:25 2016
New Revision: 1770360

URL: http://svn.apache.org/viewvc?rev=1770360&view=rev
Log:
OAK-5127 : allow disabling the ChangeCollectorProvider via an osgi config

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeCollectorProvider.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeCollectorProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeCollectorProvider.java?rev=1770360&r1=1770359&r2=1770360&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeCollectorProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeCollectorProvider.java
 Fri Nov 18 10:55:25 2016
@@ -20,6 +20,7 @@ package org.apache.jackrabbit.oak.plugin
 
 import static org.apache.jackrabbit.oak.commons.PathUtils.concat;
 import static org.apache.jackrabbit.oak.commons.PropertiesUtil.toInteger;
+import static org.apache.jackrabbit.oak.commons.PropertiesUtil.toBoolean;
 
 import java.util.Map;
 import java.util.Set;
@@ -29,6 +30,7 @@ import javax.annotation.Nullable;
 
 import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Modified;
 import org.apache.felix.scr.annotations.Property;
 import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.JcrConstants;
@@ -85,6 +87,12 @@ public class ChangeCollectorProvider ext
             + "all be collected irrespective of this config param." + "Default 
is " + DEFAULT_MAX_PATH_DEPTH)
     private static final String PROP_MAX_PATH_DEPTH = "maxPathDepth";
 
+    private static final boolean DEFAULT_ENABLED = true;
+    @Property(boolValue = DEFAULT_ENABLED, label = "enable/disable this 
validator", 
+            description = "Whether this validator is enabled. If disabled no 
ChangeSet will be generated. Default is "
+            + DEFAULT_ENABLED)
+    private static final String PROP_ENABLED = "enabled";
+
     /**
      * There is one CollectorSupport per validation process - it is shared
      * between multiple instances of ChangeCollector (Validator) - however it
@@ -268,12 +276,25 @@ public class ChangeCollectorProvider ext
     private int maxItems = DEFAULT_MAX_ITEMS;
 
     private int maxPathDepth = DEFAULT_MAX_PATH_DEPTH;
+    
+    private boolean enabled = DEFAULT_ENABLED;
 
     @Activate
     protected void activate(ComponentContext context, Map<String, ?> config) {
+        reconfig(config);
+        LOG.info("activate: maxItems=" + maxItems + ", maxPathDepth=" + 
maxPathDepth + ", enabled=" + enabled);
+    }
+
+    @Modified
+    protected void modified(final Map<String, Object> config) {
+        reconfig(config);
+        LOG.info("modified: maxItems=" + maxItems + ", maxPathDepth=" + 
maxPathDepth + ", enabled=" + enabled);
+    }
+
+    private void reconfig(Map<String, ?> config) {
         maxItems = toInteger(config.get(PROP_MAX_ITEMS), DEFAULT_MAX_ITEMS);
         maxPathDepth = toInteger(config.get(PROP_MAX_PATH_DEPTH), 
DEFAULT_MAX_PATH_DEPTH);
-        LOG.info("activate: maxItems=" + maxItems + ", maxPathDepth=" + 
maxPathDepth);
+        enabled = toBoolean(config.get(PROP_ENABLED), DEFAULT_ENABLED);
     }
 
     /** FOR TESTING-ONLY **/
@@ -298,6 +319,9 @@ public class ChangeCollectorProvider ext
 
     @Override
     protected Validator getRootValidator(NodeState before, NodeState after, 
CommitInfo info) {
+        if (!enabled) {
+            return null;
+        }
         if (info == null || !info.getInfo().containsKey(CommitContext.NAME)) {
             // then we cannot do change-collecting, as we can't store
             // it in the info


Reply via email to