package storm.contrib.spring.topology; import backtype.storm.StormSubmitter; import backtype.storm.generated.AlreadyAliveException; import backtype.storm.generated.InvalidTopologyException; import backtype.storm.generated.StormTopology; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import java.util.Map; /** * [Class Description] * * @author Grant Henke * @since 12/3/12 */ public final class TopologySubmitter { private TopologySubmitter() {} private static void validateArgs(final String[] args) { if (args[0] == null) { throw new IllegalArgumentException("Argument 1: XmlApplicationContext was not defined"); } if (args[1] == null) { throw new IllegalArgumentException("Argument 2: TopologySubmission bean was not defined"); } } private static void submitTopologies(final TopologySubmission topologySubmission) throws AlreadyAliveException, InvalidTopologyException { for (Map.Entry<String, StormTopology> entry : topologySubmission.getStormTopologies().entrySet()) { StormSubmitter.submitTopology(entry.getKey(), topologySubmission.getConfig(), entry.getValue()); } } public static void main(final String[] args) throws AlreadyAliveException, InvalidTopologyException { validateArgs(args); final ApplicationContext applicationContext = new ClassPathXmlApplicationContext(args[0]); final TopologySubmission topologySubmission = (TopologySubmission) applicationContext.getBean(args[1]); submitTopologies(topologySubmission); } }