in src/main/java/org/apache/sling/distribution/resources/impl/ExtendedDistributionServiceResourceProvider.java [126:190]
private Map<String, Object> getQueueProperties(DistributionAgent agent, SimplePathInfo queueInfo) {
if (queueInfo.isRoot()) {
Map<String, Object> result = new HashMap<String, Object>();
List<String> nameList = new ArrayList<String>();
for (String name : agent.getQueueNames()) {
nameList.add(name);
}
result.put(ITEMS, nameList.toArray(new String[nameList.size()]));
result.put(SLING_RESOURCE_TYPE, DistributionResourceTypes.AGENT_QUEUE_LIST_RESOURCE_TYPE);
return result;
} else if (queueInfo.isMain()) {
String queueName = queueInfo.getMainResourceName();
Map<String, Object> result = new HashMap<String, Object>();
DistributionQueue queue = agent.getQueue(queueName);
if (queue != null) {
DistributionQueueStatus queueStatus = queue.getStatus();
result.put(SLING_RESOURCE_TYPE, DistributionResourceTypes.AGENT_QUEUE_RESOURCE_TYPE);
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, "");
result.put("retryQueue", retryQueue);
}
List<String> nameList = new ArrayList<String>();
DistributionQueueEntry entry = queue.getHead();
if (entry != null) {
nameList.add(entry.getId());
}
result.put(ITEMS, nameList.toArray(new String[nameList.size()]));
result.put(INTERNAL_ITEMS_ITERATOR, new QueueItemsIterator(queue));
result.put(INTERNAL_ADAPTABLE, queue);
}
return result;
} else if (queueInfo.isChild()) {
String queueName = queueInfo.getMainResourceName();
Map<String, Object> result = new HashMap<String, Object>();
DistributionQueue queue = agent.getQueue(queueName);
if (queue != null) {
String itemId = queueInfo.getChildResourceName();
DistributionQueueEntry entry = queue.getEntry(itemId);
result = getItemProperties(entry);
}
return result;
}
return null;
}