in src/main/java/org/apache/sling/auth/core/impl/AuthenticationRequirementsManager.java [256:292]
private void processQueue() {
ResourceResolver resolver = null;
ResourceMapper mapper = null;
try {
while ( this.backgroundJobRunning.get() ) {
Map.Entry<Long, Action> entry = null;
synchronized ( this.processingQueue ) {
final Iterator<Map.Entry<Long, Action> > iter = this.processingQueue.entrySet().iterator();
if ( iter.hasNext() ) {
entry = iter.next();
iter.remove();
}
}
if ( entry == null ) {
synchronized ( this.processingQueue ) {
this.backgroundJobRunning.compareAndSet(true, !this.processingQueue.isEmpty());
}
} else {
logger.debug("Processing action for service {} : {}", entry.getKey(), entry.getValue());
if ( entry.getValue().type != ActionType.REMOVED && mapper == null ) {
try {
resolver = this.resolverFactory.getServiceResourceResolver(null);
mapper = resolver.adaptTo(ResourceMapper.class);
} catch ( final org.apache.sling.api.resource.LoginException le) {
// ignore
}
}
process(mapper, entry.getKey(), entry.getValue());
}
}
} finally {
if ( resolver != null ) {
resolver.close();
}
}
}