in src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableResource.java [274:311]
public static Object jsFunction_adaptTo(Context cx, Scriptable thisObj,
Object[] args, Function funObj) {
// get and unwrap the argument
Object arg = (args.length > 0) ? args[0] : null;
while (arg instanceof Wrapper) {
arg = ((Wrapper) arg).unwrap();
}
// try to get the Class object for the argument
Class<?> adapter = null;
if (arg instanceof Class<?>) {
adapter = (Class<?>) arg;
} else if (arg != null && arg != Undefined.instance) {
// try loading the class from the String
String className = ScriptRuntime.toString(arg);
try {
ClassLoader loader = Thread.currentThread().getContextClassLoader();
if (loader == null) {
loader = thisObj.getClass().getClassLoader();
}
adapter = loader.loadClass(className);
} catch (Exception e) {
LOGGER.error("Unable to adapt object.", e);
}
}
if (adapter != null) {
ScriptableResource sr = (ScriptableResource) thisObj;
return sr.toJS(sr.resource.adaptTo(adapter));
}
return Undefined.instance;
}