public void exportPackages()

in src/main/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporter.java [71:118]


    public void exportPackages(@NotNull ResourceResolver resourceResolver, @NotNull DistributionRequest distributionRequest, @NotNull DistributionPackageProcessor packageProcessor) throws DistributionException {

        if (DistributionRequestType.TEST.equals(distributionRequest.getRequestType())) {
            packageProcessor.process(new SimpleDistributionPackage(distributionRequest, PACKAGE_TYPE));
            return;
        }

        if (!DistributionRequestType.PULL.equals(distributionRequest.getRequestType())) {
            throw new DistributionException("request type not supported " + distributionRequest.getRequestType());
        }

        DistributionPackage distributionPackage = null;

        try {
            log.debug("getting packages from queue {}", queueName);

            DistributionQueue queue = getQueueOrThrow(queueName);
            DistributionQueueEntry entry = queue.getHead();
            if (entry != null) {
                DistributionQueueItem queueItem = entry.getItem();
                DistributionPackageInfo info = DistributionPackageUtils.fromQueueItem(queueItem);
                DistributionPackageBuilder packageBuilder = packageBuilderProvider.getPackageBuilder(info.getType());

                if (packageBuilder != null) {
                    distributionPackage = packageBuilder.getPackage(resourceResolver, queueItem.getPackageId());
                    if (distributionPackage != null) {
                        distributionPackage.getInfo().putAll(info);

                        log.debug("item {} fetched from the queue", info);

                        packageProcessor.process(new AgentDistributionPackage(distributionPackage, queue, entry.getId()));
                    } else {
                        if (dropInvalidItems) {
                            queue.remove(entry.getId());
                            log.warn("ghost package: cannot get package {} dropping from queue", info);
                        } else {
                            log.warn("ghost package: cannot get package {} keeping in queue", info);
                        }
                    }
                } else {
                    log.warn("cannot find package builder with type {}", info.getType());
                }
            }

        } finally {
            DistributionPackageUtils.closeSafely(distributionPackage);
        }
    }