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;
import javax.servlet.http.HttpServletResponse;
import org.json.JSONArray;
+import org.onap.dmaap.datarouter.provisioning.utils.Poker;
+import org.onap.dmaap.datarouter.provisioning.utils.SynchronizerTask;
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.RLEBitSet;
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
-import static org.onap.dmaap.datarouter.provisioning.utils.HttpServletUtils.sendResponseError;
/**
* <p>
* <tr class="altColor">
* <td class="colFirst">/internal/route/*</td>
* <td class="colOne">*</td>
- * <td class="colLast">URLs under this path are handled via the {@link org.onap.dmaap.datarouter.provisioning.RouteServlet}</td>
+ * <td class="colLast">URLs under this path are handled via the
+ * {@link RouteServlet}</td>
* </tr>
* </table>
* </div>
* @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
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;
// 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);
}
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);
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;
// 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 {
}
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());
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;
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) {
}
}
}
- 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) {
}
return;
}
- sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Bad URL.", eventlogger);
+ sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, BAD_URL, eventlogger);
} finally {
eelfLogger.info(EelfMsgs.EXIT);
}
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;
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());
// 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);
}
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;
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());
// 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 (ctype == null || !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
}
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);
} catch (Exception 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());
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);
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 (ctype == null || !TEXT_CT.equals(ctype)) {
elr.setResult(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE);
elr.setMessage("Bad media type: " + ctype);
resp.setStatus(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE);
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) {
}
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 = "|";
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(".")) {