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