# HG changeset patch # User Omair Majid # Date 1361903014 18000 # Node ID 8dfbb3b87fcd94296fb9d21bf5c842b2ba75cc34 # Parent b0879f47909f42267514955637c441441660bc4b Warn about potential problems in plugin.xml Reviewed-by: ebaron, jerboaa Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2013-February/005849.html diff -r b0879f47909f -r 8dfbb3b87fcd launcher/src/main/java/com/redhat/thermostat/launcher/internal/PluginConfigurationParser.java --- a/launcher/src/main/java/com/redhat/thermostat/launcher/internal/PluginConfigurationParser.java Tue Feb 26 12:47:39 2013 -0500 +++ b/launcher/src/main/java/com/redhat/thermostat/launcher/internal/PluginConfigurationParser.java Tue Feb 26 13:23:34 2013 -0500 @@ -142,6 +142,10 @@ } } + if (commands.getFirst().isEmpty() && commands.getSecond().isEmpty()) { + logger.warning("plugin " + pluginName + " does not extend any command or provide any new commands"); + } + return new PluginConfiguration(commands.getFirst(), commands.getSecond()); } @@ -180,11 +184,16 @@ if (node.getNodeName().equals("name")) { name = node.getTextContent().trim(); } else if (node.getNodeName().equals("bundles")) { - bundles.addAll(parseBundles(node)); + bundles.addAll(parseBundles(pluginName, name, node)); } else if (node.getNodeName().equals("dependencies")) { - dependencies.addAll(parseDependencies(node)); + dependencies.addAll(parseDependencies(pluginName, name, node)); } } + + if (bundles.isEmpty()) { + logger.warning("plugin " + pluginName + " extends the command " + name + " but supplies no bundles"); + } + if (name == null) { logger.warning("plugin " + pluginName + " provides extensions without specifying the command"); return null; @@ -212,12 +221,19 @@ } else if (node.getNodeName().equals("arguments")) { options = parseArguments(node); } else if (node.getNodeName().equals("bundles")) { - bundles.addAll(parseBundles(node)); + bundles.addAll(parseBundles(pluginName, name, node)); } else if (node.getNodeName().equals("dependencies")) { - dependencies.addAll(parseDependencies(node)); + dependencies.addAll(parseDependencies(pluginName, name, node)); } } + if (bundles.isEmpty()) { + logger.warning("plugin " + pluginName + " provides a new command " + name + " but supplies no bundles"); + } + if (dependencies.isEmpty()) { + logger.warning("plugin " + pluginName + " provides a new command " + name + " but lists no dependencies on thermostat"); + } + if (name == null || usage == null || description == null) { logger.warning("plugin " + pluginName + " provides an incomplete new command: " + "name='" + name + "', usage='" + usage + "', description='" + description + "', options='" + options + "'"); @@ -227,7 +243,7 @@ } } - private Collection parseBundles(Node bundlesNode) { + private Collection parseBundles(String pluginName, String commandName, Node bundlesNode) { List bundles = new ArrayList<>(); NodeList nodes = bundlesNode.getChildNodes(); for (int i = 0; i < nodes.getLength(); i++) { @@ -237,10 +253,15 @@ bundles.add(bundleName); } } + + if (bundles.isEmpty()) { + logger.warning("plugin " + pluginName + " has an empty bundles element for command " + commandName); + } + return bundles; } - private Collection parseDependencies(Node dependenciesNode) { + private Collection parseDependencies(String pluginName, String commandName, Node dependenciesNode) { List dependencies = new ArrayList<>(); NodeList nodes = dependenciesNode.getChildNodes(); for (int i = 0; i < nodes.getLength(); i++) { @@ -250,6 +271,11 @@ dependencies.add(bundleName); } } + + if (dependencies.isEmpty()) { + logger.warning("plugin " + pluginName + " has an empty dependencies element for command " + commandName); + } + return dependencies; }