java_import 'backtype.storm.testing.TestWordSpout'

require 'red_storm'
require 'examples/native/exclamation_bolt'

# this example topology uses the Storm TestWordSpout and our own JRuby ExclamationBolt

module RedStorm
  module Examples
    class LocalExclamationTopology
      RedStorm::Configuration.topology_class = self

      def start(base_class_path, env)
        builder = TopologyBuilder.new

        builder.setSpout('TestWordSpout', TestWordSpout.new, 1)
        builder.setBolt('ExclamationBolt1', JRubyBolt.new(base_class_path, 'RedStorm::Examples::ExclamationBolt', []), 2).shuffleGrouping('TestWordSpout')
        builder.setBolt('ExclamationBolt2', JRubyBolt.new(base_class_path, 'RedStorm::Examples::ExclamationBolt', []), 2).shuffleGrouping('ExclamationBolt1')

        conf = Backtype::Config.new
        conf.setDebug(true)

        cluster = LocalCluster.new
        cluster.submitTopology("exclamation", conf, builder.createTopology)
        sleep(5)
        cluster.killTopology("exclamation")
        cluster.shutdown
      end
    end
  end
end
