@Override public Object coerce(Object object) { if (object instanceof JSObject) { final JSObject jso = (JSObject) object; if (jso.isFunction()) { return new TemplateFunction() { @Override public String apply(String s) { Object call = jso.call(jso, s); return call == null ? null : call.toString(); } }; } else if (jso.isArray()) { // Let's see what it is really. Maybe it is a list. return new ArrayList(((Map) jso).values()); } } return super.coerce(object); } }
@Override public boolean isArray() { return delegate.isArray(); }
private ScriptValue newValue( final JSObject value ) { if ( value.isFunction() ) { return new FunctionScriptValue( this, value ); } if ( value.isArray() ) { return new ArrayScriptValue( this, value ); } return new ObjectScriptValue( this, value ); } }
public static Object wrap(Object aValue, int aTimezoneOffset) { aValue = Scripts.getSpace().toJava(aValue); if (aValue instanceof Date) { return convertDateToExcelDate((Date)aValue, aTimezoneOffset); } else if (aValue instanceof Number || aValue instanceof Boolean || aValue instanceof CharSequence || aValue == null) { return aValue; } else if (aValue instanceof JSObject) { JSObject jsValue = (JSObject) aValue; if (jsValue.isArray() || Scripts.getSpace().isArrayDeep(jsValue)) { return new JSDynaList(jsValue, aTimezoneOffset); } else if (!jsValue.isFunction()) { return new JSDynaBean(jsValue, aTimezoneOffset); } else { return null; } } else { return aValue; } }
public static PlatypusQuery read(JSObject o) { PlatypusQuery query = new PlatypusQuery(null); String title = JSType.toString(o.getMember(TITLE_PROP_NAME)); query.setTitle(title); String entityName = JSType.toString(o.getMember(APP_ELEMENT_PROP_NAME)); query.setEntityName(entityName); // parameters JSObject jsParameters = (JSObject) o.getMember(PARAMETERS_PROP_NAME); assert jsParameters != null && jsParameters.isArray(); Parameters params = new Parameters(); FieldsJSONReader.readFields(jsParameters, params); for (int i = 0; i < params.getParametersCount(); i++) { Parameter p = params.get(i + 1); query.putParameter(p.getName(), p.getType(), p.getValue()); } // fields JSObject jsFields = (JSObject) o.getMember(FIELDS_PROP_NAME); assert jsFields != null && jsFields.isArray(); Fields fields = new Fields(); FieldsJSONReader.readFields(jsFields, fields); query.setFields(fields); return query; } }