package com.highway2urhell; import org.reflections.Reflections; import java.util.HashSet; import java.util.Set; public class PluginUtils { private PluginUtils() { } public static <T> Set<T> autodiscoverPlugin(Class<T> pluginClass) { Set pluginList = new HashSet(); Reflections reflections = new Reflections("com.highway2urhell"); Set<Class<? extends T>> pluginsAvailable = reflections.getSubTypesOf(pluginClass); for (Class<? extends T> plugin : pluginsAvailable) { try { System.out.println("registering "+pluginClass.getName()+" : "+ plugin.getCanonicalName()); T instance = plugin.newInstance(); pluginList.add(instance); } catch (InstantiationException e) { System.err.println("An error occurred while registering " + pluginClass.getName() + " : " + plugin.getCanonicalName()+ e); } catch (IllegalAccessException e) { System.err.println("An error occurred while registering " + pluginClass.getName() + " : " + plugin.getCanonicalName()+ e); } } return pluginList; } }