Package org.eclipse.birt.core.script
Class JavascriptEvalUtil
- java.lang.Object
-
- org.eclipse.birt.core.script.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
-
-
Field Summary
Fields Modifier and Type Field Description protected static java.util.Map
compiledScriptCache
protected static int
SCRIPT_CACHE_SIZE
-
Constructor Summary
Constructors Constructor Description JavascriptEvalUtil()
-
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 necessaryprotected 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 necessarystatic 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
-
-
-
Field Detail
-
SCRIPT_CACHE_SIZE
protected static final int SCRIPT_CACHE_SIZE
- See Also:
- Constant Field Values
-
compiledScriptCache
protected static java.util.Map compiledScriptCache
-
-
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 usedscope
- Javascript scope to evaluate script inscriptText
- text of Javascript expressionsource
- 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 exceptionscriptText
- Javascript code which resulted in the exception (for error reporting purpose)source
- description of the source script. If null, get this info from Rhino exceptionlineNo
- 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)
-
-