/** * */ package org.jentrata.spa.jms; import org.jentrata.spa.jms.module.JMSBrokerComponent; import org.jentrata.spa.jms.module.JMSComponent; import hk.hku.cecid.piazza.commons.Sys; import hk.hku.cecid.piazza.commons.module.ModuleException; import hk.hku.cecid.piazza.commons.module.ModuleGroup; import hk.hku.cecid.piazza.commons.module.SystemModule; import hk.hku.cecid.piazza.commons.spa.Plugin; import hk.hku.cecid.piazza.commons.spa.PluginException; import hk.hku.cecid.piazza.commons.spa.PluginHandler; /** * @author aaronwalker * */ public class JMSProcessor implements PluginHandler { public static final String PLUGIN_ID = "org.jentrata.jms"; public static final String JMS_COMP_ID = "jms"; private static ModuleGroup moduleGroup; public static SystemModule core; private static JMSProcessor processor; public static JMSProcessor getInstance() { if (processor == null) throw new ModuleException("JMSProcessor not initialized"); return processor; } public void processActivation(Plugin plugin) throws PluginException { Sys.main.log.debug("JMSProcessor activation"); processor = this; String mgDescriptor = plugin.getParameters().getProperty("module-group-descriptor"); moduleGroup = new ModuleGroup(mgDescriptor, plugin.getClassLoader()); Sys.getModuleGroup().addChild(moduleGroup); core = moduleGroup.getSystemModule(); moduleGroup.startActiveModules(); if (core == null) { throw new PluginException("JMS system module not found"); } } public void processDeactivation(Plugin plugin) throws PluginException { moduleGroup.stopActiveModules(); JMSBrokerComponent jmsBroker = getJMSBrokerComponent(); if(jmsBroker != null) { jmsBroker.shutdownBroker(); } JMSComponent jmsComponent = (JMSComponent) core.getComponent("jms"); if(jmsComponent != null) { jmsComponent.shutdown(); } } public JMSComponent getJmsComponent(String queue) { return (JMSComponent) core.getComponent(getJMSComponentName(queue)); } public JMSBrokerComponent getJMSBrokerComponent() { return (JMSBrokerComponent) core.getComponent("jmsBroker"); } private String getJMSComponentName(String queue) { if(queue == null) { return JMS_COMP_ID; } String [] s = queue.split(":"); if(s == null || s.length < 1) { return JMS_COMP_ID; } return s[0]; } }