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