You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Boot.java 3.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. package ${package};
  2. import org.apache.commons.lang.StringUtils;
  3. import org.pf4j.DefaultPluginManager;
  4. import org.pf4j.ExtensionFinder;
  5. import org.pf4j.PluginManager;
  6. import org.pf4j.PluginWrapper;
  7. import java.util.List;
  8. import java.util.Set;
  9. /**
  10. * A boot class that start the application.
  11. */
  12. public class Boot {
  13. public static void main(String[] args) {
  14. // create the plugin manager
  15. PluginManager pluginManager = new DefaultPluginManager();
  16. // load the plugins
  17. pluginManager.loadPlugins();
  18. // enable a disabled plugin
  19. // pluginManager.enablePlugin("welcome-plugin");
  20. // start (active/resolved) the plugins
  21. pluginManager.startPlugins();
  22. // retrieves the extensions for Greeting extension point
  23. List<Greeting> greetings = pluginManager.getExtensions(Greeting.class);
  24. System.out.println(String.format("Found %d extensions for extension point '%s'", greetings.size(), Greeting.class.getName()));
  25. for (Greeting greeting : greetings) {
  26. System.out.println(">>> " + greeting.getGreeting());
  27. }
  28. // print extensions from classpath (non plugin)
  29. System.out.println("Extensions added by classpath:");
  30. Set<String> extensionClassNames = pluginManager.getExtensionClassNames(null);
  31. for (String extension : extensionClassNames) {
  32. System.out.println(" " + extension);
  33. }
  34. System.out.println("Extension classes by classpath:");
  35. List<Class<? extends Greeting>> greetingsClasses = pluginManager.getExtensionClasses(Greeting.class);
  36. for (Class<? extends Greeting> greeting : greetingsClasses) {
  37. System.out.println(" Class: " + greeting.getCanonicalName());
  38. }
  39. // print extensions ids for each started plugin
  40. List<PluginWrapper> startedPlugins = pluginManager.getStartedPlugins();
  41. for (PluginWrapper plugin : startedPlugins) {
  42. String pluginId = plugin.getDescriptor().getPluginId();
  43. System.out.println(String.format("Extensions added by plugin '%s':", pluginId));
  44. extensionClassNames = pluginManager.getExtensionClassNames(pluginId);
  45. for (String extension : extensionClassNames) {
  46. System.out.println(" " + extension);
  47. }
  48. }
  49. // print extensions instances for Greeting extension point for each started plugin
  50. for (PluginWrapper plugin : startedPlugins) {
  51. String pluginId = plugin.getDescriptor().getPluginId();
  52. System.out.println(String.format("Extensions instances added by plugin '%s' for extension point '%s':", pluginId, Greeting.class.getName()));
  53. List<Greeting> extensions = pluginManager.getExtensions(Greeting.class, pluginId);
  54. for (Object extension : extensions) {
  55. System.out.println(" " + extension);
  56. }
  57. }
  58. // print extensions instances from classpath (non plugin)
  59. System.out.println("Extensions instances added by classpath:");
  60. List extensions = pluginManager.getExtensions((String) null);
  61. for (Object extension : extensions) {
  62. System.out.println(" " + extension);
  63. }
  64. // print extensions instances for each started plugin
  65. for (PluginWrapper plugin : startedPlugins) {
  66. String pluginId = plugin.getDescriptor().getPluginId();
  67. System.out.println(String.format("Extensions instances added by plugin '%s':", pluginId));
  68. extensions = pluginManager.getExtensions(pluginId);
  69. for (Object extension : extensions) {
  70. System.out.println(" " + extension);
  71. }
  72. }
  73. // stop the plugins
  74. pluginManager.stopPlugins();
  75. /*
  76. Runtime.getRuntime().addShutdownHook(new Thread() {
  77. @Override
  78. public void run() {
  79. pluginManager.stopPlugins();
  80. }
  81. });
  82. */
  83. }
  84. }