📄 dispatchpluginmanager.java
字号:
/*------------------------------------------------------------------------------Name: DispatchPluginManager.javaProject: xmlBlaster.orgCopyright: xmlBlaster.org, see xmlBlaster-LICENSE file------------------------------------------------------------------------------*/package org.xmlBlaster.util.dispatch.plugins;import org.xmlBlaster.util.Global;import org.xmlBlaster.util.plugin.PluginManagerBase;import org.xmlBlaster.util.plugin.PluginInfo;import org.xmlBlaster.util.plugin.I_Plugin;import org.xmlBlaster.util.XmlBlasterException;/** * DispatchPluginManager loads the I_MsgDispatchInterceptor implementation plugins. * <p> * Usage examples: * </p> * <pre> * // xmlBlaster.properties or on command line * DispatchPlugin[Priority][1.0]=org.xmlBlaster.util.dispatch.plugins.prio.PriorizedDispatchPlugin * DispatchPlugin[FeedMotion][1.0]=org.xmlBlaster.util.dispatch.plugins.motion.FeedMotionDispatchPlugin * DispatchPlugin/defaultPlugin=Priority,1.0 * # Switch off: * # DispatchPlugin/defaultPlugin=undef * </pre> * <pre> * I_MsgDispatchInterceptor interceptor = glob.getDispatchPluginManager().getPlugin("Priority", "1.0", "XY", queuePropertyBase); * </pre> * @author <a href="mailto:xmlBlaster@marcelruff.info">Marcel Ruff</a>. * @see <a href="http://www.xmlblaster.org/xmlBlaster/doc/requirements/dispatch.plugin.html" target="others">dispatch.plugin</a> */public class DispatchPluginManager extends PluginManagerBase{ private static final String defaultPluginName = "org.xmlBlaster.util.dispatch.plugins.prio.PriorizedDispatchPlugin"; public static final String pluginPropertyName = "DispatchPlugin"; public DispatchPluginManager(Global glob) { super(glob); } /** * Return a specific dispatcher plugin, if possible from the cache. * <p/> * This PluginManager exists once in the scope of a Global instance (check util.Global) * therefore the plugin of same typeVersion is only loaded once. * @param typeVersion The type and version e.g. "Priority,1.0" * @return null if no plugin was loaded */ public I_MsgDispatchInterceptor getPlugin(String typeVersion) throws XmlBlasterException { PluginInfo pluginInfo = new PluginInfo(getGlobal(), this, typeVersion); pluginInfo.setUserData(typeVersion); // transport to postInstantiate() without any modification return (I_MsgDispatchInterceptor)getPluginObject(pluginInfo); } /** * Enforced by PluginManagerBase. * @return The name of the property in xmlBlaster.property "DispatchPlugin" * for "DispatchPlugin[Priority][1.0]" */ public String getPluginPropertyName() { return pluginPropertyName; } /** * Called after getPlugin() but only if plugin was new created */ protected void postInstantiate(I_Plugin plugin, PluginInfo pluginInfo) throws XmlBlasterException { String typeVersion = (String)pluginInfo.getUserData(); ((I_MsgDispatchInterceptor)plugin).initialize(getGlobal(), typeVersion); } /** * @return please return your default plugin class name or null if not specified */ public String getDefaultPluginName(String type, String version) { return defaultPluginName; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -