From: Alex Bennee <a...@cbnl.com> This is another pre-requisite for slippy maps. This adds a number of servlets that allow fetching of node data in a JSON encoded form for processing by client side JavaScript. The new servlets are:
* getMapViewCategories - fetch a list of categories * getMapNodes - fetch a list of nodes based on category --- .../org/opennms/web/nodemap/CategoryResult.java | 57 +++ .../org/opennms/web/nodemap/CategoryServlet.java | 154 +++++++ .../org/opennms/web/nodemap/MapNodeServlet.java | 449 ++++++++++++++++++++ .../java/org/opennms/web/nodemap/NodeResult.java | 152 +++++++ opennms-webapp/src/main/webapp/WEB-INF/web.xml | 21 + 5 files changed, 833 insertions(+), 0 deletions(-) create mode 100644 opennms-webapp/src/main/java/org/opennms/web/nodemap/CategoryResult.java create mode 100644 opennms-webapp/src/main/java/org/opennms/web/nodemap/CategoryServlet.java create mode 100644 opennms-webapp/src/main/java/org/opennms/web/nodemap/MapNodeServlet.java create mode 100644 opennms-webapp/src/main/java/org/opennms/web/nodemap/NodeResult.java diff --git a/opennms-webapp/src/main/java/org/opennms/web/nodemap/CategoryResult.java b/opennms-webapp/src/main/java/org/opennms/web/nodemap/CategoryResult.java new file mode 100644 index 0000000..e9b0f21 --- /dev/null +++ b/opennms-webapp/src/main/java/org/opennms/web/nodemap/CategoryResult.java @@ -0,0 +1,57 @@ + +package org.opennms.web.nodemap; + + +public class CategoryResult { + + private int id; + private String name; + private String description; + + public int getId() { + return id; + } + + public String getName() { + return name; + } + + public String getDesc() { + return description; + } + + public void setDesc(String desc) { + this.description = desc; + } + + public void setName(String name) { + this.name = name; + } + + public void setId(int id) { + this.id = id; + } + + + public CategoryResult(int id, String name, String desc) { + this.id = id; + this.name = name; + this.description = desc; + } + + public CategoryResult() { + } + + public String toJson() { + String out = "{ "; + + out += "\"id\": " + id + ", "; + out += "\"name\": \"" + name + "\", "; + out += "\"description\": \"" + description + "\""; + out += " }"; + + return out; + + } + +} diff --git a/opennms-webapp/src/main/java/org/opennms/web/nodemap/CategoryServlet.java b/opennms-webapp/src/main/java/org/opennms/web/nodemap/CategoryServlet.java new file mode 100644 index 0000000..5621b60 --- /dev/null +++ b/opennms-webapp/src/main/java/org/opennms/web/nodemap/CategoryServlet.java @@ -0,0 +1,154 @@ +// +// This file is part of the OpenNMS(R) Application. +// +// OpenNMS(R) is Copyright (C) 2002-2003 The OpenNMS Group, Inc. All rights reserved. +// OpenNMS(R) is a derivative work, containing both original code, included code and modified +// code that was published under the GNU General Public License. Copyrights for modified +// and included code are below. +// +// OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. +// +// Copyright (C) 1999-2001 Oculan Corp. All rights reserved. +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// +// For more information contact: +// OpenNMS Licensing <lice...@opennms.org> +// http://www.opennms.org/ +// http://www.opennms.com/ +// + +package org.opennms.web.nodemap; + +import java.io.IOException; +import java.io.PrintWriter; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.opennms.core.utils.DBUtils; +import org.opennms.netmgt.config.DataSourceFactory; + +public class CategoryServlet extends HttpServlet { + private static final long serialVersionUID = 1L; + + + public void init() throws ServletException { + try { + DataSourceFactory.init(); + } catch (Exception e) { + } + } + + private static final String GET_CAT_QUERY = "SELECT categoryid, categoryname, categorydescription FROM categories"; + + + private List<CategoryResult> getCats() throws SQLException { + final DBUtils d = new DBUtils(); + Connection connection = null; + List<CategoryResult> categories = new ArrayList<CategoryResult>(); + + try { + PreparedStatement stmt; + ResultSet results; + + connection = DataSourceFactory.getInstance().getConnection(); + d.watch(connection); + + stmt = connection.prepareStatement(GET_CAT_QUERY); + d.watch(stmt); + + results = stmt.executeQuery(); + d.watch(results); + + if (results != null) { + while (results.next()) { + CategoryResult cat = new CategoryResult(); + + cat.setId(results.getInt(1)); + cat.setName(results.getString(2)); + cat.setDesc(results.getString(3)); + + categories.add(cat); + } + } + } finally { + d.cleanUp(); + } + + + return categories; + } + + private String getResponse() throws SQLException { + String out = ""; + List<CategoryResult> cats = getCats(); + + out += "["; + for (CategoryResult cat : cats) { + out += cat.toJson() + ",\n"; + } + out += "]"; + + return out; + } + + + protected void doGet(HttpServletRequest req, + HttpServletResponse res) + throws ServletException, IOException + { + String out_str; + + + PrintWriter out = res.getWriter(); + + try { + String obj_str = getResponse(); + res.setContentType("text/plain"); + out_str = obj_str; + } catch (Exception e) { + final StackTraceElement[] stackTrace = e.getStackTrace(); + String st = ""; + for (StackTraceElement element : stackTrace) { + st += "Exception thrown from " + element.getMethodName() + + " in class " + element.getClassName() + + " [on line number " + element.getLineNumber() + + " of file " + element.getFileName() + "]<br/>"; + } + + res.setContentType("text/html"); + out_str = "<HTML><HEAD><TITLE>Hello Client</TITLE>"+ + "</HEAD><BODY>"+ e + "<br/>"+ st + "</BODY></HTML>"; + } + + + out.println(out_str); + out.close(); + } + + public String getServletInfo() + { + return "HelloClientServlet 1.0 by Stefan Zeiger"; + } +} diff --git a/opennms-webapp/src/main/java/org/opennms/web/nodemap/MapNodeServlet.java b/opennms-webapp/src/main/java/org/opennms/web/nodemap/MapNodeServlet.java new file mode 100644 index 0000000..6d5612e --- /dev/null +++ b/opennms-webapp/src/main/java/org/opennms/web/nodemap/MapNodeServlet.java @@ -0,0 +1,449 @@ +// +// This file is part of the OpenNMS(R) Application. +// +// OpenNMS(R) is Copyright (C) 2002-2003 The OpenNMS Group, Inc. All rights reserved. +// OpenNMS(R) is a derivative work, containing both original code, included code and modified +// code that was published under the GNU General Public License. Copyrights for modified +// and included code are below. +// +// OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. +// +// Modifications: +// +// Copyright (C) 1999-2010 Cambridge Broadband Networks. All rights reserved. +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// +// For more information contact: +// OpenNMS Licensing <lice...@opennms.org> +// http://www.opennms.org/ +// http://www.opennms.com/ +// + +package org.opennms.web.nodemap; + +import java.io.IOException; +import java.io.PrintWriter; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.HashMap; +import java.util.List; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.opennms.core.utils.DBUtils; +import org.opennms.netmgt.config.DataSourceFactory; + +/* + MapNodeServlet + + This servlet is used to supply a list of nodes to the node_map implementation. + The data is returned as JSON encoded text ready to be processed by the node map + JavaScript. + */ + +public class MapNodeServlet extends HttpServlet { + private static final long serialVersionUID = 1L; + + + private Timestamp getNow() { + Calendar cal = new GregorianCalendar(); + Date end = cal.getTime(); + + return new Timestamp(end.getTime()); + } + + private Timestamp getYesterday() { + Calendar cal = new GregorianCalendar(); + cal.add(Calendar.DATE, -1); + Date start = cal.getTime(); + + return new Timestamp(start.getTime()); + } + + + public void init() throws ServletException { + try { + DataSourceFactory.init(); + } catch (Exception e) { + } + } + + // Get nodes without parents + private static final String GET_PARENTS_QUERY = "SELECT node.nodeid, node.nodelabel, getManagePercentAvailNodeWindow(node.nodeid, ?, ?), node_geolocation.geolocationlatitude, node_geolocation.geolocationlongitude, node.foreignid FROM node INNER JOIN node_geolocation ON node_geolocation.nodeid = node.nodeid WHERE node.nodeparentid IS NULL ORDER BY node.nodeid"; + + // Get child nodes + private static final String GET_CHILDREN_QUERY = "SELECT node.nodeid, node.nodelabel, getManagePercentAvailNodeWindow(node.nodeid, ?, ?), node_geolocation.geolocationlatitude, node_geolocation.geolocationlongitude, node.nodeparentid, node.foreignid FROM node INNER JOIN node_geolocation ON node_geolocation.nodeid = node.nodeid WHERE node.nodeparentid IS NOT NULL AND node.nodeparentid = ? ORDER BY node.nodeparentid"; + + private static final String GET_CAT_QUERY = "SELECT node.nodeid, node.nodelabel, getManagePercentAvailNodeWindow(node.nodeid, ?, ?), node_geolocation.geolocationlatitude, node_geolocation.geolocationlongitude, node.nodeparentid, node.foreignid, category_node.categoryid FROM (node INNER JOIN node_geolocation ON node_geolocation.nodeid = node.nodeid) INNER JOIN category_node on category_node.nodeid = node.nodeid WHERE category_node.categoryid = ?"; + + private static final String GET_UCAT_QUERY = "SELECT node.nodeid, node.nodelabel, getManagePercentAvailNodeWindow(node.nodeid, ?, ?), node_geolocation.geolocationlatitude, node_geolocation.geolocationlongitude, node.nodeparentid, node.foreignid, category_node.categoryid FROM (node INNER JOIN node_geolocation ON node_geolocation.nodeid = node.nodeid) LEFT JOIN category_node on category_node.nodeid = node.nodeid WHERE category_node.categoryid IS NULL"; + + private static final String GET_OUTAGES_QUERY = "SELECT nodeid, eventuei,severity FROM alarms WHERE nodeid IS NOT NULL ORDER BY nodeid, lasteventtime desc"; + + + private void getStatus(List< HashMap<Integer, NodeResult> > hashes) throws SQLException { + final DBUtils d = new DBUtils(); + Connection connection = null; + + try { + PreparedStatement stmt; + ResultSet results; + NodeResult node; + + connection = DataSourceFactory.getInstance().getConnection(); + d.watch(connection); + + stmt = connection.prepareStatement(GET_OUTAGES_QUERY); + d.watch(stmt); + + results = stmt.executeQuery(); + d.watch(results); + + if (results != null) { + while (results.next()) { + int nodeid = results.getInt(1); + String uei = results.getString(2); + int severity = results.getInt(3); + + for (HashMap<Integer, NodeResult> nodes : hashes) { + node = nodes.get(nodeid); + + if (node != null) { + node.setEventUei(uei); + node.setSeverity(severity); + } + } + } + } + + } finally { + d.cleanUp(); + } + + } + + // Create a hash map of all children (nodes with parents) + private HashMap<Integer, NodeResult> getChildren(int parent_id, int child_depth) throws SQLException { + final DBUtils d = new DBUtils(); + Connection connection = null; + HashMap<Integer, NodeResult> children = + new HashMap<Integer, NodeResult>(); + + try { + PreparedStatement stmt; + ResultSet results; + + connection = DataSourceFactory.getInstance().getConnection(); + d.watch(connection); + + stmt = connection.prepareStatement(GET_CHILDREN_QUERY); + stmt.setTimestamp(1, getNow()); + stmt.setTimestamp(2, getYesterday()); + stmt.setInt(3, parent_id); + d.watch(stmt); + + results = stmt.executeQuery(); + d.watch(results); + + if (results != null) { + while (results.next()) { + NodeResult child = new NodeResult(); + + child.setNodeId(results.getInt(1)); + child.setNodeLabel(results.getString(2)); + child.setAvail(results.getDouble(3)); + child.setGeolocationLat(results.getDouble(4)); + child.setGeolocationLon(results.getDouble(5)); + child.setParentNodeId(results.getInt(6)); + child.setForeignId(results.getString(7)); + child.setType(NodeResult.NODE_TYPE_CHILD); + + children.put(child.getNodeId(), child); + } + } + } finally { + d.cleanUp(); + } + + /* recurse deeper? */ + if (child_depth>0) { + List< HashMap<Integer, NodeResult> > hashes = new ArrayList< HashMap<Integer, NodeResult> >(); + for (NodeResult p : children.values()) { + HashMap<Integer, NodeResult> more_children = getChildren(p.getNodeId(), child_depth-1); + hashes.add(more_children); + for (NodeResult child : more_children.values()) { + p.addChild(child); + } + } + getStatus(hashes); + } + + return children; + } + + + private HashMap<Integer, NodeResult> getCategory(int category_id) throws SQLException { + final DBUtils d = new DBUtils(); + Connection connection = null; + HashMap<Integer, NodeResult> nodes = + new HashMap<Integer, NodeResult>(); + + try { + PreparedStatement stmt; + ResultSet results; + + connection = DataSourceFactory.getInstance().getConnection(); + d.watch(connection); + + if (category_id >= 0) { + stmt = connection.prepareStatement(GET_CAT_QUERY); + } else { + stmt = connection.prepareStatement(GET_UCAT_QUERY); + } + stmt.setTimestamp(1, getNow()); + stmt.setTimestamp(2, getYesterday()); + + if (category_id >= 0) { + stmt.setInt(3, category_id); + } + d.watch(stmt); + + results = stmt.executeQuery(); + d.watch(results); + + if (results != null) { + while (results.next()) { + NodeResult node = new NodeResult(); + + node.setNodeId(results.getInt(1)); + node.setNodeLabel(results.getString(2)); + node.setAvail(results.getDouble(3)); + node.setGeolocationLat(results.getDouble(4)); + node.setGeolocationLon(results.getDouble(5)); + node.setParentNodeId(results.getInt(6)); + node.setForeignId(results.getString(7)); + node.setType(NodeResult.NODE_TYPE_GENERAL); + + nodes.put(node.getNodeId(), node); + } + } + } finally { + d.cleanUp(); + } + + return nodes; + } + + + private HashMap<Integer, NodeResult> getParents() throws SQLException { + final DBUtils d = new DBUtils(); + Connection connection = null; + HashMap<Integer, NodeResult> parents = new HashMap<Integer, NodeResult>(); + + try { + PreparedStatement stmt; + ResultSet results; + + connection = DataSourceFactory.getInstance().getConnection(); + d.watch(connection); + + stmt = connection.prepareStatement(GET_PARENTS_QUERY); + stmt.setTimestamp(1, getNow()); + stmt.setTimestamp(2, getYesterday()); + d.watch(stmt); + + results = stmt.executeQuery(); + d.watch(results); + + if (results != null) { + while (results.next()) { + NodeResult p = new NodeResult(); + + p.setNodeId(results.getInt(1)); + p.setNodeLabel(results.getString(2)); + p.setAvail(results.getDouble(3)); + p.setGeolocationLat(results.getDouble(4)); + p.setGeolocationLon(results.getDouble(5)); + p.setForeignId(results.getString(6)); + p.setType(NodeResult.NODE_TYPE_PARENT); + + parents.put(p.getNodeId(), p); + } + } + } finally { + d.cleanUp(); + } + + + return parents; + } + + private String getFromCat(int category_id, int child_depth) throws SQLException { + String out = ""; + + HashMap<Integer, NodeResult> nodes = getCategory(category_id); + List< HashMap<Integer, NodeResult> > hashes = new ArrayList< HashMap<Integer, NodeResult> >(); + hashes.add(nodes); + + + out += "/* getFromCat("+category_id+") child_depth:"+child_depth+"\n"; + if (child_depth>0) { + for (NodeResult p : nodes.values()) { + HashMap<Integer, NodeResult> children = getChildren(p.getNodeId(), child_depth-1); + hashes.add(children); + + out += "Node:"+p.getNodeId()+"/"+p.getNodeLabel()+"/"+p.getForeignId()+" has "+children.size()+" children\n"; + + for (NodeResult child : children.values()) { + p.addChild(child); + } + } + } + out += "*/\n"; + + // process the status of each element + getStatus(hashes); + + // The actual json data + out += "["; + for (NodeResult node : nodes.values()) { + out += node.toJson() + ",\n"; + } + out += "]"; + + return out; + } + + private String getAll(int child_depth) throws SQLException { + String out = ""; + + HashMap<Integer, NodeResult> parents = getParents(); + + List< HashMap<Integer, NodeResult> > hashes = new ArrayList< HashMap<Integer, NodeResult> >(); + hashes.add(parents); + + + // Debugging output in the response, ignored by the JavaScript + out += "/* getAll() child_depth:"+child_depth+"\n"; + + if (child_depth>0) { + for (NodeResult p : parents.values()) { + HashMap<Integer, NodeResult> children = getChildren(p.getNodeId(), child_depth-1); + hashes.add(children); + + out += "Node:"+p.getNodeId()+"/"+p.getNodeLabel()+"/"+p.getForeignId()+" has "+children.size()+" children\n"; + + for (NodeResult child : children.values()) { + p.addChild(child); + } + } + } + out += "*/\n"; + + // process the status of each element + getStatus(hashes); + + // The actual json data + out += "["; + + for (NodeResult p : parents.values()) { + out += p.toJson() + ",\n"; + } + out += "]"; + + return out; + } + + + private String getResponse(String category, String depth) throws SQLException { + int child_depth = 0; + try { + child_depth = Integer.parseInt(depth); + } catch (NumberFormatException e) { + child_depth = 0; + } + + if (category != null) { + if (category.equals("ALL")) { + return getAll(child_depth); + } else if (category.equals("UCAT")) { + return getFromCat(-1, 0); + } else { + int cat; + + try { + cat = Integer.parseInt(category); + return getFromCat(cat, child_depth); + } catch (NumberFormatException e) { + return getAll(child_depth); + } + } + } else { + return getAll(child_depth); + } + } + + // Main entry into servlet + protected void doGet(HttpServletRequest req, + HttpServletResponse res) + throws ServletException, IOException + { + String out_str; + + String category = req.getParameter("cat"); + String child_depth = req.getParameter("depth"); + + PrintWriter out = res.getWriter(); + + try { + String obj_str = getResponse(category, child_depth); + res.setContentType("text/plain"); + out_str = obj_str; + } catch (Exception e) { + final StackTraceElement[] stackTrace = e.getStackTrace(); + String st = ""; + for (StackTraceElement element : stackTrace) { + st += "Exception thrown from " + element.getMethodName() + + " in class " + element.getClassName() + + " [on line number " + element.getLineNumber() + + " of file " + element.getFileName() + "]<br/>"; + } + + res.setContentType("text/html"); + out_str = "<HTML><HEAD><TITLE>Unexpected Error</TITLE>"+ + "</HEAD><BODY>"+ e + "<br/>"+ st + "</BODY></HTML>"; + } + + + out.println(out_str); + out.close(); + } + + public String getServletInfo() + { + return "HelloClientServlet 1.0 by Stefan Zeiger"; + } +} diff --git a/opennms-webapp/src/main/java/org/opennms/web/nodemap/NodeResult.java b/opennms-webapp/src/main/java/org/opennms/web/nodemap/NodeResult.java new file mode 100644 index 0000000..efd5371 --- /dev/null +++ b/opennms-webapp/src/main/java/org/opennms/web/nodemap/NodeResult.java @@ -0,0 +1,152 @@ + +package org.opennms.web.nodemap; + +import java.text.DecimalFormat; +import java.util.List; +import java.util.ArrayList; + +public class NodeResult { + + private int nodeId; + private int parentNodeId; + private int type; + private String nodeLabel; + private String foreignId; + private double geolocationLat; + private double geolocationLon; + private double avail; + + public static final int NODE_TYPE_GENERAL = 0; + public static final int NODE_TYPE_CHILD = 1; + public static final int NODE_TYPE_PARENT = 2; + + private static final DecimalFormat AVAILABILITY_FORMAT = new DecimalFormat("0.000"); + + // select nodeid, eventuei,severity from alarms where nodeid is not null and severity > 3 order by nodeid, lasteventtime desc; + private String eventuei; + private int severity; + + /* + Handling for children + */ + + private List<NodeResult> children; + + NodeResult() { + children = new ArrayList<NodeResult>(); + } + + public void addChild(NodeResult child) { + children.add(child); + } + + public void setEventUei(String eventuei) { + this.eventuei = eventuei; + } + + public void setForeignId(String fid) { + this.foreignId = fid; + } + + public String getEventUei() { + return eventuei; + } + + public String getForeignId() { + return foreignId; + } + + public void setSeverity(int severity) { + this.severity = severity; + } + + public int getSeverity() { + return severity; + } + + public void setAvail(double avail) { + this.avail = avail; + } + + public double getAvail() { + return avail; + } + + public int getType() { + return type; + } + + public void setNodeId(int nodeId) { + this.nodeId = nodeId; + } + + public void setType(int type) { + this.type = type; + } + + public int getNodeId() { + return nodeId; + } + + public void setParentNodeId(int parentNodeId) { + this.parentNodeId = parentNodeId; + } + + public int getParentNodeId() { + return parentNodeId; + } + + public void setNodeLabel(String nodeLabel) { + this.nodeLabel = nodeLabel; + } + + public String getNodeLabel() { + return nodeLabel; + } + + public void setGeolocationLat(double lat) { + this.geolocationLat = lat; + } + + public double getGeolocationLat() { + return geolocationLat; + } + + public void setGeolocationLon(double lon) { + this.geolocationLon = lon; + } + + public double getGeolocationLon() { + return geolocationLon; + } + + public String formatAvailability() { + return AVAILABILITY_FORMAT.format(avail); + } + + public String toJson() { + String out = "{ \"nodeId\" : " + nodeId + ", " + + "\"type\" : " + type + ", " + + "\"parentnodeid\" : \"" + parentNodeId + "\", " + + "\"nodeLabel\" : \"" + nodeLabel + "\", " + + "\"avail\" : \"" + formatAvailability() + "\", " + + "\"latitude\" : " + geolocationLat + ", " + + "\"longitude\" : " + geolocationLon + ", " + + "\"eventuei\" : \"" + eventuei + "\", " + + "\"foreignId\" : \"" + foreignId + "\", " + + "\"severity\" : " + severity; + + // If we have children dump them too... + if (!children.isEmpty()) { + out += ", \"children\" : [\n"; + for (NodeResult child : children) { + out += "\t" + child.toJson() + ",\n"; + } + out += "]"; + } + + out += "}\n"; + return out; + } + +} diff --git a/opennms-webapp/src/main/webapp/WEB-INF/web.xml b/opennms-webapp/src/main/webapp/WEB-INF/web.xml index 5dc3a6a..c000855 100644 --- a/opennms-webapp/src/main/webapp/WEB-INF/web.xml +++ b/opennms-webapp/src/main/webapp/WEB-INF/web.xml @@ -598,6 +598,17 @@ </servlet> <servlet> + <servlet-name>getMapNodes</servlet-name> + <servlet-class>org.opennms.web.nodemap.MapNodeServlet</servlet-class> + </servlet> + + <servlet> + <servlet-name>getMapViewCategories</servlet-name> + <servlet-class>org.opennms.web.nodemap.CategoryServlet</servlet-class> + </servlet> + + + <servlet> <servlet-name>nodeRescan</servlet-name> <servlet-class>org.opennms.web.element.NodeRescanServlet</servlet-class> </servlet> @@ -888,6 +899,16 @@ </servlet-mapping> <servlet-mapping> + <servlet-name>getMapNodes</servlet-name> + <url-pattern>/nodemap/getMapNodes</url-pattern> + </servlet-mapping> + + <servlet-mapping> + <servlet-name>getMapViewCategories</servlet-name> + <url-pattern>/nodemap/getMapViewCategories</url-pattern> + </servlet-mapping> + + <servlet-mapping> <servlet-name>nodeRescan</servlet-name> <url-pattern>/element/rescan</url-pattern> </servlet-mapping> -- 1.7.5.2 ------------------------------------------------------------------------------ Simplify data backup and recovery for your virtual environment with vRanger. Installation's a snap, and flexible recovery options mean your data is safe, secure and there when you need it. Data protection magic? Nope - It's vRanger. Get your free trial download today. http://p.sf.net/sfu/quest-sfdev2dev _______________________________________________ Please read the OpenNMS Mailing List FAQ: http://www.opennms.org/index.php/Mailing_List_FAQ opennms-devel mailing list To *unsubscribe* or change your subscription options, see the bottom of this page: https://lists.sourceforge.net/lists/listinfo/opennms-devel