X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=datarouter-prov%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fdmaap%2Fdatarouter%2Fprovisioning%2FPublishServlet.java;h=42d2b113650124642879ed32750bcd9fc0dd6d4d;hb=1c1407766012b6aa5c376fb6dd8912611b626e1b;hp=072859506543a9eec7de4bc3bcdacf5696fc938f;hpb=0aa5fa334845e82d4f60eef5f09ac5da3c2cc69c;p=dmaap%2Fdatarouter.git diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/PublishServlet.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/PublishServlet.java index 07285950..42d2b113 100644 --- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/PublishServlet.java +++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/PublishServlet.java @@ -26,19 +26,20 @@ package org.onap.dmaap.datarouter.provisioning; import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; + import java.io.IOException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; +import java.util.*; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang3.StringUtils; import org.json.JSONArray; +import org.json.JSONException; import org.json.JSONObject; import org.json.JSONTokener; import org.onap.dmaap.datarouter.provisioning.beans.EventLogRecord; -import org.onap.dmaap.datarouter.provisioning.beans.Feed; import org.onap.dmaap.datarouter.provisioning.beans.IngressRoute; import org.onap.dmaap.datarouter.provisioning.eelf.EelfMsgs; import org.onap.dmaap.datarouter.provisioning.utils.DB; @@ -54,66 +55,94 @@ import org.onap.dmaap.datarouter.provisioning.utils.DB; @SuppressWarnings("serial") public class PublishServlet extends BaseServlet { - private int next_node; + private int nextNode; private String provstring; private List irt; //Adding EELF Logger Rally:US664892 private static EELFLogger eelflogger = EELFManager.getInstance() - .getLogger("org.onap.dmaap.datarouter.provisioning.PublishServlet"); + .getLogger(PublishServlet.class); private static final Object lock = new Object(); @Override public void init(ServletConfig config) throws ServletException { super.init(config); - next_node = 0; + nextNode = 0; provstring = ""; - irt = new ArrayList(); + irt = new ArrayList<>(); } @Override - public void doDelete(HttpServletRequest req, HttpServletResponse resp) throws IOException { - setIpAndFqdnForEelf("doDelete"); - eelflogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_FEEDID, req.getHeader(BEHALF_HEADER), getIdFromPath(req) + ""); - redirect(req, resp); + public void doDelete(HttpServletRequest req, HttpServletResponse resp) { + setUpEelfForPublishServlet(req, "doDelete"); + eelflogger.info(EelfMsgs.ENTRY); + try { + eelflogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_FEEDID, req.getHeader(BEHALF_HEADER), getIdFromPath(req) + ""); + redirect(req, resp); + } finally { + eelflogger.info(EelfMsgs.EXIT); + } } @Override - public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { - setIpAndFqdnForEelf("doGet"); + public void doGet(HttpServletRequest req, HttpServletResponse resp) { + setUpEelfForPublishServlet(req, "doGet"); + eelflogger.info(EelfMsgs.ENTRY); + try { eelflogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_FEEDID, req.getHeader(BEHALF_HEADER), getIdFromPath(req) + ""); redirect(req, resp); + } finally { + eelflogger.info(EelfMsgs.EXIT); + } } @Override - public void doPut(HttpServletRequest req, HttpServletResponse resp) throws IOException { - setIpAndFqdnForEelf("doPut"); + public void doPut(HttpServletRequest req, HttpServletResponse resp) { + setUpEelfForPublishServlet(req, "doPut"); + eelflogger.info(EelfMsgs.ENTRY); + try { eelflogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_FEEDID, req.getHeader(BEHALF_HEADER), getIdFromPath(req) + ""); redirect(req, resp); + } finally { + eelflogger.info(EelfMsgs.EXIT); + } } @Override - public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { - setIpAndFqdnForEelf("doPost"); + public void doPost(HttpServletRequest req, HttpServletResponse resp) { + setUpEelfForPublishServlet(req, "doPost"); + eelflogger.info(EelfMsgs.ENTRY); + try { eelflogger.info(EelfMsgs.MESSAGE_WITH_BEHALF, req.getHeader(BEHALF_HEADER)); redirect(req, resp); + } finally { + eelflogger.info(EelfMsgs.EXIT); + } } + private void setUpEelfForPublishServlet(HttpServletRequest req, String method) { + if (StringUtils.isBlank(req.getHeader("X-ONAP-RequestID")) || StringUtils.isBlank(req.getHeader("X-InvocationID"))) { + setIpFqdnForEelf(method); + } else { + setIpFqdnRequestIDandInvocationIDForEelf(method, req); + } + } + private void redirect(HttpServletRequest req, HttpServletResponse resp) { try { String[] nodes = getNodes(); if (nodes == null || nodes.length == 0) { resp.sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE, - "There are no nodes defined in the DR network."); + "There are no nodes defined in the DR network."); } else { EventLogRecord elr = new EventLogRecord(req); int feedid = checkPath(req); if (feedid < 0) { String message = (feedid == -1) - ? "Invalid request - Missing or bad feed number." - : "Invalid request - Missing file ID."; + ? "Invalid request - Missing or bad feed number." + : "Invalid request - Missing file ID."; elr.setMessage(message); elr.setResult(HttpServletResponse.SC_NOT_FOUND); eventlogger.info(elr); @@ -141,7 +170,6 @@ public class PublishServlet extends BaseServlet { } } catch (IOException ioe) { intlogger.error("IOException" + ioe.getMessage()); - } } @@ -155,7 +183,7 @@ public class PublishServlet extends BaseServlet { provstring = s; JSONObject jo = new JSONObject(new JSONTokener(provstring)); JSONArray ja = jo.getJSONArray("ingress"); - List newlist = new ArrayList(); + List newlist = new ArrayList<>(); for (int i = 0; i < ja.length(); i++) { IngressRoute iroute = new IngressRoute(ja.getJSONObject(i)); newlist.add(iroute); @@ -179,11 +207,11 @@ public class PublishServlet extends BaseServlet { // No IRT rule matches, do round robin of all active nodes String[] nodes = getNodes(); - if (next_node >= nodes.length) // The list of nodes may have grown/shrunk + if (nextNode >= nodes.length) // The list of nodes may have grown/shrunk { - next_node = 0; + nextNode = 0; } - return nodes[next_node++]; + return nodes[nextNode++]; } private int checkPath(HttpServletRequest req) { @@ -198,11 +226,15 @@ public class PublishServlet extends BaseServlet { } try { int feedid = Integer.parseInt(path.substring(0, ix)); - if (!Feed.isFeedValid(feedid)) { - return -1; + String provData = Poker.getPoker().getProvisioningString(); + JSONArray feeds = new JSONObject(provData).getJSONArray("feeds"); + for (int n = 0; n < feeds.length(); ++n) { + if (feeds.getJSONObject(n).getInt("feedid") == feedid) { + return feedid; + } } - return feedid; - } catch (NumberFormatException e) { + return -1; + } catch (NumberFormatException | JSONException e) { return -1; } }