List of usage examples for jdk.nashorn.api.scripting ScriptUtils wrap
public static ScriptObjectMirror wrap(final Object obj)
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()); }