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

io.apigee.trireme.node12.internal.ContextifyContext Maven / Gradle / Ivy

The newest version!
package io.apigee.trireme.node12.internal;

import org.mozilla.javascript.Scriptable;
import org.mozilla.javascript.ScriptableObject;

/**
 * This is the class that makes this thing go. Gets are delegated to the parent, but not puts.
 */
public class ContextifyContext
    extends ScriptableObject
{
    private final Scriptable child;
    private final Scriptable parent;

    public ContextifyContext(Scriptable p, Scriptable c)
    {
        this.parent = p;
        this.child = c;
    }

    @Override
    public String getClassName()
    {
        return child.getClassName();
    }

    @Override
    public Object get(String s, Scriptable scriptable)
    {
        Object r = child.get(s, child);
        if (r == Scriptable.NOT_FOUND) {
            return parent.get(s, parent);
        }
        return r;
    }

    @Override
    public Object get(int i, Scriptable scriptable)
    {
        Object r = child.get(i, child);
        if (r == Scriptable.NOT_FOUND) {
            return parent.get(i, parent);
        }
        return r;
    }

    @Override
    public boolean has(String s, Scriptable scriptable)
    {
        return (child.has(s, child) || parent.has(s, parent));
    }

    @Override
    public boolean has(int i, Scriptable scriptable)
    {
        return (child.has(i, child) || parent.has(i, parent));
    }

    @Override
    public void put(String s, Scriptable scriptable, Object o)
    {
        child.put(s, child, o);
    }

    @Override
    public void put(int i, Scriptable scriptable, Object o)
    {
        child.put(i, child, o);
    }

    @Override
    public void delete(String s)
    {
        child.delete(s);
    }

    @Override
    public void delete(int i)
    {
        child.delete(i);
    }

    @Override
    public Scriptable getPrototype()
    {
        return child.getPrototype();
    }

    @Override
    public void setPrototype(Scriptable scriptable)
    {
        child.setPrototype(scriptable);
    }

    @Override
    public Scriptable getParentScope()
    {
        return null;
    }

    @Override
    public void setParentScope(Scriptable scriptable)
    {
    }

    @Override
    public Object[] getIds()
    {
        return child.getIds();
    }

    @Override
    public Object getDefaultValue(Class aClass)
    {
        return child.getDefaultValue(aClass);
    }

    @Override
    public boolean hasInstance(Scriptable scriptable)
    {
        return child.hasInstance(scriptable);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy