1 package net.sf.openrocket.plugin.framework;
4 import java.net.URISyntaxException;
5 import java.util.ArrayList;
8 import net.sf.openrocket.util.BugException;
9 import net.xeoh.plugins.base.Plugin;
10 import net.xeoh.plugins.base.PluginManager;
11 import net.xeoh.plugins.base.impl.PluginManagerFactory;
12 import net.xeoh.plugins.base.util.JSPFProperties;
13 import net.xeoh.plugins.base.util.PluginManagerUtil;
15 public class JSPFPluginFactory implements PluginFactory {
17 private final PluginManager pluginManager;
19 public JSPFPluginFactory() {
21 final JSPFProperties props = new JSPFProperties();
23 // props.setProperty(PluginManager.class, "cache.enabled", "true");
24 // props.setProperty(PluginManager.class, "cache.mode", "weak"); //optional
25 // props.setProperty(PluginManager.class, "cache.file", "jspf.cache");
28 pluginManager = PluginManagerFactory.createPluginManager(props);
29 pluginManager.addPluginsFrom(new URI("classpath://*"));
30 } catch (URISyntaxException e) {
31 throw new BugException(e);
36 public <E extends Plugin> List<E> getPlugins(Class<E> e, Object... args) {
38 List<E> plugins = new ArrayList<E>();
40 PluginManagerUtil pluginManagerUtil = new PluginManagerUtil(pluginManager);
41 plugins.addAll(pluginManagerUtil.getPlugins(e));
43 for (Service s : pluginManagerUtil.getPlugins(Service.class)) {
44 plugins.addAll(s.getPlugins(e, args));