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

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

Introduction

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

Prototype

public static Object convert(final Object obj, final Object type) 

Source Link

Document

Convert the given object to the given type.

Usage

From source file:com.qwazr.library.xml.XMLTool.java

License:Apache License

/**
 * Parse an XML stream and call the JS functions
 *
 * @param jsObject any Javascript receiving the events
 * @param input    the stream/*from  w w  w  . java  2 s.c om*/
 * @throws ParserConfigurationException if any XML error occurs
 * @throws SAXException                 if any XML error occurs
 * @throws IOException                  if any I/O error occurs
 */
public void parseStream(ScriptObjectMirror jsObject, InputStream input)
        throws ParserConfigurationException, SAXException, IOException {
    DefaultHandler defaultHandler = (DefaultHandler) ScriptUtils.convert(jsObject, DefaultHandler.class);
    SAXParser saxParser = saxParserFactory.newSAXParser();
    saxParser.parse(input, defaultHandler);
}

From source file:de.axelfaust.alfresco.nashorn.repo.utils.NativeLogMessageArgumentWrapper.java

License:Open Source License

@Override
public String toString() {
    final Object converted = ScriptUtils.convert(this.scriptObject, String.class);
    final String result = String.valueOf(converted);
    return result;
}

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

License:Apache License

static Object castDataType(Object x, Encoder encoder) {
    if (encoder == null)
        return x;
    String cls = encoder.clsTag().toString();
    switch (cls) {
    case "java.lang.Integer":
        return ScriptUtils.convert(x, Integer.class);
    case "java.lang.Float":
        return ScriptUtils.convert(x, Float.class);
    case "java.lang.Double":
        return ScriptUtils.convert(x, Double.class);
    case "java.lang.String":
        return ScriptUtils.convert(x, String.class);
    case "java.lang.Long":
        return ScriptUtils.convert(x, Long.class);
    case "java.lang.Boolean":
        return ScriptUtils.convert(x, Boolean.class);
    }/*from  www  . ja  v  a 2  s .  c  o m*/

    return x;

}

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.jav a  2 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 Object[] convertBindArgs(Object bindArgs, SparkContext sc) {

    if (bindArgs != null) {
        boolean inJar = true;
        Object[] bindArr = (Object[]) ScriptUtils.convert(bindArgs, Object[].class);
        for (int i = 0; i < bindArr.length; i++) {
            if (ModuleUtils.isModule(bindArr[i])) {
                ScriptObjectMirror som = ModuleUtils.getRequiredFile(bindArr[i]);
                //                    som=(ScriptObjectMirror)ScriptObjectMirror.wrapAsJSONCompatible(som,null);
                //                    String j = JSONValue.toJSONString(som);
                String j = toJSON(som);
                JSONObject json = null;/*from  w ww  .  ja  v a  2  s. c o  m*/
                try {
                    json = (JSONObject) new JSONParser().parse(j);
                } catch (ParseException e) {
                    e.printStackTrace();
                }
                Object v = json.get("core");
                if (v instanceof Boolean && ((Boolean) v).booleanValue()) {
                } else
                    inJar = false;
                bindArr[i] = json;

            } else {
                bindArr[i] = Utils.jsToJava(bindArr[i]);
            }
        }
        if (!inJar && !sc.isLocal()) {
            ModuleUtils.addCustomFiles(sc);
        }
        return bindArr;
    }
    return null;
}

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 ww .ja v a  2s.co 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) {
                /*// w ww . j  a va2  s  .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.
                 */
                return (double[]) smToArray(m);
            }

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

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

License:Apache License

public static Object[] toObjectArray(Object arr) {
    if (arr instanceof ScriptObjectMirror) {
        ScriptObjectMirror m = (ScriptObjectMirror) arr;
        if (m.isArray()) {
            try {
                Object[] objectArray = (Object[]) ScriptUtils.convert(m, Object[].class);
                Object[] uwArray = new Object[objectArray.length];
                for (int i = 0; i < objectArray.length; i++)
                    uwArray[i] = jsToJava(objectArray[i]);
                return uwArray;
            } catch (ClassCastException e) {
                /*/*from   ww w.j  av  a2 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 (Object[]) smToArray(m);
            }

        }
    } else if (arr instanceof jdk.nashorn.internal.objects.NativeArray) {
        Object array[] = ((NativeArray) arr).asObjectArray();
        ArrayList al = new ArrayList();
        for (int i = 0; i < array.length; i++) {
            al.add(jsToJava(array[i]));
        }
        return al.toArray();
    } else {
        if (arr.getClass().isArray()) {
            Object[] o = (Object[]) arr;
            Object[] newArr = new Object[o.length];
            for (int i = 0; i < o.length; i++) {
                newArr[i] = jsToJava(o[i]);
            }
            return newArr;
        }
    }

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

}