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

com.jonnymatts.jzonbie.response.DefaultAppResponse Maven / Gradle / Ivy

There is a newer version: 5.1.0
Show newest version
package com.jonnymatts.jzonbie.response;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.jonnymatts.jzonbie.model.AppResponse;

import java.util.function.Supplier;

public abstract class DefaultAppResponse {

    private DefaultAppResponse() {}

    public abstract AppResponse getResponse();

    @JsonIgnore
    public abstract boolean isDynamic();

    public static class StaticDefaultAppResponse extends DefaultAppResponse {
        private AppResponse response;

        public StaticDefaultAppResponse(@JsonProperty("response") AppResponse response) {
            this.response = response;
        }
        
        public static StaticDefaultAppResponse staticDefault(AppResponse response) {
            return new StaticDefaultAppResponse(response);
        }

        @Override
        public AppResponse getResponse() {
            return response;
        }

        @Override
        public boolean isDynamic() {
            return false;
        }

        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;

            StaticDefaultAppResponse that = (StaticDefaultAppResponse) o;

            return response != null ? response.equals(that.response) : that.response == null;
        }

        @Override
        public int hashCode() {
            return response != null ? response.hashCode() : 0;
        }
    }

    public static class DynamicDefaultAppResponse extends DefaultAppResponse {
        private Supplier supplier;

        public DynamicDefaultAppResponse(Supplier supplier) {
            this.supplier = supplier;
        }

        public static DynamicDefaultAppResponse dynamicDefault(Supplier supplier) {
            return new DynamicDefaultAppResponse(supplier);
        }

        @Override
        public AppResponse getResponse() {
            return supplier.get();
        }

        @Override
        public boolean isDynamic() {
            return true;
        }

        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;

            DynamicDefaultAppResponse that = (DynamicDefaultAppResponse) o;

            return supplier != null ? supplier.equals(that.supplier) : that.supplier == null;
        }

        @Override
        public int hashCode() {
            return supplier != null ? supplier.hashCode() : 0;
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy