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

com.apicatalog.cursor.AbstractValueCursor Maven / Gradle / Ivy

package com.apicatalog.cursor;

import java.util.Optional;
import java.util.function.Supplier;

public abstract class AbstractValueCursor implements ValueCursor {

    protected final Cursor cursor;
    protected final Supplier value;

    public AbstractValueCursor(final Cursor cursor, Supplier value) {
        this.cursor = cursor;
        this.value = value;
    }

    @Override
    public Optional parent() {
        return cursor.prev() 
                ? Optional.of(this)
                : Optional.empty();
    }

    @Override
    public MapCursor asMap() {
        if (!isMap()) {
            throw new ClassCastException();
        }
        return cursor.mapCursor();
    }

    @Override
    public ArrayCursor asArray() {
        if (!isArray()) {
            throw new ClassCastException();
        }
        return cursor.arrayCursor();
    }

    @Override
    public String toString() {
       return new StringBuilder()
           .append(getClass().getSimpleName())
           .append('[')
           .append("cursor=")
           .append(cursor.toString())
           .append(']')
           .toString();
    }

    @Override
    public boolean isArrayItem() {
        return cursor.isArrayItem();
    }

    @Override
    public ArrayItemCursor asArrayItem() {
        return cursor.arrayItemCursor();
    }

    @Override
    public boolean isMapEntry() {
        return cursor.isMapEntry();
    }

    @Override
    public MapEntryCursor asMapEntry() {
        return cursor.mapEntryCursor();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy