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 2014/11/20 14:20:14 UTC
svn commit: r1640737 - in /sling/trunk/contrib/extensions/distribution: ./
api/src/main/java/org/apache/sling/distribution/communication/
api/src/main/java/org/apache/sling/distribution/queue/
core/src/main/java/org/apache/sling/distribution/agent/impl...
Author: tommaso
Date: Thu Nov 20 13:20:13 2014
New Revision: 1640737
URL: http://svn.apache.org/r1640737
Log:
SLING-4145, SLING-4190 - dispatching strategy returning item states instead of boolean, removed explicit time from request, status in response is now a message
Modified:
sling/trunk/contrib/extensions/distribution/README.md
sling/trunk/contrib/extensions/distribution/api/src/main/java/org/apache/sling/distribution/communication/DistributionRequest.java
sling/trunk/contrib/extensions/distribution/api/src/main/java/org/apache/sling/distribution/communication/DistributionResponse.java
sling/trunk/contrib/extensions/distribution/api/src/main/java/org/apache/sling/distribution/queue/DistributionQueueDispatchingStrategy.java
sling/trunk/contrib/extensions/distribution/api/src/main/java/org/apache/sling/distribution/queue/DistributionQueueItemState.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgent.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/ErrorAwareQueueDispatchingStrategy.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/PriorityPathQueueDispatchingStrategy.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/SingleQueueDispatchingStrategy.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueue.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/simple/SimpleDistributionQueue.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/VoidDistributionPackage.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/DistributionAgentRootServlet.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/DistributionAgentServlet.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/ChainDistributeDistributionTrigger.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/PersistingJcrEventDistributionTrigger.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/RemoteEventDistributionTrigger.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/ResourceEventDistributionTrigger.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/ScheduledDistributionTrigger.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/util/RequestUtils.java
sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentTest.java
sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/ErrorAwareQueueDistributionStrategyTest.java
sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/PriorityPathQueueDistributionStrategyTest.java
sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/SingleQueueDistributionStrategyTest.java
sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/serialization/impl/VoidDistributionPackageTest.java
Modified: sling/trunk/contrib/extensions/distribution/README.md
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/README.md?rev=1640737&r1=1640736&r2=1640737&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/README.md (original)
+++ sling/trunk/contrib/extensions/distribution/README.md Thu Nov 20 13:20:13 2014
@@ -4,6 +4,17 @@ This is the README for the Sling Content
## Overview
+The Sling Content Distribution module main goal is allowing distribution of content (Sling resources) among different Sling
+instances. The term "distribution" here means the ability of picking one or more resources on a certain Sling instance in order
+to copy and persist them onto another Sling instance. The Sling Content Distribution module is able to distribute content
+by:
+
+ - "pushing" from Sling instance A to Sling instance B
+ - "pulling" from Sling instance B to Sling instance A
+ - "synchronizing" Sling instances A and B via a third coordinating instance C
+
+### Bundles
+
The Sling Content Distribution module consists of the following bundles:
- org.apache.sling.distribution.api: this is where the APIs are defined
@@ -11,6 +22,14 @@ The Sling Content Distribution module co
- org.apache.sling.distribution.sample: this is a set of sample configurations and implementations for demo purpose
- org.apache.sling.distribution.it: this is the integration testing suite
+## Design
+
+The Sling Content Distribution module main design goals are it to be simple, reliable and extensible.
+
+
+
+
+
### Distribution agents
Each distribution agent is an OSGi service and is resolved using a [Sling Resource Provider](#Resource_Providers) who locate it under `libs/sling/distribution/services/agents`.
Modified: sling/trunk/contrib/extensions/distribution/api/src/main/java/org/apache/sling/distribution/communication/DistributionRequest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/api/src/main/java/org/apache/sling/distribution/communication/DistributionRequest.java?rev=1640737&r1=1640736&r2=1640737&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/api/src/main/java/org/apache/sling/distribution/communication/DistributionRequest.java (original)
+++ sling/trunk/contrib/extensions/distribution/api/src/main/java/org/apache/sling/distribution/communication/DistributionRequest.java Thu Nov 20 13:20:13 2014
@@ -33,11 +33,7 @@ public class DistributionRequest {
private final String[] paths;
public DistributionRequest(@Nonnull DistributionActionType action, @Nonnull String... paths) {
- this(System.currentTimeMillis(), action, paths);
- }
-
- public DistributionRequest(long time, @Nonnull DistributionActionType action, @Nonnull String... paths) {
- this.time = time;
+ this.time = System.currentTimeMillis();
this.action = action;
this.paths = paths;
}
Modified: sling/trunk/contrib/extensions/distribution/api/src/main/java/org/apache/sling/distribution/communication/DistributionResponse.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/api/src/main/java/org/apache/sling/distribution/communication/DistributionResponse.java?rev=1640737&r1=1640736&r2=1640737&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/api/src/main/java/org/apache/sling/distribution/communication/DistributionResponse.java (original)
+++ sling/trunk/contrib/extensions/distribution/api/src/main/java/org/apache/sling/distribution/communication/DistributionResponse.java Thu Nov 20 13:20:13 2014
@@ -18,17 +18,19 @@
*/
package org.apache.sling.distribution.communication;
+import com.sun.istack.internal.Nullable;
+
/**
* A distribution response
*/
public class DistributionResponse {
- private final String status;
+ private final String message;
private final boolean successful;
- public DistributionResponse(String status, boolean successful) {
- this.status = status;
+ public DistributionResponse(boolean successful, @Nullable String message) {
this.successful = successful;
+ this.message = message;
}
public boolean isSuccessful() {
@@ -37,11 +39,11 @@ public class DistributionResponse {
@Override
public String toString() {
- return "{\"success\":" + isSuccessful() + ", \"status\":\"" + getStatus() + "\"}";
+ return "{\"success\":" + isSuccessful() + ", \"message\":\"" + getMessage() + "\"}";
}
- public String getStatus() {
- return status != null ? status : "done nothing";
+ public String getMessage() {
+ return message != null ? message : "done nothing";
}
}
Modified: sling/trunk/contrib/extensions/distribution/api/src/main/java/org/apache/sling/distribution/queue/DistributionQueueDispatchingStrategy.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/api/src/main/java/org/apache/sling/distribution/queue/DistributionQueueDispatchingStrategy.java?rev=1640737&r1=1640736&r2=1640737&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/api/src/main/java/org/apache/sling/distribution/queue/DistributionQueueDispatchingStrategy.java (original)
+++ sling/trunk/contrib/extensions/distribution/api/src/main/java/org/apache/sling/distribution/queue/DistributionQueueDispatchingStrategy.java Thu Nov 20 13:20:13 2014
@@ -27,7 +27,11 @@ import org.apache.sling.distribution.pac
/**
* a {@link DistributionQueueDispatchingStrategy} implements an algorithm for dispatching
- * {@link org.apache.sling.distribution.packaging.DistributionPackage}s among the available queues
+ * {@link org.apache.sling.distribution.packaging.DistributionPackage}s among the available queues.
+ * <p/>
+ * Usually a {@link org.apache.sling.distribution.packaging.DistributionPackage} will be dispatched to a single {@link org.apache.sling.distribution.queue.DistributionQueue}
+ * but it would also be possible to dispatch the same package to multiple queues, resulting in obtaining multiple states
+ * (one for each queue) for a certain package.
*/
@ConsumerType
public interface DistributionQueueDispatchingStrategy extends DistributionComponent {
@@ -37,16 +41,18 @@ public interface DistributionQueueDispat
* synchronously distribute a {@link org.apache.sling.distribution.packaging.DistributionPackage}
* to one or more {@link DistributionQueue}s provided by the given {@link DistributionQueueProvider}
*
- * @param distributionPackage a {@link org.apache.sling.distribution.packaging.DistributionPackage} to distribute
- * @param queueProvider the {@link DistributionQueueProvider} used to provide the queues to be used for the given package
- * @return <code>true</code> if addition was successful, <code>false</code> otherwise
+ * @param distributionPackage a {@link org.apache.sling.distribution.packaging.DistributionPackage} to distribute
+ * @param queueProvider the {@link DistributionQueueProvider} used to provide the queues to be used for the given package
+ * @return an {@link java.lang.Iterable} of {@link org.apache.sling.distribution.queue.DistributionQueueItemState}s representing
+ * the states of the {@link org.apache.sling.distribution.queue.DistributionQueueItem}s added to one or more {@link org.apache.sling.distribution.queue.DistributionQueue}s
* @throws DistributionQueueException if any internal error happens during distribution
*/
- boolean add(@Nonnull DistributionPackage distributionPackage, @Nonnull DistributionQueueProvider queueProvider) throws DistributionQueueException;
+ Iterable<DistributionQueueItemState> add(@Nonnull DistributionPackage distributionPackage, @Nonnull DistributionQueueProvider queueProvider) throws DistributionQueueException;
/**
* Returns the queue names available for this strategy.
+ *
* @return a list of queue names
*/
@Nonnull
Modified: sling/trunk/contrib/extensions/distribution/api/src/main/java/org/apache/sling/distribution/queue/DistributionQueueItemState.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/api/src/main/java/org/apache/sling/distribution/queue/DistributionQueueItemState.java?rev=1640737&r1=1640736&r2=1640737&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/api/src/main/java/org/apache/sling/distribution/queue/DistributionQueueItemState.java (original)
+++ sling/trunk/contrib/extensions/distribution/api/src/main/java/org/apache/sling/distribution/queue/DistributionQueueItemState.java Thu Nov 20 13:20:13 2014
@@ -32,15 +32,17 @@ public class DistributionQueueItemState
private final Calendar entered;
- public DistributionQueueItemState(Calendar entered, ItemState state, int attempts) {
+ private final String queueName;
+ public DistributionQueueItemState(Calendar entered, ItemState state, int attempts, String queueName) {
this.entered = entered;
this.state = state;
this.attempts = attempts;
+ this.queueName = queueName;
}
- public DistributionQueueItemState(ItemState state) {
- this(Calendar.getInstance(), state, 0);
+ public DistributionQueueItemState(ItemState state, String queueName) {
+ this(Calendar.getInstance(), state, 0, queueName);
}
public boolean isSuccessful() {
@@ -55,15 +57,21 @@ public class DistributionQueueItemState
return state;
}
+ public String getQueueName() {
+ return queueName;
+ }
+
@Override
public String toString() {
- return "{\"attempts\":\"" + attempts + "\",\"" + "successful\":\"" + isSuccessful() + "\",\"" + "state\":\"" + state + "\"}";
+ return "{\"attempts\":\"" + attempts + "\",\"" + "successful\":\"" + isSuccessful() + "\",\"" + "state\":\"" + state +
+ "\",\"" + "queueName\":\"" + queueName + "\"}";
}
public Calendar getEntered() {
return entered;
}
+
public enum ItemState {
QUEUED, // waiting in queue after adding or for restart after failing
ACTIVE, // job is currently in processing
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgent.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgent.java?rev=1640737&r1=1640736&r2=1640737&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgent.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgent.java Thu Nov 20 13:20:13 2014
@@ -21,6 +21,7 @@ package org.apache.sling.distribution.ag
import javax.annotation.Nonnull;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collection;
import java.util.Dictionary;
import java.util.HashMap;
import java.util.LinkedList;
@@ -169,34 +170,33 @@ public class SimpleDistributionAgent imp
List<DistributionResponse> distributionResponses = new LinkedList<DistributionResponse>();
for (DistributionPackage distributionPackage : distributionPackages) {
- distributionResponses.add(schedule(distributionPackage));
+ distributionResponses.addAll(schedule(distributionPackage));
}
return distributionResponses.size() == 1 ? distributionResponses.get(0) : new CompositeDistributionResponse(distributionResponses);
}
- private DistributionResponse schedule(DistributionPackage distributionPackage) {
- DistributionResponse distributionResponse;
+ private Collection<DistributionResponse> schedule(DistributionPackage distributionPackage) {
+ Collection<DistributionResponse> distributionResponses = new LinkedList<DistributionResponse>();
log.info("scheduling distribution of package {}", distributionPackage);
-
// dispatch the distribution package to the queue distribution handler
try {
- boolean success = queueDistributionStrategy.add(distributionPackage, queueProvider);
-
- Dictionary<Object, Object> properties = new Properties();
- properties.put("distribution.package.paths", distributionPackage.getPaths());
- properties.put("distribution.agent.name", name);
- distributionEventFactory.generateEvent(DistributionEventType.PACKAGE_QUEUED, properties);
+ Iterable<DistributionQueueItemState> states = queueDistributionStrategy.add(distributionPackage, queueProvider);
+ for (DistributionQueueItemState state : states) {
+ Dictionary<Object, Object> properties = new Properties();
+ properties.put("distribution.package.paths", distributionPackage.getPaths());
+ properties.put("distribution.agent.name", name);
+ distributionEventFactory.generateEvent(DistributionEventType.PACKAGE_QUEUED, properties);
- distributionResponse = new DistributionResponse(success? DistributionQueueItemState.ItemState.QUEUED.toString() :
- DistributionQueueItemState.ItemState.ERROR.toString(), success);
+ distributionResponses.add(new DistributionResponse(state.isSuccessful(), state.getItemState().toString()));
+ }
} catch (Exception e) {
- log.error("an error happened during queue processing", e);
- distributionResponse = new DistributionResponse(e.toString(), false);
+ log.error("an error happened during dispatching items to the queue(s)", e);
+ distributionResponses.add(new DistributionResponse(false, e.toString()));
}
- return distributionResponse;
+ return distributionResponses;
}
@Nonnull
@@ -288,8 +288,7 @@ public class SimpleDistributionAgent imp
if (distributionPackage instanceof SharedDistributionPackage) {
((SharedDistributionPackage) distributionPackage).release(queueName);
- }
- else {
+ } else {
distributionPackage.delete();
}
success = true;
@@ -368,7 +367,7 @@ public class SimpleDistributionAgent imp
private String status;
public CompositeDistributionResponse(List<DistributionResponse> distributionResponses) {
- super("", false);
+ super(false, null);
if (distributionResponses.isEmpty()) {
successful = false;
status = "empty response";
@@ -377,7 +376,7 @@ public class SimpleDistributionAgent imp
StringBuilder statusBuilder = new StringBuilder("[");
for (DistributionResponse response : distributionResponses) {
successful &= response.isSuccessful();
- statusBuilder.append(response.getStatus()).append(", ");
+ statusBuilder.append(response.getMessage()).append(", ");
}
int lof = statusBuilder.lastIndexOf(", ");
statusBuilder.replace(lof, lof + 2, "]");
@@ -391,7 +390,7 @@ public class SimpleDistributionAgent imp
}
@Override
- public String getStatus() {
+ public String getMessage() {
return status;
}
}
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/ErrorAwareQueueDispatchingStrategy.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/ErrorAwareQueueDispatchingStrategy.java?rev=1640737&r1=1640736&r2=1640737&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/ErrorAwareQueueDispatchingStrategy.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/ErrorAwareQueueDispatchingStrategy.java Thu Nov 20 13:20:13 2014
@@ -79,13 +79,16 @@ public class ErrorAwareQueueDispatchingS
timeThreshold = PropertiesUtil.toInteger(ctx.getProperties().get(TIME_THRESHOLD), 600000);
}
- public boolean add(@Nonnull DistributionPackage distributionPackage, @Nonnull DistributionQueueProvider queueProvider) throws DistributionQueueException {
- boolean added;
+ public Iterable<DistributionQueueItemState> add(@Nonnull DistributionPackage distributionPackage,
+ @Nonnull DistributionQueueProvider queueProvider) throws DistributionQueueException {
+ checkAndRemoveStuckItems(queueProvider);
DistributionQueueItem queueItem = getItem(distributionPackage);
DistributionQueue queue = queueProvider.getQueue(DEFAULT_QUEUE_NAME);
- added = queue.add(queueItem);
- checkAndRemoveStuckItems(queueProvider);
- return added;
+ if (queue.add(queueItem)) {
+ return Arrays.asList(queue.getStatus(queueItem));
+ } else {
+ return Arrays.asList(new DistributionQueueItemState(DistributionQueueItemState.ItemState.ERROR, queue.getName()));
+ }
}
@Nonnull
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/PriorityPathQueueDispatchingStrategy.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/PriorityPathQueueDispatchingStrategy.java?rev=1640737&r1=1640736&r2=1640737&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/PriorityPathQueueDispatchingStrategy.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/PriorityPathQueueDispatchingStrategy.java Thu Nov 20 13:20:13 2014
@@ -27,6 +27,7 @@ import org.apache.sling.distribution.que
import org.apache.sling.distribution.queue.DistributionQueueDispatchingStrategy;
import org.apache.sling.distribution.queue.DistributionQueueException;
import org.apache.sling.distribution.queue.DistributionQueueItem;
+import org.apache.sling.distribution.queue.DistributionQueueItemState;
import org.apache.sling.distribution.queue.DistributionQueueProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -46,9 +47,6 @@ public class PriorityPathQueueDispatchin
}
-
-
-
private DistributionQueue getQueue(DistributionQueueItem distributionPackage, DistributionQueueProvider queueProvider)
throws DistributionQueueException {
String[] paths = distributionPackage.getPaths();
@@ -78,19 +76,17 @@ public class PriorityPathQueueDispatchin
return queue;
}
- public boolean add(@Nonnull DistributionPackage distributionPackage, @Nonnull DistributionQueueProvider queueProvider) throws DistributionQueueException {
-
+ public Iterable<DistributionQueueItemState> add(@Nonnull DistributionPackage distributionPackage, @Nonnull DistributionQueueProvider queueProvider) throws DistributionQueueException {
DistributionQueueItem queueItem = getItem(distributionPackage);
DistributionQueue queue = getQueue(queueItem, queueProvider);
- if (queue != null) {
- return queue.add(queueItem);
+ if (queue.add(queueItem)) {
+ return Arrays.asList(queue.getStatus(queueItem));
} else {
- throw new DistributionQueueException("could not get a queue");
+ return Arrays.asList(new DistributionQueueItemState(DistributionQueueItemState.ItemState.ERROR, queue.getName()));
}
}
-
@Nonnull
public List<String> getQueueNames() {
List<String> paths = Arrays.asList(priorityPaths);
@@ -110,6 +106,4 @@ public class PriorityPathQueueDispatchin
}
-
-
}
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/SingleQueueDispatchingStrategy.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/SingleQueueDispatchingStrategy.java?rev=1640737&r1=1640736&r2=1640737&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/SingleQueueDispatchingStrategy.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/SingleQueueDispatchingStrategy.java Thu Nov 20 13:20:13 2014
@@ -27,6 +27,7 @@ import org.apache.sling.distribution.que
import org.apache.sling.distribution.queue.DistributionQueueDispatchingStrategy;
import org.apache.sling.distribution.queue.DistributionQueueException;
import org.apache.sling.distribution.queue.DistributionQueueItem;
+import org.apache.sling.distribution.queue.DistributionQueueItemState;
import org.apache.sling.distribution.queue.DistributionQueueProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -39,10 +40,14 @@ public class SingleQueueDispatchingStrat
private final Logger log = LoggerFactory.getLogger(getClass());
- public boolean add(@Nonnull DistributionPackage distributionPackage, @Nonnull DistributionQueueProvider queueProvider) throws DistributionQueueException {
+ public Iterable<DistributionQueueItemState> add(@Nonnull DistributionPackage distributionPackage, @Nonnull DistributionQueueProvider queueProvider) throws DistributionQueueException {
DistributionQueueItem queueItem = getItem(distributionPackage);
DistributionQueue queue = queueProvider.getQueue(DEFAULT_QUEUE_NAME);
- return queue.add(queueItem);
+ if (queue.add(queueItem)) {
+ return Arrays.asList(queue.getStatus(queueItem));
+ } else {
+ return Arrays.asList(new DistributionQueueItemState(DistributionQueueItemState.ItemState.ERROR, queue.getName()));
+ }
}
@Nonnull
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueue.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueue.java?rev=1640737&r1=1640736&r2=1640737&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueue.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueue.java Thu Nov 20 13:20:13 2014
@@ -86,13 +86,13 @@ public class JobHandlingDistributionQueu
DistributionQueueItemState itemState = new DistributionQueueItemState(job.getCreated(),
ItemState.valueOf(job.getJobState().toString()),
- job.getRetryCount());
+ job.getRetryCount(), name);
log.info("status of job {} is {}", job.getId(), job.getJobState());
return itemState;
} else {
- DistributionQueueItemState itemState = new DistributionQueueItemState(ItemState.DROPPED);
+ DistributionQueueItemState itemState = new DistributionQueueItemState(ItemState.DROPPED, name);
return itemState;
}
} catch (Exception e) {
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/simple/SimpleDistributionQueue.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/simple/SimpleDistributionQueue.java?rev=1640737&r1=1640736&r2=1640737&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/simple/SimpleDistributionQueue.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/simple/SimpleDistributionQueue.java Thu Nov 20 13:20:13 2014
@@ -71,7 +71,7 @@ public class SimpleDistributionQueue imp
} catch (InterruptedException e) {
log.error("cannot add an item to the queue", e);
} finally {
- statusMap.put(item, new DistributionQueueItemState(Calendar.getInstance(), itemState, 0));
+ statusMap.put(item, new DistributionQueueItemState(Calendar.getInstance(), itemState, 0, name));
}
return result;
}
@@ -83,7 +83,7 @@ public class SimpleDistributionQueue imp
if (queue.contains(queueItem)) {
return itemStatus;
} else {
- return new DistributionQueueItemState(itemStatus.getEntered(), ItemState.SUCCEEDED, itemStatus.getAttempts());
+ return new DistributionQueueItemState(itemStatus.getEntered(), ItemState.SUCCEEDED, itemStatus.getAttempts(), name);
}
}
@@ -93,7 +93,7 @@ public class SimpleDistributionQueue imp
DistributionQueueItemState itemState = statusMap.get(element);
statusMap.put(element, new DistributionQueueItemState(itemState.getEntered(),
itemState.getItemState(),
- itemState.getAttempts()+1));
+ itemState.getAttempts()+1, name));
}
return element;
}
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/VoidDistributionPackage.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/VoidDistributionPackage.java?rev=1640737&r1=1640736&r2=1640737&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/VoidDistributionPackage.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/VoidDistributionPackage.java Thu Nov 20 13:20:13 2014
@@ -80,8 +80,7 @@ public class VoidDistributionPackage ext
pathsString = Text.unescape(pathsString);
String[] paths = pathsString.split(", ");
- DistributionRequest request = new DistributionRequest(Long.valueOf(timeString),
- distributionActionType, paths);
+ DistributionRequest request = new DistributionRequest(distributionActionType, paths);
distributionPackage = new VoidDistributionPackage(request, typeString);
}
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/DistributionAgentRootServlet.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/DistributionAgentRootServlet.java?rev=1640737&r1=1640736&r2=1640737&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/DistributionAgentRootServlet.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/DistributionAgentRootServlet.java Thu Nov 20 13:20:13 2014
@@ -59,8 +59,7 @@ public class DistributionAgentRootServle
DistributionActionType action = DistributionActionType.fromName(a);
- DistributionRequest distributionRequest = new DistributionRequest(System.currentTimeMillis(),
- action, paths);
+ DistributionRequest distributionRequest = new DistributionRequest(action, paths);
ResourceResolver resourceResolver = request.getResourceResolver();
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/DistributionAgentServlet.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/DistributionAgentServlet.java?rev=1640737&r1=1640736&r2=1640737&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/DistributionAgentServlet.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/DistributionAgentServlet.java Thu Nov 20 13:20:13 2014
@@ -63,18 +63,18 @@ public class DistributionAgentServlet ex
try {
DistributionResponse distributionResponse = agent.execute(resourceResolver, distributionRequest);
if (distributionResponse.isSuccessful()) {
- if (ItemState.SUCCEEDED.toString().equals(distributionResponse.getStatus())) {
+ if (ItemState.SUCCEEDED.toString().equals(distributionResponse.getMessage())) {
response.setStatus(200);
}
- if (ItemState.QUEUED.toString().equals(distributionResponse.getStatus())
+ if (ItemState.QUEUED.toString().equals(distributionResponse.getMessage())
|| ItemState.ACTIVE.toString().equals(
- distributionResponse.getStatus())) {
+ distributionResponse.getMessage())) {
response.setStatus(202);
}
}
else {
- if (ItemState.DROPPED.toString().equals(distributionResponse.getStatus())) {
+ if (ItemState.DROPPED.toString().equals(distributionResponse.getMessage())) {
response.setStatus(404);
} else {
response.setStatus(400);
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/ChainDistributeDistributionTrigger.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/ChainDistributeDistributionTrigger.java?rev=1640737&r1=1640736&r2=1640737&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/ChainDistributeDistributionTrigger.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/ChainDistributeDistributionTrigger.java Thu Nov 20 13:20:13 2014
@@ -119,7 +119,7 @@ public class ChainDistributeDistribution
log.info("triggering chain distribution from event {}", event);
DistributionActionType action = DistributionActionType.valueOf(String.valueOf(actionProperty));
- requestHandler.handle(new DistributionRequest(System.currentTimeMillis(), action, paths));
+ requestHandler.handle(new DistributionRequest(action, paths));
break;
}
}
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=1640737&r1=1640736&r2=1640737&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 Thu Nov 20 13:20:13 2014
@@ -50,7 +50,7 @@ public class JcrEventDistributionTrigger
if (Event.PROPERTY_REMOVED == type || Event.PROPERTY_CHANGED == type || Event.PROPERTY_ADDED == type) {
replicatingPath = replicatingPath.substring(0, replicatingPath.lastIndexOf('/'));
}
- distributionRequest = new DistributionRequest(System.currentTimeMillis(), Event.NODE_REMOVED ==
+ distributionRequest = new DistributionRequest(Event.NODE_REMOVED ==
type ? DistributionActionType.DELETE : DistributionActionType.ADD, replicatingPath);
log.info("distributing {}", distributionRequest);
}
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/PersistingJcrEventDistributionTrigger.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/PersistingJcrEventDistributionTrigger.java?rev=1640737&r1=1640736&r2=1640737&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/PersistingJcrEventDistributionTrigger.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/PersistingJcrEventDistributionTrigger.java Thu Nov 20 13:20:13 2014
@@ -87,7 +87,7 @@ public class PersistingJcrEventDistribut
createdNode.setProperty("info", values.toArray(new String[values.size()]));
session.save();
log.info("event persisted at {}", path);
- distributionRequest = new DistributionRequest(System.currentTimeMillis(), DistributionActionType.ADD, path);
+ distributionRequest = new DistributionRequest(DistributionActionType.ADD, path);
} else {
log.warn("could not create node {}", nuggetsPath + "/" + nodeName);
}
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/RemoteEventDistributionTrigger.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/RemoteEventDistributionTrigger.java?rev=1640737&r1=1640736&r2=1640737&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/RemoteEventDistributionTrigger.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/RemoteEventDistributionTrigger.java Thu Nov 20 13:20:13 2014
@@ -125,7 +125,7 @@ public class RemoteEventDistributionTrig
log.debug("content {} received {},{}", new Object[]{buffer, decoder, ioctrl});
// TODO : currently it always triggers poll request on /, should this be configurable?
- DistributionRequest distributionRequest = new DistributionRequest(System.currentTimeMillis(), DistributionActionType.POLL, "/");
+ DistributionRequest distributionRequest = new DistributionRequest(DistributionActionType.POLL, "/");
handler.handle(distributionRequest);
log.info("distribution request to agent {} sent ({} {})", new Object[]{
handler,
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/ResourceEventDistributionTrigger.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/ResourceEventDistributionTrigger.java?rev=1640737&r1=1640736&r2=1640737&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/ResourceEventDistributionTrigger.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/ResourceEventDistributionTrigger.java Thu Nov 20 13:20:13 2014
@@ -122,7 +122,7 @@ public class ResourceEventDistributionTr
Object pathProperty = event.getProperty("path");
if (pathProperty != null) {
String distributingPath = String.valueOf(pathProperty);
- requestHandler.handle(new DistributionRequest(System.currentTimeMillis(), action, distributingPath));
+ requestHandler.handle(new DistributionRequest(action, distributingPath));
}
}
}
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/ScheduledDistributionTrigger.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/ScheduledDistributionTrigger.java?rev=1640737&r1=1640736&r2=1640737&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/ScheduledDistributionTrigger.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/ScheduledDistributionTrigger.java Thu Nov 20 13:20:13 2014
@@ -78,7 +78,7 @@ public class ScheduledDistributionTrigge
public void run() {
log.debug("agent {}: scheduling {} distribution of {}", new Object[]{requestHandler, distributionAction, path});
- requestHandler.handle(new DistributionRequest(System.currentTimeMillis(), distributionAction, path));
+ requestHandler.handle(new DistributionRequest(distributionAction, path));
}
}
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/util/RequestUtils.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/util/RequestUtils.java?rev=1640737&r1=1640736&r2=1640737&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/util/RequestUtils.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/util/RequestUtils.java Thu Nov 20 13:20:13 2014
@@ -36,9 +36,7 @@ public class RequestUtils {
String action = request.getParameter(DistributionParameter.ACTION.toString());
String[] paths = request.getParameterValues(DistributionParameter.PATH.toString());
- return new DistributionRequest(System.currentTimeMillis(),
- DistributionActionType.fromName(action),
- paths);
+ return new DistributionRequest(DistributionActionType.fromName(action), paths);
}
public static URI appendDistributionRequest(URI uri, DistributionRequest distributionRequest) throws URISyntaxException {
Modified: sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentTest.java?rev=1640737&r1=1640736&r2=1640737&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentTest.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentTest.java Thu Nov 20 13:20:13 2014
@@ -19,6 +19,7 @@
package org.apache.sling.distribution.agent.impl;
import java.util.Arrays;
+import java.util.Iterator;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.resource.ResourceResolverFactory;
@@ -32,6 +33,7 @@ import org.apache.sling.distribution.pac
import org.apache.sling.distribution.packaging.DistributionPackageImporter;
import org.apache.sling.distribution.queue.DistributionQueue;
import org.apache.sling.distribution.queue.DistributionQueueDispatchingStrategy;
+import org.apache.sling.distribution.queue.DistributionQueueItemState;
import org.apache.sling.distribution.queue.DistributionQueueProvider;
import org.apache.sling.distribution.queue.impl.simple.SimpleDistributionQueue;
import org.junit.Test;
@@ -57,7 +59,8 @@ public class SimpleDistributionAgentTest
DistributionRequestAuthorizationStrategy packageExporterStrategy = mock(DistributionRequestAuthorizationStrategy.class);
DistributionQueueProvider queueProvider = mock(DistributionQueueProvider.class);
DistributionQueueDispatchingStrategy distributionHandler = mock(DistributionQueueDispatchingStrategy.class);
- when(distributionHandler.add(any(DistributionPackage.class), any(DistributionQueueProvider.class))).thenReturn(false);
+ Iterable<DistributionQueueItemState> states = Arrays.asList(new DistributionQueueItemState(DistributionQueueItemState.ItemState.ERROR, DistributionQueueDispatchingStrategy.DEFAULT_QUEUE_NAME));
+ when(distributionHandler.add(any(DistributionPackage.class), any(DistributionQueueProvider.class))).thenReturn(states);
DistributionEventFactory distributionEventFactory = mock(DistributionEventFactory.class);
ResourceResolverFactory resolverFactory = mock(ResourceResolverFactory.class);
@@ -66,8 +69,7 @@ public class SimpleDistributionAgentTest
packageExporter, packageExporterStrategy,
queueProvider, distributionHandler,
distributionEventFactory, resolverFactory, null);
- DistributionRequest request = new DistributionRequest(System.nanoTime(),
- DistributionActionType.ADD, "/");
+ DistributionRequest request = new DistributionRequest(DistributionActionType.ADD, "/");
DistributionPackage distributionPackage = mock(DistributionPackage.class);
ResourceResolver resourceResolver = mock(ResourceResolver.class);
@@ -78,7 +80,7 @@ public class SimpleDistributionAgentTest
new SimpleDistributionQueue(name, "name"));
DistributionResponse response = agent.execute(resourceResolver, request);
assertNotNull(response);
- assertEquals("ERROR", response.getStatus());
+ assertEquals("ERROR", response.getMessage());
}
@Test
@@ -96,20 +98,21 @@ public class SimpleDistributionAgentTest
packageExporter, packageExporterStrategy,
queueProvider,
distributionHandler, distributionEventFactory, resolverFactory, null);
- DistributionRequest request = new DistributionRequest(System.nanoTime(),
- DistributionActionType.ADD, "/");
+ DistributionRequest request = new DistributionRequest(DistributionActionType.ADD, "/");
DistributionPackage distributionPackage = mock(DistributionPackage.class);
ResourceResolver resourceResolver = mock(ResourceResolver.class);
when(distributionPackage.getPaths()).thenReturn(new String[]{"/"});
- when(distributionHandler.add(any(DistributionPackage.class), eq(queueProvider))).thenReturn(true);
+ Iterable<DistributionQueueItemState> states = Arrays.asList(new DistributionQueueItemState(DistributionQueueItemState.ItemState.QUEUED,
+ DistributionQueueDispatchingStrategy.DEFAULT_QUEUE_NAME));
+ when(distributionHandler.add(any(DistributionPackage.class), any(DistributionQueueProvider.class))).thenReturn(states);
when(packageExporter.exportPackages(any(ResourceResolver.class), any(DistributionRequest.class)))
.thenReturn(Arrays.asList(distributionPackage));
when(queueProvider.getQueue(DistributionQueueDispatchingStrategy.DEFAULT_QUEUE_NAME)).thenReturn(
new SimpleDistributionQueue(name, "name"));
DistributionResponse response = agent.execute(resourceResolver, request);
assertNotNull(response);
- assertEquals("QUEUED", response.getStatus());
+ assertEquals("QUEUED", response.getMessage());
}
@Test
@@ -128,8 +131,7 @@ public class SimpleDistributionAgentTest
packageExporter, packageExporterStrategy,
queueProvider, distributionHandler,
distributionEventFactory, resolverFactory, null);
- DistributionRequest request = new DistributionRequest(System.nanoTime(),
- DistributionActionType.ADD, "/");
+ DistributionRequest request = new DistributionRequest(DistributionActionType.ADD, "/");
DistributionPackage distributionPackage = mock(DistributionPackage.class);
ResourceResolver resourceResolver = mock(ResourceResolver.class);
Modified: sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/ErrorAwareQueueDistributionStrategyTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/ErrorAwareQueueDistributionStrategyTest.java?rev=1640737&r1=1640736&r2=1640737&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/ErrorAwareQueueDistributionStrategyTest.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/ErrorAwareQueueDistributionStrategyTest.java Thu Nov 20 13:20:13 2014
@@ -19,6 +19,7 @@
package org.apache.sling.distribution.queue.impl;
import java.util.Dictionary;
+import java.util.Iterator;
import org.apache.sling.distribution.packaging.DistributionPackage;
import org.apache.sling.distribution.queue.DistributionQueue;
@@ -29,7 +30,7 @@ import org.apache.sling.distribution.que
import org.junit.Test;
import org.osgi.service.component.ComponentContext;
-import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.mock;
@@ -48,10 +49,15 @@ public class ErrorAwareQueueDistribution
DistributionQueue queue = mock(DistributionQueue.class);
when(queueProvider.getQueue(DistributionQueueDispatchingStrategy.DEFAULT_QUEUE_NAME)).thenReturn(queue);
when(queue.add(any(DistributionQueueItem.class))).thenReturn(true);
+ DistributionQueueItemState state = mock(DistributionQueueItemState.class);
+ when(queue.getStatus(any(DistributionQueueItem.class))).thenReturn(state);
- boolean returnedState = errorAwareDistributionStrategy.add(distributionPackage, queueProvider);
-
- assertTrue(returnedState);
+ Iterable<DistributionQueueItemState> returnedStates = errorAwareDistributionStrategy.add(distributionPackage, queueProvider);
+ assertNotNull(returnedStates);
+ Iterator<DistributionQueueItemState> iterator = returnedStates.iterator();
+ assertNotNull(iterator);
+ assertTrue(iterator.hasNext());
+ assertNotNull(iterator.next());
}
@Test
@@ -67,8 +73,13 @@ public class ErrorAwareQueueDistribution
DistributionQueueItemState state = mock(DistributionQueueItemState.class);
when(state.isSuccessful()).thenReturn(false);
when(queue.getStatus(queueItem)).thenReturn(state);
- boolean returnedState = errorAwareDistributionStrategy.add(distributionPackage, queueProvider);
- assertFalse(returnedState);
+
+ Iterable<DistributionQueueItemState> returnedStates = errorAwareDistributionStrategy.add(distributionPackage, queueProvider);
+ assertNotNull(returnedStates);
+ Iterator<DistributionQueueItemState> iterator = returnedStates.iterator();
+ assertNotNull(iterator);
+ assertTrue(iterator.hasNext());
+ assertNotNull(iterator.next());
}
@Test
@@ -95,8 +106,13 @@ public class ErrorAwareQueueDistribution
when(state.isSuccessful()).thenReturn(false);
when(state.getAttempts()).thenReturn(2);
when(queue.getStatus(any(DistributionQueueItem.class))).thenReturn(state);
- boolean returnedState = errorAwareDistributionStrategy.add(distributionPackage, queueProvider);
- assertFalse(returnedState);
+
+ Iterable<DistributionQueueItemState> returnedStates = errorAwareDistributionStrategy.add(distributionPackage, queueProvider);
+ assertNotNull(returnedStates);
+ Iterator<DistributionQueueItemState> iterator = returnedStates.iterator();
+ assertNotNull(iterator);
+ assertTrue(iterator.hasNext());
+ assertNotNull(iterator.next());
}
@Test
@@ -119,21 +135,8 @@ public class ErrorAwareQueueDistribution
when(state.isSuccessful()).thenReturn(false);
when(state.getAttempts()).thenReturn(2);
when(queue.getStatus(any(DistributionQueueItem.class))).thenReturn(state);
- boolean returnedState = errorAwareDistributionStrategy.add(distributionPackage, queueProvider);
- assertTrue(returnedState);
- }
-
- @Test
- public void testPackageAdditionWithNullItemStateFromTheQueue() throws Exception {
- ErrorAwareQueueDispatchingStrategy errorAwareDistributionStrategy = new ErrorAwareQueueDispatchingStrategy();
- DistributionPackage distributionPackage = mock(DistributionPackage.class);
- DistributionQueueProvider queueProvider = mock(DistributionQueueProvider.class);
- DistributionQueue queue = mock(DistributionQueue.class);
-
- when(queueProvider.getQueue(DistributionQueueDispatchingStrategy.DEFAULT_QUEUE_NAME)).thenReturn(queue);
- when(queue.add(any(DistributionQueueItem.class))).thenReturn(true);
- boolean returnedState = errorAwareDistributionStrategy.add(distributionPackage, queueProvider);
- assertTrue(returnedState);
+ Iterable<DistributionQueueItemState> returnedState = errorAwareDistributionStrategy.add(distributionPackage, queueProvider);
+ assertNotNull(returnedState);
}
@Test
@@ -144,8 +147,14 @@ public class ErrorAwareQueueDistribution
DistributionQueue queue = mock(DistributionQueue.class);
when(queueProvider.getQueue(DistributionQueueDispatchingStrategy.DEFAULT_QUEUE_NAME)).thenReturn(queue);
when(queue.add(any(DistributionQueueItem.class))).thenReturn(true);
+ DistributionQueueItemState state = mock(DistributionQueueItemState.class);
+ when(queue.getStatus(any(DistributionQueueItem.class))).thenReturn(state);
- boolean returnedState = errorAwareDistributionStrategy.add(distributionPackage, queueProvider);
- assertTrue(returnedState);
+ Iterable<DistributionQueueItemState> returnedStates = errorAwareDistributionStrategy.add(distributionPackage, queueProvider);
+ assertNotNull(returnedStates);
+ Iterator<DistributionQueueItemState> iterator = returnedStates.iterator();
+ assertNotNull(iterator);
+ assertTrue(iterator.hasNext());
+ assertNotNull(iterator.next());
}
}
Modified: sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/PriorityPathQueueDistributionStrategyTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/PriorityPathQueueDistributionStrategyTest.java?rev=1640737&r1=1640736&r2=1640737&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/PriorityPathQueueDistributionStrategyTest.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/PriorityPathQueueDistributionStrategyTest.java Thu Nov 20 13:20:13 2014
@@ -18,13 +18,17 @@
*/
package org.apache.sling.distribution.queue.impl;
+import java.util.Iterator;
+
import org.apache.sling.distribution.packaging.DistributionPackage;
import org.apache.sling.distribution.queue.DistributionQueue;
import org.apache.sling.distribution.queue.DistributionQueueDispatchingStrategy;
import org.apache.sling.distribution.queue.DistributionQueueItem;
+import org.apache.sling.distribution.queue.DistributionQueueItemState;
import org.apache.sling.distribution.queue.DistributionQueueProvider;
import org.junit.Test;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.mock;
@@ -45,9 +49,15 @@ public class PriorityPathQueueDistributi
DistributionQueue queue = mock(DistributionQueue.class);
when(queueProvider.getQueue(DistributionQueueDispatchingStrategy.DEFAULT_QUEUE_NAME)).thenReturn(queue);
when(queue.add(any(DistributionQueueItem.class))).thenReturn(true);
+ DistributionQueueItemState state = mock(DistributionQueueItemState.class);
+ when(queue.getStatus(any(DistributionQueueItem.class))).thenReturn(state);
- boolean returnedState = priorityPathDistributionStrategy.add(distributionPackage, queueProvider);
- assertTrue(returnedState);
+ Iterable<DistributionQueueItemState> returnedStates = priorityPathDistributionStrategy.add(distributionPackage, queueProvider);
+ assertNotNull(returnedStates);
+ Iterator<DistributionQueueItemState> iterator = returnedStates.iterator();
+ assertNotNull(iterator);
+ assertTrue(iterator.hasNext());
+ assertNotNull(iterator.next());
}
@Test
@@ -60,9 +70,15 @@ public class PriorityPathQueueDistributi
DistributionQueue queue = mock(DistributionQueue.class);
when(queueProvider.getQueue("/content")).thenReturn(queue);
when(queue.add(any(DistributionQueueItem.class))).thenReturn(true);
+ DistributionQueueItemState state = mock(DistributionQueueItemState.class);
+ when(queue.getStatus(any(DistributionQueueItem.class))).thenReturn(state);
- boolean returnedState = priorityPathDistributionStrategy.add(distributionPackage, queueProvider);
- assertTrue(returnedState);
+ Iterable<DistributionQueueItemState> returnedStates = priorityPathDistributionStrategy.add(distributionPackage, queueProvider);
+ assertNotNull(returnedStates);
+ Iterator<DistributionQueueItemState> iterator = returnedStates.iterator();
+ assertNotNull(iterator);
+ assertTrue(iterator.hasNext());
+ assertNotNull(iterator.next());
}
@Test
@@ -74,10 +90,14 @@ public class PriorityPathQueueDistributi
DistributionQueueProvider queueProvider = mock(DistributionQueueProvider.class);
DistributionQueue queue = mock(DistributionQueue.class);
when(queueProvider.getQueue(DistributionQueueDispatchingStrategy.DEFAULT_QUEUE_NAME)).thenReturn(queue);
- when(queue.add(any(DistributionQueueItem.class))).thenReturn(true);
+ when(queue.add(any(DistributionQueueItem.class))).thenReturn(false);
- boolean returnedState = priorityPathDistributionStrategy.add(distributionPackage, queueProvider);
- assertTrue(returnedState);
+ Iterable<DistributionQueueItemState> returnedStates = priorityPathDistributionStrategy.add(distributionPackage, queueProvider);
+ assertNotNull(returnedStates);
+ Iterator<DistributionQueueItemState> iterator = returnedStates.iterator();
+ assertNotNull(iterator);
+ assertTrue(iterator.hasNext());
+ assertNotNull(iterator.next());
}
@Test
@@ -90,40 +110,14 @@ public class PriorityPathQueueDistributi
DistributionQueue queue = mock(DistributionQueue.class);
when(queueProvider.getQueue("/content")).thenReturn(queue);
- when(queue.add(any(DistributionQueueItem.class))).thenReturn(true);
+ when(queue.add(any(DistributionQueueItem.class))).thenReturn(false);
- boolean returnedState = priorityPathDistributionStrategy.add(distributionPackage, queueProvider);
- assertTrue(returnedState);
- }
-
- @Test
- public void testPackageAdditionWithNullItemStateFromTheQueue() throws Exception {
- PriorityPathQueueDispatchingStrategy priorityPathDistributionStrategy = new PriorityPathQueueDispatchingStrategy(new String[]{"/content", "/apps"});
-
- DistributionPackage distributionPackage = mock(DistributionPackage.class);
- when(distributionPackage.getPaths()).thenReturn(new String[]{"/etc"});
- DistributionQueueProvider queueProvider = mock(DistributionQueueProvider.class);
- DistributionQueue queue = mock(DistributionQueue.class);
-
- when(queueProvider.getQueue(DistributionQueueDispatchingStrategy.DEFAULT_QUEUE_NAME)).thenReturn(queue);
- when(queue.add(any(DistributionQueueItem.class))).thenReturn(true);
- boolean returnedState = priorityPathDistributionStrategy.add(distributionPackage, queueProvider);
- assertTrue(returnedState);
- }
-
- @Test
- public void testPackageAdditionWithNullItemStateFromTheQueueOnPriorityPath() throws Exception {
- PriorityPathQueueDispatchingStrategy priorityPathDistributionStrategy = new PriorityPathQueueDispatchingStrategy(new String[]{"/content", "/apps"});
-
- DistributionPackage distributionPackage = mock(DistributionPackage.class);
- when(distributionPackage.getPaths()).thenReturn(new String[]{"/apps/some/stuff"});
- DistributionQueueProvider queueProvider = mock(DistributionQueueProvider.class);
- DistributionQueue queue = mock(DistributionQueue.class);
-
- when(queueProvider.getQueue("/apps")).thenReturn(queue);
- when(queue.add(any(DistributionQueueItem.class))).thenReturn(true);
- boolean returnedState = priorityPathDistributionStrategy.add(distributionPackage, queueProvider);
- assertTrue(returnedState);
+ Iterable<DistributionQueueItemState> returnedStates = priorityPathDistributionStrategy.add(distributionPackage, queueProvider);
+ assertNotNull(returnedStates);
+ Iterator<DistributionQueueItemState> iterator = returnedStates.iterator();
+ assertNotNull(iterator);
+ assertTrue(iterator.hasNext());
+ assertNotNull(iterator.next());
}
@Test
@@ -136,8 +130,15 @@ public class PriorityPathQueueDistributi
DistributionQueue queue = mock(DistributionQueue.class);
when(queueProvider.getQueue(DistributionQueueDispatchingStrategy.DEFAULT_QUEUE_NAME)).thenReturn(queue);
when(queue.add(any(DistributionQueueItem.class))).thenReturn(true);
- boolean returnedState = priorityPathDistributionStrategy.add(distributionPackage, queueProvider);
- assertTrue(returnedState);
+ DistributionQueueItemState state = mock(DistributionQueueItemState.class);
+ when(queue.getStatus(any(DistributionQueueItem.class))).thenReturn(state);
+
+ Iterable<DistributionQueueItemState> returnedStates = priorityPathDistributionStrategy.add(distributionPackage, queueProvider);
+ assertNotNull(returnedStates);
+ Iterator<DistributionQueueItemState> iterator = returnedStates.iterator();
+ assertNotNull(iterator);
+ assertTrue(iterator.hasNext());
+ assertNotNull(iterator.next());
}
@Test
@@ -151,8 +152,14 @@ public class PriorityPathQueueDistributi
when(queueProvider.getQueue("/apps")).thenReturn(queue);
when(queue.add(any(DistributionQueueItem.class))).thenReturn(true);
+ DistributionQueueItemState state = mock(DistributionQueueItemState.class);
+ when(queue.getStatus(any(DistributionQueueItem.class))).thenReturn(state);
- boolean returnedState = priorityPathDistributionStrategy.add(distributionPackage, queueProvider);
- assertTrue(returnedState);
+ Iterable<DistributionQueueItemState> returnedStates = priorityPathDistributionStrategy.add(distributionPackage, queueProvider);
+ assertNotNull(returnedStates);
+ Iterator<DistributionQueueItemState> iterator = returnedStates.iterator();
+ assertNotNull(iterator);
+ assertTrue(iterator.hasNext());
+ assertNotNull(iterator.next());
}
}
Modified: sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/SingleQueueDistributionStrategyTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/SingleQueueDistributionStrategyTest.java?rev=1640737&r1=1640736&r2=1640737&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/SingleQueueDistributionStrategyTest.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/SingleQueueDistributionStrategyTest.java Thu Nov 20 13:20:13 2014
@@ -18,6 +18,8 @@
*/
package org.apache.sling.distribution.queue.impl;
+import java.util.Iterator;
+
import org.apache.sling.distribution.packaging.DistributionPackage;
import org.apache.sling.distribution.queue.DistributionQueue;
import org.apache.sling.distribution.queue.DistributionQueueDispatchingStrategy;
@@ -27,6 +29,7 @@ import org.apache.sling.distribution.que
import org.junit.Test;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.mock;
@@ -45,9 +48,15 @@ public class SingleQueueDistributionStra
DistributionQueue queue = mock(DistributionQueue.class);
when(queueProvider.getQueue(DistributionQueueDispatchingStrategy.DEFAULT_QUEUE_NAME)).thenReturn(queue);
when(queue.add(any(DistributionQueueItem.class))).thenReturn(true);
+ DistributionQueueItemState state = mock(DistributionQueueItemState.class);
+ when(queue.getStatus(any(DistributionQueueItem.class))).thenReturn(state);
- boolean returnedState = singleQueueDistributionStrategy.add(distributionPackage, queueProvider);
- assertTrue(returnedState);
+ Iterable<DistributionQueueItemState> returnedStates = singleQueueDistributionStrategy.add(distributionPackage, queueProvider);
+ assertNotNull(returnedStates);
+ Iterator<DistributionQueueItemState> iterator = returnedStates.iterator();
+ assertNotNull(iterator);
+ assertTrue(iterator.hasNext());
+ assertNotNull(iterator.next());
}
@Test
@@ -62,20 +71,12 @@ public class SingleQueueDistributionStra
DistributionQueueItemState state = mock(DistributionQueueItemState.class);
when(state.isSuccessful()).thenReturn(false);
when(queue.getStatus(queueItem)).thenReturn(state);
- boolean returnedState = singleQueueDistributionStrategy.add(distributionPackage, queueProvider);
- assertFalse(returnedState);
- }
-
- @Test
- public void testPackageAdditionWithNullItemStateFromTheQueue() throws Exception {
- SingleQueueDispatchingStrategy singleQueueDistributionStrategy = new SingleQueueDispatchingStrategy();
- DistributionPackage distributionPackage = mock(DistributionPackage.class);
- DistributionQueueProvider queueProvider = mock(DistributionQueueProvider.class);
- DistributionQueue queue = mock(DistributionQueue.class);
- when(queueProvider.getQueue(DistributionQueueDispatchingStrategy.DEFAULT_QUEUE_NAME)).thenReturn(queue);
- when(queue.add(any(DistributionQueueItem.class))).thenReturn(true);
- boolean returnedState = singleQueueDistributionStrategy.add(distributionPackage, queueProvider);
- assertTrue(returnedState);
+ Iterable<DistributionQueueItemState> returnedStates = singleQueueDistributionStrategy.add(distributionPackage, queueProvider);
+ assertNotNull(returnedStates);
+ Iterator<DistributionQueueItemState> iterator = returnedStates.iterator();
+ assertNotNull(iterator);
+ assertTrue(iterator.hasNext());
+ assertNotNull(iterator.next());
}
@Test
@@ -86,8 +87,14 @@ public class SingleQueueDistributionStra
DistributionQueue queue = mock(DistributionQueue.class);
when(queueProvider.getQueue(DistributionQueueDispatchingStrategy.DEFAULT_QUEUE_NAME)).thenReturn(queue);
when(queue.add(any(DistributionQueueItem.class))).thenReturn(true);
+ DistributionQueueItemState state = mock(DistributionQueueItemState.class);
+ when(queue.getStatus(any(DistributionQueueItem.class))).thenReturn(state);
- boolean returnedState = singleQueueDistributionStrategy.add(distributionPackage, queueProvider);
- assertTrue(returnedState);
+ Iterable<DistributionQueueItemState> returnedStates = singleQueueDistributionStrategy.add(distributionPackage, queueProvider);
+ assertNotNull(returnedStates);
+ Iterator<DistributionQueueItemState> iterator = returnedStates.iterator();
+ assertNotNull(iterator);
+ assertTrue(iterator.hasNext());
+ assertNotNull(iterator.next());
}
}
Modified: sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/serialization/impl/VoidDistributionPackageTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/serialization/impl/VoidDistributionPackageTest.java?rev=1640737&r1=1640736&r2=1640737&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/serialization/impl/VoidDistributionPackageTest.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/serialization/impl/VoidDistributionPackageTest.java Thu Nov 20 13:20:13 2014
@@ -36,9 +36,10 @@ public class VoidDistributionPackageTest
@Test
public void testCreatedAndReadPackagesEquality() throws Exception {
- DistributionRequest request = new DistributionRequest(123l, DistributionActionType.DELETE, "/abc");
+ long time = System.currentTimeMillis();
+ DistributionRequest request = new DistributionRequest(DistributionActionType.DELETE, "/abc");
VoidDistributionPackage createdPackage = new VoidDistributionPackage(request);
- VoidDistributionPackage readPackage = VoidDistributionPackage.fromStream(new ByteArrayInputStream("DELETE:/abc:123:VOID".getBytes()));
+ VoidDistributionPackage readPackage = VoidDistributionPackage.fromStream(new ByteArrayInputStream(("DELETE:/abc:" + time + ":VOID").getBytes()));
assertEquals(createdPackage.getId(), readPackage.getId());
assertEquals(createdPackage.getAction(), readPackage.getAction());
assertEquals(createdPackage.getType(), readPackage.getType());