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

net.hamnaberg.json.Folder Maven / Gradle / Ivy

The newest version!
package net.hamnaberg.json;

import java.util.function.Function;
import java.util.function.Supplier;

public interface Folder {
    A onNull();

    A onBoolean(Json.JBoolean b);

    A onNumber(Json.JNumber n);

    A onString(Json.JString s);

    A onArray(Json.JArray a);

    A onObject(Json.JObject o);

    default VoidFolder toVoid() {
        var self = this;
        return new VoidFolder() {
            @Override
            public void onNull() {
                self.onNull();
            }

            @Override
            public void onBoolean(Json.JBoolean b) {
                self.onBoolean(b);
            }

            @Override
            public void onNumber(Json.JNumber n) {
                self.onNumber(n);
            }

            @Override
            public void onString(Json.JString s) {
                self.onString(s);
            }

            @Override
            public void onArray(Json.JArray a) {
                self.onArray(a);
            }

            @Override
            public void onObject(Json.JObject o) {
                self.onObject(o);
            }
        };
    }

    static  Folder from(Function fString, Function fBoolean, Function fNumber, Function fObject, Function fArray, Supplier fNull) {
        return new Folder<>() {
            @Override
            public X onNull() {
                return fNull.get();
            }

            @Override
            public X onBoolean(Json.JBoolean b) {
                return fBoolean.apply(b);
            }

            @Override
            public X onNumber(Json.JNumber n) {
                return fNumber.apply(n);
            }

            @Override
            public X onString(Json.JString s) {
                return fString.apply(s);
            }

            @Override
            public X onArray(Json.JArray a) {
                return fArray.apply(a);
            }

            @Override
            public X onObject(Json.JObject o) {
                return fObject.apply(o);
            }
        };
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy