All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.mvel2.jsr223.MvelBindings Maven / Gradle / Ivy

package org.mvel2.jsr223;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import javax.script.Bindings;

public class MvelBindings implements Bindings {

    /**
     * The Map field stores the attributes.
     */
    private Map map;

    /**
     * Constructor uses an existing Map to store the values.
     *
     * @param m The Map backing this SimpleBindings.
     * @throws NullPointerException if m is null
     */
    public MvelBindings(Map m) {
        if (m == null) {
            throw new NullPointerException();
        }
        this.map = m;
    }

    /**
     * Default constructor uses a HashMap.
     */
    public MvelBindings() {
        this(new HashMap());
    }

    /**
     * Sets the specified key/value in the underlying map field.
     *
     * @param name Name of value
     * @param value Value to set.
     *
     * @return Previous value for the specified key. Returns null if key was previously unset.
     *
     * @throws NullPointerException if the name is null.
     * @throws IllegalArgumentException if the name is empty.
     */
    public Object put(String name, Object value) {
        return map.put(name, value);
    }

    /**
     * putAll is implemented using Map.putAll.
     *
     * @param toMerge The Map of values to add.
     *
     * @throws NullPointerException if toMerge map is null or if some key in the map is null.
     * @throws IllegalArgumentException if some key in the map is an empty String.
     */
    public void putAll(Map toMerge) {
        if (toMerge == null) {
            throw new NullPointerException("toMerge map is null");
        }
        for (Map.Entry entry : toMerge.entrySet()) {
            String key = entry.getKey();
            put(key, entry.getValue());
        }
    }

    /** {@inheritDoc} */
    public void clear() {
        map.clear();
    }

    /**
     * Returns true if this map contains a mapping for the specified key. More formally,
     * returns true if and only if this map contains a mapping for a key k such
     * that (key==null ? k==null : key.equals(k)). (There can be at most one such mapping.)
     *
     * @param key key whose presence in this map is to be tested.
     * @return true if this map contains a mapping for the specified key.
     *
     * @throws NullPointerException if key is null
     * @throws ClassCastException if key is not String
     * @throws IllegalArgumentException if key is empty String
     */
    public boolean containsKey(Object key) {
        return map.containsKey(key);
    }

    /** {@inheritDoc} */
    public boolean containsValue(Object value) {
        return map.containsValue(value);
    }

    /** {@inheritDoc} */
    public Set> entrySet() {
        return map.entrySet();
    }

    /**
     * Returns the value to which this map maps the specified key. Returns null if the map
     * contains no mapping for this key. A return value of null does not necessarily
     * indicate that the map contains no mapping for the key; it's also possible that the map
     * explicitly maps the key to null. The containsKey operation may be used to
     * distinguish these two cases.
     *
     * 

* More formally, if this map contains a mapping from a key k to a value v * such that (key==null ? k==null : * key.equals(k)), then this method returns v; otherwise it returns null. * (There can be at most one such mapping.) * * @param key key whose associated value is to be returned. * @return the value to which this map maps the specified key, or null if the map * contains no mapping for this key. * * @throws NullPointerException if key is null * @throws ClassCastException if key is not String * @throws IllegalArgumentException if key is empty String */ public Object get(Object key) { return map.get(key); } /** {@inheritDoc} */ public boolean isEmpty() { return map.isEmpty(); } /** {@inheritDoc} */ public Set keySet() { return map.keySet(); } /** * Removes the mapping for this key from this map if it is present (optional operation). More * formally, if this map contains a mapping from key k to value v such that * (key==null ? k==null : key.equals(k)), that mapping is removed. (The map can * contain at most one such mapping.) * *

* Returns the value to which the map previously associated the key, or null if the map * contained no mapping for this key. (A null return can also indicate that the map * previously associated null with the specified key if the implementation supports * null values.) The map will not contain a mapping for the specified key once the call * returns. * * @param key key whose mapping is to be removed from the map. * @return previous value associated with specified key, or null if there was no * mapping for key. * * @throws NullPointerException if key is null * @throws ClassCastException if key is not String * @throws IllegalArgumentException if key is empty String */ public Object remove(Object key) { return map.remove(key); } /** {@inheritDoc} */ public int size() { return map.size(); } /** {@inheritDoc} */ public Collection values() { return map.values(); } }