You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by to...@apache.org on 2016/10/28 14:34:01 UTC

svn commit: r1767029 - in /sling/trunk/contrib/extensions/distribution/core/src: main/java/org/apache/sling/distribution/agent/impl/ main/java/org/apache/sling/distribution/trigger/impl/ test/java/org/apache/sling/distribution/trigger/impl/

Author: tommaso
Date: Fri Oct 28 14:34:01 2016
New Revision: 1767029

URL: http://svn.apache.org/viewvc?rev=1767029&view=rev
Log:
SLING-6210 - added deep option to jcr event trigger, minor fix to abstract agent factory to sync triggers registration

Modified:
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/AbstractDistributionAgentFactory.java
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/AbstractJcrEventTrigger.java
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/JcrEventDistributionTrigger.java
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/JcrEventDistributionTriggerFactory.java
    sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/trigger/impl/JcrEventDistributionTriggerTest.java

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/AbstractDistributionAgentFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/AbstractDistributionAgentFactory.java?rev=1767029&r1=1767028&r2=1767029&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/AbstractDistributionAgentFactory.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/AbstractDistributionAgentFactory.java Fri Oct 28 14:34:01 2016
@@ -144,7 +144,7 @@ abstract class AbstractDistributionAgent
         }
     }
 
-    void bindDistributionTrigger(DistributionTrigger distributionTrigger, Map<String, Object> config) {
+    synchronized void bindDistributionTrigger(DistributionTrigger distributionTrigger, Map<String, Object> config) {
         triggers.add(distributionTrigger);
         if (agent != null && triggersEnabled) {
             agent.enableTrigger(distributionTrigger);
@@ -152,7 +152,7 @@ abstract class AbstractDistributionAgent
 
     }
 
-    void unbindDistributionTrigger(DistributionTrigger distributionTrigger, Map<String, Object> config) {
+    synchronized void unbindDistributionTrigger(DistributionTrigger distributionTrigger, Map<String, Object> config) {
         triggers.remove(distributionTrigger);
 
         if (agent != null) {

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/AbstractJcrEventTrigger.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/AbstractJcrEventTrigger.java?rev=1767029&r1=1767028&r2=1767029&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/AbstractJcrEventTrigger.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/AbstractJcrEventTrigger.java Fri Oct 28 14:34:01 2016
@@ -150,6 +150,7 @@ public abstract class AbstractJcrEventTr
     void addToList(DistributionRequest request, List<DistributionRequest> requestList) {
         DistributionRequest lastRequest = requestList.isEmpty() ? null : requestList.get(requestList.size() - 1);
 
+        log.debug("adding request {} to {}", request, requestList);
         if (lastRequest == null || !lastRequest.getRequestType().equals(request.getRequestType())) {
             requestList.add(request);
         } else if (hasDeepPaths(request) || hasDeepPaths(lastRequest)) {
@@ -164,6 +165,7 @@ public abstract class AbstractJcrEventTr
             lastRequest = new SimpleDistributionRequest(lastRequest.getRequestType(), allPaths.toArray(new String[allPaths.size()]));
             requestList.set(requestList.size() - 1, lastRequest);
         }
+        log.debug("current requests {}", requestList);
     }
 
     void addMissingPaths(Set<String> allPaths) {

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/JcrEventDistributionTrigger.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/JcrEventDistributionTrigger.java?rev=1767029&r1=1767028&r2=1767029&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/JcrEventDistributionTrigger.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/JcrEventDistributionTrigger.java Fri Oct 28 14:34:01 2016
@@ -38,10 +38,13 @@ import org.slf4j.LoggerFactory;
 public class JcrEventDistributionTrigger extends AbstractJcrEventTrigger implements DistributionTrigger {
 
     private final Logger log = LoggerFactory.getLogger(this.getClass());
+    private final boolean deep;
     private final String[] ignoredPathsPatterns;
 
-    public JcrEventDistributionTrigger(SlingRepository repository, Scheduler scheduler, ResourceResolverFactory resolverFactory, String path, String serviceName, String[] ignoredPathsPatterns) {
+    public JcrEventDistributionTrigger(SlingRepository repository, Scheduler scheduler, ResourceResolverFactory resolverFactory,
+                                       String path, boolean deep, String serviceName, String[] ignoredPathsPatterns) {
         super(repository, scheduler, resolverFactory, path, serviceName);
+        this.deep = deep;
         this.ignoredPathsPatterns = ignoredPathsPatterns;
     }
 
@@ -68,7 +71,7 @@ public class JcrEventDistributionTrigger
                 distributionRequest = new SimpleDistributionRequest(DistributionRequestType.ADD, true, replicatingPath);
             } else {
                 distributionRequest = new SimpleDistributionRequest(Event.NODE_REMOVED == event.getType() ?
-                        DistributionRequestType.DELETE : DistributionRequestType.ADD, replicatingPath);
+                        DistributionRequestType.DELETE : DistributionRequestType.ADD, deep, replicatingPath);
             }
 
             log.info("distributing {}", distributionRequest);

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/JcrEventDistributionTriggerFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/JcrEventDistributionTriggerFactory.java?rev=1767029&r1=1767028&r2=1767029&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/JcrEventDistributionTriggerFactory.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/JcrEventDistributionTriggerFactory.java Fri Oct 28 14:34:01 2016
@@ -71,6 +71,12 @@ public class JcrEventDistributionTrigger
     @Property(label = "Service Name", description = "The service used to listen for jcr events")
     private static final String SERVICE_NAME = "serviceName";
 
+    /**
+     * use deep distribution
+     */
+    @Property(label = "Use deep distribution", description = "Distribute entire subtree of the event node path")
+    private static final String DEEP = "deep";
+
 
     private JcrEventDistributionTrigger trigger;
 
@@ -90,8 +96,9 @@ public class JcrEventDistributionTrigger
         String serviceName = SettingsUtils.removeEmptyEntry(PropertiesUtil.toString(config.get(SERVICE_NAME), null));
         String[] ignoredPathsPatterns = PropertiesUtil.toStringArray(config.get(IGNORED_PATHS_PATTERNS), null);
         ignoredPathsPatterns = SettingsUtils.removeEmptyEntries(ignoredPathsPatterns);
+        boolean deep = PropertiesUtil.toBoolean(config.get(DEEP), false);
 
-        trigger = new JcrEventDistributionTrigger(repository, scheduler, resolverFactory, path, serviceName, ignoredPathsPatterns);
+        trigger = new JcrEventDistributionTrigger(repository, scheduler, resolverFactory, path, deep, serviceName, ignoredPathsPatterns);
         trigger.enable();
     }
 

Modified: sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/trigger/impl/JcrEventDistributionTriggerTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/trigger/impl/JcrEventDistributionTriggerTest.java?rev=1767029&r1=1767028&r2=1767029&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/trigger/impl/JcrEventDistributionTriggerTest.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/trigger/impl/JcrEventDistributionTriggerTest.java Fri Oct 28 14:34:01 2016
@@ -44,7 +44,7 @@ public class JcrEventDistributionTrigger
 
         String path = "/some/path";
         String serviceName = "serviceId";
-        JcrEventDistributionTrigger jcrEventdistributionTrigger = new JcrEventDistributionTrigger(repository, scheduler, resolverFactory, path, serviceName, null);
+        JcrEventDistributionTrigger jcrEventdistributionTrigger = new JcrEventDistributionTrigger(repository, scheduler, resolverFactory, path, false, serviceName, null);
         Event event = mock(Event.class);
         DistributionRequest distributionRequest = jcrEventdistributionTrigger.processEvent(event);
         assertNull(distributionRequest);
@@ -58,7 +58,7 @@ public class JcrEventDistributionTrigger
 
         String path = "/some/path";
         String serviceName = "serviceId";
-        JcrEventDistributionTrigger jcrEventdistributionTrigger = new JcrEventDistributionTrigger(repository, scheduler, resolverFactory, path, serviceName, null);
+        JcrEventDistributionTrigger jcrEventdistributionTrigger = new JcrEventDistributionTrigger(repository, scheduler, resolverFactory, path, false, serviceName, null);
         Event event = mock(Event.class);
         when(event.getPath()).thenReturn("/some/path/generating/event");
         DistributionRequest distributionRequest = jcrEventdistributionTrigger.processEvent(event);