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