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;
import java.util.List;
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public class TaskRouting extends TaskRouterResource {
@JsonProperty("filters")
private final List<WorkflowRule> workflowRules;
@JsonProperty("default_filter")
private final WorkflowRuleTarget defaultTarget;
/**
* Constructor for creating based on json..
*
* @param workflowRules Workflow Rule configuration
* @param defaultTarget Default Rule target
*/
@JsonCreator
public TaskRouting(
@JsonProperty("filters") List<WorkflowRule> workflowRules,
@JsonProperty("default_filter") WorkflowRuleTarget defaultTarget
) {
this.workflowRules = workflowRules;
this.defaultTarget = defaultTarget;
}
/**
* Get the workflow rules for the workflow.
* @return the list of workflow rules
*/
public List<WorkflowRule> getWorkflowRules() {
return workflowRules;
}
/**
* Get the default filter for the workflow.
* @return the default filter
*/
public WorkflowRuleTarget getDefaultTarget() {
return defaultTarget;
}
@Override
public String toString() {
return MoreObjects.toStringHelper(this)
.add("workflowRules", workflowRules)
.add("defaultTarget", defaultTarget)
.toString();
}
/**
* Converts a JSON workflow configuration to a workflow rule object.
*
* @param json JSON for workflow rule
* @return a workflow rule target object
* @throws IOException if unable to create object
*/
public static TaskRouting fromJson(String json) throws IOException {
ObjectMapper mapper = new ObjectMapper();
return mapper.readValue(json, TaskRouting.class);
}
}