Beispiel #1
0
  /**
   * @param justPrintConfiguration
   * @throws InterruptedException
   */
  public static void printVersion(boolean justPrintConfiguration) throws InterruptedException {
    System.out.println("FindBugs " + Version.COMPUTED_RELEASE);
    if (justPrintConfiguration) {
      for (Plugin plugin : Plugin.getAllPlugins()) {
        System.out.printf(
            "Plugin %s, version %s, loaded from %s%n",
            plugin.getPluginId(), plugin.getVersion(), plugin.getPluginLoader().getURL());
        if (plugin.isCorePlugin()) System.out.println("  is core plugin");
        if (plugin.isInitialPlugin()) System.out.println("  is initial plugin");
        if (plugin.isEnabledByDefault()) System.out.println("  is enabled by default");
        if (plugin.isGloballyEnabled()) System.out.println("  is globally enabled");
        Plugin parent = plugin.getParentPlugin();
        if (parent != null) {
          System.out.println("  has parent plugin " + parent.getPluginId());
        }

        for (CloudPlugin cloudPlugin : plugin.getCloudPlugins()) {
          System.out.printf("  cloud %s%n", cloudPlugin.getId());
          System.out.printf("     %s%n", cloudPlugin.getDescription());
        }
        for (DetectorFactory factory : plugin.getDetectorFactories()) {
          System.out.printf("  detector %s%n", factory.getShortName());
        }
        System.out.println();
      }
      printPluginUpdates(true, 10);
    } else printPluginUpdates(false, 3);
  }
  public void registerEvents(Listener listener, Plugin plugin) {
    if (!plugin.isEnabled()) {
      throw new IllegalPluginAccessException(
          "Plugin attempted to register " + listener + " while not enabled");
    }

    for (Map.Entry<Class<? extends Event>, Set<RegisteredListener>> entry :
        plugin.getPluginLoader().createRegisteredListeners(listener, plugin).entrySet()) {
      getEventListeners(getRegistrationClass(entry.getKey())).registerAll(entry.getValue());
    }
  }
  /**
   * Registers all the events in the given listener class.
   *
   * @param listener - listener to register
   * @param plugin - plugin to register
   */
  public void registerEvents(Listener listener, Plugin plugin) {
    if (!plugin.isEnabled())
      throw new IllegalPluginAccessException(
          "Plugin attempted to register " + listener + " while not enabled");

    // Just in case Bukkit decides to validate the parameters in the future
    EventExecutor nullExecutor =
        (arg0, arg1) -> {
          throw new IllegalStateException("This method should never be called!");
        };

    for (Entry<Class<? extends Event>, Set<RegisteredListener>> entry :
        plugin.getPluginLoader().createRegisteredListeners(listener, plugin).entrySet()) {

      Collection<RegisteredListener> listeners = entry.getValue();
      Collection<RegisteredListener> modified = Lists.newArrayList();

      // Use our plugin specific logger instead
      for (final RegisteredListener delegate : listeners) {
        RegisteredListener customListener =
            new RegisteredListener(
                delegate.getListener(),
                nullExecutor,
                delegate.getPriority(),
                delegate.getPlugin(),
                delegate.isIgnoringCancelled()) {
              @Override
              public void callEvent(Event event) throws EventException {
                try {
                  delegate.callEvent(event);
                } catch (AuthorNagException e) {
                  // Let Bukkit handle that one
                  throw e;
                } catch (Throwable e) {
                  customHandler(event, e);
                }
              }
            };

        modified.add(customListener);
      }

      getEventListeners(getRegistrationClass(entry.getKey())).registerAll(modified);
    }
  }
  public void enablePlugin(final Plugin plugin) {
    if (!plugin.isEnabled()) {
      List<Command> pluginCommands = PluginCommandYamlParser.parse(plugin);

      if (!pluginCommands.isEmpty()) {
        commandMap.registerAll(plugin.getDescription().getName(), pluginCommands);
      }

      try {
        plugin.getPluginLoader().enablePlugin(plugin);
      } catch (Throwable ex) {
        server
            .getLogger()
            .log(
                Level.SEVERE,
                "Error occurred (in the plugin loader) while enabling "
                    + plugin.getDescription().getFullName()
                    + " (Is it up to date?)",
                ex);
      }

      HandlerList.bakeAll();
    }
  }
  public void disablePlugin(final Plugin plugin) {
    if (plugin.isEnabled()) {
      try {
        plugin.getPluginLoader().disablePlugin(plugin);
      } catch (Throwable ex) {
        server
            .getLogger()
            .log(
                Level.SEVERE,
                "Error occurred (in the plugin loader) while disabling "
                    + plugin.getDescription().getFullName()
                    + " (Is it up to date?)",
                ex);
      }

      try {
        server.getScheduler().cancelTasks(plugin);
      } catch (Throwable ex) {
        server
            .getLogger()
            .log(
                Level.SEVERE,
                "Error occurred (in the plugin loader) while cancelling tasks for "
                    + plugin.getDescription().getFullName()
                    + " (Is it up to date?)",
                ex);
      }

      try {
        server.getServicesManager().unregisterAll(plugin);
      } catch (Throwable ex) {
        server
            .getLogger()
            .log(
                Level.SEVERE,
                "Error occurred (in the plugin loader) while unregistering services for "
                    + plugin.getDescription().getFullName()
                    + " (Is it up to date?)",
                ex);
      }

      try {
        HandlerList.unregisterAll(plugin);
      } catch (Throwable ex) {
        server
            .getLogger()
            .log(
                Level.SEVERE,
                "Error occurred (in the plugin loader) while unregistering events for "
                    + plugin.getDescription().getFullName()
                    + " (Is it up to date?)",
                ex);
      }

      try {
        server.getMessenger().unregisterIncomingPluginChannel(plugin);
        server.getMessenger().unregisterOutgoingPluginChannel(plugin);
      } catch (Throwable ex) {
        server
            .getLogger()
            .log(
                Level.SEVERE,
                "Error occurred (in the plugin loader) while unregistering plugin channels for "
                    + plugin.getDescription().getFullName()
                    + " (Is it up to date?)",
                ex);
      }
    }
  }