in src/main/java/org/apache/sling/servlets/resolver/internal/resource/ServletResource.java [121:157]
public <T> T adaptTo(Class<T> type) {
Resource wrappedResource = this.wrapped.get();
if (type == Servlet.class && servlet != null) {
return (T) servlet; // unchecked cast
}
if (type == InputStream.class && servlet instanceof BundledScriptServlet) {
InputStream result = ((BundledScriptServlet) servlet).getInputStream();
if (result != null) {
return (T) result;
}
}
if (type == BundledRenderUnit.class && servlet instanceof BundledScriptServlet) {
return (T) ((BundledScriptServlet) servlet).getBundledRenderUnit();
}
if (wrappedResource != null) {
T result = wrappedResource.adaptTo(type);
if (result != null) {
return result;
}
}
if ( type == ValueMap.class ) {
final Map<String, Object> props = new HashMap<>();
props.put("sling:resourceType", this.getResourceType());
props.put("sling:resourceSuperType", this.getResourceSuperType());
if (servlet != null) {
props.put("servletName", this.getServletName());
props.put("servletClass", this.servlet.getClass().getName());
}
return (T) new ValueMapDecorator(props); // unchecked cast
}
return super.adaptTo(type);
}