/* * generated by Xtext 2.16.0 */ package hu.bme.mit.inf.dslreasoner.faulttree.components.ui.internal; import com.google.common.collect.Maps; import com.google.inject.Guice; import com.google.inject.Injector; import hu.bme.mit.inf.dslreasoner.faulttree.components.CftLanguageRuntimeModule; import hu.bme.mit.inf.dslreasoner.faulttree.components.ui.CftLanguageUiModule; import java.util.Collections; import java.util.Map; import org.apache.log4j.Logger; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.eclipse.xtext.ui.shared.SharedStateModule; import org.eclipse.xtext.util.Modules2; import org.osgi.framework.BundleContext; /** * This class was generated. Customizations should only happen in a newly * introduced subclass. */ public class ComponentsActivator extends AbstractUIPlugin { public static final String PLUGIN_ID = "hu.bme.mit.inf.dslreasoner.faulttree.components.ui"; public static final String HU_BME_MIT_INF_DSLREASONER_FAULTTREE_COMPONENTS_CFTLANGUAGE = "hu.bme.mit.inf.dslreasoner.faulttree.components.CftLanguage"; private static final Logger logger = Logger.getLogger(ComponentsActivator.class); private static ComponentsActivator INSTANCE; private Map injectors = Collections.synchronizedMap(Maps. newHashMapWithExpectedSize(1)); @Override public void start(BundleContext context) throws Exception { super.start(context); INSTANCE = this; } @Override public void stop(BundleContext context) throws Exception { injectors.clear(); INSTANCE = null; super.stop(context); } public static ComponentsActivator getInstance() { return INSTANCE; } public Injector getInjector(String language) { synchronized (injectors) { Injector injector = injectors.get(language); if (injector == null) { injectors.put(language, injector = createInjector(language)); } return injector; } } protected Injector createInjector(String language) { try { com.google.inject.Module runtimeModule = getRuntimeModule(language); com.google.inject.Module sharedStateModule = getSharedStateModule(); com.google.inject.Module uiModule = getUiModule(language); com.google.inject.Module mergedModule = Modules2.mixin(runtimeModule, sharedStateModule, uiModule); return Guice.createInjector(mergedModule); } catch (Exception e) { logger.error("Failed to create injector for " + language); logger.error(e.getMessage(), e); throw new RuntimeException("Failed to create injector for " + language, e); } } protected com.google.inject.Module getRuntimeModule(String grammar) { if (HU_BME_MIT_INF_DSLREASONER_FAULTTREE_COMPONENTS_CFTLANGUAGE.equals(grammar)) { return new CftLanguageRuntimeModule(); } throw new IllegalArgumentException(grammar); } protected com.google.inject.Module getUiModule(String grammar) { if (HU_BME_MIT_INF_DSLREASONER_FAULTTREE_COMPONENTS_CFTLANGUAGE.equals(grammar)) { return new CftLanguageUiModule(this); } throw new IllegalArgumentException(grammar); } protected com.google.inject.Module getSharedStateModule() { return new SharedStateModule(); } }