package org.embulk.config;
import java.util.List;
import java.util.Map;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
public interface DataSource
{
List<String> getAttributeNames();
Iterable<Map.Entry<String, JsonNode>> getAttributes();
boolean isEmpty();
boolean has(String attrName);
<E> E get(Class<E> type, String attrName);
<E> E get(Class<E> type, String attrName, E defaultValue);
DataSource getNested(String attrName);
DataSource getNestedOrSetEmpty(String attrName);
DataSource getNestedOrGetEmpty(String attrName);
DataSource set(String attrName, Object v);
DataSource setNested(String attrName, DataSource v);
DataSource setAll(DataSource other);
DataSource remove(String attrName);
DataSource deepCopy();
DataSource merge(DataSource other);
ObjectNode getObjectNode();
}