Plugin Utilities Realease-Notes Author: Manfred Duchrow Copyright (c) 2003-2017, by Manfred Duchrow. All rights reserved. ======================================================================= ----------------------------------------------------------------------- VERSION 3.1.0 (09/11/2017) - 49 Unit Tests * New classes and interfaces > IIdentifiablePlugin * PluginRegistry > Added - public int loadPluginsByServiceLoader(Class pluginType, ClassLoader...classLoaders) - public void clear() ----------------------------------------------------------------------- VERSION 3.0.0 (11/02/2017) - 48 Unit Tests * Migrated > Maven -> Gradle > SVN -> Git * Package renaming 'org.pf' -> 'org.pfsw' * PluginUtil > Added - public ClassLoader getClassLoader(final ClassLoader... suggestedClassLoaders) * PluginCollector > Extended mechanism to determine classloader. * PluginLoader > Improved classloader handling - particularly when using ServiceLoader > Capability to provide the first found plugin as default if no class name or alias has been configured > Added - public ClassRegistry getAllPluginsViaPluginRegistration() - public ClassRegistry getAllPluginsViaPluginRegistration(ClassLoader loader) * ClassRegistry > Added - public boolean isEmpty() - public ClassInfo getFirst() ----------------------------------------------------------------------- VERSION 2.2.0 (11/06/2016) - 44 Unit Tests * Dependencies upgrade ----------------------------------------------------------------------- VERSION 2.1.0 (13/09/2015) - 44 Unit Tests * New classes > org.pfsw.plugin.PluginLoader * Clean code ----------------------------------------------------------------------- VERSION 2.0.0 (23/11/2014) - 40 Unit Tests * Upgraded to Java 6 * Creating logger now via pluggable LoggerFactory * Better support of generic types > PluginRegistry - Changed signature public Object[] getPluginsOfType(Class pluginType) to public T[] getPluginsOfType(final Class pluginType) - Changed signature public Object getPlugin(String pluginId, Class pluginType) to public T getPlugin(String pluginId, Class pluginType) > ClassRegistry - Changed signature public void put(Object key, String className) to public void put(String key, String className) - Changed signature public boolean register(Object key, String className) to public boolean register(String key, String className) - Changed signature public T newInstance(Object key) to public T newInstance(String key) - Changed signature public Class getClass(Object key) to public Class getClass(String key) - Changed signature public void put(Object key, Class aClass) to public void put(String key, Class aClass) - Changed signature public boolean register(Object key, Class aClass) to public boolean register(String key, Class aClass) * Plugin collector utilizes the Java service loader > New classes and interfaces - org.pfsw.plugin.PluginRegistration - org.pfsw.plugin.BasePluginRegistration > PluginCollector - Added ~ public ClassRegistry loadPluginsViaPluginRegistration() ~ public ClassRegistry loadPluginsViaPluginRegistration(final ClassLoader classLoader) > ClassRegistry - Added ~ public PluginCollector(Class pluginType) ~ public boolean isValidType(Class type) ~ public int size() ----------------------------------------------------------------------- VERSION 1.5 ( March 2, 2007 ) * New classes and interfaces > IInitializablePlugin > PluginHolder > PluginRegistry * ClassRegistry > Changed - public boolean remove( Object key ) Bug: Did not work! ----------------------------------------------------------------------- VERSION 1.4.2 ( June 3, 2006 ) * PluginUtil > Changed visibility of constructor PluginUtil() from private to protected ----------------------------------------------------------------------- VERSION 1.4.1 ( April 8, 2006 ) * PluginUtilTest > Changed test_getPluginClasspath_3() to concatenate classpath entries correctly ----------------------------------------------------------------------- VERSION 1.4 ( March 25, 2006 ) * PluginUtil > Internal refactoring - delegates now more to FileUtil ----------------------------------------------------------------------- VERSION 1.3 ( December 27, 2004 ) * PluginCollector > Added support for plug-in properties files from within Eclipse (3.0) > New methods - public ClassRegistry loadPlugins( String filename, Classpath classpath ) - public Classpath getPluginClasspath() > With system property "org.pf.plugin.path" it is possible to define an explicit classpath to be looked up when searching for plug-ins. Such a classpath may contain patterns for Java archives (e.g. *.jar). Example: -Dorg.pf.plugin.path=c:/test/classes;c:/plugins/lib/*.jar ----------------------------------------------------------------------- VERSION 1.2 ( December 22, 2003 ) * PluginCollector - Added a system property to switch on the debug mode of this class: -Dorg.pf.plugin.PluginCollector.debug=true This will trace the lookup and registration of plugin definitions to stdout. - Changed to extract the classpath from the manifest file if the program was started via -jar option - Lookup the directories defined by system property "java.ext.dirs" as well for potential plug-ins. ----------------------------------------------------------------------- VERSION 1.1 ( February 28, 2003 ) * New methods in ClassRegistry - String[] keys() - CalssInfo[] values() - Class[] classes() - String[] classNames() - ClassInfo getClassInfo( key ) ----------------------------------------------------------------------- VERSION 1.0 ( February 7, 2003 ) * ClassRegistry * PluginCollector -----------------------------------------------------------------------