package org.jentrata.spa.integration; 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; import org.jentrata.spa.integration.module.SpringBootstrapComponent; import org.springframework.context.ApplicationContext; /** * Created by aaronwalker on 11/07/2016. */ public class IntegrationPluguin 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 IntegrationPluguin pluginHandler; public static IntegrationPluguin getInstance() { if (pluginHandler == null) { throw new ModuleException("IntegrationPluguin not initialized"); } return pluginHandler; } @Override public void processActivation(Plugin plugin) throws PluginException { Sys.main.log.debug("Integration Plugin activation"); pluginHandler = 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("Integration system module not found"); } } @Override public void processDeactivation(Plugin plugin) throws PluginException { moduleGroup.stopActiveModules(); SpringBootstrapComponent camel = (SpringBootstrapComponent) core.getComponent("spring"); if(camel != null) { camel.shutdown(); } } public SpringBootstrapComponent getSpringBootstrapComponent() { return ((SpringBootstrapComponent) moduleGroup.getModule("spring").getComponent("bootstrap")); } }