Search in sources :

Example 1 with Symbol

use of org.mozilla.javascript.Symbol in project servoy-client by Servoy.

the class RhinoConversion method defaultFromRhino.

/**
 * Default conversion used to convert from Rhino property types that do not explicitly implement component <-> Rhino conversions. <BR/><BR/>
 * Values of types that don't implement the sablo <-> rhino conversions are by default accessible directly.
 */
@SuppressWarnings("unchecked")
public static // PropertyDescription / IWebObjectContext ... can be made available here if needed
Object defaultFromRhino(// PropertyDescription / IWebObjectContext ... can be made available here if needed
Object propertyValue, // PropertyDescription / IWebObjectContext ... can be made available here if needed
Object oldValue) {
    // convert simple values to json values
    if (isUndefinedOrNotFound(propertyValue)) {
        return null;
    }
    if (propertyValue instanceof NativeDate) {
        return ((NativeDate) propertyValue).unwrap();
    }
    if (propertyValue instanceof NativeObject) {
        Map<String, Object> map = new HashMap<>();
        Map<String, Object> oldMap = (oldValue instanceof Map) ? (Map<String, Object>) oldValue : null;
        NativeObject no = (NativeObject) propertyValue;
        Object[] ids = no.getIds();
        for (Object id2 : ids) {
            Object value = null;
            if (id2 instanceof String) {
                value = no.get((String) id2, no);
            } else if (id2 instanceof Symbol) {
                value = no.get((Symbol) id2, no);
            } else if (id2 instanceof Number) {
                value = no.get(((Number) id2).intValue(), no);
            }
            String id = String.valueOf(id2);
            map.put(id, defaultFromRhino(value, oldMap != null ? oldMap.get(id) : null));
        }
        return map;
    }
    if (propertyValue instanceof NativeArray) {
        List<Object> list = new ArrayList<Object>();
        List<Object> oldList = (oldValue instanceof List) ? (List<Object>) oldValue : null;
        final NativeArray no = (NativeArray) propertyValue;
        final long naLength = no.getLength();
        for (int id = 0; id < naLength; id++) {
            list.add(defaultFromRhino(no.get(id, no), oldList != null && oldList.size() > id ? oldList.get(id) : null));
        }
        return list;
    }
    if (propertyValue instanceof FormScope && ((FormScope) propertyValue).getFormController() != null)
        return ((FormScope) propertyValue).getFormController().getName();
    if (propertyValue instanceof IFormController)
        return ((IFormController) propertyValue).getName();
    if (propertyValue instanceof JSDataSet) {
        return ((JSDataSet) propertyValue).getDataSet();
    }
    if (propertyValue instanceof RhinoMapOrArrayWrapper) {
        return ((RhinoMapOrArrayWrapper) propertyValue).getWrappedValue();
    }
    if (propertyValue instanceof CharSequence) {
        return propertyValue.toString();
    }
    return propertyValue;
}
Also used : NativeArray(org.mozilla.javascript.NativeArray) HashMap(java.util.HashMap) Symbol(org.mozilla.javascript.Symbol) ArrayList(java.util.ArrayList) JSDataSet(com.servoy.j2db.dataprocessing.JSDataSet) FormScope(com.servoy.j2db.scripting.FormScope) NativeObject(org.mozilla.javascript.NativeObject) NativeDate(org.mozilla.javascript.NativeDate) NativeObject(org.mozilla.javascript.NativeObject) JSONObject(org.json.JSONObject) ScriptableObject(org.mozilla.javascript.ScriptableObject) ServoyJSONObject(com.servoy.j2db.util.ServoyJSONObject) ArrayList(java.util.ArrayList) List(java.util.List) IFormController(com.servoy.j2db.IFormController) HashMap(java.util.HashMap) Map(java.util.Map)

Aggregations

IFormController (com.servoy.j2db.IFormController)1 JSDataSet (com.servoy.j2db.dataprocessing.JSDataSet)1 FormScope (com.servoy.j2db.scripting.FormScope)1 ServoyJSONObject (com.servoy.j2db.util.ServoyJSONObject)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 List (java.util.List)1 Map (java.util.Map)1 JSONObject (org.json.JSONObject)1 NativeArray (org.mozilla.javascript.NativeArray)1 NativeDate (org.mozilla.javascript.NativeDate)1 NativeObject (org.mozilla.javascript.NativeObject)1 ScriptableObject (org.mozilla.javascript.ScriptableObject)1 Symbol (org.mozilla.javascript.Symbol)1