in src/main/java/org/apache/sling/resourceaccesssecurity/impl/ResourceAccessSecurityImpl.java [57:108]
private Iterator<ResourceAccessGateHandler> getMatchingResourceAccessGateHandlerIterator(
final String path, final ResourceAccessGate.Operation operation) {
//
// TODO: maybe caching some frequent paths with read operation would be
// a good idea
//
final List<ResourceAccessGateHandler> handlers = allHandlers;
if (!handlers.isEmpty()) {
final Iterator<ResourceAccessGateHandler> iter = handlers.iterator();
return new Iterator<ResourceAccessGateHandler>() {
private ResourceAccessGateHandler next;
{
peek();
}
private void peek() {
this.next = null;
while ( iter.hasNext() && next == null ) {
final ResourceAccessGateHandler handler = iter.next();
if (handler.matches(path, operation)) {
next = handler;
}
}
}
@Override
public boolean hasNext() {
return next != null;
}
@Override
public ResourceAccessGateHandler next() {
if ( next == null ) {
throw new NoSuchElementException();
}
final ResourceAccessGateHandler handler = this.next;
peek();
return handler;
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
};
}
return null;
}