package com.jivesoftware.os.amzabot.deployable.endpoint;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.jivesoftware.os.amzabot.deployable.bot.AmzaBotCoalmineConfig;
import org.merlin.config.BindInterfaceToConfiguration;
class AmzaBotCoalmineRequest {
private final long coalmineCapacity;
private final int canarySizeThreshold;
private final int hesitationMs;
private final String durability;
private final String consistency;
private final int ringSize;
private final boolean clientOrdering;
@JsonCreator
public AmzaBotCoalmineRequest(
@JsonProperty("coalmineCapacity") long coalmineCapacity,
@JsonProperty("canarySizeThreshold") int canarySizeThreshold,
@JsonProperty("hesitationMs") int hesitationMs,
@JsonProperty("durability") String durability,
@JsonProperty("consistency") String consistency,
@JsonProperty("ringSize") int ringSize,
@JsonProperty("clientOrdering") boolean clientOrdering) {
this.coalmineCapacity = coalmineCapacity;
this.canarySizeThreshold = canarySizeThreshold;
this.hesitationMs = hesitationMs;
this.durability = durability;
this.consistency = consistency;
this.ringSize = ringSize;
this.clientOrdering = clientOrdering;
}
static AmzaBotCoalmineConfig genConfig(AmzaBotCoalmineRequest request) {
AmzaBotCoalmineConfig res =
BindInterfaceToConfiguration.bindDefault(AmzaBotCoalmineConfig.class);
if (request != null) {
if (request.coalmineCapacity > 0) {
res.setCoalmineCapacity(request.coalmineCapacity);
}
if (request.canarySizeThreshold > 0) {
res.setCanarySizeThreshold(request.canarySizeThreshold);
}
res.setHesitationMs(request.hesitationMs);
if (request.durability != null) {
res.setDurability(request.durability);
}
if (request.consistency != null) {
res.setConsistency(request.consistency);
}
if (request.ringSize > 0) {
res.setRingSize(request.ringSize);
}
res.setClientOrdering(request.clientOrdering);
}
return res;
}
}