\r
package org.onap.dmaap.datarouter.provisioning;\r
\r
+import static org.onap.dmaap.datarouter.provisioning.utils.HttpServletUtils.sendResponseError;\r
+\r
import java.io.IOException;\r
import java.util.Set;\r
-\r
-import javax.servlet.http.HttpServletRequest;\r
-import javax.servlet.http.HttpServletResponse;\r
-\r
+import jakarta.servlet.http.HttpServletRequest;\r
+import jakarta.servlet.http.HttpServletResponse;\r
import org.json.JSONException;\r
import org.json.JSONObject;\r
+\r
import org.onap.dmaap.datarouter.provisioning.beans.Deleteable;\r
import org.onap.dmaap.datarouter.provisioning.beans.EgressRoute;\r
import org.onap.dmaap.datarouter.provisioning.beans.EventLogRecord;\r
import org.onap.dmaap.datarouter.provisioning.beans.NetworkRoute;\r
import org.onap.dmaap.datarouter.provisioning.beans.NodeClass;\r
\r
-import static org.onap.dmaap.datarouter.provisioning.utils.HttpServletUtils.sendResponseError;\r
+\r
\r
/**\r
* <p>\r
* </p>\r
* <div class="contentContainer">\r
* <table class="packageSummary" border="0" cellpadding="3" cellspacing="0">\r
- * <caption><span>URL Path Summary</span><span class="tabEnd"> </span></caption>\r
+ * <caption>\r
+ * <span>URL Path Summary</span>\r
+ * <span class="tabEnd"> </span>\r
+ * </caption>\r
* <tr>\r
* <th class="colFirst" width="35%">URL Path</th>\r
* <th class="colOne">Method</th>\r
* and <i>tonode</i>.</td>\r
* </tr>\r
* </table>\r
+ * </div>\r
* <p>\r
* Authorization to use these URLs is a little different than for other URLs on the provisioning server.\r
* For the most part, the IP address that the request comes from should be either:\r
* @version $Id$\r
*/\r
@SuppressWarnings("serial")\r
+\r
public class RouteServlet extends ProxyServlet {\r
+\r
/**\r
* DELETE route table entries by deleting part of the route table tree.\r
*/\r
public void doDelete(HttpServletRequest req, HttpServletResponse resp) {\r
EventLogRecord elr = new EventLogRecord(req);\r
if (!isAuthorizedForInternal(req)) {\r
- elr.setMessage("Unauthorized.");\r
+ elr.setMessage(UNAUTHORIZED);\r
elr.setResult(HttpServletResponse.SC_FORBIDDEN);\r
- eventlogger.info(elr);\r
- sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, "Unauthorized.", eventlogger);\r
+ eventlogger.error(elr.toString());\r
+ sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, UNAUTHORIZED, eventlogger);\r
return;\r
}\r
if (isProxyOK(req) && isProxyServer()) {\r
- try {\r
- super.doDelete(req, resp);\r
- } catch (IOException ioe) {\r
- eventlogger.error("IOException" + ioe.getMessage());\r
- }\r
+ super.doDelete(req, resp);\r
return;\r
}\r
\r
String path = req.getPathInfo();\r
String[] parts = path.substring(1).split("/");\r
- Deleteable[] d = null;\r
- if (parts[0].equals("ingress")) {\r
+ Deleteable[] deleteables = null;\r
+ if ("ingress".equals(parts[0])) {\r
if (parts.length == 4) {\r
// /internal/route/ingress/<feed>/<user>/<subnet>\r
try {\r
int feedid = Integer.parseInt(parts[1]);\r
IngressRoute er = IngressRoute.getIngressRoute(feedid, parts[2], parts[3].replaceAll("!", "/"));\r
if (er == null) {\r
- sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "The specified ingress route does not exist.", eventlogger);\r
+ sendResponseError(resp,\r
+ HttpServletResponse.SC_NOT_FOUND, "The specified ingress route does not exist.",\r
+ eventlogger);\r
return;\r
}\r
- d = new Deleteable[] { er };\r
+ deleteables = new Deleteable[] { er };\r
} catch (NumberFormatException e) {\r
- sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Invalid feed ID in 'delete ingress' command.", eventlogger);\r
+ sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND,\r
+ "Invalid feed ID in 'delete ingress' command.", eventlogger);\r
return;\r
}\r
} else if (parts.length == 2) {\r
try {\r
int seq = Integer.parseInt(parts[1]);\r
Set<IngressRoute> set = IngressRoute.getIngressRoutesForSeq(seq);\r
- d = set.toArray(new Deleteable[0]);\r
+ deleteables = set.toArray(new Deleteable[0]);\r
} catch (NumberFormatException e) {\r
- sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Invalid sequence number in 'delete ingress' command.", eventlogger);\r
+ sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND,\r
+ "Invalid sequence number in 'delete ingress' command.", eventlogger);\r
return;\r
}\r
} else {\r
- sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Invalid number of arguments in 'delete ingress' command.", eventlogger);\r
+ sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND,\r
+ "Invalid number of arguments in 'delete ingress' command.", eventlogger);\r
return;\r
}\r
- } else if (parts[0].equals("egress")) {\r
+ } else if ("egress".equals(parts[0])) {\r
if (parts.length == 2) {\r
// /internal/route/egress/<sub>\r
try {\r
int subid = Integer.parseInt(parts[1]);\r
EgressRoute er = EgressRoute.getEgressRoute(subid);\r
if (er == null) {\r
- sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "The specified egress route does not exist.", eventlogger);\r
+ sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND,\r
+ "The specified egress route does not exist.", eventlogger);\r
return;\r
}\r
- d = new Deleteable[] { er };\r
+ deleteables = new Deleteable[] { er };\r
} catch (NumberFormatException e) {\r
- sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Invalid sub ID in 'delete egress' command.", eventlogger);\r
+ sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND,\r
+ "Invalid sub ID in 'delete egress' command.", eventlogger);\r
return;\r
}\r
} else {\r
- sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Invalid number of arguments in 'delete egress' command.", eventlogger);\r
+ sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND,\r
+ "Invalid number of arguments in 'delete egress' command.", eventlogger);\r
return;\r
}\r
- } else if (parts[0].equals("network")) {\r
+ } else if ("network".equals(parts[0])) {\r
if (parts.length == 3) {\r
// /internal/route/network/<from>/<to>\r
- try {//\r
+ try {\r
NetworkRoute nr = new NetworkRoute(\r
NodeClass.normalizeNodename(parts[1]),\r
NodeClass.normalizeNodename(parts[2])\r
);\r
- d = new Deleteable[] { nr };\r
+ deleteables = new Deleteable[] { nr };\r
} catch (IllegalArgumentException e) {\r
- sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "The specified network route does not exist.", eventlogger);\r
+ String message = "The specified network route does not exist.";\r
+ eventlogger.error(message, e);\r
+ sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, message, eventlogger);\r
return;\r
}\r
} else {\r
- sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Invalid number of arguments in 'delete network' command.", eventlogger);\r
+ sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND,\r
+ "Invalid number of arguments in 'delete network' command.", eventlogger);\r
return;\r
}\r
}\r
- if (d == null) {\r
- sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Bad URL.", eventlogger);\r
+ if (deleteables == null) {\r
+ sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, BAD_URL, eventlogger);\r
return;\r
}\r
boolean rv = true;\r
- for (Deleteable dd : d) {\r
+ for (Deleteable dd : deleteables) {\r
rv &= doDelete(dd);\r
}\r
if (rv) {\r
elr.setResult(HttpServletResponse.SC_OK);\r
- eventlogger.info(elr);\r
+ eventlogger.info(elr.toString());\r
resp.setStatus(HttpServletResponse.SC_OK);\r
provisioningDataChanged();\r
provisioningParametersChanged();\r
} else {\r
// Something went wrong with the DELETE\r
elr.setResult(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);\r
- eventlogger.info(elr);\r
+ eventlogger.error(elr.toString());\r
sendResponseError(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, DB_PROBLEM_MSG, eventlogger);\r
}\r
}\r
+\r
/**\r
* GET route table entries from the route table tree specified by the URL path.\r
*/\r
public void doGet(HttpServletRequest req, HttpServletResponse resp) {\r
EventLogRecord elr = new EventLogRecord(req);\r
if (!isAuthorizedForInternal(req)) {\r
- elr.setMessage("Unauthorized.");\r
+ elr.setMessage(UNAUTHORIZED);\r
elr.setResult(HttpServletResponse.SC_FORBIDDEN);\r
- eventlogger.info(elr);\r
- sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, "Unauthorized.", eventlogger);\r
+ eventlogger.error(elr.toString());\r
+ sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, UNAUTHORIZED, eventlogger);\r
return;\r
}\r
if (isProxyOK(req) && isProxyServer()) {\r
- try {\r
- super.doGet(req, resp);\r
- } catch (IOException ioe) {\r
- eventlogger.error("IOException" + ioe.getMessage());\r
- }\r
+ super.doGet(req, resp);\r
return;\r
}\r
\r
String path = req.getPathInfo();\r
- if (!path.endsWith("/"))\r
+ if (!path.endsWith("/")) {\r
path += "/";\r
- if (!path.equals("/") && !path.equals("/ingress/") && !path.equals("/egress/") && !path.equals("/network/")) {\r
- sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Bad URL.", eventlogger);\r
+ }\r
+ if (!"/".equals(path) && !INGRESS.equals(path) && !EGRESS.equals(path) && !NETWORK.equals(path)) {\r
+ sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, BAD_URL, eventlogger);\r
return;\r
}\r
\r
StringBuilder sb = new StringBuilder("{\n");\r
String px2 = "";\r
- if (path.equals("/") || path.equals("/ingress/")) {\r
+ if ("/".equals(path) || INGRESS.equals(path)) {\r
String pfx = "\n";\r
sb.append("\"ingress\": [");\r
for (IngressRoute in : IngressRoute.getAllIngressRoutes()) {\r
px2 = ",\n";\r
}\r
\r
- if (path.equals("/") || path.equals("/egress/")) {\r
+ if ("/".equals(path) || EGRESS.equals(path)) {\r
String pfx = "\n";\r
sb.append(px2);\r
sb.append("\"egress\": {");\r
try {\r
sb.append("\"").append(jx.getString(key)).append("\"");\r
} catch (JSONException je) {\r
- eventlogger.error("JSONException" + je.getMessage());\r
+ eventlogger.error("PROV0161 RouteServlet.doGet: " + je.getMessage(), je);\r
}\r
pfx = ",\n";\r
}\r
px2 = ",\n";\r
}\r
\r
- if (path.equals("/") || path.equals("/network/")) {\r
+ if ("/".equals(path) || NETWORK.equals(path)) {\r
String pfx = "\n";\r
sb.append(px2);\r
sb.append("\"routing\": [");\r
try {\r
resp.getOutputStream().print(sb.toString());\r
} catch (IOException ioe) {\r
- eventlogger.error("IOException" + ioe.getMessage());\r
+ eventlogger.error("PROV0162 RouteServlet.doGet: " + ioe.getMessage(), ioe);\r
}\r
}\r
+\r
/**\r
* PUT on </internal/route/*> -- not supported.\r
*/\r
public void doPut(HttpServletRequest req, HttpServletResponse resp) {\r
EventLogRecord elr = new EventLogRecord(req);\r
if (!isAuthorizedForInternal(req)) {\r
- elr.setMessage("Unauthorized.");\r
+ elr.setMessage(UNAUTHORIZED);\r
elr.setResult(HttpServletResponse.SC_FORBIDDEN);\r
- eventlogger.info(elr);\r
- sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, "Unauthorized.", eventlogger);\r
+ eventlogger.error(elr.toString());\r
+ sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, UNAUTHORIZED, eventlogger);\r
return;\r
}\r
- sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Bad URL.", eventlogger);\r
+ sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, BAD_URL, eventlogger);\r
}\r
+\r
/**\r
* POST - modify existing route table entries in the route table tree specified by the URL path.\r
*/\r
public void doPost(HttpServletRequest req, HttpServletResponse resp) {\r
EventLogRecord elr = new EventLogRecord(req);\r
if (!isAuthorizedForInternal(req)) {\r
- elr.setMessage("Unauthorized.");\r
+ elr.setMessage(UNAUTHORIZED);\r
elr.setResult(HttpServletResponse.SC_FORBIDDEN);\r
- eventlogger.info(elr);\r
- sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, "Unauthorized.", eventlogger);\r
+ eventlogger.error(elr.toString());\r
+ sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, UNAUTHORIZED, eventlogger);\r
return;\r
}\r
if (isProxyOK(req) && isProxyServer()) {\r
- try {\r
- super.doPost(req, resp);\r
- } catch (IOException ioe) {\r
- intlogger.error("IOException" + ioe.getMessage());\r
- }\r
+ super.doPost(req, resp);\r
return;\r
}\r
String path = req.getPathInfo();\r
Insertable[] ins = null;\r
- if (path.startsWith("/ingress/")) {\r
+ if (path.startsWith(INGRESS)) {\r
// /internal/route/ingress/?feed=%s&user=%s&subnet=%s&nodepatt=%s\r
try {\r
// Although it probably doesn't make sense, you can install two identical routes in the IRT\r
int feedid = Integer.parseInt(req.getParameter("feed"));\r
String user = req.getParameter("user");\r
- if (user == null)\r
+ if (user == null) {\r
user = "-";\r
+ }\r
String subnet = req.getParameter("subnet");\r
- if (subnet == null)\r
+ if (subnet == null) {\r
subnet = "-";\r
+ }\r
String nodepatt = req.getParameter("nodepatt");\r
- String t = req.getParameter("seq");\r
- int seq = (t != null) ? Integer.parseInt(t) : (IngressRoute.getMaxSequence() + 100);\r
- ins = new Insertable[] { new IngressRoute(seq, feedid, user, subnet, NodeClass.lookupNodeNames(nodepatt)) };\r
+ String str = req.getParameter("seq");\r
+ int seq = (str != null) ? Integer.parseInt(str) : (IngressRoute.getMaxSequence() + 100);\r
+ ins = new Insertable[] { new IngressRoute(seq, feedid,\r
+ user, subnet, NodeClass.lookupNodeNames(nodepatt)) };\r
} catch (Exception e) {\r
- intlogger.info(e);\r
- sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, "Invalid arguments in 'add ingress' command.", intlogger);\r
+ intlogger.info(e.toString(), e);\r
+ sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST,\r
+ "Invalid arguments in 'add ingress' command.", intlogger);\r
return;\r
}\r
- } else if (path.startsWith("/egress/")) {\r
+ } else if (path.startsWith(EGRESS)) {\r
// /internal/route/egress/?sub=%s&node=%s\r
try {\r
int subid = Integer.parseInt(req.getParameter("sub"));\r
EgressRoute er = EgressRoute.getEgressRoute(subid);\r
if (er != null) {\r
- sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, "An egress route already exists for that subscriber.", intlogger);\r
+ sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST,\r
+ "An egress route already exists for that subscriber.", intlogger);\r
return;\r
}\r
String node = NodeClass.normalizeNodename(req.getParameter("node"));\r
ins = new Insertable[] { new EgressRoute(subid, node) };\r
} catch (Exception e) {\r
- intlogger.info(e);\r
- sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, "Invalid arguments in 'add egress' command.", intlogger);\r
+ intlogger.info(e.toString(), e);\r
+ sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST,\r
+ "Invalid arguments in 'add egress' command.", intlogger);\r
return;\r
}\r
- } else if (path.startsWith("/network/")) {\r
+ } else if (path.startsWith(NETWORK)) {\r
// /internal/route/network/?from=%s&to=%s&via=%s\r
try {\r
String nfrom = req.getParameter("from");\r
String nto = req.getParameter("to");\r
String nvia = req.getParameter("via");\r
if (nfrom == null || nto == null || nvia == null) {\r
- sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, "Missing arguments in 'add network' command.", intlogger);\r
+ sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST,\r
+ "Missing arguments in 'add network' command.", intlogger);\r
return;\r
}\r
nfrom = NodeClass.normalizeNodename(nfrom);\r
NetworkRoute nr = new NetworkRoute(nfrom, nto, nvia);\r
for (NetworkRoute route : NetworkRoute.getAllNetworkRoutes()) {\r
if (route.getFromnode() == nr.getFromnode() && route.getTonode() == nr.getTonode()) {\r
- sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, "Network route table already contains a route for " + nfrom + " and " + nto, intlogger);\r
+ sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST,\r
+ "Network route table already contains a route for " + nfrom\r
+ + " and " + nto, intlogger);\r
return;\r
}\r
}\r
ins = new Insertable[] { nr };\r
} catch (IllegalArgumentException e) {\r
- intlogger.info(e);\r
- sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, "Invalid arguments in 'add network' command.", intlogger);\r
+ intlogger.info(e.toString(), e);\r
+ sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST,\r
+ "Invalid arguments in 'add network' command.", intlogger);\r
return;\r
}\r
}\r
if (ins == null) {\r
- sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Bad URL.", intlogger);\r
+ sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, BAD_URL, intlogger);\r
return;\r
}\r
boolean rv = true;\r
}\r
if (rv) {\r
elr.setResult(HttpServletResponse.SC_OK);\r
- eventlogger.info(elr);\r
+ eventlogger.info(elr.toString());\r
resp.setStatus(HttpServletResponse.SC_OK);\r
provisioningDataChanged();\r
provisioningParametersChanged();\r
} else {\r
// Something went wrong with the INSERT\r
elr.setResult(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);\r
- eventlogger.info(elr);\r
+ eventlogger.error(elr.toString());\r
sendResponseError(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, DB_PROBLEM_MSG, intlogger);\r
}\r
}\r