package com.twilio.taskrouter;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.base.MoreObjects;
import java.io.IOException;
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public class WorkflowRuleTarget extends TaskRouterResource {
@JsonProperty("queue")
private final String queue;
@JsonProperty("expression")
private final String expression;
@JsonProperty("priority")
private final Integer priority;
@JsonProperty("timeout")
private final Integer timeout;
@JsonCreator
private WorkflowRuleTarget(
@JsonProperty("queue") String queue,
@JsonProperty("expression") String expression,
@JsonProperty("priority") Integer priority,
@JsonProperty("timeout") Integer timeout
) {
this.queue = queue;
this.expression = expression;
this.priority = priority;
this.timeout = timeout;
}
private WorkflowRuleTarget(Builder b) throws IllegalArgumentException {
this.queue = b.queue;
this.expression = b.expression;
this.priority = b.priority;
this.timeout = b.timeout;
}
/**
* Get the queue for the workflow rule target.
* @return queue sid
*/
public String getQueue() {
return queue;
}
/**
* Get the expression for the workflow rule target to limit the workers selected.
* @return the expression
*/
public String getExpression() {
return expression;
}
/**
* Get the priority for the workflow rule target.
* @return the priority
*/
public Integer getPriority() {
return priority;
}
/**
* Get the timeout for the workflow rule target.
* @return the timeout
*/
public Integer getTimeout() {
return timeout;
}
/**
* Return a string representation of this workflow rule target.
* @return string representation of target
*/
@Override
public String toString() {
return MoreObjects.toStringHelper(this)
.add("queue", queue)
.add("expression", expression)
.add("priority", priority)
.add("timeout", timeout)
.toString();
}
/**
* Converts a JSON workflow configuration to a workflow configuration object.
*
* @param json JSON for workflow rule target
* @return a workflow rule target object
* @throws IOException if unable to create object
*/
public static WorkflowRuleTarget fromJson(String json) throws IOException {
ObjectMapper mapper = new ObjectMapper();
return mapper.readValue(json, WorkflowRuleTarget.class);
}
public static class Builder {
private String queue;
private String expression;
private Integer priority;
private Integer timeout;
public Builder(String queue) {
this.queue = queue;
}
public Builder expression(String expression) {
this.expression = expression;
return this;
}
public Builder priority(Integer priority) {
this.priority = priority;
return this;
}
public Builder timeout(Integer timeout) {
this.timeout = timeout;
return this;
}
public WorkflowRuleTarget build() {
return new WorkflowRuleTarget(this);
}
}
}