Class JavascriptEvalUtil


  • public class JavascriptEvalUtil
    extends java.lang.Object
    Utilities to faciliate the evaluation of Javascript expressions. Handles common evaluation tasks like exception handling, data type conversion and script caching
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static java.lang.Object convertJavascriptValue​(java.lang.Object inputObj)
      Handles a Rhino script evaluation result, converting Javascript object into equivalent Java objects if necessary.
      static java.lang.Object[] convertToJavaObjects​(java.lang.Object[] args)  
      static java.lang.Object convertToJavascriptValue​(java.lang.Object value)
      If caller does not have a scope for evaluation, the caller can use this method to evaluate expression.
      static java.lang.Object convertToJavascriptValue​(java.lang.Object value, org.mozilla.javascript.Scriptable scope)
      Creates Javascript native wrapper for Java objects, if necessary.
      static java.lang.String evaluateJsConstants​(java.lang.String js)  
      static java.lang.Object evaluateRawScript​(org.mozilla.javascript.Context cx, org.mozilla.javascript.Scriptable scope, java.lang.String scriptText, java.lang.String source, int lineNo)
      This method will not convert the data of return value, so it might the Java data type or that of Java Script.
      static java.lang.Object evaluateScript​(org.mozilla.javascript.Context cx, org.mozilla.javascript.Scriptable scope, java.lang.String scriptText, java.lang.String source, int lineNo)
      Evaluates Javascript expression and return its result, doing the necessary Javascript -> Java data type conversion if necessary
      protected static org.mozilla.javascript.Script getCompiledScript​(org.mozilla.javascript.Context cx, org.mozilla.javascript.Scriptable scope, java.lang.String scriptText, java.lang.String source, int lineNo)
      Gets a compiled script, using and updating the script cache if necessary
      static java.lang.String transformToJsConstants​(java.lang.String s)
      This method transforms a string to JS string constants.
      static java.lang.String transformToJsExpression​(java.lang.String s)  
      static BirtException wrapRhinoException​(org.mozilla.javascript.RhinoException e, java.lang.String scriptText, java.lang.String source, int lineNo)
      Converts Rhino exception (a runtime exception) to BirtException
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • compiledScriptCache

        protected static java.util.Map compiledScriptCache
    • Constructor Detail

      • JavascriptEvalUtil

        public JavascriptEvalUtil()
    • Method Detail

      • evaluateRawScript

        public static java.lang.Object evaluateRawScript​(org.mozilla.javascript.Context cx,
                                                         org.mozilla.javascript.Scriptable scope,
                                                         java.lang.String scriptText,
                                                         java.lang.String source,
                                                         int lineNo)
                                                  throws BirtException
        This method will not convert the data of return value, so it might the Java data type or that of Java Script.
        Parameters:
        cx -
        scope -
        scriptText -
        source -
        lineNo -
        Returns:
        the evaluated value
        Throws:
        BirtException
      • evaluateScript

        public static java.lang.Object evaluateScript​(org.mozilla.javascript.Context cx,
                                                      org.mozilla.javascript.Scriptable scope,
                                                      java.lang.String scriptText,
                                                      java.lang.String source,
                                                      int lineNo)
                                               throws BirtException
        Evaluates Javascript expression and return its result, doing the necessary Javascript -> Java data type conversion if necessary
        Parameters:
        cx - Javascript context. If null, current thread's context is used
        scope - Javascript scope to evaluate script in
        scriptText - text of Javascript expression
        source - descriptive text of script source (for error reporting)
        lineNo - line number of script in it source
        Returns:
        Evaluation result.
        Throws:
        BirtException - If evaluation failed
      • getCompiledScript

        protected static org.mozilla.javascript.Script getCompiledScript​(org.mozilla.javascript.Context cx,
                                                                         org.mozilla.javascript.Scriptable scope,
                                                                         java.lang.String scriptText,
                                                                         java.lang.String source,
                                                                         int lineNo)
        Gets a compiled script, using and updating the script cache if necessary
      • convertToJavascriptValue

        public static java.lang.Object convertToJavascriptValue​(java.lang.Object value,
                                                                org.mozilla.javascript.Scriptable scope)
        Creates Javascript native wrapper for Java objects, if necessary. This method currently only wraps Date/time objects. Rhino engine natively handles wrapping String, Number and Boolean objects.
        Parameters:
        value - Java object to convert from
      • convertToJavascriptValue

        public static java.lang.Object convertToJavascriptValue​(java.lang.Object value)
        If caller does not have a scope for evaluation, the caller can use this method to evaluate expression. But if caller has its own scope which can be used, the better way is call the method of convertToJavascriptValue( Object value, Scriptable scope ).
        Parameters:
        value -
        Returns:
      • convertJavascriptValue

        public static java.lang.Object convertJavascriptValue​(java.lang.Object inputObj)
        Handles a Rhino script evaluation result, converting Javascript object into equivalent Java objects if necessary.
        Parameters:
        inputObj - Object returned by rhino engine.
        Returns:
        If inputObj is a native Javascript object, its equivalent Java object is returned; otherwise inputObj is returned
      • wrapRhinoException

        public static BirtException wrapRhinoException​(org.mozilla.javascript.RhinoException e,
                                                       java.lang.String scriptText,
                                                       java.lang.String source,
                                                       int lineNo)
        Converts Rhino exception (a runtime exception) to BirtException
        Parameters:
        e - Rhino exception
        scriptText - Javascript code which resulted in the exception (for error reporting purpose)
        source - description of the source script. If null, get this info from Rhino exception
        lineNo - lineNo of error location
      • convertToJavaObjects

        public static java.lang.Object[] convertToJavaObjects​(java.lang.Object[] args)
        Parameters:
        args -
        Returns:
      • transformToJsConstants

        public static java.lang.String transformToJsConstants​(java.lang.String s)
        This method transforms a string to JS string constants.
        Parameters:
        s -
        Returns:
      • transformToJsExpression

        public static java.lang.String transformToJsExpression​(java.lang.String s)
      • evaluateJsConstants

        public static java.lang.String evaluateJsConstants​(java.lang.String js)