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;
+    }
 }


Reply via email to