Rhino JavaScript Java Library Source Code

Rhino JavaScript Java Library is an open-source implementation of JavaScript written entirely in Java.

Rhino JavaScript Java Library Source Code files are provided in binary package (rhino-1.7.14.zip).

You can also browse the source code below:

✍: FYIcenter.com

org/mozilla/javascript/LambdaSlot.java

package org.mozilla.javascript;

import java.util.function.Consumer;
import java.util.function.Supplier;

/**
 * This is a specialization of property access using some lambda functions. It behaves exactly like
 * any other slot that has only a value, but instead of getting the value directly, it comes from
 * calling the functions. This makes it different from GetterSlot, which lets the user see directly
 * that there is a getter or a setter function involved. This makes this class useful for
 * implementing properties that behave like any other JavaScript property but which are implemented
 * using some native functionality without using reflection.
 */
public class LambdaSlot extends Slot {
    private static final long serialVersionUID = -3046681698806493052L;

    LambdaSlot(Slot oldSlot) {
        super(oldSlot);
    }

    transient Supplier<Object> getter;
    transient Consumer<Object> setter;

    @Override
    boolean isValueSlot() {
        return false;
    }

    @Override
    boolean isSetterSlot() {
        return false;
    }

    @Override
    ScriptableObject getPropertyDescriptor(Context cx, Scriptable scope) {
        ScriptableObject desc = (ScriptableObject) cx.newObject(scope);
        if (getter != null) {
            desc.defineProperty("value", getter.get(), ScriptableObject.EMPTY);
        } else {
            desc.defineProperty("value", value, ScriptableObject.EMPTY);
        }
        desc.setCommonDescriptorProperties(getAttributes(), true);
        return desc;
    }

    @Override
    public boolean setValue(Object value, Scriptable owner, Scriptable start) {
        if (setter != null) {
            if (owner == start) {
                setter.accept(value);
                return true;
            }
            return false;
        }
        return super.setValue(value, owner, start);
    }

    @Override
    public Object getValue(Scriptable start) {
        if (getter != null) {
            return getter.get();
        }
        return super.getValue(start);
    }
}

org/mozilla/javascript/LambdaSlot.java

 

Or download all of them as a single archive file:

File name: rhino-1.7.14-sources.jar
File size: 1029165 bytes
Release date: 2022-01-06
Download 

 

Example code to Test rhino-runtime-1.7.14.jar

Download Rhino JavaScript Binary Package

Download and Review Rhino JavaScript Java Library

⇑⇑ FAQ for Rhino JavaScript Java Library

2022-05-03, 36217👍, 1💬