alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Java example source code file (AbstractScriptEngine.java)

This example Java source code file (AbstractScriptEngine.java) is included in the alvinalexander.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Learn more about this Java project at its project page.

Java - Java tags/keywords

abstractscriptengine, bindings, illegalargumentexception, invalid, nullpointerexception, object, scriptcontext, scriptexception, simplescriptcontext, util

The AbstractScriptEngine.java Java example source code

/*
 * Copyright (c) 2005, 2013, 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.io.Reader;
import java.util.Map;
import java.util.Iterator;

/**
 * Provides a standard implementation for several of the variants of the <code>eval
 * method.
 * <br>
* <code>eval(Reader)

eval(String)

* <code>eval(String, Bindings)

eval(Reader, Bindings) * <br>
are implemented using the abstract methods * <br>
* <code>eval(Reader,ScriptContext) or * <code>eval(String, ScriptContext) * <br>
* with a <code>SimpleScriptContext. * <br>
* A <code>SimpleScriptContext is used as the default ScriptContext * of the <code>AbstractScriptEngine.. * * @author Mike Grogan * @since 1.6 */ public abstract class AbstractScriptEngine implements ScriptEngine { /** * The default <code>ScriptContext of this AbstractScriptEngine. */ protected ScriptContext context; /** * Creates a new instance of AbstractScriptEngine using a <code>SimpleScriptContext * as its default <code>ScriptContext. */ public AbstractScriptEngine() { context = new SimpleScriptContext(); } /** * Creates a new instance using the specified <code>Bindings as the * <code>ENGINE_SCOPE Bindings in the protected context field. * * @param n The specified <code>Bindings. * @throws NullPointerException if n is null. */ public AbstractScriptEngine(Bindings n) { this(); if (n == null) { throw new NullPointerException("n is null"); } context.setBindings(n, ScriptContext.ENGINE_SCOPE); } /** * Sets the value of the protected <code>context field to the specified * <code>ScriptContext. * * @param ctxt The specified <code>ScriptContext. * @throws NullPointerException if ctxt is null. */ public void setContext(ScriptContext ctxt) { if (ctxt == null) { throw new NullPointerException("null context"); } context = ctxt; } /** * Returns the value of the protected <code>context field. * * @return The value of the protected <code>context field. */ public ScriptContext getContext() { return context; } /** * Returns the <code>Bindings with the specified scope value in * the protected <code>context field. * * @param scope The specified scope * * @return The corresponding <code>Bindings. * * @throws IllegalArgumentException if the value of scope is * invalid for the type the protected <code>context field. */ public Bindings getBindings(int scope) { if (scope == ScriptContext.GLOBAL_SCOPE) { return context.getBindings(ScriptContext.GLOBAL_SCOPE); } else if (scope == ScriptContext.ENGINE_SCOPE) { return context.getBindings(ScriptContext.ENGINE_SCOPE); } else { throw new IllegalArgumentException("Invalid scope value."); } } /** * Sets the <code>Bindings with the corresponding scope value in the * <code>context field. * * @param bindings The specified <code>Bindings. * @param scope The specified scope. * * @throws IllegalArgumentException if the value of scope is * invalid for the type the <code>context field. * @throws NullPointerException if the bindings is null and the scope is * <code>ScriptContext.ENGINE_SCOPE */ public void setBindings(Bindings bindings, int scope) { if (scope == ScriptContext.GLOBAL_SCOPE) { context.setBindings(bindings, ScriptContext.GLOBAL_SCOPE);; } else if (scope == ScriptContext.ENGINE_SCOPE) { context.setBindings(bindings, ScriptContext.ENGINE_SCOPE);; } else { throw new IllegalArgumentException("Invalid scope value."); } } /** * Sets the specified value with the specified key in the <code>ENGINE_SCOPE * <code>Bindings of the protected context field. * * @param key The specified key. * @param value The specified value. * * @throws NullPointerException if key is null. * @throws IllegalArgumentException if key is empty. */ public void put(String key, Object value) { Bindings nn = getBindings(ScriptContext.ENGINE_SCOPE); if (nn != null) { nn.put(key, value); } } /** * Gets the value for the specified key in the <code>ENGINE_SCOPE of the * protected <code>context field. * * @return The value for the specified key. * * @throws NullPointerException if key is null. * @throws IllegalArgumentException if key is empty. */ public Object get(String key) { Bindings nn = getBindings(ScriptContext.ENGINE_SCOPE); if (nn != null) { return nn.get(key); } return null; } /** * <code>eval(Reader, Bindings) calls the abstract * <code>eval(Reader, ScriptContext) method, passing it a ScriptContext * whose Reader, Writers and Bindings for scopes other that <code>ENGINE_SCOPE * are identical to those members of the protected <code>context field. The specified * <code>Bindings is used instead of the ENGINE_SCOPE * * <code>Bindings of the context field. * * @param reader A <code>Reader containing the source of the script. * @param bindings A <code>Bindings to use for the ENGINE_SCOPE * while the script executes. * * @return The return value from <code>eval(Reader, ScriptContext) * @throws ScriptException if an error occurs in script. * @throws NullPointerException if any of the parameters is null. */ public Object eval(Reader reader, Bindings bindings ) throws ScriptException { ScriptContext ctxt = getScriptContext(bindings); return eval(reader, ctxt); } /** * Same as <code>eval(Reader, Bindings) except that the abstract * <code>eval(String, ScriptContext) is used. * * @param script A <code>String containing the source of the script. * * @param bindings A <code>Bindings to use as the ENGINE_SCOPE * while the script executes. * * @return The return value from <code>eval(String, ScriptContext) * @throws ScriptException if an error occurs in script. * @throws NullPointerException if any of the parameters is null. */ public Object eval(String script, Bindings bindings) throws ScriptException { ScriptContext ctxt = getScriptContext(bindings); return eval(script , ctxt); } /** * <code>eval(Reader) calls the abstract * <code>eval(Reader, ScriptContext) passing the value of the context * field. * * @param reader A <code>Reader containing the source of the script. * @return The return value from <code>eval(Reader, ScriptContext) * @throws ScriptException if an error occurs in script. * @throws NullPointerException if any of the parameters is null. */ public Object eval(Reader reader) throws ScriptException { return eval(reader, context); } /** * Same as <code>eval(Reader) except that the abstract * <code>eval(String, ScriptContext) is used. * * @param script A <code>String containing the source of the script. * @return The return value from <code>eval(String, ScriptContext) * @throws ScriptException if an error occurs in script. * @throws NullPointerException if any of the parameters is null. */ public Object eval(String script) throws ScriptException { return eval(script, context); } /** * Returns a <code>SimpleScriptContext. The SimpleScriptContext: *<br>
* <ul> * <li>Uses the specified Bindings for its ENGINE_SCOPE * </li> * <li>Uses the Bindings returned by the abstract getGlobalScope * method as its <code>GLOBAL_SCOPE * </li> * <li>Uses the Reader and Writer in the default ScriptContext of this * <code>ScriptEngine * </li> * </ul> * <br>
* A <code>SimpleScriptContext returned by this method is used to implement eval methods * using the abstract <code>eval(Reader,Bindings) and eval(String,Bindings) * versions. * * @param nn Bindings to use for the <code>ENGINE_SCOPE * @return The <code>SimpleScriptContext */ protected ScriptContext getScriptContext(Bindings nn) { SimpleScriptContext ctxt = new SimpleScriptContext(); Bindings gs = getBindings(ScriptContext.GLOBAL_SCOPE); if (gs != null) { ctxt.setBindings(gs, ScriptContext.GLOBAL_SCOPE); } if (nn != null) { ctxt.setBindings(nn, ScriptContext.ENGINE_SCOPE); } else { throw new NullPointerException("Engine scope Bindings may not be null."); } ctxt.setReader(context.getReader()); ctxt.setWriter(context.getWriter()); ctxt.setErrorWriter(context.getErrorWriter()); return ctxt; } }

Other Java examples (source code examples)

Here is a short list of links related to this Java AbstractScriptEngine.java source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.