in src/main/java/org/apache/sling/servlets/resolver/internal/resource/MergingServletResourceProvider.java [147:178]
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;
Map.Entry<ServletResourceProvider, ServiceReference<?>> provider =
providers.get().get(path);
if (provider != null) {
result = provider.getKey().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;
}