added fields constructor arg for future dsl integration
This commit is contained in:
parent
c55e69b983
commit
72fbac4e92
|
@ -7,6 +7,7 @@ import backtype.storm.coordination.BatchOutputCollector;
|
|||
import backtype.storm.coordination.IBatchBolt;
|
||||
import backtype.storm.topology.OutputFieldsDeclarer;
|
||||
import backtype.storm.tuple.Tuple;
|
||||
import backtype.storm.tuple.Fields;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
|
@ -23,15 +24,18 @@ public class JRubyBatchBolt extends BaseBatchBolt {
|
|||
IBatchBolt _proxyBolt;
|
||||
String _realBoltClassName;
|
||||
String _baseClassPath;
|
||||
String[] _fields;
|
||||
|
||||
/**
|
||||
* create a new JRubyBolt
|
||||
*
|
||||
* @param baseClassPath the topology/project base JRuby class file path
|
||||
* @param realBoltClassName the fully qualified JRuby bolt implementation class name
|
||||
*/
|
||||
public JRubyBatchBolt(String baseClassPath, String realBoltClassName) {
|
||||
public JRubyBatchBolt(String baseClassPath, String realBoltClassName, String[] fields) {
|
||||
_baseClassPath = baseClassPath;
|
||||
_realBoltClassName = realBoltClassName;
|
||||
_fields = fields;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -56,8 +60,12 @@ public class JRubyBatchBolt extends BaseBatchBolt {
|
|||
// declareOutputFields is executed in the topology creation time, before serialisation.
|
||||
// do not set the _proxyBolt instance variable here to avoid JRuby serialization
|
||||
// issues. Just create tmp bolt instance to call declareOutputFields.
|
||||
IBatchBolt bolt = newProxyBolt(_baseClassPath, _realBoltClassName);
|
||||
bolt.declareOutputFields(declarer);
|
||||
if (_fields.length > 0) {
|
||||
declarer.declare(new Fields(_fields));
|
||||
} else {
|
||||
IBatchBolt bolt = newProxyBolt(_baseClassPath, _realBoltClassName);
|
||||
bolt.declareOutputFields(declarer);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -3,7 +3,7 @@ package redstorm.storm.jruby;
|
|||
import backtype.storm.transactional.ICommitter;
|
||||
|
||||
public class JRubyBatchCommitterBolt extends JRubyBatchBolt implements ICommitter {
|
||||
public JRubyBatchCommitterBolt(String baseClassPath, String realBoltClassName) {
|
||||
super(baseClassPath, realBoltClassName);
|
||||
public JRubyBatchCommitterBolt(String baseClassPath, String realBoltClassName, String[] fields) {
|
||||
super(baseClassPath, realBoltClassName, fields);
|
||||
}
|
||||
}
|
|
@ -8,6 +8,7 @@ import backtype.storm.coordination.BatchOutputCollector;
|
|||
import backtype.storm.coordination.IBatchBolt;
|
||||
import backtype.storm.topology.OutputFieldsDeclarer;
|
||||
import backtype.storm.tuple.Tuple;
|
||||
import backtype.storm.tuple.Fields;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
|
@ -24,15 +25,18 @@ public class JRubyTransactionalBolt extends BaseTransactionalBolt {
|
|||
IBatchBolt _proxyBolt;
|
||||
String _realBoltClassName;
|
||||
String _baseClassPath;
|
||||
/**
|
||||
String[] _fields;
|
||||
|
||||
/**
|
||||
* create a new JRubyBolt
|
||||
*
|
||||
* @param baseClassPath the topology/project base JRuby class file path
|
||||
* @param realBoltClassName the fully qualified JRuby bolt implementation class name
|
||||
*/
|
||||
public JRubyTransactionalBolt(String baseClassPath, String realBoltClassName) {
|
||||
public JRubyTransactionalBolt(String baseClassPath, String realBoltClassName, String[] fields) {
|
||||
_baseClassPath = baseClassPath;
|
||||
_realBoltClassName = realBoltClassName;
|
||||
_fields = fields;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -57,8 +61,12 @@ public class JRubyTransactionalBolt extends BaseTransactionalBolt {
|
|||
// declareOutputFields is executed in the topology creation time, before serialisation.
|
||||
// do not set the _proxyBolt instance variable here to avoid JRuby serialization
|
||||
// issues. Just create tmp bolt instance to call declareOutputFields.
|
||||
IBatchBolt bolt = newProxyBolt(_baseClassPath, _realBoltClassName);
|
||||
bolt.declareOutputFields(declarer);
|
||||
if (_fields.length > 0) {
|
||||
declarer.declare(new Fields(_fields));
|
||||
} else {
|
||||
IBatchBolt bolt = newProxyBolt(_baseClassPath, _realBoltClassName);
|
||||
bolt.declareOutputFields(declarer);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -15,8 +15,8 @@ import backtype.storm.transactional.ICommitter;
|
|||
* serialization at topology creation.
|
||||
*/
|
||||
public class JRubyTransactionalCommitterBolt extends JRubyTransactionalBolt implements ICommitter {
|
||||
public JRubyTransactionalCommitterBolt(String baseClassPath, String realBoltClassName) {
|
||||
super(baseClassPath, realBoltClassName);
|
||||
public JRubyTransactionalCommitterBolt(String baseClassPath, String realBoltClassName, String[] fields) {
|
||||
super(baseClassPath, realBoltClassName, fields);
|
||||
}
|
||||
|
||||
private static IBatchBolt newProxyBolt(String baseClassPath, String realBoltClassName) {
|
||||
|
|
|
@ -19,8 +19,8 @@ public class JRubyTransactionalCommitterSpout extends JRubyTransactionalSpout im
|
|||
|
||||
ICommitterTransactionalSpout _proxySpout;
|
||||
|
||||
public JRubyTransactionalCommitterSpout(String baseClassPath, String realSpoutClassName) {
|
||||
super(baseClassPath, realSpoutClassName);
|
||||
public JRubyTransactionalCommitterSpout(String baseClassPath, String realSpoutClassName, String[] fields) {
|
||||
super(baseClassPath, realSpoutClassName, fields);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -2,12 +2,11 @@ package redstorm.storm.jruby;
|
|||
|
||||
import backtype.storm.spout.SpoutOutputCollector;
|
||||
import backtype.storm.task.TopologyContext;
|
||||
|
||||
import backtype.storm.topology.base.BaseTransactionalSpout;
|
||||
import backtype.storm.transactional.ITransactionalSpout;
|
||||
|
||||
import backtype.storm.topology.OutputFieldsDeclarer;
|
||||
import backtype.storm.transactional.ITransactionalSpout;
|
||||
import backtype.storm.tuple.Tuple;
|
||||
import backtype.storm.tuple.Fields;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
|
@ -24,6 +23,7 @@ public class JRubyTransactionalSpout extends BaseTransactionalSpout {
|
|||
ITransactionalSpout _proxySpout;
|
||||
String _realSpoutClassName;
|
||||
String _baseClassPath;
|
||||
String[] _fields;
|
||||
|
||||
/**
|
||||
* create a new JRubySpout
|
||||
|
@ -31,9 +31,10 @@ public class JRubyTransactionalSpout extends BaseTransactionalSpout {
|
|||
* @param baseClassPath the topology/project base JRuby class file path
|
||||
* @param realSpoutClassName the fully qualified JRuby spout implementation class name
|
||||
*/
|
||||
public JRubyTransactionalSpout(String baseClassPath, String realSpoutClassName) {
|
||||
public JRubyTransactionalSpout(String baseClassPath, String realSpoutClassName, String[] fields) {
|
||||
_baseClassPath = baseClassPath;
|
||||
_realSpoutClassName = realSpoutClassName;
|
||||
_fields = fields;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -46,7 +47,7 @@ public class JRubyTransactionalSpout extends BaseTransactionalSpout {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Emitter getEmitter(Map conf, TopologyContext context) {
|
||||
public ITransactionalSpout.Emitter getEmitter(Map conf, TopologyContext context) {
|
||||
// create instance of the jruby class here, after deserialization in the workers.
|
||||
if (_proxySpout == null) {
|
||||
_proxySpout = newProxySpout(_baseClassPath, _realSpoutClassName);
|
||||
|
@ -59,8 +60,12 @@ public class JRubyTransactionalSpout extends BaseTransactionalSpout {
|
|||
// declareOutputFields is executed in the topology creation time before serialisation.
|
||||
// do not set the _proxySpout instance variable here to avoid JRuby serialization
|
||||
// issues. Just create tmp spout instance to call declareOutputFields.
|
||||
ITransactionalSpout spout = newProxySpout(_baseClassPath, _realSpoutClassName);
|
||||
spout.declareOutputFields(declarer);
|
||||
if (_fields.length > 0) {
|
||||
declarer.declare(new Fields(_fields));
|
||||
} else {
|
||||
ITransactionalSpout spout = newProxySpout(_baseClassPath, _realSpoutClassName);
|
||||
spout.declareOutputFields(declarer);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
Loading…
Reference in New Issue