private Map getQueueProperties()

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