X-Git-Url: https://gerrit.onap.org/r/gitweb?p=dmaap%2Fdatarouter.git;a=blobdiff_plain;f=datarouter-prov%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fdmaap%2Fdatarouter%2Fprovisioning%2FRouteServlet.java;h=8506530b76f29be288bd8518e1e00a508bd6e235;hp=12699a49d8e146783d1cf5c8e63e19d0b54a0a39;hb=6fb37eb225e48b58b1f30fc0423d19046509a54b;hpb=233898bab542c5425af9f6240955bad3904f9838 diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/RouteServlet.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/RouteServlet.java index 12699a49..8506530b 100644 --- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/RouteServlet.java +++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/RouteServlet.java @@ -24,14 +24,15 @@ package org.onap.dmaap.datarouter.provisioning; +import static org.onap.dmaap.datarouter.provisioning.utils.HttpServletUtils.sendResponseError; + import java.io.IOException; import java.util.Set; - import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; - import org.json.JSONException; import org.json.JSONObject; + import org.onap.dmaap.datarouter.provisioning.beans.Deleteable; import org.onap.dmaap.datarouter.provisioning.beans.EgressRoute; import org.onap.dmaap.datarouter.provisioning.beans.EventLogRecord; @@ -40,7 +41,7 @@ import org.onap.dmaap.datarouter.provisioning.beans.Insertable; import org.onap.dmaap.datarouter.provisioning.beans.NetworkRoute; import org.onap.dmaap.datarouter.provisioning.beans.NodeClass; -import static org.onap.dmaap.datarouter.provisioning.utils.HttpServletUtils.sendResponseError; + /** *

@@ -50,7 +51,10 @@ import static org.onap.dmaap.datarouter.provisioning.utils.HttpServletUtils.send *

*
* - * + * * * * @@ -109,6 +113,7 @@ import static org.onap.dmaap.datarouter.provisioning.utils.HttpServletUtils.send * and tonode. * *
URL Path Summary  + * URL Path Summary + *   + *
URL PathMethod
+ *
*

* Authorization to use these URLs is a little different than for other URLs on the provisioning server. * For the most part, the IP address that the request comes from should be either: @@ -128,7 +133,9 @@ import static org.onap.dmaap.datarouter.provisioning.utils.HttpServletUtils.send * @version $Id$ */ @SuppressWarnings("serial") + public class RouteServlet extends ProxyServlet { + /** * DELETE route table entries by deleting part of the route table tree. */ @@ -136,10 +143,10 @@ public class RouteServlet extends ProxyServlet { public void doDelete(HttpServletRequest req, HttpServletResponse resp) { EventLogRecord elr = new EventLogRecord(req); if (!isAuthorizedForInternal(req)) { - elr.setMessage("Unauthorized."); + elr.setMessage(UNAUTHORIZED); elr.setResult(HttpServletResponse.SC_FORBIDDEN); - eventlogger.info(elr); - sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, "Unauthorized.", eventlogger); + eventlogger.error(elr.toString()); + sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, UNAUTHORIZED, eventlogger); return; } if (isProxyOK(req) && isProxyServer()) { @@ -149,20 +156,23 @@ public class RouteServlet extends ProxyServlet { String path = req.getPathInfo(); String[] parts = path.substring(1).split("/"); - Deleteable[] d = null; - if (parts[0].equals("ingress")) { + Deleteable[] deleteables = null; + if ("ingress".equals(parts[0])) { if (parts.length == 4) { // /internal/route/ingress/// try { int feedid = Integer.parseInt(parts[1]); IngressRoute er = IngressRoute.getIngressRoute(feedid, parts[2], parts[3].replaceAll("!", "/")); if (er == null) { - sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "The specified ingress route does not exist.", eventlogger); + sendResponseError(resp, + HttpServletResponse.SC_NOT_FOUND, "The specified ingress route does not exist.", + eventlogger); return; } - d = new Deleteable[] { er }; + deleteables = new Deleteable[] { er }; } catch (NumberFormatException e) { - sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Invalid feed ID in 'delete ingress' command.", eventlogger); + sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, + "Invalid feed ID in 'delete ingress' command.", eventlogger); return; } } else if (parts.length == 2) { @@ -170,73 +180,82 @@ public class RouteServlet extends ProxyServlet { try { int seq = Integer.parseInt(parts[1]); Set set = IngressRoute.getIngressRoutesForSeq(seq); - d = set.toArray(new Deleteable[0]); + deleteables = set.toArray(new Deleteable[0]); } catch (NumberFormatException e) { - sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Invalid sequence number in 'delete ingress' command.", eventlogger); + sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, + "Invalid sequence number in 'delete ingress' command.", eventlogger); return; } } else { - sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Invalid number of arguments in 'delete ingress' command.", eventlogger); + sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, + "Invalid number of arguments in 'delete ingress' command.", eventlogger); return; } - } else if (parts[0].equals("egress")) { + } else if ("egress".equals(parts[0])) { if (parts.length == 2) { // /internal/route/egress/ try { int subid = Integer.parseInt(parts[1]); EgressRoute er = EgressRoute.getEgressRoute(subid); if (er == null) { - sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "The specified egress route does not exist.", eventlogger); + sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, + "The specified egress route does not exist.", eventlogger); return; } - d = new Deleteable[] { er }; + deleteables = new Deleteable[] { er }; } catch (NumberFormatException e) { - sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Invalid sub ID in 'delete egress' command.", eventlogger); + sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, + "Invalid sub ID in 'delete egress' command.", eventlogger); return; } } else { - sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Invalid number of arguments in 'delete egress' command.", eventlogger); + sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, + "Invalid number of arguments in 'delete egress' command.", eventlogger); return; } - } else if (parts[0].equals("network")) { + } else if ("network".equals(parts[0])) { if (parts.length == 3) { // /internal/route/network// - try {// + try { NetworkRoute nr = new NetworkRoute( NodeClass.normalizeNodename(parts[1]), NodeClass.normalizeNodename(parts[2]) ); - d = new Deleteable[] { nr }; + deleteables = new Deleteable[] { nr }; } catch (IllegalArgumentException e) { - sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "The specified network route does not exist.", eventlogger); + String message = "The specified network route does not exist."; + eventlogger.error(message, e); + sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, message, eventlogger); return; } } else { - sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Invalid number of arguments in 'delete network' command.", eventlogger); + sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, + "Invalid number of arguments in 'delete network' command.", eventlogger); return; } } - if (d == null) { - sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Bad URL.", eventlogger); + if (deleteables == null) { + sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, BAD_URL, eventlogger); return; } boolean rv = true; - for (Deleteable dd : d) { + for (Deleteable dd : deleteables) { rv &= doDelete(dd); } if (rv) { elr.setResult(HttpServletResponse.SC_OK); - eventlogger.info(elr); + eventlogger.info(elr.toString()); resp.setStatus(HttpServletResponse.SC_OK); provisioningDataChanged(); provisioningParametersChanged(); } else { // Something went wrong with the DELETE elr.setResult(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - eventlogger.info(elr); + eventlogger.error(elr.toString()); sendResponseError(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, DB_PROBLEM_MSG, eventlogger); } } + /** * GET route table entries from the route table tree specified by the URL path. */ @@ -244,10 +263,10 @@ public class RouteServlet extends ProxyServlet { public void doGet(HttpServletRequest req, HttpServletResponse resp) { EventLogRecord elr = new EventLogRecord(req); if (!isAuthorizedForInternal(req)) { - elr.setMessage("Unauthorized."); + elr.setMessage(UNAUTHORIZED); elr.setResult(HttpServletResponse.SC_FORBIDDEN); - eventlogger.info(elr); - sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, "Unauthorized.", eventlogger); + eventlogger.error(elr.toString()); + sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, UNAUTHORIZED, eventlogger); return; } if (isProxyOK(req) && isProxyServer()) { @@ -256,16 +275,17 @@ public class RouteServlet extends ProxyServlet { } String path = req.getPathInfo(); - if (!path.endsWith("/")) + if (!path.endsWith("/")) { path += "/"; - if (!path.equals("/") && !path.equals("/ingress/") && !path.equals("/egress/") && !path.equals("/network/")) { - sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Bad URL.", eventlogger); + } + if (!"/".equals(path) && !INGRESS.equals(path) && !EGRESS.equals(path) && !NETWORK.equals(path)) { + sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, BAD_URL, eventlogger); return; } StringBuilder sb = new StringBuilder("{\n"); String px2 = ""; - if (path.equals("/") || path.equals("/ingress/")) { + if ("/".equals(path) || INGRESS.equals(path)) { String pfx = "\n"; sb.append("\"ingress\": ["); for (IngressRoute in : IngressRoute.getAllIngressRoutes()) { @@ -277,7 +297,7 @@ public class RouteServlet extends ProxyServlet { px2 = ",\n"; } - if (path.equals("/") || path.equals("/egress/")) { + if ("/".equals(path) || EGRESS.equals(path)) { String pfx = "\n"; sb.append(px2); sb.append("\"egress\": {"); @@ -289,7 +309,7 @@ public class RouteServlet extends ProxyServlet { try { sb.append("\"").append(jx.getString(key)).append("\""); } catch (JSONException je) { - eventlogger.error("JSONException" + je.getMessage()); + eventlogger.error("PROV0161 RouteServlet.doGet: " + je.getMessage(), je); } pfx = ",\n"; } @@ -298,7 +318,7 @@ public class RouteServlet extends ProxyServlet { px2 = ",\n"; } - if (path.equals("/") || path.equals("/network/")) { + if ("/".equals(path) || NETWORK.equals(path)) { String pfx = "\n"; sb.append(px2); sb.append("\"routing\": ["); @@ -315,9 +335,10 @@ public class RouteServlet extends ProxyServlet { try { resp.getOutputStream().print(sb.toString()); } catch (IOException ioe) { - eventlogger.error("IOException" + ioe.getMessage()); + eventlogger.error("PROV0162 RouteServlet.doGet: " + ioe.getMessage(), ioe); } } + /** * PUT on </internal/route/*> -- not supported. */ @@ -325,14 +346,15 @@ public class RouteServlet extends ProxyServlet { public void doPut(HttpServletRequest req, HttpServletResponse resp) { EventLogRecord elr = new EventLogRecord(req); if (!isAuthorizedForInternal(req)) { - elr.setMessage("Unauthorized."); + elr.setMessage(UNAUTHORIZED); elr.setResult(HttpServletResponse.SC_FORBIDDEN); - eventlogger.info(elr); - sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, "Unauthorized.", eventlogger); + eventlogger.error(elr.toString()); + sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, UNAUTHORIZED, eventlogger); return; } - sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Bad URL.", eventlogger); + sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, BAD_URL, eventlogger); } + /** * POST - modify existing route table entries in the route table tree specified by the URL path. */ @@ -340,10 +362,10 @@ public class RouteServlet extends ProxyServlet { public void doPost(HttpServletRequest req, HttpServletResponse resp) { EventLogRecord elr = new EventLogRecord(req); if (!isAuthorizedForInternal(req)) { - elr.setMessage("Unauthorized."); + elr.setMessage(UNAUTHORIZED); elr.setResult(HttpServletResponse.SC_FORBIDDEN); - eventlogger.info(elr); - sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, "Unauthorized.", eventlogger); + eventlogger.error(elr.toString()); + sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, UNAUTHORIZED, eventlogger); return; } if (isProxyOK(req) && isProxyServer()) { @@ -352,50 +374,57 @@ public class RouteServlet extends ProxyServlet { } String path = req.getPathInfo(); Insertable[] ins = null; - if (path.startsWith("/ingress/")) { + if (path.startsWith(INGRESS)) { // /internal/route/ingress/?feed=%s&user=%s&subnet=%s&nodepatt=%s try { // Although it probably doesn't make sense, you can install two identical routes in the IRT int feedid = Integer.parseInt(req.getParameter("feed")); String user = req.getParameter("user"); - if (user == null) + if (user == null) { user = "-"; + } String subnet = req.getParameter("subnet"); - if (subnet == null) + if (subnet == null) { subnet = "-"; + } String nodepatt = req.getParameter("nodepatt"); - String t = req.getParameter("seq"); - int seq = (t != null) ? Integer.parseInt(t) : (IngressRoute.getMaxSequence() + 100); - ins = new Insertable[] { new IngressRoute(seq, feedid, user, subnet, NodeClass.lookupNodeNames(nodepatt)) }; + String str = req.getParameter("seq"); + int seq = (str != null) ? Integer.parseInt(str) : (IngressRoute.getMaxSequence() + 100); + ins = new Insertable[] { new IngressRoute(seq, feedid, + user, subnet, NodeClass.lookupNodeNames(nodepatt)) }; } catch (Exception e) { - intlogger.info(e); - sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, "Invalid arguments in 'add ingress' command.", intlogger); + intlogger.info(e.toString(), e); + sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, + "Invalid arguments in 'add ingress' command.", intlogger); return; } - } else if (path.startsWith("/egress/")) { + } else if (path.startsWith(EGRESS)) { // /internal/route/egress/?sub=%s&node=%s try { int subid = Integer.parseInt(req.getParameter("sub")); EgressRoute er = EgressRoute.getEgressRoute(subid); if (er != null) { - sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, "An egress route already exists for that subscriber.", intlogger); + sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, + "An egress route already exists for that subscriber.", intlogger); return; } String node = NodeClass.normalizeNodename(req.getParameter("node")); ins = new Insertable[] { new EgressRoute(subid, node) }; } catch (Exception e) { - intlogger.info(e); - sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, "Invalid arguments in 'add egress' command.", intlogger); + intlogger.info(e.toString(), e); + sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, + "Invalid arguments in 'add egress' command.", intlogger); return; } - } else if (path.startsWith("/network/")) { + } else if (path.startsWith(NETWORK)) { // /internal/route/network/?from=%s&to=%s&via=%s try { String nfrom = req.getParameter("from"); String nto = req.getParameter("to"); String nvia = req.getParameter("via"); if (nfrom == null || nto == null || nvia == null) { - sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, "Missing arguments in 'add network' command.", intlogger); + sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, + "Missing arguments in 'add network' command.", intlogger); return; } nfrom = NodeClass.normalizeNodename(nfrom); @@ -404,19 +433,22 @@ public class RouteServlet extends ProxyServlet { NetworkRoute nr = new NetworkRoute(nfrom, nto, nvia); for (NetworkRoute route : NetworkRoute.getAllNetworkRoutes()) { if (route.getFromnode() == nr.getFromnode() && route.getTonode() == nr.getTonode()) { - sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, "Network route table already contains a route for " + nfrom + " and " + nto, intlogger); + sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, + "Network route table already contains a route for " + nfrom + + " and " + nto, intlogger); return; } } ins = new Insertable[] { nr }; } catch (IllegalArgumentException e) { - intlogger.info(e); - sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, "Invalid arguments in 'add network' command.", intlogger); + intlogger.info(e.toString(), e); + sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, + "Invalid arguments in 'add network' command.", intlogger); return; } } if (ins == null) { - sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Bad URL.", intlogger); + sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, BAD_URL, intlogger); return; } boolean rv = true; @@ -425,14 +457,14 @@ public class RouteServlet extends ProxyServlet { } if (rv) { elr.setResult(HttpServletResponse.SC_OK); - eventlogger.info(elr); + eventlogger.info(elr.toString()); resp.setStatus(HttpServletResponse.SC_OK); provisioningDataChanged(); provisioningParametersChanged(); } else { // Something went wrong with the INSERT elr.setResult(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - eventlogger.info(elr); + eventlogger.error(elr.toString()); sendResponseError(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, DB_PROBLEM_MSG, intlogger); } }