in src/main/java/org/apache/sling/servlets/resolver/internal/resource/MergingServletResourceProvider.java [137:166]
public Resource getResource(@SuppressWarnings("rawtypes") ResolveContext resolveContext, String path) {
Resource wrapped = null;
final ResourceProvider<?> parentProvider = resolveContext.getParentResourceProvider();
if (parentProvider != null) {
wrapped = parentProvider.getResource(resolveContext.getParentResolveContext(), path, ResourceContext.EMPTY_CONTEXT, null);
}
Resource result;
Pair<ServletResourceProvider, ServiceReference<?>> provider = providers.get().get(path);
if (provider != null) {
result = provider.getLeft().getResource(resolveContext, path, null, null);
if (result instanceof ServletResource) {
((ServletResource) result).setWrappedResource(wrapped);
}
}
else {
if (wrapped != null && !(wrapped instanceof NonExistingResource)) {
result = wrapped;
} else {
result = null;
}
if (result == null && tree.get().containsKey(path)) {
result = new SyntheticResource(resolveContext.getResourceResolver(), path, ResourceProvider.RESOURCE_TYPE_SYNTHETIC);
} else {
return wrapped;
}
}
return result;
}