2012-09-18 15:41:32 +00:00
|
|
|
package redstorm.storm.jruby;
|
|
|
|
|
|
|
|
import backtype.storm.transactional.ICommitterTransactionalSpout;
|
|
|
|
import backtype.storm.transactional.ITransactionalSpout;
|
|
|
|
import backtype.storm.task.TopologyContext;
|
|
|
|
import java.util.Map;
|
|
|
|
|
2014-03-02 08:04:01 +00:00
|
|
|
import org.jruby.Ruby;
|
|
|
|
import org.jruby.RubyObject;
|
|
|
|
import org.jruby.runtime.Helpers;
|
|
|
|
import org.jruby.runtime.builtin.IRubyObject;
|
|
|
|
import org.jruby.javasupport.JavaUtil;
|
|
|
|
import org.jruby.RubyModule;
|
|
|
|
import org.jruby.exceptions.RaiseException;
|
|
|
|
|
2012-09-18 15:41:32 +00:00
|
|
|
public class JRubyTransactionalCommitterSpout extends JRubyTransactionalSpout implements ICommitterTransactionalSpout {
|
|
|
|
|
2013-05-13 04:03:36 +00:00
|
|
|
public JRubyTransactionalCommitterSpout(String baseClassPath, String realSpoutClassName, String[] fields) {
|
|
|
|
super(baseClassPath, realSpoutClassName, fields);
|
2012-09-18 15:41:32 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public ICommitterTransactionalSpout.Emitter getEmitter(Map conf, TopologyContext context) {
|
2014-03-02 08:04:01 +00:00
|
|
|
if (_ruby_spout == null) {
|
|
|
|
IRubyObject _ruby_spout = initialize_ruby_spout();
|
2012-09-18 15:41:32 +00:00
|
|
|
}
|
2014-03-02 08:04:01 +00:00
|
|
|
IRubyObject ruby_conf = JavaUtil.convertJavaToRuby(__ruby__, conf);
|
|
|
|
IRubyObject ruby_context = JavaUtil.convertJavaToRuby(__ruby__, context);
|
|
|
|
IRubyObject ruby_result = Helpers.invoke(__ruby__.getCurrentContext(), _ruby_spout, "get_emitter", ruby_conf, ruby_context);
|
|
|
|
return (ICommitterTransactionalSpout.Emitter)ruby_result.toJava(ICommitterTransactionalSpout.Emitter.class);
|
2012-09-18 15:41:32 +00:00
|
|
|
}
|
|
|
|
}
|