Example usage for jdk.nashorn.api.scripting ScriptUtils wrap

List of usage examples for jdk.nashorn.api.scripting ScriptUtils wrap

Introduction

In this page you can find the example usage for jdk.nashorn.api.scripting ScriptUtils wrap.

Prototype

public static ScriptObjectMirror wrap(final Object obj) 

Source Link

Document

Make a script object mirror on given object if needed.

Usage

From source file:com.eas.server.scripts.ModulesJSFacade.java

@Override
public void setMember(String name, Object value) {
    value = value instanceof ScriptObject ? ScriptUtils.wrap((ScriptObject) value) : value;
    if (value instanceof JSObject) {
        if (session.getId() == null) {
            throw new IllegalStateException(RESIDENT_MODULES_MODIFICATION_MSG);
        } else {/*from   w w w .  j av  a 2  s.  c o m*/
            session.registerModule(name, (JSObject) value);
        }
    } else if (JSType.nullOrUndefined(value)) {
        session.unregisterModule(name);
    }
}

From source file:com.mckoi.mwpui.nodejs.nashorn.NashornGJSObjectWrap.java

License:Open Source License

@Override
public GJSObject getPrototype() {
    //    System.out.println("^^^ getPrototype");
    Object proto = native_ob.getMember("prototype");
    if (proto != null) {
        JSObject jsob = null;//from w  ww  .  jav a 2s .co  m
        if (proto instanceof ScriptObject) {
            jsob = ScriptUtils.wrap((ScriptObject) proto);
        }
        if (proto instanceof JSObject) {
            jsob = (JSObject) proto;
        }
        if (jsob != null) {
            return (GJSObject) system.wrapAsGJS(jsob);
        }
    }
    throw new IllegalStateException("Native 'prototype' object is invalid");

}

From source file:com.wegas.core.ejb.RequestManager.java

License:MIT License

/**
 * Method used to send custom events//ww  w  .  j  av  a2  s .  c o  m
 *
 * @param type    event name
 * @param payload object associated with that event
 */
public void sendCustomEvent(String type, Object payload) {
    // @hack check payload type against "jdk.nashorn.internal"
    if (payload.getClass().getName().startsWith("jdk.nashorn.internal")) {
        this.addEvent(new CustomEvent(type, ScriptUtils.wrap((ScriptObject) payload)));
    } else {
        this.addEvent(new CustomEvent(type, payload));
    }
}

From source file:io.github.djxy.spongejavascript.javascript.JavascriptFunction.java

License:Open Source License

@Override
public Object call(Object o, Object... objects) {
    for (int i = 0; i < objects.length; i++) {
        if (objects[i] instanceof JavascriptObject) {
            objects[i] = ((JavascriptObject) objects[i]).getRealObject();
        } else if (objects[i] instanceof ScriptObject) {
            objects[i] = ScriptUtils.wrap((ScriptObject) objects[i]);
        }// w ww. ja v  a 2 s  .co m
    }

    try {
        Object result = methods.getMethod(objects).invoke(realObject, objects);

        if (result != null)
            return JavascriptObject.convertObjectToJSObject(result);

        return null;
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    } catch (InvocationTargetException e) {
        e.printStackTrace();
    }

    return null;
}

From source file:io.github.djxy.spongejavascript.javascript.JavascriptObject.java

License:Open Source License

@Override
public void setMember(String s, Object o) {
    Methods set = mapSet.get(s);//from   w  w w  . j a  va  2  s.  com
    o = o instanceof JavascriptObject ? ((JavascriptObject) o).realObject : o;
    o = o instanceof ScriptObject ? ScriptUtils.wrap((ScriptObject) o) : o;

    if (set != null) {
        Method method = set.getMethod(o);

        if (method != null) {
            try {
                method.invoke(realObject, o);
            } catch (Exception e) {
            }
        }
    }
}

From source file:org.eclairjs.nashorn.Utils.java

License:Apache License

public static Object jsToJava(Object o) {
    if (o != null && !(o instanceof Undefined)) {
        logger.debug("jsToJava" + o.getClass().getName());
    } else {//from ww w  .  j a v a2 s. com
        return o;
    }
    if (o instanceof jdk.nashorn.internal.objects.NativeArray) {
        Object array[] = ((NativeArray) o).asObjectArray();
        ArrayList al = new ArrayList();
        for (int i = 0; i < array.length; i++) {
            al.add(jsToJava(array[i]));
        }
        return al.toArray();
    }
    if (o.getClass().isPrimitive())
        return o;

    String packageName = o.getClass().getCanonicalName();

    switch (packageName) {
    case "java.lang.String":
    case "java.lang.Integer":
    case "java.lang.Float":
    case "java.lang.Double":
    case "java.lang.Boolean":
    case "java.lang.Long":
    case "org.json.simple.JSONObject":
    case "java.lang.Object[]":
    case "java.lang.String[]":
    case "scala.Tuple2":
    case "scala.Tuple3":
    case "scala.Tuple4":
        return o;
    }
    if (packageName.startsWith("org.apache.spark"))
        return o;

    if (o instanceof WrappedClass)
        return ((WrappedClass) o).getJavaObject();

    if (o instanceof ScriptObjectMirror) {
        ScriptObjectMirror m = (ScriptObjectMirror) o;
        if (m.hasMember("getJavaObject")) {
            return m.callMember("getJavaObject");
        }
        if (m.isArray()) {
            try {
                if (m.containsKey("0")) {
                    Object v = m.get("0");
                    if (v instanceof Double) {
                        double[] doubleArray = (double[]) ScriptUtils.convert(m, double[].class);
                        return doubleArray;
                    } else if (v instanceof Integer) {
                        int[] intArray = (int[]) ScriptUtils.convert(m, int[].class);
                        return intArray;
                    } else {
                        Object[] objectArray = (Object[]) ScriptUtils.convert(m, Object[].class);
                        return objectArray;
                    }
                }
            } catch (ClassCastException e) {
                /*
                If the array contains ScriptObjectMirror the above conversions throws exception
                so we have to convert the contents of the array as well.
                 */
                ArrayList list = new ArrayList();
                for (Object item : m.values()) {
                    list.add(jsToJava(item));
                }
                Object x = list.toArray();
                return x;
            }

        } else {
            //               throw new RuntimeException("js2java IMPLEMENT"+o);
            Object obj = ScriptObjectMirror.wrapAsJSONCompatible(o, null);
            String j = JSONValue.toJSONString(obj);
            return JSONValue.parse(j);
        }
    } else if (o instanceof jdk.nashorn.internal.runtime.ScriptObject) {
        ScriptObjectMirror jsObj = ScriptUtils.wrap((jdk.nashorn.internal.runtime.ScriptObject) o);
        if (jsObj.hasMember("getJavaObject")) {
            return jsObj.callMember("getJavaObject");
        }
    } else if (o instanceof java.util.ArrayList) {

        ArrayList list = (ArrayList) o;
        int size = list.size();
        for (int i = 0; i < size; i++)
            list.set(i, jsToJava(list.get(i)));
        return list;
    } else if (o instanceof StaticClass) {
        return o;
    }
    logger.warn("js2java NOT HANDLED " + packageName);
    return o; // Just return the Java object, it might user created like java.net.Socket
    //new RuntimeException().printStackTrace();
    //throw new RuntimeException("js2java NOT HANDLED "+packageName);

}

From source file:org.eclairjs.nashorn.Utils.java

License:Apache License

public static Map createJavaHashMap(Object map) {

    ScriptObjectMirror jsObject = null;/*from   w w  w.  ja v  a  2  s.  c  om*/
    if (map instanceof jdk.nashorn.internal.runtime.ScriptObject)
        jsObject = ScriptUtils.wrap((jdk.nashorn.internal.runtime.ScriptObject) map);
    else if (map instanceof ScriptObjectMirror)
        jsObject = (ScriptObjectMirror) map;
    else
        throw new RuntimeException("not a script object");

    Map hashmap = new HashMap<>();
    for (Map.Entry<String, Object> entry : jsObject.entrySet()) {
        String key = entry.getKey().toString();
        String value = entry.getValue().toString();

        hashmap.put(key, value);
    }
    return hashmap;
}

From source file:org.eclairjs.nashorn.Utils.java

License:Apache License

public static int[] toIntArray(Object arr) {
    if (arr instanceof NativeArray)
        arr = ScriptUtils.wrap((NativeArray) arr);
    if (arr instanceof ScriptObjectMirror) {
        ScriptObjectMirror m = (ScriptObjectMirror) arr;
        if (m.isArray()) {
            try {
                int[] intArray = (int[]) ScriptUtils.convert(m, int[].class);
                return intArray;
            } catch (ClassCastException e) {
                /*//from   w  w  w. j  av a  2s. c o  m
                If the array contains ScriptObjectMirror the above conversions throws exception
                so we have to convert the contents of the array as well.
                 */
                ArrayList list = new ArrayList();
                for (Object item : m.values()) {
                    list.add(jsToJava(item));
                }
                Object x = list.toArray();
                return (int[]) x;
            }

        }
    }
    throw new RuntimeException("expecting array, got " + arr);
}

From source file:org.eclairjs.nashorn.Utils.java

License:Apache License

public static double[] toDoubleArray(Object arr) {
    if (arr instanceof NativeArray)
        arr = ScriptUtils.wrap((NativeArray) arr);
    if (arr instanceof ScriptObjectMirror) {
        ScriptObjectMirror m = (ScriptObjectMirror) arr;
        if (m.isArray()) {
            try {
                double[] doubleArray = (double[]) ScriptUtils.convert(m, double[].class);
                return doubleArray;
            } catch (ClassCastException e) {
                /*//from   w  w w .ja  va  2  s.  c om
                If the array contains ScriptObjectMirror the above conversions throws exception
                so we have to convert the contents of the array as well.
                 */
                return (double[]) smToArray(m);
            }

        }
    }
    throw new RuntimeException("expecting array, got " + arr);
}

From source file:org.eclairjs.nashorn.wrap.sql.SparkSession.java

License:Apache License

static Row scriptObjectToRow(Object obj, List<Tuple2<String, DataType>> fieldsNames) {
    ScriptObjectMirror jsObject = null;// w w w.  j  ava2  s .  c  om
    WrappedClass wrappedClass = null;
    if (obj instanceof jdk.nashorn.internal.runtime.ScriptObject)
        jsObject = ScriptUtils.wrap((jdk.nashorn.internal.runtime.ScriptObject) obj);
    else if (obj instanceof ScriptObjectMirror)
        jsObject = (ScriptObjectMirror) obj;
    else if (obj instanceof WrappedClass) {
        wrappedClass = (WrappedClass) obj;
    } else
        throw new RuntimeException("not a script object");

    List<Object> values = new ArrayList<>();

    for (Tuple2<String, DataType> tuple : fieldsNames) {
        Object value = null;
        String name = tuple._1();
        if (jsObject != null) {
            if (jsObject.containsKey(name)) {
                value = jsObject.get(name);
                //   if it is getter function, call to get value
                value = castDataType(value, tuple._2());

            }
        } else {
            String memberName = "get" + Character.toUpperCase(name.charAt(0)) + name.substring(1);
            if (wrappedClass.hasMember(memberName)) {
                WrappedFunction func = (WrappedFunction) wrappedClass.getMember(memberName);
                value = func.call(obj);
                //   if it is getter function, call to get value
                value = castDataType(value, tuple._2());

            }

        }
        values.add(value);
    }

    return RowFactory.create(values.toArray());
}