package storm.applications.sink;
import backtype.storm.tuple.Fields;
import org.slf4j.Logger;
import storm.applications.bolt.AbstractBolt;
import storm.applications.constants.BaseConstants.BaseConf;
import storm.applications.sink.formatter.BasicFormatter;
import storm.applications.sink.formatter.Formatter;
import storm.applications.util.config.ClassLoaderUtils;
public abstract class BaseSink extends AbstractBolt {
protected Formatter formatter;
@Override
public void initialize() {
String formatterClass = config.getString(getConfigKey(BaseConf.SINK_FORMATTER), null);
if (formatterClass == null) {
formatter = new BasicFormatter();
} else {
formatter = (Formatter) ClassLoaderUtils.newInstance(formatterClass, "formatter", getLogger());
}
formatter.initialize(config, context);
}
@Override
public Fields getDefaultFields() {
return new Fields("");
}
protected String getConfigKey(String template) {
return String.format(template, configPrefix);
}
protected abstract Logger getLogger();
}