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

io.github.stewseo.client.yelpfusion.business.match.BusinessMatchResponse Maven / Gradle / Ivy

package io.github.stewseo.client.yelpfusion.business.match;

import io.github.stewseo.client.json.JsonpDeserializable;
import io.github.stewseo.client.json.JsonpDeserializer;
import io.github.stewseo.client.json.JsonpMapper;
import io.github.stewseo.client.json.JsonpSerializable;
import io.github.stewseo.client.json.ObjectBuilderDeserializer;
import io.github.stewseo.client.json.ObjectDeserializer;
import io.github.stewseo.client.util.ObjectBuilder;
import io.github.stewseo.client.util.WithJsonObjectBuilderBase;
import jakarta.json.stream.JsonGenerator;

import java.util.List;
import java.util.function.Function;

@JsonpDeserializable
public class BusinessMatchResponse implements JsonpSerializable {

    private final List businesses;

    private BusinessMatchResponse(Builder builder) {
        this.businesses = builder.businesses;
    }

    public List businesses() {
        return businesses;
    }


    public static BusinessMatchResponse of(Function> fn) {
        return fn.apply(new Builder()).build();
    }

    public void serialize(JsonGenerator generator, JsonpMapper mapper) {
        generator.writeStartObject();
        serializeInternal(generator, mapper);
        generator.writeEnd();
    }

    protected void serializeInternal(JsonGenerator generator, JsonpMapper mapper) {

        if (this.businesses != null) {
            generator.writeKey("businesses");
            generator.writeStartArray();
            for(BusinessMatch item0 : businesses) {
                item0.serialize(generator, mapper);
            }
            generator.writeEnd();
        }

    }


    public static class Builder extends WithJsonObjectBuilderBase
            implements
            ObjectBuilder {
        private List businesses;

        public Builder businesses(List businesses) {
            this.businesses = _listAddAll(this.businesses, businesses);;
            return this;
        }

        public Builder businesses(BusinessMatch business, BusinessMatch ... businesses) {
            this.businesses = _listAdd(this.businesses, business, businesses);
            return this;
        }
        @Override
        protected BusinessMatchResponse.Builder self() {
            return this;
        }

        public BusinessMatchResponse build() {
            _checkSingleUse();
            return new BusinessMatchResponse(this);
        }
    }

    // ------------------------------ Deserializer ------------------------------------ //

    public static final JsonpDeserializer _DESERIALIZER =
            ObjectBuilderDeserializer.lazy(BusinessMatchResponse.Builder::new, BusinessMatchResponse::setupAutoCompleteDeserializer);

    protected static void setupAutoCompleteDeserializer(ObjectDeserializer op) {

        op.add(BusinessMatchResponse.Builder::businesses, JsonpDeserializer.arrayDeserializer(BusinessMatch._DESERIALIZER), "businesses");

    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy