/*
* Copyright (c) 2005, 2020, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package javax.script;
import java.util.Map;
Extended by classes that store results of compilations. State
might be stored in the form of Java classes, Java class files or scripting
language opcodes. The script may be executed repeatedly
without reparsing.
Each CompiledScript
is associated with a ScriptEngine
-- A call to an eval
method of the CompiledScript
causes the execution of the script by the
ScriptEngine
. Changes in the state of the ScriptEngine
caused by execution
of the CompiledScript
may visible during subsequent executions of scripts by the engine.
Author: Mike Grogan Since: 1.6
/**
* Extended by classes that store results of compilations. State
* might be stored in the form of Java classes, Java class files or scripting
* language opcodes. The script may be executed repeatedly
* without reparsing.
* <br><br>
* Each <code>CompiledScript</code> is associated with a <code>ScriptEngine</code> -- A call to an <code>eval</code>
* method of the <code>CompiledScript</code> causes the execution of the script by the
* <code>ScriptEngine</code>. Changes in the state of the <code>ScriptEngine</code> caused by execution
* of the <code>CompiledScript</code> may visible during subsequent executions of scripts by the engine.
*
* @author Mike Grogan
* @since 1.6
*/
public abstract class CompiledScript {
Constructor for subclasses to call.
/**
* Constructor for subclasses to call.
*/
public CompiledScript() {}
Executes the program stored in this CompiledScript
object.
Params: - context – A
ScriptContext
that is used in the same way as
the ScriptContext
passed to the eval
methods of
ScriptEngine
.
Throws: - ScriptException – if an error occurs.
- NullPointerException – if context is null.
Returns: The value returned by the script execution, if any. Should return null
if no value is returned by the script execution.
/**
* Executes the program stored in this <code>CompiledScript</code> object.
*
* @param context A <code>ScriptContext</code> that is used in the same way as
* the <code>ScriptContext</code> passed to the <code>eval</code> methods of
* <code>ScriptEngine</code>.
*
* @return The value returned by the script execution, if any. Should return <code>null</code>
* if no value is returned by the script execution.
*
* @throws ScriptException if an error occurs.
* @throws NullPointerException if context is null.
*/
public abstract Object eval(ScriptContext context) throws ScriptException;
Executes the program stored in the CompiledScript
object using
the supplied Bindings
of attributes as the ENGINE_SCOPE
of the
associated ScriptEngine
during script execution. If bindings is null,
then the effect of calling this method is same as that of eval(getEngine().getContext()).
.
The GLOBAL_SCOPE
Bindings
, Reader
and Writer
associated with the default ScriptContext
of the associated ScriptEngine
are used.
Params: - bindings – The bindings of attributes used for the
ENGINE_SCOPE
.
Throws: - ScriptException – if an error occurs.
Returns: The return value from the script execution
/**
* Executes the program stored in the <code>CompiledScript</code> object using
* the supplied <code>Bindings</code> of attributes as the <code>ENGINE_SCOPE</code> of the
* associated <code>ScriptEngine</code> during script execution. If bindings is null,
* then the effect of calling this method is same as that of eval(getEngine().getContext()).
* <p>.
* The <code>GLOBAL_SCOPE</code> <code>Bindings</code>, <code>Reader</code> and <code>Writer</code>
* associated with the default <code>ScriptContext</code> of the associated <code>ScriptEngine</code> are used.
*
* @param bindings The bindings of attributes used for the <code>ENGINE_SCOPE</code>.
*
* @return The return value from the script execution
*
* @throws ScriptException if an error occurs.
*/
public Object eval(Bindings bindings) throws ScriptException {
ScriptContext ctxt = getEngine().getContext();
if (bindings != null) {
SimpleScriptContext tempctxt = new SimpleScriptContext(ctxt.getReader(), ctxt.getWriter(), ctxt.getErrorWriter());
tempctxt.setBindings(bindings, ScriptContext.ENGINE_SCOPE);
tempctxt.setBindings(ctxt.getBindings(ScriptContext.GLOBAL_SCOPE),
ScriptContext.GLOBAL_SCOPE);
ctxt = tempctxt;
}
return eval(ctxt);
}
Executes the program stored in the CompiledScript
object. The
default ScriptContext
of the associated ScriptEngine
is used.
The effect of calling this method is same as that of eval(getEngine().getContext()).
Throws: - ScriptException – if an error occurs.
Returns: The return value from the script execution
/**
* Executes the program stored in the <code>CompiledScript</code> object. The
* default <code>ScriptContext</code> of the associated <code>ScriptEngine</code> is used.
* The effect of calling this method is same as that of eval(getEngine().getContext()).
*
* @return The return value from the script execution
*
* @throws ScriptException if an error occurs.
*/
public Object eval() throws ScriptException {
return eval(getEngine().getContext());
}
Returns the ScriptEngine
whose compile
method created this CompiledScript
.
The CompiledScript
will execute in this engine.
Returns: The ScriptEngine
that created this CompiledScript
/**
* Returns the <code>ScriptEngine</code> whose <code>compile</code> method created this <code>CompiledScript</code>.
* The <code>CompiledScript</code> will execute in this engine.
*
* @return The <code>ScriptEngine</code> that created this <code>CompiledScript</code>
*/
public abstract ScriptEngine getEngine();
}