/** * */ package org.jentrata.spa.jms.handler; import hk.hku.cecid.piazza.commons.message.MessageHandler; import hk.hku.cecid.piazza.commons.spa.Extension; import hk.hku.cecid.piazza.commons.spa.ExtensionPointIteratedHandler; import hk.hku.cecid.piazza.commons.spa.PluginException; import hk.hku.cecid.piazza.commons.util.Instance; import java.util.Properties; import org.jentrata.spa.jms.JMSProcessor; import org.jentrata.spa.jms.module.JMSComponent; /** * @author aaronwalker * */ public class JMSExtensionPointHandler extends ExtensionPointIteratedHandler { @Override public void processExtension(Extension extension) throws PluginException { String queueName = extension.getParameter("queue"); String className = extension.getParameter("class"); try { Properties config = new Properties(); config.putAll(extension.getParameters()); if (className != null) { Class<?> handlerClass = extension.getPlugin().loadClass(className); register(queueName, handlerClass,config); } else { throw new PluginException("Unable to register handler: No handler class defined"); } } catch (Exception e) { throw new PluginException("Unable to register the JMS client: "+ queueName, e); } } public void register(String queue, Class<?> handlerClass, Properties config) throws Exception { JMSComponent jms = getJMSComponent(queue); Instance i = new Instance(handlerClass); jms.registerHandler(queue, (MessageHandler) i.getObject(),config); } public JMSComponent getJMSComponent(String queue) { return JMSProcessor.getInstance().getJmsComponent(queue); } }