in src/main/java/org/apache/sling/event/impl/jobs/JobManagerImpl.java [310:350]
public Job getJobById(final String id) {
logger.debug("Getting job by id: {}", id);
final ResourceResolver resolver = this.configuration.createResourceResolver();
final StringBuilder buf = new StringBuilder(64);
try {
buf.append("/jcr:root");
buf.append(this.configuration.getJobsBasePathWithSlash());
buf.append("/element(*,");
buf.append(ResourceHelper.RESOURCE_TYPE_JOB);
buf.append(")[@");
buf.append(ResourceHelper.PROPERTY_JOB_ID);
buf.append(" = '");
buf.append(id);
buf.append("']");
if ( logger.isDebugEnabled() ) {
logger.debug("Exceuting query: {}", buf.toString());
}
final Iterator<Resource> result = resolver.findResources(buf.toString(), "xpath");
while ( result.hasNext() ) {
final Resource jobResource = result.next();
// sanity check for the path
if ( this.configuration.isJob(jobResource.getPath()) ) {
final JobImpl job = Utility.readJob(logger, jobResource);
if ( job != null ) {
if ( logger.isDebugEnabled() ) {
logger.debug("Found job with id {} = {}", id, Utility.toString(job));
}
return job;
}
}
}
} catch (final QuerySyntaxException qse) {
logger.warn("Query syntax wrong " + buf.toString(), qse);
} finally {
resolver.close();
}
logger.debug("Job not found with id: {}", id);
return null;
}