package org.tomdz.storm.esper;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CopyOnWriteArrayList;
import backtype.storm.task.OutputCollector;
import backtype.storm.task.TopologyContext;
import backtype.storm.topology.OutputFieldsDeclarer;
import backtype.storm.topology.base.BaseRichBolt;
import backtype.storm.tuple.Tuple;
import backtype.storm.tuple.TupleImpl;
public class GatheringBolt extends BaseRichBolt
{
private static final long serialVersionUID = 1L;
private static final List<Tuple> tuples = new CopyOnWriteArrayList<Tuple>();
private transient TopologyContext context;
private transient OutputCollector collector;
@Override
public void prepare(@SuppressWarnings("rawtypes") Map stormConf,
TopologyContext context,
OutputCollector collector)
{
this.context = context;
this.collector = collector;
tuples.clear();
}
@Override
public void execute(Tuple input)
{
Tuple newTuple = new TupleImpl(context, input.getValues(), input.getSourceTask(), input.getSourceStreamId());
tuples.add(newTuple);
collector.ack(input);
}
public List<Tuple> getGatheredData()
{
return new ArrayList<Tuple>(tuples);
}
@Override
public void cleanup() {}
@Override
public void declareOutputFields(OutputFieldsDeclarer declarer) {}
}