public void initContainer() throws Exception { if (launchConfig == null) { launchConfig = launchConfigLoader.call(); } runtimeConfiguration = new StaticRuntimeConfiguration(launchConfig, configDatabaseLoader.call()); runtimeConfiguration.setCurrentVersion(currentVersion); services = new NewConfigDesktopServiceFactory( runtimeConfiguration, new SqliteTransactionManager(connection)); desktopServiceFactory = new CompositeServiceFactory(); desktopServiceFactory.addServiceFactory(services); AfterburnerInjector.setConfigurationSource(key -> desktopServiceFactory.get((String) key)); AfterburnerInjector.setInstanceSupplier( new RecursiveInjectionInstanceSupplier(desktopServiceFactory)); }
private void initPlugins() { for (Class<? extends ClientPlugin> clazz : clientPlugins) { try { ClientPlugin plugin = clazz.newInstance(); if (plugin instanceof ServiceFactoryProvider) { desktopServiceFactory.addServiceFactory( ((ServiceFactoryProvider) plugin).getServiceFactory()); } AfterburnerInjector.injectMembers(plugin); plugin.initialize(desktopServiceFactory, services.getEventDispatcher()); } catch (InstantiationException | IllegalAccessException e) { logger.error("failed to initialized plugin " + clazz.getName() + ": " + e.getMessage(), e); } } }