in src/main/java/org/apache/sling/event/dea/impl/DistributedEventSender.java [183:223]
private void runInBackground() {
while ( this.running ) {
// so let's wait/get the next event from the queue
String path = null;
try {
path = this.queue.take();
} catch (final InterruptedException e) {
this.ignoreException(e);
Thread.currentThread().interrupt();
this.running = false;
}
if ( path != null && path.length() > 0 && this.running ) {
ResourceResolver resolver = null;
try {
resolver = this.resourceResolverFactory.getServiceResourceResolver(null);
final Resource eventResource = resolver.getResource(path);
if (eventResource == null) {
this.logger.warn("runInBackground : resource not found at "+path);
} else if ( DistributedEventAdminImpl.RESOURCE_TYPE_EVENT.equals(eventResource.getResourceType())) {
final Event e = this.readEvent(eventResource);
if ( e != null ) {
// we check event admin as processing is async
final EventAdmin localEA = this.eventAdmin;
if ( localEA != null ) {
localEA.postEvent(e);
postedEventCounter.incrementAndGet();
} else {
this.logger.error("Unable to post event as no event admin is available.");
}
}
}
} catch (final LoginException ex) {
this.logger.error("Exception during creation of resource resolver.", ex);
} finally {
if ( resolver != null ) {
resolver.close();
}
}
}
}
}