in src/main/java/org/apache/sling/servlets/resolver/internal/helper/AbstractResourceCollector.java [85:122]
public final Collection<Resource> getServlets(final ResourceResolver resolver, final List<String> scriptExtensions) {
final SortedSet<WeightedResource> resources = new TreeSet<>((o1, o2) -> {
String o1Parent = ResourceUtil.getParent(o1.getPath());
String o2Parent = ResourceUtil.getParent(o2.getPath());
if (o1Parent != null && o2Parent != null && o1Parent.equals(o2Parent)) {
String o1ScriptName = o1.getName();
String o2ScriptName = o2.getName();
String o1Extension = getScriptExtension(o1ScriptName);
String o2Extension = getScriptExtension(o2ScriptName);
if (StringUtils.isNotEmpty(o1Extension) && StringUtils.isNotEmpty(o2Extension)) {
String o1ScriptWithoutExtension = o1ScriptName.substring(0, o1ScriptName.lastIndexOf("." + o1Extension));
String o2ScriptWithoutExtension = o2ScriptName.substring(0, o2ScriptName.lastIndexOf("." + o2Extension));
if (o1ScriptWithoutExtension.equals(o2ScriptWithoutExtension)) {
int o1ExtensionIndex = scriptExtensions.indexOf(o1Extension);
int o2ExtensionIndex = scriptExtensions.indexOf(o2Extension);
if (o1ExtensionIndex == o2ExtensionIndex || o1ExtensionIndex == -1 || o2ExtensionIndex == -1) {
return o1.compareTo(o2);
} else if (o1ExtensionIndex > o2ExtensionIndex) {
return -1;
} else {
return 1;
}
}
}
}
return o1.compareTo(o2);
});
List<Resource> locations = LocationCollector.getLocations(resourceType, resourceSuperType,
baseResourceType, resolver, this.useResourceCaching);
locations.forEach(locationRes -> getWeightedResources(resources, locationRes));
List<Resource> result = new ArrayList<>(resources.size());
result.addAll(resources);
return result;
}