X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=datarouter-prov%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fdmaap%2Fdatarouter%2Fprovisioning%2FInternalServlet.java;h=efa1c1028b55fd01f5e94cb32a8f8f8884038f93;hb=0ad65c47b4fbddd5d1b653c5e38dcdf84884de9f;hp=005acadb3d81772889ae399e214cb237f463ae4f;hpb=6125df9402379605e28188c61433eaf75930102d;p=dmaap%2Fdatarouter.git diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/InternalServlet.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/InternalServlet.java index 005acadb..efa1c102 100644 --- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/InternalServlet.java +++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/InternalServlet.java @@ -24,6 +24,10 @@ package org.onap.dmaap.datarouter.provisioning; +import static org.onap.dmaap.datarouter.provisioning.utils.HttpServletUtils.sendResponseError; + +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; @@ -35,23 +39,19 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import java.util.Properties; - import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; - import org.json.JSONArray; import org.onap.dmaap.datarouter.provisioning.beans.EventLogRecord; import org.onap.dmaap.datarouter.provisioning.beans.LogRecord; import org.onap.dmaap.datarouter.provisioning.beans.Parameters; import org.onap.dmaap.datarouter.provisioning.eelf.EelfMsgs; -import org.onap.dmaap.datarouter.provisioning.utils.DB; import org.onap.dmaap.datarouter.provisioning.utils.LogfileLoader; +import org.onap.dmaap.datarouter.provisioning.utils.Poker; import org.onap.dmaap.datarouter.provisioning.utils.RLEBitSet; +import org.onap.dmaap.datarouter.provisioning.utils.SynchronizerTask; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import static org.onap.dmaap.datarouter.provisioning.utils.HttpServletUtils.sendResponseError; /** *

@@ -128,7 +128,8 @@ import static org.onap.dmaap.datarouter.provisioning.utils.HttpServletUtils.send * * /internal/route/* * * - * URLs under this path are handled via the {@link org.onap.dmaap.datarouter.provisioning.RouteServlet} + * URLs under this path are handled via the + * {@link RouteServlet} * * * @@ -153,9 +154,11 @@ import static org.onap.dmaap.datarouter.provisioning.utils.HttpServletUtils.send * @author Robert Eby * @version $Id: InternalServlet.java,v 1.23 2014/03/24 18:47:10 eby Exp $ */ + @SuppressWarnings("serial") public class InternalServlet extends ProxyServlet { + private static final Object lock = new Object(); private static Integer logseq = 0; // another piece of info to make log spool file names unique //Adding EELF Logger Rally:US664892 @@ -171,18 +174,19 @@ public class InternalServlet extends ProxyServlet { setIpFqdnRequestIDandInvocationIDForEelf("doDelete", req); eelfLogger.info(EelfMsgs.ENTRY); try { - eelfLogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_FEEDID, req.getHeader(BEHALF_HEADER), getIdFromPath(req) + ""); + eelfLogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_FEEDID, + req.getHeader(BEHALF_HEADER), getIdFromPath(req) + ""); EventLogRecord elr = new EventLogRecord(req); if (!isAuthorizedForInternal(req)) { - elr.setMessage("Unauthorized."); + elr.setMessage(UNAUTHORIZED); elr.setResult(HttpServletResponse.SC_FORBIDDEN); eventlogger.error(elr.toString()); - sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, "Unauthorized.", eventlogger); + sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, UNAUTHORIZED, eventlogger); return; } String path = req.getPathInfo(); - if (path.startsWith("/api/")) { + if (path.startsWith(API)) { if (isProxyOK(req) && isProxyServer()) { super.doDelete(req, resp); return; @@ -201,13 +205,14 @@ public class InternalServlet extends ProxyServlet { // Something went wrong with the DELETE elr.setResult(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); eventlogger.error(elr.toString()); - sendResponseError(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, DB_PROBLEM_MSG, eventlogger); + sendResponseError(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, + DB_PROBLEM_MSG, eventlogger); } return; } } } - sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Bad URL.", eventlogger); + sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, BAD_URL, eventlogger); } finally { eelfLogger.info(EelfMsgs.EXIT); } @@ -222,16 +227,17 @@ public class InternalServlet extends ProxyServlet { setIpFqdnRequestIDandInvocationIDForEelf("doGet",req); eelfLogger.info(EelfMsgs.ENTRY); try { - eelfLogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_FEEDID, req.getHeader(BEHALF_HEADER), getIdFromPath(req) + ""); + eelfLogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_FEEDID, + req.getHeader(BEHALF_HEADER), getIdFromPath(req) + ""); String path = req.getPathInfo(); - Properties props = (new DB()).getProperties(); - if (path.equals("/halt") && !req.isSecure()) { + Properties props = ProvRunner.getProvProperties(); + if ("/halt".equals(path) && !req.isSecure()) { // request to halt the server - can ONLY come from localhost String remote = req.getRemoteAddr(); if (remote.equals(props.getProperty("org.onap.dmaap.datarouter.provserver.localhost"))) { intlogger.info("PROV0009 Request to HALT received."); resp.setStatus(HttpServletResponse.SC_OK); - Main.shutdown(); + ProvRunner.shutdown(); } else { intlogger.info("PROV0010 Disallowed request to HALT received from " + remote); resp.setStatus(HttpServletResponse.SC_FORBIDDEN); @@ -241,20 +247,20 @@ public class InternalServlet extends ProxyServlet { EventLogRecord elr = new EventLogRecord(req); if (!isAuthorizedForInternal(req)) { - elr.setMessage("Unauthorized."); + elr.setMessage(UNAUTHORIZED); elr.setResult(HttpServletResponse.SC_FORBIDDEN); eventlogger.error(elr.toString()); - sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, "Unauthorized.", eventlogger); + sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, UNAUTHORIZED, eventlogger); return; } - if (path.equals("/fetchProv") && !req.isSecure()) { + if ("/fetchProv".equals(path) && !req.isSecure()) { // if request came from active_pod or standby_pod and it is not us, reload prov data - SynchronizerTask s = SynchronizerTask.getSynchronizer(); - s.doFetch(); + SynchronizerTask sync = SynchronizerTask.getSynchronizer(); + sync.doFetch(); resp.setStatus(HttpServletResponse.SC_OK); return; } - if (path.equals("/prov")) { + if ("/prov".equals(path)) { if (isProxyOK(req) && isProxyServer()) { if (super.doGetWithFallback(req, resp)) { return; @@ -262,17 +268,17 @@ public class InternalServlet extends ProxyServlet { // fall back to returning the local data if the remote is unreachable intlogger.info("Active server unavailable; falling back to local copy."); } - Poker p = Poker.getPoker(); + Poker pkr = Poker.getPoker(); resp.setStatus(HttpServletResponse.SC_OK); resp.setContentType(PROVFULL_CONTENT_TYPE2); try { - resp.getOutputStream().print(p.getProvisioningString()); + resp.getOutputStream().print(pkr.getProvisioningString()); } catch (IOException ioe) { intlogger.error("PROV0131 InternalServlet.doGet: " + ioe.getMessage(), ioe); } return; } - if (path.equals("/logs") || path.equals("/logs/")) { + if ("/logs".equals(path) || LOGS.equals(path)) { resp.setStatus(HttpServletResponse.SC_OK); resp.setContentType("application/json"); try { @@ -282,14 +288,14 @@ public class InternalServlet extends ProxyServlet { } return; } - if (path.startsWith("/logs/")) { + if (path.startsWith(LOGS)) { String logdir = props.getProperty("org.onap.dmaap.datarouter.provserver.accesslog.dir"); String logfile = path.substring(6); if (logdir != null && logfile != null && logfile.indexOf('/') < 0) { - File log = new File(logdir + "/" + logfile); + File log = new File(logdir + File.separator + logfile); if (log.exists() && log.isFile()) { resp.setStatus(HttpServletResponse.SC_OK); - resp.setContentType("text/plain"); + resp.setContentType(TEXT_CT); Path logpath = Paths.get(log.getAbsolutePath()); try { Files.copy(logpath, resp.getOutputStream()); @@ -302,7 +308,7 @@ public class InternalServlet extends ProxyServlet { sendResponseError(resp, HttpServletResponse.SC_NO_CONTENT, "No file.", eventlogger); return; } - if (path.startsWith("/api/")) { + if (path.startsWith(API)) { if (isProxyOK(req) && isProxyServer()) { super.doGet(req, resp); return; @@ -312,7 +318,7 @@ public class InternalServlet extends ProxyServlet { Parameters param = Parameters.getParameter(key); if (param != null) { resp.setStatus(HttpServletResponse.SC_OK); - resp.setContentType("text/plain"); + resp.setContentType(TEXT_CT); try { resp.getOutputStream().print(param.getValue() + "\n"); } catch (IOException ioe) { @@ -322,11 +328,11 @@ public class InternalServlet extends ProxyServlet { } } } - if (path.equals("/drlogs") || path.equals("/drlogs/")) { + if ("/drlogs".equals(path) || "/drlogs/".equals(path)) { // Special POD <=> POD API to determine what log file records are loaded here LogfileLoader lfl = LogfileLoader.getLoader(); resp.setStatus(HttpServletResponse.SC_OK); - resp.setContentType("text/plain"); + resp.setContentType(TEXT_CT); try { resp.getOutputStream().print(lfl.getBitSet().toString()); } catch (IOException ioe) { @@ -334,7 +340,7 @@ public class InternalServlet extends ProxyServlet { } return; } - sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Bad URL.", eventlogger); + sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, BAD_URL, eventlogger); } finally { eelfLogger.info(EelfMsgs.EXIT); } @@ -349,17 +355,18 @@ public class InternalServlet extends ProxyServlet { setIpFqdnRequestIDandInvocationIDForEelf("doPut", req); eelfLogger.info(EelfMsgs.ENTRY); try { - eelfLogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_FEEDID, req.getHeader(BEHALF_HEADER), getIdFromPath(req) + ""); + eelfLogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_FEEDID, + req.getHeader(BEHALF_HEADER), getIdFromPath(req) + ""); EventLogRecord elr = new EventLogRecord(req); if (!isAuthorizedForInternal(req)) { - elr.setMessage("Unauthorized."); + elr.setMessage(UNAUTHORIZED); elr.setResult(HttpServletResponse.SC_FORBIDDEN); eventlogger.error(elr.toString()); - sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, "Unauthorized.", eventlogger); + sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, UNAUTHORIZED, eventlogger); return; } String path = req.getPathInfo(); - if (path.startsWith("/api/")) { + if (path.startsWith(API)) { if (isProxyOK(req) && isProxyServer()) { super.doPut(req, resp); return; @@ -368,8 +375,8 @@ public class InternalServlet extends ProxyServlet { if (key.length() > 0) { Parameters param = Parameters.getParameter(key); if (param != null) { - String t = catValues(req.getParameterValues("val")); - param.setValue(t); + String str = catValues(req.getParameterValues("val")); + param.setValue(str); if (doUpdate(param)) { elr.setResult(HttpServletResponse.SC_OK); eventlogger.info(elr.toString()); @@ -380,13 +387,14 @@ public class InternalServlet extends ProxyServlet { // Something went wrong with the UPDATE elr.setResult(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); eventlogger.error(elr.toString()); - sendResponseError(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, DB_PROBLEM_MSG, eventlogger); + sendResponseError(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, + DB_PROBLEM_MSG, eventlogger); } return; } } } - sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Bad URL.", eventlogger); + sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, BAD_URL, eventlogger); } finally { eelfLogger.info(EelfMsgs.EXIT); } @@ -405,15 +413,15 @@ public class InternalServlet extends ProxyServlet { eelfLogger.info(EelfMsgs.MESSAGE_WITH_BEHALF, req.getHeader(BEHALF_HEADER)); EventLogRecord elr = new EventLogRecord(req); if (!isAuthorizedForInternal(req)) { - elr.setMessage("Unauthorized."); + elr.setMessage(UNAUTHORIZED); elr.setResult(HttpServletResponse.SC_FORBIDDEN); eventlogger.error(elr.toString()); - sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, "Unauthorized.", eventlogger); + sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, UNAUTHORIZED, eventlogger); return; } String path = req.getPathInfo(); - if (path.startsWith("/api/")) { + if (path.startsWith(API)) { if (isProxyOK(req) && isProxyServer()) { super.doPost(req, resp); return; @@ -422,8 +430,8 @@ public class InternalServlet extends ProxyServlet { if (key.length() > 0) { Parameters param = Parameters.getParameter(key); if (param == null) { - String t = catValues(req.getParameterValues("val")); - param = new Parameters(key, t); + String str = catValues(req.getParameterValues("val")); + param = new Parameters(key, str); if (doInsert(param)) { elr.setResult(HttpServletResponse.SC_OK); eventlogger.info(elr.toString()); @@ -434,23 +442,25 @@ public class InternalServlet extends ProxyServlet { // Something went wrong with the INSERT elr.setResult(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); eventlogger.error(elr.toString()); - sendResponseError(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, DB_PROBLEM_MSG, eventlogger); + sendResponseError(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, + DB_PROBLEM_MSG, eventlogger); } return; } } } - if (path.equals("/logs") || path.equals("/logs/")) { + if ("/logs".equals(path) || LOGS.equals(path)) { String ctype = req.getHeader("Content-Type"); - if (ctype == null || !ctype.equals("text/plain")) { + if (!TEXT_CT.equals(ctype)) { elr.setResult(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE); elr.setMessage("Bad media type: " + ctype); resp.setStatus(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE); eventlogger.error(elr.toString()); return; } - String spooldir = (new DB()).getProperties().getProperty("org.onap.dmaap.datarouter.provserver.spooldir"); + String spooldir = + ProvRunner.getProvProperties().getProperty("org.onap.dmaap.datarouter.provserver.spooldir"); String spoolname = String.format("%d-%d-", System.currentTimeMillis(), Thread.currentThread().getId()); synchronized (lock) { // perhaps unnecessary, but it helps make the name unique @@ -459,7 +469,7 @@ public class InternalServlet extends ProxyServlet { } String encoding = req.getHeader("Content-Encoding"); if (encoding != null) { - if (encoding.trim().equals("gzip")) { + if ("gzip".equals(encoding.trim())) { spoolname += ".gz"; } else { elr.setResult(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE); @@ -482,10 +492,10 @@ public class InternalServlet extends ProxyServlet { } try { fs.close(); - } catch (Exception e) { + } catch (UnsupportedOperationException | IOException e) { intlogger.error("PROV0137 InternalServlet.doPost: " + e.getMessage(), e); } - if (((avail * 100) / total) < 5) { + if (total != 0 && ((avail * 100) / total) < 5) { elr.setResult(HttpServletResponse.SC_SERVICE_UNAVAILABLE); resp.setStatus(HttpServletResponse.SC_SERVICE_UNAVAILABLE); eventlogger.error(elr.toString()); @@ -494,7 +504,8 @@ public class InternalServlet extends ProxyServlet { Path tmppath = Paths.get(spooldir, spoolname); Path donepath = Paths.get(spooldir, "IN." + spoolname); try { - Files.copy(req.getInputStream(), Paths.get(spooldir, spoolname), StandardCopyOption.REPLACE_EXISTING); + Files.copy(req.getInputStream(), Paths.get(spooldir, spoolname), + StandardCopyOption.REPLACE_EXISTING); Files.move(tmppath, donepath, StandardCopyOption.REPLACE_EXISTING); elr.setResult(HttpServletResponse.SC_CREATED); resp.setStatus(HttpServletResponse.SC_CREATED); @@ -506,10 +517,10 @@ public class InternalServlet extends ProxyServlet { return; } - if (path.equals("/drlogs") || path.equals("/drlogs/")) { + if ("/drlogs".equals(path) || "/drlogs/".equals(path)) { // Receive post request and generate log entries String ctype = req.getHeader("Content-Type"); - if (ctype == null || !ctype.equals("text/plain")) { + if (!TEXT_CT.equals(ctype)) { elr.setResult(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE); elr.setMessage("Bad media type: " + ctype); resp.setStatus(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE); @@ -523,10 +534,10 @@ public class InternalServlet extends ProxyServlet { while ((ch = is.read()) >= 0) { bos.write(ch); } - RLEBitSet bs = new RLEBitSet(bos.toString()); // The set of records to retrieve elr.setResult(HttpServletResponse.SC_OK); resp.setStatus(HttpServletResponse.SC_OK); - resp.setContentType("text/plain"); + resp.setContentType(TEXT_CT); + RLEBitSet bs = new RLEBitSet(bos.toString()); // The set of records to retrieve LogRecord.printLogRecords(resp.getOutputStream(), bs); eventlogger.info(elr.toString()); } catch (IOException ioe) { @@ -536,18 +547,18 @@ public class InternalServlet extends ProxyServlet { } elr.setResult(HttpServletResponse.SC_NOT_FOUND); - sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Bad URL.", eventlogger); + sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, BAD_URL, eventlogger); eventlogger.error(elr.toString()); } finally { eelfLogger.info(EelfMsgs.EXIT); } } - private String catValues(String[] v) { + private String catValues(String[] val) { StringBuilder sb = new StringBuilder(); - if (v != null) { + if (val != null) { String pfx = ""; - for (String s : v) { + for (String s : val) { sb.append(pfx); sb.append(s); pfx = "|"; @@ -558,13 +569,13 @@ public class InternalServlet extends ProxyServlet { private JSONArray generateLogfileList() { JSONArray ja = new JSONArray(); - Properties p = (new DB()).getProperties(); - String s = p.getProperty("org.onap.dmaap.datarouter.provserver.accesslog.dir"); - if (s != null) { - String[] dirs = s.split(","); + Properties prop = ProvRunner.getProvProperties(); + String str = prop.getProperty("org.onap.dmaap.datarouter.provserver.accesslog.dir"); + if (str != null) { + String[] dirs = str.split(","); for (String dir : dirs) { - File f = new File(dir); - String[] list = f.list(); + File file = new File(dir); + String[] list = file.list(); if (list != null) { for (String s2 : list) { if (!s2.startsWith(".")) {