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>> {