in src/main/java/org/apache/sling/resourceresolver/impl/mapping/PagedQueryIterator.java [85:129]
private Resource getNext() throws NoSuchElementException {
Resource resource = it.next();
count += 1;
final String[] values = resource.getValueMap().get(propertyName, defaultValue);
if (values.length > 0) {
String value = values[0];
if (value.compareTo(lastKey) < 0) {
String message = String.format(
"unexpected query result in page %d, property name '%s', got '%s', despite querying for > '%s'",
(page - 1), propertyName, value, lastKey);
log.error(message);
throw new QueryImplementationException(message);
}
if (lastValue != null && value.compareTo(lastValue) < 0) {
String message = String.format(
"unexpected query result in page %d, property name '%s', got '%s', last value was '%s'",
(page - 1), propertyName, value, lastValue);
log.error(message);
throw new QueryImplementationException(message);
}
// keep information about large key counts
if (value.equals(lastValue)) {
currentKeyCount += 1;
} else {
if (currentKeyCount > largestKeyCount) {
largestKeyCount = currentKeyCount + 1;
largestKeyValue = lastValue;
}
currentKeyCount = 0;
}
// start next page?
if (count > pageSize && !value.equals(lastValue)) {
updatePageStats();
lastKey = value;
nextPage();
return getNext();
}
lastValue = value;
}
return resource;
}