SLING-8097 - Expose queue capabilities as resource property
diff --git a/src/main/java/org/apache/sling/distribution/resources/impl/ExtendedDistributionServiceResourceProvider.java b/src/main/java/org/apache/sling/distribution/resources/impl/ExtendedDistributionServiceResourceProvider.java
index f6081ab..2733d90 100644
--- a/src/main/java/org/apache/sling/distribution/resources/impl/ExtendedDistributionServiceResourceProvider.java
+++ b/src/main/java/org/apache/sling/distribution/resources/impl/ExtendedDistributionServiceResourceProvider.java
@@ -43,6 +43,10 @@
import org.apache.sling.distribution.resources.DistributionResourceTypes;
import org.apache.sling.distribution.resources.impl.common.SimplePathInfo;
+import static org.apache.sling.distribution.queue.DistributionQueueCapabilities.APPENDABLE;
+import static org.apache.sling.distribution.queue.DistributionQueueCapabilities.REMOVABLE;
+import static org.apache.sling.distribution.queue.DistributionQueueCapabilities.CLEARABLE;
+
/**
* Extended service resource provider exposes children resources like .../agents/agentName/queues/queueName/queueItem
*/
@@ -142,6 +146,7 @@
result.put("state", queueStatus.getState().name());
result.put("empty", queueStatus.isEmpty());
result.put("itemsCount", queueStatus.getItemsCount());
+ result.put("capabilities", queueCapabilities(queue));
if (queueName.startsWith(ErrorQueueDispatchingStrategy.ERROR_PREFIX)) {
String retryQueue = queueName.replace(ErrorQueueDispatchingStrategy.ERROR_PREFIX, "");
@@ -211,6 +216,20 @@
}
+ private String[] queueCapabilities(DistributionQueue queue) {
+ List<String> capabilities = new ArrayList<String>();
+ if (queue.hasCapability(REMOVABLE)) {
+ capabilities.add("removable");
+ }
+ if (queue.hasCapability(APPENDABLE)) {
+ capabilities.add("appendable");
+ }
+ if (queue.hasCapability(CLEARABLE)) {
+ capabilities.add("clearable");
+ }
+ return capabilities.toArray(new String[capabilities.size()]);
+ }
+
class QueueItemsIterator implements Iterator<Map<String, Object>> {