blob: 6e8603fc232cc9f959dc52e348bf0f0b5268ffcf [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package javax.script;
import java.io.Reader;
import java.io.Writer;
import java.util.List;
/**
* See Javadoc of <a href="http://java.sun.com/javase/6/docs/api/javax/script/package-summary.html">Java Scripting API</a>
*/
public interface ScriptContext {
/** defines an integer for the scope, ENGINE_SCOPE */
public static final int ENGINE_SCOPE = 100;
/** defines an integer for the scope, GLOBAL_SCOPE */
public static final int GLOBAL_SCOPE = 200;
/**
* Retrieves the value of the getAttribute(String, int) for the
* lowest scope in which it returns a non-null value. Returns
* <tt>null</tt> if there is no such value exists in any scope.
*
*
* @param name the name of the attribute
* @return the associated value with the specified name
* @throws IllegalArgumentException if the name is empty
* @throws NullPointerException if the name is <tt>null</tt>
*/
public Object getAttribute(String name);
/**
* Retrieves the value of an attribute in the specified scope.
* Returns <tt>null</tt> if the no such value exists in the specified
* scope.
*
* @param name the name of the attribute
* @param scope the value of the scope
* @return the associated value for the specified name
* @throws IllegalArgumentException if the name is empty or the
* scope is invalid
* @throws NullPointerException if the name is <tt>null</tt>
*/
public Object getAttribute(String name, int scope);
/**
* Retrieves the lowest value of the scope for which the
* attribute is defined.
*
* @param name the name of attribute
* @return the value corresponding to lowest value of the scope
* or -1 if no associated value exist in any scope
* @throws NullPointerException if name is <tt>null</tt>.
* @throws IllegalArgumentException if name is empty.
*/
public int getAttributesScope(String name);
/**
* Retrieves the Bindings instance associated with the given
* scope. Returns <tt>null</tt> if no Bindings is associated with
* specified scope.
*
* @param scope the scope
* @return the Bindings associated with the specified scope
* @throws IllegalArgumentException
* If no Bindings is defined for the specified scope value in ScriptContext of this type.
*/
public Bindings getBindings(int scope);
/**
* Retrieves an instance of java.io.Writer which can be used by
* scripts to display their output.
*
* @return an instance of java.io.Writer
*/
public Writer getWriter();
/**
* Returns the Writer to be used to display error output.
*
* @return the error writer
*/
public Writer getErrorWriter();
/**
* Sets the Writer for scripts to use when displaying output.
*
* @param writer the new writer.
*/
public void setWriter(Writer writer);
/**
* Sets the Writer for scripts to use when displaying error output.
*
* @param writer the new writer.
*/
public void setErrorWriter(Writer writer);
/**
* Returns a Reader to be used by the script to read input.
*
* @return the reader
*/
public Reader getReader();
/**
* Sets the Reader to be used by the script to read input.
*
* @param reader the new reader
*/
public void setReader(Reader reader);
/**
* Removes the given attribute from the specified scope. Returns
* the removed object or <tt>null</tt> if no value is associated with the
* specified key in the specified scope.
*
* @param name the name of the attribute
* @param scope the scope from which to remove the attribute
* @return previous value associated with specified name
*
* @throws NullPointerException if the name is <tt>null</tt>
* @throws IllegalArgumentException if the name is empty or if the
* scope is invalid
*/
public Object removeAttribute(String name, int scope);
/**
* Associates a specified value with the specifed name in the
* specified scope.
*
* @param name the name of the attribute
* @param value the value of the attribute
* @param scope the scope
* @throws IllegalArgumentException if the name is <tt>null</tt> or the
* scope is invalid
* @throws NullPointerException if the name is <tt>null</tt>.
*/
public void setAttribute(String name, Object value, int scope);
/**
* Associates the specified Bindings with the specified scope.
*
* @param bindings the Bindings to be associated with the
* specified scope
* @param scope the scope
* @throws IllegalArgumentException if the scope is invalid
* @throws NullPointerException if the bindings is <tt>null</tt> and the
* scope is ScriptEngine.ENGINE_SCOPE
*/
public void setBindings(Bindings bindings,int scope);
/**
* Returns an immutable List of all the valid values for scope in the ScriptContext.
*
* @return the list
*/
public List getScopes();
}