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

xjs.core.JsonLiteral Maven / Gradle / Ivy

package xjs.core;

public class JsonLiteral extends JsonValue {

    private final Value value;

    private JsonLiteral(final Value value) {
        this.value = value;
    }

    public static JsonLiteral jsonTrue() {
        return new JsonLiteral(Value.TRUE);
    }

    public static JsonLiteral jsonFalse() {
        return new JsonLiteral(Value.FALSE);
    }

    public static JsonLiteral jsonNull() {
        return new JsonLiteral(Value.NULL);
    }

    @Override
    public JsonType getType() {
        if (this.value == Value.NULL) {
            return JsonType.NULL;
        }
        return JsonType.BOOLEAN;
    }

    @Override
    public Object unwrap() {
        if (this.value == Value.TRUE) return true;
        if (this.value == Value.FALSE) return false;
        return null;
    }

    @Override
    public boolean isBoolean() {
        return this.value != Value.NULL;
    }

    @Override
    public boolean isTrue() {
        return this.value == Value.TRUE;
    }

    @Override
    public boolean isFalse() {
        return this.value == Value.FALSE;
    }

    @Override
    public boolean isNull() {
        return this.value == Value.NULL;
    }

    @Override
    public boolean asBoolean() {
        switch (this.value) {
            case TRUE: return true;
            case FALSE: return false;
            default: return super.asBoolean();
        }
    }

    @Override
    public double intoDouble() {
        return this.isTrue() ? 1.0 : 0.0;
    }

    @Override
    public JsonLiteral copy(final int options) {
        return withMetadata(new JsonLiteral(this.value), this, options);
    }

    @Override
    public String toString() {
        return this.value.token;
    }

    private enum Value {
        TRUE,
        FALSE,
        NULL;

        final String token = this.name().toLowerCase();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy