You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by tm...@apache.org on 2016/12/19 14:08:06 UTC

svn commit: r1775099 - in /sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution: packaging/impl/exporter/AgentDistributionPackageExporter.java servlet/DistributionAgentQueueServlet.java

Author: tmaret
Date: Mon Dec 19 14:08:06 2016
New Revision: 1775099

URL: http://svn.apache.org/viewvc?rev=1775099&view=rev
Log:
SLING-6418 - NPE in o.a.s.d.p.i.e.AgentDistributionPackageExporter#exportPackages

* Throw specific exception when the queue can't be found in AgentDistributionPackageExporter or DistributionAgentQueueServlet

Modified:
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporter.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/packaging/impl/exporter/AgentDistributionPackageExporter.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporter.java?rev=1775099&r1=1775098&r2=1775099&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporter.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporter.java Mon Dec 19 14:08:06 2016
@@ -83,7 +83,7 @@ public class AgentDistributionPackageExp
         try {
             log.debug("getting packages from queue {}", queueName);
 
-            DistributionQueue queue = agent.getQueue(queueName);
+            DistributionQueue queue = getQueueOrThrow(queueName);
             DistributionQueueEntry entry = queue.getHead();
             if (entry != null) {
                 DistributionQueueItem queueItem = entry.getItem();
@@ -118,7 +118,7 @@ public class AgentDistributionPackageExp
         try {
             log.debug("getting package from queue {}", queueName);
 
-            DistributionQueue queue = agent.getQueue(queueName);
+            DistributionQueue queue = getQueueOrThrow(queueName);
             DistributionQueueEntry entry = queue.getItem(distributionPackageId);
             DistributionPackage distributionPackage;
 
@@ -183,4 +183,14 @@ public class AgentDistributionPackageExp
             ((DefaultDistributionLog) agentLog).info(message, values);
         }
     }
+
+    @Nonnull
+    private DistributionQueue getQueueOrThrow(@Nonnull String queueName)
+            throws DistributionException {
+        DistributionQueue queue = agent.getQueue(queueName);
+        if (queue == null) {
+            throw new DistributionException(String.format("Could not find queue %s", queueName));
+        }
+        return queue;
+    }
 }

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=1775099&r1=1775098&r2=1775099&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 Mon Dec 19 14:08:06 2016
@@ -18,6 +18,7 @@
  */
 package org.apache.sling.distribution.servlet;
 
+import javax.annotation.Nonnull;
 import javax.servlet.ServletException;
 import java.io.IOException;
 
@@ -86,7 +87,7 @@ public class DistributionAgentQueueServl
 
             if (idParam != null && from != null) {
                 DistributionAgent agent = request.getResource().getParent().getParent().adaptTo(DistributionAgent.class);
-                DistributionQueue sourceQueue = agent.getQueue(from);
+                DistributionQueue sourceQueue = getQueueOrThrow(agent,from);
 
                 addItems(resourceResolver, queue, sourceQueue, idParam);
             }
@@ -96,7 +97,7 @@ public class DistributionAgentQueueServl
 
             if (idParam != null && from != null) {
                 DistributionAgent agent = request.getResource().getParent().getParent().adaptTo(DistributionAgent.class);
-                DistributionQueue sourceQueue = agent.getQueue(from);
+                DistributionQueue sourceQueue = getQueueOrThrow(agent,from);
 
                 addItems(resourceResolver, queue, sourceQueue, idParam);
                 deleteItems(resourceResolver, sourceQueue, idParam);
@@ -105,12 +106,6 @@ public class DistributionAgentQueueServl
     }
 
     private void addItems(ResourceResolver resourceResolver, DistributionQueue targetQueue, DistributionQueue sourceQueue, String[] ids) {
-
-
-        if (sourceQueue == null) {
-            log.warn("cannot find source queue {}", sourceQueue);
-        }
-
         for (String id: ids) {
             DistributionQueueEntry entry = sourceQueue.getItem(id);
             if (entry != null) {
@@ -160,4 +155,13 @@ public class DistributionAgentQueueServl
 
         return null;
     }
+
+    @Nonnull
+    private static DistributionQueue getQueueOrThrow(@Nonnull DistributionAgent agent, @Nonnull String queueName) {
+        DistributionQueue queue = agent.getQueue(queueName);
+        if (queue == null) {
+            throw new IllegalArgumentException(String.format("Could not find queue %s", queueName));
+        }
+        return queue;
+    }
 }