package org.embulk.spi.unit;
import com.google.common.base.Optional;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.node.NullNode;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
public class ToString
{
private final String string;
public ToString(String string)
{
this.string = string;
}
@JsonCreator
public ToString(Optional<JsonNode> option) throws JsonMappingException
{
JsonNode node = option.or(NullNode.getInstance());
if (node.isTextual()) {
this.string = node.textValue();
} else if (node.isValueNode()) {
this.string = node.toString();
} else {
throw new JsonMappingException(String.format("Arrays and objects are invalid: '%s'", node));
}
}
@Override
public boolean equals(Object obj)
{
if (!(obj instanceof ToString)) {
return false;
}
ToString o = (ToString) obj;
return string.equals(o.string);
}
@Override
public int hashCode()
{
return string.hashCode();
}
@JsonValue
@Override
public String toString()
{
return string;
}
}