package cn.dreampie.route; import cn.dreampie.common.Plugin; import cn.dreampie.route.config.*; import cn.dreampie.route.exception.PluginException; import java.util.List; public class ConfigIniter { private static final ConstantLoader constantLoader = new ConstantLoader(); private static final ResourceLoader resourceLoader = new ResourceLoader(); private static final PluginLoader pluginLoader = new PluginLoader(); private static final InterceptorLoader interceptorLoader = new InterceptorLoader(); private static final HandlerLoader handlerLoader = new HandlerLoader(); public ConfigIniter(Config config) { config.configConstant(constantLoader); config.configPlugin(pluginLoader); startPlugins();//must start plugin before init other config.configResource(resourceLoader); buildRrsource();//scan resource class config.configInterceptor(interceptorLoader); config.configHandler(handlerLoader); } public ConstantLoader getConstantLoader() { return constantLoader; } public ResourceLoader getResourceLoader() { return resourceLoader; } public PluginLoader getPluginLoader() { return pluginLoader; } public InterceptorLoader getInterceptorLoader() { return interceptorLoader; } public HandlerLoader getHandlerLoader() { return handlerLoader; } public void buildRrsource() { resourceLoader.build(); } public void startPlugins() { List<Plugin> plugins = pluginLoader.getPlugins(); if (plugins != null) { for (Plugin plugin : plugins) { if (!plugin.start()) { throw new PluginException("Plugin start error: " + plugin.getClass().getName()); } } } } public void stopPlugins() { List<Plugin> plugins = pluginLoader.getPlugins(); if (plugins != null) { for (Plugin plugin : plugins) { if (!plugin.stop()) { throw new PluginException("Plugin stop error: " + plugin.getClass().getName()); } } } } public void clear() { constantLoader.clear(); resourceLoader.clear(); pluginLoader.clear(); interceptorLoader.clear(); handlerLoader.clear(); } }