Added an utility to load and insatiate classes
Project: http://git-wip-us.apache.org/repos/asf/tika/repo Commit: http://git-wip-us.apache.org/repos/asf/tika/commit/eccc1538 Tree: http://git-wip-us.apache.org/repos/asf/tika/tree/eccc1538 Diff: http://git-wip-us.apache.org/repos/asf/tika/diff/eccc1538 Branch: refs/heads/TIKA-1508 Commit: eccc15387f0d4a5c62d8d12e6579878dba2f52a8 Parents: 9b5dc7f Author: Thamme Gowda <[email protected]> Authored: Sat Jun 11 19:04:28 2016 -0700 Committer: Thamme Gowda <[email protected]> Committed: Sat Jun 11 19:04:28 2016 -0700 ---------------------------------------------------------------------- .../apache/tika/utils/ServiceLoaderUtils.java | 30 ++++++++++++++++++++ 1 file changed, 30 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tika/blob/eccc1538/tika-core/src/main/java/org/apache/tika/utils/ServiceLoaderUtils.java ---------------------------------------------------------------------- diff --git a/tika-core/src/main/java/org/apache/tika/utils/ServiceLoaderUtils.java b/tika-core/src/main/java/org/apache/tika/utils/ServiceLoaderUtils.java index 5ee1fe8..a1ccacb 100644 --- a/tika-core/src/main/java/org/apache/tika/utils/ServiceLoaderUtils.java +++ b/tika-core/src/main/java/org/apache/tika/utils/ServiceLoaderUtils.java @@ -20,6 +20,8 @@ import java.util.Collections; import java.util.Comparator; import java.util.List; +import org.apache.tika.config.ServiceLoader; + /** * Service Loading and Ordering related utils */ @@ -45,4 +47,32 @@ public class ServiceLoaderUtils { } }); } + + /** + * Loads a class and instantiates it + * @param className service class name + * @param <T> service type + * @return instance of service + */ + public static <T> T newInstance(String className) { + return newInstance(className, ServiceLoader.class.getClassLoader()); + } + + /** + * Loads a class and instantiates it + * @param className service class name + * @param loader class loader + * @param <T> service type + * @return instance of service + */ + public static <T> T newInstance(String className, ClassLoader loader){ + try { + Class loadedClass = loader.loadClass(className); + Class<T> castedClass = loadedClass; + T instance = castedClass.newInstance(); + return instance; + } catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) { + throw new RuntimeException(e); + } + } }
