public JobExecutionResult doProcess()

in core/src/main/java/org/apache/sling/cms/core/internal/jobs/FileMetadataExtractorJob.java [72:105]


    public JobExecutionResult doProcess(Job job, JobExecutionContext context, ResourceResolver resolver) {
        String path = job.getProperty(SlingConstants.PROPERTY_PATH, "");

        Resource root = resolver.getResource(path);
        if (root != null) {
            List<File> files = new ArrayList<>();
            if (CMSConstants.NT_FILE.equals(root.getResourceType())) {
                files.add(root.adaptTo(File.class));
            } else {
                collectFiles(root, files);
            }
            context.log("Found {0} files to extract metadata", files.size());

            context.initProgress(files.size(), -1);

            int processed = 1;
            for (File file : files) {
                try {
                    extractor.extractMetadata(file);
                    context.incrementProgressCount(processed++);
                    context.log("Extracted metadata for {0}", file.getPath());
                } catch (IOException e) {
                    context.log("Failed to extract matadata for {0}", file.getPath());
                    context.incrementProgressCount(processed++);
                    context.log("Exception {0}", e.getMessage());
                    log.warn("Failed to extract metadata for " + file.getPath(), e);
                }
            }

            return context.result().message("Metadata Extracted").succeeded();
        } else {
            return context.result().message("No file found at " + path).failed();
        }
    }