private void processAvailablePluginsResponse(String response, boolean notificationsEnabled)
        throws ExecutionException, InterruptedException {
        // Reset last known list of available plugins
        availablePlugins = new HashMap<>();

        // Parse response and keep info as AvailablePlugin objects
        Element xmlResponse = SAXReaderUtil.readRootElement(response);
        Iterator<Element> plugins = xmlResponse.elementIterator("plugin");
        while (plugins.hasNext()) {
            Element plugin = plugins.next();
            AvailablePlugin available = AvailablePlugin.getInstance( plugin );
            // Add plugin to the list of available plugins at js.org
            availablePlugins.put(available.getName(), available);
        }

        // Figure out local plugins that need to be updated
        buildPluginsUpdateList();

        // Check if we need to send notifications to admins
        if (notificationsEnabled && isNotificationEnabled() && !pluginUpdates.isEmpty()) {
            for (Update update : pluginUpdates) {
                //Send hostname of server only if clustering is enabled
                if(ClusterManager.isClusteringStarted()){
                    XMPPServer.getInstance().sendMessageToAdmins(String.format("%s %s %s, on node %s", getNotificationMessage(),
                        update.getComponentName(), update.getLatestVersion(), XMPPServer.getInstance().getServerInfo().getHostname()));
                } else{
                    XMPPServer.getInstance().sendMessageToAdmins(String.format("%s %s %s", getNotificationMessage(),
                        update.getComponentName(), update.getLatestVersion()));
                }
            }
        }

        // Save information of available plugins
        saveAvailablePluginsInfo();
    }
Returns the plugin update or {@code null} if the plugin is up to date.

@param pluginName     the name of the plugin (as described in the meta-data).
@param currentVersion current version of the plugin that is installed.
@return the plugin update or null if the plugin is up to date.
xmppserver/src/main/java/org/jivesoftware/openfire/update/UpdateManager.java