in src/main/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderStorage.java [49:92]
public ResourceProviderStorage(List<ResourceProviderHandler> handlers) {
this.allHandlers = handlers;
this.authRequiredHandlers = new ArrayList<>();
this.adaptableHandlers = new ArrayList<>();
this.attributableHandlers = new ArrayList<>();
this.languageQueryableHandlers = new ArrayList<>();
for (ResourceProviderHandler h : allHandlers) {
ResourceProviderInfo info = h.getInfo();
if (info.getAuthType() == AuthType.required) {
this.authRequiredHandlers.add(h);
}
if (info.isAdaptable()) {
this.adaptableHandlers.add(h);
}
if (info.isAttributable()) {
this.attributableHandlers.add(h);
}
final ResourceProvider<Object> rp = h.getResourceProvider();
if (rp != null && rp.getQueryLanguageProvider() != null) {
this.languageQueryableHandlers.add(h);
}
}
// sort all lists for consistency
final Comparator<ResourceProviderHandler> comp = new Comparator<ResourceProviderHandler>() {
@Override
public int compare(final ResourceProviderHandler o1, final ResourceProviderHandler o2) {
final ResourceProviderInfo i1 = o1.getInfo();
final ResourceProviderInfo i2 = o2.getInfo();
if ( i1 == null ) {
return i2 == null ? 0 : -1;
}
if ( i2 == null ) {
return 1;
}
return i2.getServiceReference().compareTo(i1.getServiceReference());
}
};
Collections.sort(this.authRequiredHandlers, comp);
Collections.sort(this.adaptableHandlers, comp);
Collections.sort(this.attributableHandlers, comp);
Collections.sort(this.languageQueryableHandlers, comp);
this.handlersTree = new PathTree<>(handlers);
}