in src/main/java/org/apache/sling/scripting/sightly/js/impl/rhino/JsValueAdapter.java [60:90]
public Object adapt(Object jsValue) {
if (jsValue == null || jsValue == Context.getUndefinedValue() || jsValue == ScriptableObject.NOT_FOUND) {
return null;
}
if (jsValue instanceof Wrapper) {
return adapt(((Wrapper) jsValue).unwrap());
}
if (asyncExtractor.isPromise(jsValue)) {
return adapt(forceAsync(jsValue));
}
if (jsValue instanceof ScriptableObject) {
return extractScriptable((ScriptableObject) jsValue);
}
if (jsValue instanceof CharSequence) {
// convert any string-like type to plain java strings
return jsValue.toString();
}
if (jsValue instanceof Map) {
return convertMap((Map) jsValue);
}
if (jsValue instanceof Iterable) {
return convertIterable((Iterable) jsValue);
}
if (jsValue instanceof Number) {
return convertNumber((Number) jsValue);
}
if (jsValue instanceof Object[]) {
return convertIterable(Arrays.asList((Object[]) jsValue));
}
return jsValue;
}