Author: mpetria
Date: Fri Jan 15 09:02:27 2016
New Revision: 1724744
URL: http://svn.apache.org/viewvc?rev=1724744&view=rev
Log:
SLING-5430: allow move between distribution queues
Modified:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/ErrorQueueDispatchingStrategy.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/resources/impl/ExtendedDistributionServiceResourceProvider.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/DistributionAgentQueueServlet.java
Modified:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/ErrorQueueDispatchingStrategy.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/ErrorQueueDispatchingStrategy.java?rev=1724744&r1=1724743&r2=1724744&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/ErrorQueueDispatchingStrategy.java
(original)
+++
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/ErrorQueueDispatchingStrategy.java
Fri Jan 15 09:02:27 2016
@@ -47,7 +47,7 @@ public class ErrorQueueDispatchingStrate
private final Logger log = LoggerFactory.getLogger(getClass());
- private final static String ERROR_PREFIX = "error-";
+ public final static String ERROR_PREFIX = "error-";
private final Set<String> queueNames = new TreeSet<String>();
public ErrorQueueDispatchingStrategy(String[] queueNames) {
Modified:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/resources/impl/ExtendedDistributionServiceResourceProvider.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/resources/impl/ExtendedDistributionServiceResourceProvider.java?rev=1724744&r1=1724743&r2=1724744&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/resources/impl/ExtendedDistributionServiceResourceProvider.java
(original)
+++
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/resources/impl/ExtendedDistributionServiceResourceProvider.java
Fri Jan 15 09:02:27 2016
@@ -30,6 +30,7 @@ import org.apache.sling.distribution.com
import org.apache.sling.distribution.component.impl.DistributionComponentKind;
import
org.apache.sling.distribution.component.impl.DistributionComponentProvider;
import org.apache.sling.distribution.log.DistributionLog;
+import org.apache.sling.distribution.queue.impl.ErrorQueueDispatchingStrategy;
import org.apache.sling.distribution.serialization.DistributionPackageInfo;
import org.apache.sling.distribution.packaging.impl.DistributionPackageUtils;
import org.apache.sling.distribution.queue.DistributionQueue;
@@ -138,6 +139,11 @@ public class ExtendedDistributionService
result.put("empty", queueStatus.isEmpty());
result.put("itemsCount", queueStatus.getItemsCount());
+ if
(queueName.startsWith(ErrorQueueDispatchingStrategy.ERROR_PREFIX)) {
+ String retryQueue =
queueName.replace(ErrorQueueDispatchingStrategy.ERROR_PREFIX, "");
+ result.put("retryQueue", retryQueue);
+ }
+
List<String> nameList = new ArrayList<String>();
Map<String, Map<String, Object>> propertiesMap = new
HashMap<String, Map<String, Object>>();
for (DistributionQueueEntry entry : queue.getItems(0,
MAX_QUEUE_DEPTH)) {
Modified:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/DistributionAgentQueueServlet.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/DistributionAgentQueueServlet.java?rev=1724744&r1=1724743&r2=1724744&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/DistributionAgentQueueServlet.java
(original)
+++
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/DistributionAgentQueueServlet.java
Fri Jan 15 09:02:27 2016
@@ -90,6 +90,17 @@ public class DistributionAgentQueueServl
addItems(resourceResolver, queue, sourceQueue, idParam);
}
+ } else if ("move".equals(operation)) {
+ String from = request.getParameter("from");
+ String[] idParam = request.getParameterValues("id");
+
+ if (idParam != null && from != null) {
+ DistributionAgent agent =
request.getResource().getParent().getParent().adaptTo(DistributionAgent.class);
+ DistributionQueue sourceQueue = agent.getQueue(from);
+
+ addItems(resourceResolver, queue, sourceQueue, idParam);
+ deleteItems(resourceResolver, sourceQueue, idParam);
+ }
}
}
@@ -101,6 +112,13 @@ public class DistributionAgentQueueServl
}
for (String id: ids) {
+ DistributionQueueEntry targetEntry = targetQueue.getItem(id);
+
+ if (targetEntry != null) {
+ log.warn("item {} already in queue {}", id,
targetQueue.getName());
+ continue;
+ }
+
DistributionQueueEntry entry = sourceQueue.getItem(id);
if (entry != null) {
targetQueue.add(new DistributionQueueItem(id,
entry.getItem()));