package storm.contrib.spring.topology; import backtype.storm.generated.StormTopology; import backtype.storm.topology.TopologyBuilder; import org.springframework.beans.factory.FactoryBean; import storm.contrib.spring.topology.component.bolt.IBolt; import storm.contrib.spring.topology.component.spout.ISpout; import java.util.List; /** * [Class Description] * * @author Grant Henke * @since 12/3/12 */ public class TopologyFactory implements FactoryBean<StormTopology> { private final List<ISpout> spouts; private final List<IBolt> bolts; public TopologyFactory(final List<ISpout> spout, final List<IBolt> bolt) { this.spouts = spout; this.bolts = bolt; } public StormTopology getObject() throws Exception { final TopologyBuilder builder = new TopologyBuilder(); setTopologySpouts(builder); setTopologyBolts(builder); return builder.createTopology(); } private void setTopologySpouts(final TopologyBuilder builder) { for (ISpout spout : spouts) { spout.addToTopology(builder); } } private void setTopologyBolts(final TopologyBuilder builder) { for (IBolt bolt : bolts) { bolt.addToTopology(builder); } } public Class<?> getObjectType() { return StormTopology.class; } public boolean isSingleton() { return false; } }