Package org.apache.pinot.spi.plugin
Class PluginManager
- java.lang.Object
-
- org.apache.pinot.spi.plugin.PluginManager
-
public class PluginManager extends Object
-
-
Field Summary
Fields Modifier and Type Field Description static StringDEFAULT_PLUGIN_NAMEstatic StringPLUGINS_DIR_PROPERTY_NAMEstatic StringPLUGINS_INCLUDE_PROPERTY_NAME
-
Method Summary
Modifier and Type Method Description <T> TcreateInstance(String className)Create an instance of the className.<T> TcreateInstance(String className, Class[] argTypes, Object[] argValues)Create an instance of the className.<T> TcreateInstance(String pluginName, String className)Creates an instance of className using classloader specific to the plugin<T> TcreateInstance(String pluginName, String className, Class[] argTypes, Object[] argValues)static PluginManagerget()String[]getPluginsDirectories()HashMap<String,File>getPluginsToLoad(String pluginsDirectories, String pluginsInclude)This method will take a semi-colon delimited string of directories and a semi-colon delimited string of plugin names.StringgetRecordReaderClassName(String inputFormat)StringgetRecordReaderConfigClassName(String inputFormat)voidinit()voidload(String pluginName, File directory)Loads jars recursivelyClass<?>loadClass(String className)Loads a class.Class<?>loadClass(String pluginName, String className)Loads a class using the plugin specific class loaderstatic StringloadClassWithBackwardCompatibleCheck(String className)voidregisterRecordReaderClass(String inputFormat, String recordReaderClass, String recordReaderConfigClass)
-
-
-
Field Detail
-
PLUGINS_DIR_PROPERTY_NAME
public static final String PLUGINS_DIR_PROPERTY_NAME
- See Also:
- Constant Field Values
-
PLUGINS_INCLUDE_PROPERTY_NAME
public static final String PLUGINS_INCLUDE_PROPERTY_NAME
- See Also:
- Constant Field Values
-
DEFAULT_PLUGIN_NAME
public static final String DEFAULT_PLUGIN_NAME
- See Also:
- Constant Field Values
-
-
Method Detail
-
init
public void init()
-
getPluginsToLoad
public HashMap<String,File> getPluginsToLoad(String pluginsDirectories, String pluginsInclude) throws IllegalArgumentException
This method will take a semi-colon delimited string of directories and a semi-colon delimited string of plugin names. It will traverse the directories in order and produce amap of plugins to be loaded. If a plugin is found in multiple directories, only the first copy of it will be picked up. - Parameters:
pluginsDirectories-pluginsInclude-- Returns:
- A hash map with key = plugin name, value = file object
- Throws:
IllegalArgumentException
-
load
public void load(String pluginName, File directory)
Loads jars recursively- Parameters:
pluginName-directory-
-
loadClass
public Class<?> loadClass(String className) throws ClassNotFoundException
Loads a class. The class name can be in any of the following formats- com.x.y.foo
loads the class in the default class path- pluginName:com.x.y.foo
loads the class in plugin specific classloader- Parameters:
className-- Returns:
- Throws:
ClassNotFoundException
-
loadClass
public Class<?> loadClass(String pluginName, String className) throws ClassNotFoundException
Loads a class using the plugin specific class loader- Parameters:
pluginName-className-- Returns:
- Throws:
ClassNotFoundException
-
loadClassWithBackwardCompatibleCheck
public static String loadClassWithBackwardCompatibleCheck(String className)
-
createInstance
public <T> T createInstance(String className) throws Exception
Create an instance of the className. The className can be in any of the following formats- com.x.y.foo
loads the class in the default class path- pluginName:com.x.y.foo
loads the class in plugin specific classloader- Parameters:
className-- Returns:
- Throws:
Exception
-
createInstance
public <T> T createInstance(String className, Class[] argTypes, Object[] argValues) throws Exception
Create an instance of the className. The className can be in any of the following formats- com.x.y.foo
loads the class in the default class path- pluginName:com.x.y.foo
loads the class in plugin specific classloader- Parameters:
className-- Returns:
- Throws:
Exception
-
createInstance
public <T> T createInstance(String pluginName, String className) throws Exception
Creates an instance of className using classloader specific to the plugin- Type Parameters:
T-- Parameters:
pluginName-className-- Returns:
- Throws:
Exception
-
createInstance
public <T> T createInstance(String pluginName, String className, Class[] argTypes, Object[] argValues) throws Exception
- Type Parameters:
T-- Parameters:
pluginName-className-argTypes-argValues-- Returns:
- Throws:
Exception
-
getPluginsDirectories
public String[] getPluginsDirectories()
-
get
public static PluginManager get()
-
-