
com.jonnymatts.jzonbie.response.DefaultAppResponse Maven / Gradle / Ivy
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