X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=datarouter-prov%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fdmaap%2Fdatarouter%2Fprovisioning%2FRouteServlet.java;h=8506530b76f29be288bd8518e1e00a508bd6e235;hb=68a9ca240970fceaf12bbe91b7bad8e1d98ecd93;hp=a9b22ec01389d16d3b3e669135c5bf43234fed04;hpb=c217106b57df24666e7bc42025b4b136a26171ad;p=dmaap%2Fdatarouter.git
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 a9b22ec0..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
*
*
*
- * URL Path Summary
+ *
+ * URL Path Summary
+ *
+ *
*
* URL Path |
* Method |
@@ -109,6 +113,7 @@ import static org.onap.dmaap.datarouter.provisioning.utils.HttpServletUtils.send
* and tonode.
*
*
+ *
*
* 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,37 +143,36 @@ 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()) {
- try {
- super.doDelete(req, resp);
- } catch (IOException ioe) {
- eventlogger.error("IOException" + ioe.getMessage());
- }
+ super.doDelete(req, resp);
return;
}
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) {
@@ -174,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.
*/
@@ -248,32 +263,29 @@ 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()) {
- try {
- super.doGet(req, resp);
- } catch (IOException ioe) {
- eventlogger.error("IOException" + ioe.getMessage());
- }
+ super.doGet(req, resp);
return;
}
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()) {
@@ -285,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\": {");
@@ -297,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";
}
@@ -306,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\": [");
@@ -323,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.
*/
@@ -333,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.
*/
@@ -348,66 +362,69 @@ 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()) {
- try {
- super.doPost(req, resp);
- } catch (IOException ioe) {
- intlogger.error("IOException" + ioe.getMessage());
- }
+ super.doPost(req, resp);
return;
}
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);
@@ -416,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;
@@ -437,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);
}
}