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


Reply via email to