From: <jbo...@li...> - 2005-12-13 18:04:00
|
Author: wrzep Date: 2005-12-13 13:03:47 -0500 (Tue, 13 Dec 2005) New Revision: 1806 Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/XmlTools.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/KosmosStatusPlugin.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusDescriptor.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusTools.java Log: - added new helper function to XmlTools - separate xml files for status and score plugins handling http://jira.jboss.com/jira/browse/JBLAB-415 Pawel Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/XmlTools.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/XmlTools.java 2005-12-13 17:04:18 UTC (rev 1805) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/XmlTools.java 2005-12-13 18:03:47 UTC (rev 1806) @@ -91,6 +91,26 @@ return properties; } + /** + * Reads all child nodes of the given node and returns them as a map. + * + * @param root Node from which to read the child nodes. + * @return A map binding child nodes names with their values. + */ + public static Map<String, String> getMapFromNodeElements(Node root) { + Map<String,String> properties = new HashMap<String,String>(); + NodeList list = root.getChildNodes(); + + for (int i = 0; i < list.getLength(); i++) { + Node n = list.item(i); + if (n.getNodeType() == Node.ELEMENT_NODE) { + properties.put(n.getNodeName(),XmlTools.unmarshallText(n)); + } + } + + return properties; + } + /** * From the given node, gets the value of the specified attribute. * @param root Node to read the attribute from. Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/KosmosStatusPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/KosmosStatusPlugin.java 2005-12-13 17:04:18 UTC (rev 1805) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/KosmosStatusPlugin.java 2005-12-13 18:03:47 UTC (rev 1806) @@ -59,12 +59,13 @@ public void init(String name, String id, Projects projects, Node propertiesNode) throws InvalidPluginPropertiesException { super.init(name, id, projects,propertiesNode); - Map<String, String> properties = XmlTools.getMapFromNodeAttributes(propertiesNode); + Map<String,String> properties = XmlTools.getMapFromNodeElements(propertiesNode); getProperties(properties); } - private void getProperties(Map<String, String> properties) throws InvalidPluginPropertiesException { - if (properties == null) { + private void getProperties(Map<String,String> properties) throws InvalidPluginPropertiesException { + + if (properties.isEmpty()) { throw new InvalidPluginPropertiesException("Missing properties for " + getName() + " plugin."); } Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java 2005-12-13 17:04:18 UTC (rev 1805) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java 2005-12-13 18:03:47 UTC (rev 1806) @@ -54,8 +54,7 @@ */ public class Status extends AbstractDescriptor { - private final static String STATUS_PLUGIN_ELEMENT = "status-plugin"; - private final static String SCORE_PLUGIN_ELEMENT = "score-plugin"; + private final static String PLUGIN_ELEMENT = "plugin"; private final static String PLUGIN_ID_ELEMENT = "id"; private final static String PLUGIN_NAME_ELEMENT = "name"; @@ -74,7 +73,7 @@ private HashSet<String> pluginsElements; - Status(String portalName, Node statusRoot, Node pluginsRoot) { + Status(String portalName, Node statusRoot, Node statusPluginsRoot, Node scorePluginsRoot) { this.portalName = portalName; @@ -85,21 +84,21 @@ projects = ProjectsHelper.getProjects(portalName); // Get the status plugins - Set<Node> statusPluginsNodes = getPluginsNodes(pluginsRoot, STATUS_PLUGIN_ELEMENT); - statusPlugins = getPlugins(statusPluginsNodes); + Set<Node> statusPluginsNodes = getPluginsNodes(statusPluginsRoot); + statusPlugins = getPlugins(statusPluginsNodes, false); // Get the score plugins - Set<Node> scorePluginsNodes = getPluginsNodes(pluginsRoot, SCORE_PLUGIN_ELEMENT); - scorePlugins = getPlugins(scorePluginsNodes); + Set<Node> scorePluginsNodes = getPluginsNodes(scorePluginsRoot); + scorePlugins = getPlugins(scorePluginsNodes, true); allPlugins = new ArrayList<Plugin>(); allPlugins.addAll(statusPlugins); allPlugins.addAll(scorePlugins); } - private Set<Node> getPluginsNodes(Node pluginsRoot, String pluginElement) { + private Set<Node> getPluginsNodes(Node pluginsRoot) { HashSet<String> pluginElementSet = new HashSet<String>(); - pluginElementSet.add(pluginElement); + pluginElementSet.add(PLUGIN_ELEMENT); Set<Node> pluginsNodes = getChildNodesSet(pluginsRoot, pluginElementSet); return pluginsNodes; @@ -163,7 +162,7 @@ projectContext.put("name", projects.getProjectName(projectId)); projectContext.put("link", projects.getProjectLink(projectId)); - fillEntries(projectContext, allPlugins, projectId);; + fillEntries(projectContext, statusPlugins, projectId); } private void fillEntries(DelegateContext projectContext, List<Plugin> plugins, String projectId) { @@ -177,13 +176,13 @@ } } - private List<Plugin> getPlugins(Set<Node> pluginsNodes) { + private List<Plugin> getPlugins(Set<Node> pluginsNodes, boolean scorePlugins) { ArrayList<Plugin> plugins = new ArrayList<Plugin>(); for (Iterator iter = pluginsNodes.iterator(); iter.hasNext();) { Node pluginNode = (Node) iter.next(); - Plugin plugin = getPlugin(pluginNode); + Plugin plugin = getPlugin(pluginNode, scorePlugins); if (plugin != null) { plugins.add(plugin); @@ -193,7 +192,7 @@ return plugins; } - private Plugin getPlugin(Node pluginNode) { + private Plugin getPlugin(Node pluginNode, boolean scorePlugin) { // Get plugin info from pluginNode String pluginType = pluginNode.getNodeName(); @@ -219,10 +218,10 @@ try { plugin = (Plugin) pluginClass.newInstance(); - if (pluginType == STATUS_PLUGIN_ELEMENT) { - ((StatusPlugin) plugin).init(pluginName, pluginId, projects, pluginSpecificPropertiesNode); - } else { /* score plugin */ + if (scorePlugin) { ((ScorePlugin) plugin).init(pluginName, pluginId, statusPlugins, pluginSpecificPropertiesNode); + } else { /* score plugin */ + ((StatusPlugin) plugin).init(pluginName, pluginId, projects, pluginSpecificPropertiesNode); } } catch (InvalidPluginPropertiesException e) { Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusDescriptor.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusDescriptor.java 2005-12-13 17:04:18 UTC (rev 1805) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusDescriptor.java 2005-12-13 18:03:47 UTC (rev 1806) @@ -48,14 +48,17 @@ String statusPath = StatusTools.getXmlCmPath(portalName); Node statusRoot = getRoot(cm , statusPath); - String pluginsPath = StatusTools.getXmlPluginsCmPath(portalName); - Node pluginsRoot = getRoot(cm, pluginsPath); + String statusPluginsPath = StatusTools.getXmlStatusPluginsCmPath(portalName); + Node statusPluginsRoot = getRoot(cm, statusPluginsPath); + String scorePluginsPath = StatusTools.getXmlScorePluginsCmPath(portalName); + Node scorePluginsRoot = getRoot(cm, scorePluginsPath); + /* if ((root.getNodeType() == Node.ELEMENT_NODE) && (root.getNodeName().equals("projects"))) {}*/ - status = new Status(portalName, statusRoot, pluginsRoot); + status = new Status(portalName, statusRoot, statusPluginsRoot, scorePluginsRoot); fillContext(); Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusTools.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusTools.java 2005-12-13 17:04:18 UTC (rev 1805) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusTools.java 2005-12-13 18:03:47 UTC (rev 1806) @@ -14,8 +14,9 @@ /** * <code>STATUS_XML<code> - file defining the list of watched feeds */ - private final static String STATUS_XML = "status.xml"; - private final static String PLUGINS_XML = "plugins.xml"; + private final static String STATUS_XML = "status.xml"; + private final static String STATUS_PLUGINS_XML = "status-plugins.xml"; + private final static String SCORE_PLUGINS_XML = "score-plugins.xml"; /** * <code>STATUS_DIR</code> - directory in which file <code>PODCAST_XML<code> is stored. @@ -32,12 +33,12 @@ return portalName + "/" + STATUS_DIR + "/" + STATUS_XML; } - public static String getXmlPluginsCmPath(String portalName) { - return portalName + "/" + STATUS_DIR + "/" + PLUGINS_XML; + public static String getXmlStatusPluginsCmPath(String portalName) { + return portalName + "/" + STATUS_DIR + "/" + STATUS_PLUGINS_XML; } - public static String getXmlCmPath(String portalName, String filename) { - return portalName + "/" + STATUS_DIR + "/" + filename; + public static String getXmlScorePluginsCmPath(String portalName) { + return portalName + "/" + STATUS_DIR + "/" + SCORE_PLUGINS_XML; } /** |