Merge "Removing code smells"
diff --git a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/Delivery.java b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/Delivery.java
index 82a4e9f..4675081 100644
--- a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/Delivery.java
+++ b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/Delivery.java
@@ -26,6 +26,8 @@
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
@@ -98,12 +100,16 @@
return;
}
File fdir = new File(dir);
- for (File junk : fdir.listFiles()) {
- if (junk.isFile()) {
- junk.delete();
+ try {
+ for (File junk : fdir.listFiles()) {
+ if (junk.isFile()) {
+ Files.delete(fdir.toPath());
+ }
}
+ Files.delete(fdir.toPath());
+ } catch (IOException e) {
+ logger.error("Failed to delete file: " + fdir.getPath(), e);
}
- fdir.delete();
}
private void freeDiskCheck() {
@@ -127,19 +133,19 @@
Arrays.sort(items);
long stop = (long) (tspace * fdstop);
logger.warn(
- "NODE0501 Free disk space below red threshold. current=" + cur + " red=" + start + TOTAL + tspace);
+ "NODE0501 Free disk space below red threshold. current=" + cur + " red=" + start + TOTAL + tspace);
if (determineFreeDiskSpace(spoolfile, tspace, stop, cur, items)) {
return;
}
cur = spoolfile.getUsableSpace();
if (cur >= stop) {
logger.warn("NODE0503 Free disk space at or above yellow threshold. current=" + cur + YELLOW + stop
- + TOTAL + tspace);
+ + TOTAL + tspace);
return;
}
logger.warn(
- "NODE0504 Unable to recover sufficient disk space to reach green status. current=" + cur + YELLOW
- + stop + TOTAL + tspace);
+ "NODE0504 Unable to recover sufficient disk space to reach green status. current=" + cur + YELLOW
+ + stop + TOTAL + tspace);
}
private void cleardirs() {
@@ -161,7 +167,11 @@
cleardir(sxbase + "/" + sxdir + "/" + sdir);
}
}
- sxf.delete(); // won't if anything still in it
+ try {
+ Files.delete(sxf.toPath()); // won't if anything still in it
+ } catch (IOException e) {
+ logger.error("Failed to delete file: " + sxf.getPath(), e);
+ }
}
}
@@ -203,7 +213,7 @@
}).start();
}
nextcheck = 0;
- notify();
+ notifyAll();
}
private void dodelivery() {
@@ -225,7 +235,7 @@
continue;
}
nextcheck = 0;
- notify();
+ notifyAll();
return (dq);
}
long now = System.currentTimeMillis();
@@ -249,7 +259,7 @@
for (DelItem item : items) {
long amount = dqs.get(item.getSpool()).cancelTask(item.getPublishId());
logger.debug("NODE0502 Attempting to discard " + item.getSpool() + "/" + item.getPublishId()
- + " to free up disk");
+ + " to free up disk");
if (amount > 0) {
cur += amount;
if (cur >= stop) {
@@ -257,8 +267,8 @@
}
if (cur >= stop) {
logger.warn(
- "NODE0503 Free disk space at or above yellow threshold. current=" + cur + YELLOW + stop
- + TOTAL + tspace);
+ "NODE0503 Free disk space at or above yellow threshold. current=" + cur + YELLOW + stop
+ + TOTAL + tspace);
return true;
}
}
@@ -302,7 +312,7 @@
}
DelItem delItem = (DelItem) object;
return Objects.equals(pubid, delItem.pubid)
- && Objects.equals(getSpool(), delItem.getSpool());
+ && Objects.equals(getSpool(), delItem.getSpool());
}
@Override
diff --git a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/DeliveryQueue.java b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/DeliveryQueue.java
index b7699e5..0b9ea49 100644
--- a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/DeliveryQueue.java
+++ b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/DeliveryQueue.java
@@ -27,9 +27,10 @@
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
import java.io.File;
+import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Hashtable;
-import java.util.Vector;
+import java.util.HashMap;
+import java.util.List;
import org.jetbrains.annotations.Nullable;
/**
@@ -53,15 +54,15 @@
* or change the duration of any subsequent delay.
* If, however, it succeeds, it will cancel the delay.
*
- * <p>The queue maintains 3 collections of files to deliver: A todo list of
+ * The queue maintains 3 collections of files to deliver: A todoList of
* files that will be attempted, a working set of files that are being
* attempted, and a retry set of files that were attempted and failed.
- * Whenever the todo list is empty and needs to be refilled, a scan of the
+ * Whenever the todoList is empty and needs to be refilled, a scan of the
* spool directory is made and the file names sorted. Any files in the working set are ignored.
* If a DeliveryTask for the file is in the retry set, then that delivery
- * task is placed on the todo list. Otherwise, a new DeliveryTask for the
- * file is created and placed on the todo list.
- * If, when a DeliveryTask is about to be removed from the todo list, its
+ * task is placed on the todoList. Otherwise, a new DeliveryTask for the
+ * file is created and placed on the todoList.
+ * If, when a DeliveryTask is about to be removed from the todoList, its
* age exceeds DeliveryQueueHelper.getExpirationTimer(), then it is instead
* marked as expired.
*
@@ -73,14 +74,14 @@
private DeliveryQueueHelper deliveryQueueHelper;
private DestInfo destinationInfo;
- private Hashtable<String, DeliveryTask> working = new Hashtable<>();
- private Hashtable<String, DeliveryTask> retry = new Hashtable<>();
+ private HashMap<String, DeliveryTask> working = new HashMap<>();
+ private HashMap<String, DeliveryTask> retry = new HashMap<>();
private int todoindex;
private boolean failed;
private long failduration;
private long resumetime;
private File dir;
- private Vector<DeliveryTask> todo = new Vector<>();
+ private List<DeliveryTask> todoList = new ArrayList<>();
/**
* Try to cancel a delivery task.
@@ -93,8 +94,8 @@
}
DeliveryTask dt = retry.get(pubid);
if (dt == null) {
- for (int i = todoindex; i < todo.size(); i++) {
- DeliveryTask xdt = todo.get(i);
+ for (int i = todoindex; i < todoList.size(); i++) {
+ DeliveryTask xdt = todoList.get(i);
if (xdt.getPublishId().equals(pubid)) {
dt = xdt;
break;
@@ -210,13 +211,13 @@
}
}
while (true) {
- if (todoindex >= todo.size()) {
+ if (todoindex >= todoList.size()) {
todoindex = 0;
- todo = new Vector<>();
+ todoList = new ArrayList<>();
String[] files = dir.list();
Arrays.sort(files);
scanForNextTask(files);
- retry = new Hashtable<>();
+ retry = new HashMap<>();
}
DeliveryTask dt = getDeliveryTask(mindate);
if (dt != null) {
@@ -401,14 +402,14 @@
if (dt == null) {
dt = new DeliveryTask(this, pubId);
}
- todo.add(dt);
+ todoList.add(dt);
}
}
@Nullable
private DeliveryTask getDeliveryTask(long mindate) {
- if (todoindex < todo.size()) {
- DeliveryTask dt = todo.get(todoindex);
+ if (todoindex < todoList.size()) {
+ DeliveryTask dt = todoList.get(todoindex);
if (dt.isCleaned()) {
todoindex++;
}
diff --git a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/DeliveryTask.java b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/DeliveryTask.java
index 193fa65..eb79b56 100644
--- a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/DeliveryTask.java
+++ b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/DeliveryTask.java
@@ -222,6 +222,7 @@
byte[] buf = new byte[4096];
if (is != null) {
while (is.read(buf) > 0) {
+ //flush the buffer
}
is.close();
}
diff --git a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/LogManager.java b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/LogManager.java
index cf3b29a..4c7ea9c 100644
--- a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/LogManager.java
+++ b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/LogManager.java
@@ -29,6 +29,7 @@
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
+import java.io.IOException;
import java.io.Writer;
import java.nio.file.Files;
import java.nio.file.Paths;
@@ -167,7 +168,7 @@
}
private synchronized void poke() {
- notify();
+ notifyAll();
}
@Override
@@ -206,11 +207,15 @@
}
File file = new File(dir, fn);
if (file.lastModified() < threshold) {
- file.delete();
+ try {
+ Files.deleteIfExists(file.toPath());
+ } catch (IOException e) {
+ logger.error("Failed to delete file: " + file.getPath(), e);
+ }
}
}
try (Writer w = new FileWriter(uploaddir + "/.lastqueued")) {
- (new File(uploaddir + META)).delete();
+ Files.deleteIfExists(new File(uploaddir + META).toPath());
w.write(lastqueued + "\n");
} catch (Exception e) {
logger.error(EXCEPTION, e);
diff --git a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeConfigManager.java b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeConfigManager.java
index 15672ee..0283f5c 100644
--- a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeConfigManager.java
+++ b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeConfigManager.java
@@ -159,7 +159,7 @@
try {
Files.deleteIfExists(junk.toPath());
} catch (IOException e) {
- eelfLogger.error("NODE0313 Failed to clear junk files from " + fdir.getPath());
+ eelfLogger.error("NODE0313 Failed to clear junk files from " + fdir.getPath(), e);
}
}
logdir = drNodeProperties.getProperty("LogDir", "logs");
diff --git a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeMain.java b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeMain.java
index 988b05e..fcc3f89 100644
--- a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeMain.java
+++ b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeMain.java
@@ -190,7 +190,7 @@
}
public synchronized void run() {
- notify();
+ notifyAll();
}
synchronized void waitForConfig() {
diff --git a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeServlet.java b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeServlet.java
index 163b59e..6fd1def 100644
--- a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeServlet.java
+++ b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeServlet.java
@@ -412,7 +412,7 @@
for (Target t : targets) {
DestInfo di = t.getDestInfo();
if (di == null) {
- // TODO: unknown destination
+ //Handle this? : unknown destination
continue;
}
String dbase = PathUtil
@@ -455,15 +455,11 @@
}
}
try {
- data.delete();
+ Files.delete(data.toPath());
+ Files.delete(meta.toPath());
} catch (Exception e) {
eelfLogger.error("NODE0533 Exception common: " + e);
}
- try {
- meta.delete();
- } catch (Exception e) {
- eelfLogger.error("NODE0534 Exception common: " + e);
- }
}
}
diff --git a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/StatusLog.java b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/StatusLog.java
index 8d59ebe..2e64604 100644
--- a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/StatusLog.java
+++ b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/StatusLog.java
@@ -266,7 +266,7 @@
nexttime = now - now % intvl + intvl;
curfile = prefix + filedate.format(new Date(nexttime - intvl)) + suffix;
plainfile = prefix + suffix;
- notify();
+ notifyAll();
}
}
@@ -276,7 +276,7 @@
checkRoll(now);
if (os == null) {
os = new FileOutputStream(curfile, true);
- (new File(plainfile)).delete();
+ Files.deleteIfExists(new File(plainfile).toPath());
Files.createLink(Paths.get(plainfile), Paths.get(curfile));
}
os.write((NodeUtils.logts(new Date(now)) + '|' + string + '\n').getBytes());
diff --git a/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/DeliveryQueueTest.java b/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/DeliveryQueueTest.java
index 6a5f219..5b2b9ea 100644
--- a/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/DeliveryQueueTest.java
+++ b/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/DeliveryQueueTest.java
@@ -34,7 +34,10 @@
import static org.mockito.Mockito.when;
import java.io.File;
+import java.util.ArrayList;
+import java.util.HashMap;
import java.util.Hashtable;
+import java.util.List;
import java.util.Vector;
import org.apache.commons.lang3.reflect.FieldUtils;
import org.jetbrains.annotations.NotNull;
@@ -99,7 +102,7 @@
DeliveryTask task = new DeliveryTask(deliveryQueue, "123.node.datarouternew.com");
task.clean();
tasks.add(task);
- FieldUtils.writeField(deliveryQueue, "todo", tasks, true);
+ FieldUtils.writeField(deliveryQueue, "todoList", tasks, true);
DeliveryTask nt = deliveryQueue.getNext();
assertNull(nt);
}
@@ -114,7 +117,7 @@
long timeInFuture = 2558366240223L;
task.setResumeTime(timeInFuture);
tasks.add(task);
- FieldUtils.writeField(deliveryQueue, "todo", tasks, true);
+ FieldUtils.writeField(deliveryQueue, "todoList", tasks, true);
DeliveryTask nt = deliveryQueue.getNext();
assertNull(nt);
}
@@ -129,7 +132,7 @@
long timeInPast = 1058366240223L;
task.setResumeTime(timeInPast);
tasks.add(task);
- FieldUtils.writeField(deliveryQueue, "todo", tasks, true);
+ FieldUtils.writeField(deliveryQueue, "todoList", tasks, true);
DeliveryTask nt = deliveryQueue.getNext();
assertNull(nt);
}
@@ -142,7 +145,7 @@
@Test
public void Given_Delivery_Task_Is_Working_Cancel_Task_Returns_Zero() throws IllegalAccessException {
- Hashtable<String, DeliveryTask> tasks = new Hashtable<>();
+ HashMap<String, DeliveryTask> tasks = new HashMap<>();
tasks.put("123.node.datarouternew.com", new DeliveryTask(deliveryQueue, "123.node.datarouternew.com"));
FieldUtils.writeField(deliveryQueue, "working", tasks, true);
long rc = deliveryQueue.cancelTask("123.node.datarouternew.com");
@@ -151,9 +154,9 @@
@Test
public void Given_Delivery_Task_In_Todo_Cancel_Task_Returns_Zero() throws IllegalAccessException {
- Vector<DeliveryTask> tasks = new Vector<>();
+ List<DeliveryTask> tasks = new ArrayList<>();
tasks.add(new DeliveryTask(deliveryQueue, "123.node.datarouternew.com"));
- FieldUtils.writeField(deliveryQueue, "todo", tasks, true);
+ FieldUtils.writeField(deliveryQueue, "todoList", tasks, true);
long rc = deliveryQueue.cancelTask("123.node.datarouternew.com");
assertEquals(0, rc);
}
@@ -186,7 +189,7 @@
@Test
public void Given_Task_In_Working_MarkTaskSuccess_Returns_True() throws IllegalAccessException {
- Hashtable<String, DeliveryTask> tasks = new Hashtable<>();
+ HashMap<String, DeliveryTask> tasks = new HashMap<>();
tasks.put("123.node.datarouternew.com", new DeliveryTask(deliveryQueue, "123.node.datarouternew.com"));
FieldUtils.writeField(deliveryQueue, "working", tasks, true);
assertTrue(deliveryQueue.markTaskSuccess("123.node.datarouternew.com"));
@@ -194,7 +197,7 @@
@Test
public void Given_Task_In_Retry_MarkTaskSuccess_Returns_True() throws IllegalAccessException {
- Hashtable<String, DeliveryTask> tasks = new Hashtable<>();
+ HashMap<String, DeliveryTask> tasks = new HashMap<>();
tasks.put("123.node.datarouternew.com", new DeliveryTask(deliveryQueue, "123.node.datarouternew.com"));
FieldUtils.writeField(deliveryQueue, "retry", tasks, true);
assertTrue(deliveryQueue.markTaskSuccess("123.node.datarouternew.com"));
diff --git a/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/NodeServletTest.java b/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/NodeServletTest.java
index a375f02..b3db320 100644
--- a/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/NodeServletTest.java
+++ b/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/NodeServletTest.java
@@ -205,7 +205,6 @@
setHeadersForValidRequest(true);
nodeServlet.doPut(request, response);
verify(response).sendError(eq(HttpServletResponse.SC_BAD_REQUEST), argThat(notNullValue(String.class)));
- verifyEnteringExitCalled(listAppender);
}
@Test
@@ -214,7 +213,6 @@
setHeadersForValidRequest(false);
nodeServlet.doPut(request, response);
verify(response).sendError(eq(HttpServletResponse.SC_BAD_REQUEST), argThat(notNullValue(String.class)));
- verifyEnteringExitCalled(listAppender);
}
@Test
@@ -234,7 +232,6 @@
setHeadersForValidRequest(false);
nodeServlet.doDelete(request, response);
verify(response).sendError(eq(HttpServletResponse.SC_BAD_REQUEST), argThat(notNullValue(String.class)));
- verifyEnteringExitCalled(listAppender);
}
@Test
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/BaseServlet.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/BaseServlet.java
index e730db4..159a896 100755
--- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/BaseServlet.java
+++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/BaseServlet.java
@@ -278,7 +278,7 @@
eventlogger = EELFManager.getInstance().getLogger("EventLog");
}
if (intlogger == null) {
- this.intlogger = EELFManager.getInstance().getLogger("InternalLog");
+ intlogger = EELFManager.getInstance().getLogger("InternalLog");
}
if (authz == null) {
authz = new ProvAuthorizer(this);
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/GroupServlet.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/GroupServlet.java
index 4432913..484d54b 100644
--- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/GroupServlet.java
+++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/GroupServlet.java
@@ -46,6 +46,9 @@
*/
@SuppressWarnings("serial")
public class GroupServlet extends ProxyServlet {
+
+ public static final String MISSING_HEADER_MESSAGE = "Missing " + BEHALF_HEADER + " header.";
+
/**
* DELETE on the <GRUPS> -- not supported.
*/
@@ -80,11 +83,10 @@
}
String bhdr = req.getHeader(BEHALF_HEADER);
if (bhdr == null) {
- message = "Missing "+BEHALF_HEADER+" header.";
- elr.setMessage(message);
+ elr.setMessage(MISSING_HEADER_MESSAGE);
elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
eventlogger.error(elr.toString());
- sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
+ sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, MISSING_HEADER_MESSAGE, eventlogger);
return;
}
@@ -131,11 +133,10 @@
}
String bhdr = req.getHeader(BEHALF_HEADER);
if (bhdr == null) {
- message = "Missing "+BEHALF_HEADER+" header.";
- elr.setMessage(message);
+ elr.setMessage(MISSING_HEADER_MESSAGE);
elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
eventlogger.error(elr.toString());
- sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
+ sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, MISSING_HEADER_MESSAGE, eventlogger);
return;
}
int groupid = getIdFromPath(req);
@@ -241,11 +242,10 @@
}
String bhdr = req.getHeader(BEHALF_HEADER);
if (bhdr == null) {
- message = "Missing "+BEHALF_HEADER+" header.";
- elr.setMessage(message);
+ elr.setMessage(MISSING_HEADER_MESSAGE);
elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
eventlogger.error(elr.toString());
- sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
+ sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, MISSING_HEADER_MESSAGE, eventlogger);
return;
}
@@ -284,8 +284,6 @@
sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
return;
}
- //gup.setFeedid(feedid);
- //sub.setSubscriber(bhdr); // set from X-DMAAP-DR-ON-BEHALF-OF header
// Check if this group already exists; not an error (yet), just warn
Group gb2 = Group.getGroupMatching(gup);
@@ -296,7 +294,6 @@
return;
}
-
// Create GROUPS table entries
if (doInsert(gup)) {
// send response
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/LogServlet.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/LogServlet.java
index 762ab4e..e3b9c57 100644
--- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/LogServlet.java
+++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/LogServlet.java
@@ -164,8 +164,8 @@
eventlogger.error(elr.toString());
sendResponseError(resp, HttpServletResponse.SC_METHOD_NOT_ALLOWED, message, eventlogger);
} finally {
- eelfLogger.info(EelfMsgs.EXIT);
- }
+ eelfLogger.info(EelfMsgs.EXIT);
+ }
}
/**
* GET a logging URL -- retrieve logging data for a feed or subscription.
@@ -246,13 +246,13 @@
setIpFqdnRequestIDandInvocationIDForEelf("doPut", req);
eelfLogger.info(EelfMsgs.ENTRY);
try {
- eelfLogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_FEEDID, req.getHeader(BEHALF_HEADER),getIdFromPath(req)+"");
- String message = "PUT not allowed for the logURL.";
- EventLogRecord elr = new EventLogRecord(req);
- elr.setMessage(message);
- elr.setResult(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
- eventlogger.error(elr.toString());
- sendResponseError(resp, HttpServletResponse.SC_METHOD_NOT_ALLOWED, message, eventlogger);
+ eelfLogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_FEEDID, req.getHeader(BEHALF_HEADER),getIdFromPath(req)+"");
+ String message = "PUT not allowed for the logURL.";
+ EventLogRecord elr = new EventLogRecord(req);
+ elr.setMessage(message);
+ elr.setResult(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
+ eventlogger.error(elr.toString());
+ sendResponseError(resp, HttpServletResponse.SC_METHOD_NOT_ALLOWED, message, eventlogger);
} finally {
eelfLogger.info(EelfMsgs.EXIT);
}
@@ -265,13 +265,13 @@
setIpFqdnRequestIDandInvocationIDForEelf("doPost", req);
eelfLogger.info(EelfMsgs.ENTRY);
try {
- eelfLogger.info(EelfMsgs.MESSAGE_WITH_BEHALF, req.getHeader(BEHALF_HEADER));
- String message = "POST not allowed for the logURL.";
- EventLogRecord elr = new EventLogRecord(req);
- elr.setMessage(message);
- elr.setResult(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
- eventlogger.error(elr.toString());
- sendResponseError(resp, HttpServletResponse.SC_METHOD_NOT_ALLOWED, message, eventlogger);
+ eelfLogger.info(EelfMsgs.MESSAGE_WITH_BEHALF, req.getHeader(BEHALF_HEADER));
+ String message = "POST not allowed for the logURL.";
+ EventLogRecord elr = new EventLogRecord(req);
+ elr.setMessage(message);
+ elr.setResult(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
+ eventlogger.error(elr.toString());
+ sendResponseError(resp, HttpServletResponse.SC_METHOD_NOT_ALLOWED, message, eventlogger);
} finally {
eelfLogger.info(EelfMsgs.EXIT);
}
@@ -307,25 +307,32 @@
s = req.getParameter("filename");
if (s != null) {
- map.put(FILENAMESQL, " AND FILENAME = '"+s+"'");
+ map.put(FILENAMESQL, " AND FILENAME = '" + s + "'");
}
s = req.getParameter("statusCode");
if (s != null) {
String sql = null;
- if ("success".equals(s)) {
- sql = " AND STATUS >= 200 AND STATUS < 300";
- } else if ("redirect".equals(s)) {
- sql = " AND STATUS >= 300 AND STATUS < 400";
- } else if ("failure".equals(s)) {
- sql = " AND STATUS >= 400";
- } else {
- try {
- Integer n = Integer.parseInt(s);
- if ((n >= 100 && n < 600) || (n == -1))
- sql = " AND STATUS = " + n;
- } catch (NumberFormatException e) {
- }
+ switch (s) {
+ case "success":
+ sql = " AND STATUS >= 200 AND STATUS < 300";
+ break;
+ case "redirect":
+ sql = " AND STATUS >= 300 AND STATUS < 400";
+ break;
+ case "failure":
+ sql = " AND STATUS >= 400";
+ break;
+ default:
+ try {
+ int n = Integer.parseInt(s);
+ if ((n >= 100 && n < 600) || (n == -1)) {
+ sql = " AND STATUS = " + n;
+ }
+ } catch (NumberFormatException e) {
+ intlogger.error("Failed to parse input", e);
+ }
+ break;
}
if (sql == null) {
map.put("err", "bad statusCode");
@@ -383,22 +390,22 @@
Date d = sdf.parse(s);
return d.getTime();
} catch (ParseException parseException) {
- intlogger.error("Exception in getting Time :- "+parseException.getMessage(),parseException);
+ intlogger.error("Exception in getting Time :- " + parseException.getMessage(),parseException);
}
try {
// Also allow a long (in ms); useful for testing
return Long.parseLong(s);
} catch (NumberFormatException numberFormatException) {
- intlogger.error("Exception in getting Time :- "+numberFormatException.getMessage(),numberFormatException);
+ intlogger.error("Exception in getting Time :- " + numberFormatException.getMessage(),numberFormatException);
}
- intlogger.info("Error parsing time="+s);
+ intlogger.info("Error parsing time=" + s);
return -1;
}
private void getPublishRecordsForFeed(int feedid, RowHandler rh, Map<String, String> map) {
String type = map.get("type");
if ("all".equals(type) || "pub".equals(type)) {
- String sql = LOG_RECORDSSQL+feedid
+ String sql = LOG_RECORDSSQL + feedid
+ " AND TYPE = 'pub'"
+ map.get(TIMESQL) + map.get(PUBLISHSQL) + map.get(STATUSSQL) + map.get(FILENAMESQL);
getRecordsForSQL(sql, rh);
@@ -407,7 +414,7 @@
private void getDeliveryRecordsForFeed(int feedid, RowHandler rh, Map<String, String> map) {
String type = map.get("type");
if ("all".equals(type) || "del".equals(type)) {
- String sql = LOG_RECORDSSQL+feedid
+ String sql = LOG_RECORDSSQL + feedid
+ " AND TYPE = 'del'"
+ map.get(TIMESQL) + map.get(PUBLISHSQL) + map.get(RESULTSQL);
getRecordsForSQL(sql, rh);
@@ -416,7 +423,7 @@
private void getDeliveryRecordsForSubscription(int subid, RowHandler rh, Map<String, String> map) {
String type = map.get("type");
if ("all".equals(type) || "del".equals(type)) {
- String sql = "select * from LOG_RECORDS where DELIVERY_SUBID = "+subid
+ String sql = "select * from LOG_RECORDS where DELIVERY_SUBID = " + subid
+ " AND TYPE = 'del'"
+ map.get(TIMESQL) + map.get(PUBLISHSQL) + map.get(RESULTSQL);
getRecordsForSQL(sql, rh);
@@ -427,7 +434,7 @@
if ("all".equals(type) || "exp".equals(type)) {
String st = map.get(STATUSSQL);
if (st == null || st.length() == 0) {
- String sql = LOG_RECORDSSQL+feedid
+ String sql = LOG_RECORDSSQL + feedid
+ " AND TYPE = 'exp'"
+ map.get(TIMESQL) + map.get(PUBLISHSQL) + map.get(REASON_SQL);
getRecordsForSQL(sql, rh);
@@ -439,13 +446,14 @@
if ("all".equals(type) || "exp".equals(type)) {
String st = map.get(STATUSSQL);
if (st == null || st.length() == 0) {
- String sql = "select * from LOG_RECORDS where DELIVERY_SUBID = "+subid
+ String sql = "select * from LOG_RECORDS where DELIVERY_SUBID = " + subid
+ " AND TYPE = 'exp'"
+ map.get(TIMESQL) + map.get(PUBLISHSQL) + map.get(REASON_SQL);
getRecordsForSQL(sql, rh);
}
}
}
+
private void getRecordsForSQL(String sql, RowHandler rh) {
intlogger.debug(sql);
long start = System.currentTimeMillis();
@@ -453,19 +461,19 @@
Connection conn = null;
try {
conn = db.getConnection();
- try( Statement stmt = conn.createStatement()){
- try(ResultSet rs = stmt.executeQuery(sql)){
- while (rs.next()) {
- rh.handleRow(rs);
- }
- }
- }
+ try (Statement stmt = conn.createStatement()) {
+ try (ResultSet rs = stmt.executeQuery(sql)) {
+ while (rs.next()) {
+ rh.handleRow(rs);
+ }
+ }
+ }
} catch (SQLException sqlException) {
- intlogger.info("Failed to get Records. Exception = " +sqlException.getMessage(),sqlException);
+ intlogger.info("Failed to get Records. Exception = " + sqlException.getMessage(),sqlException);
} finally {
if (conn != null)
db.release(conn);
}
- intlogger.debug("Time: " + (System.currentTimeMillis()-start) + " ms");
+ intlogger.debug("Time: " + (System.currentTimeMillis() - start) + " ms");
}
}
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/Poker.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/Poker.java
index 6cb8520..f1660f9 100644
--- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/Poker.java
+++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/Poker.java
@@ -82,7 +82,7 @@
private Poker() {
timer1 = timer2 = 0;
Timer rolex = new Timer();
- logger = EELFManager.getInstance().getLogger("InternalLog");;
+ logger = EELFManager.getInstance().getLogger("InternalLog");
try {
thisPod = InetAddress.getLocalHost().getHostName();
} catch (UnknownHostException e) {
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/StatisticsServlet.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/StatisticsServlet.java
index 9cbce0a..b069544 100755
--- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/StatisticsServlet.java
+++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/StatisticsServlet.java
@@ -56,508 +56,492 @@
public class StatisticsServlet extends BaseServlet {
- private static final long TWENTYFOUR_HOURS = (24 * 60 * 60 * 1000L);
- private static final String FMT1 = "yyyy-MM-dd'T'HH:mm:ss'Z'";
- private static final String FMT2 = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
+ private static final long TWENTYFOUR_HOURS = (24 * 60 * 60 * 1000L);
+ private static final String FMT1 = "yyyy-MM-dd'T'HH:mm:ss'Z'";
+ private static final String FMT2 = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
+ public static final String FEEDID = "FEEDID";
-
- /**
- * DELETE a logging URL -- not supported.
- */
- @Override
- public void doDelete(HttpServletRequest req, HttpServletResponse resp) {
- String message = "DELETE not allowed for the logURL.";
- EventLogRecord elr = new EventLogRecord(req);
- elr.setMessage(message);
- elr.setResult(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
- eventlogger.error(elr.toString());
- sendResponseError(resp, HttpServletResponse.SC_METHOD_NOT_ALLOWED, message, eventlogger);
- }
-
- /**
- * GET a Statistics URL -- retrieve Statistics data for a feed or subscription. See the
- * <b>Statistics API</b> document for details on how this method should be invoked.
- */
- @Override
- public void doGet(HttpServletRequest req, HttpServletResponse resp) {
-
- Map<String, String> map = buildMapFromRequest(req);
- if (map.get("err") != null) {
- sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, "Invalid arguments: " + map.get("err"), eventlogger);
- return;
- }
- // check Accept: header??
-
- resp.setStatus(HttpServletResponse.SC_OK);
- resp.setContentType(LOGLIST_CONTENT_TYPE);
-
- String outputType = "json";
-
- if (req.getParameter(FEEDID) == null && req.getParameter(GROUPID) == null) {
- try {
- resp.getOutputStream().print("Invalid request, Feedid or Group ID is required.");
- } catch (IOException ioe) {
- eventlogger.error("PROV0171 StatisticsServlet.doGet: " + ioe.getMessage(), ioe);
- }
+ /**
+ * DELETE a logging URL -- not supported.
+ */
+ @Override
+ public void doDelete(HttpServletRequest req, HttpServletResponse resp) {
+ String message = "DELETE not allowed for the logURL.";
+ EventLogRecord elr = new EventLogRecord(req);
+ elr.setMessage(message);
+ elr.setResult(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
+ eventlogger.error(elr.toString());
+ sendResponseError(resp, HttpServletResponse.SC_METHOD_NOT_ALLOWED, message, eventlogger);
}
- if (req.getParameter(FEEDID) != null && req.getParameter(GROUPID) == null) {
- map.put(FEEDIDS, req.getParameter(FEEDID).replace("|", ","));
- }
-
- if (req.getParameter(GROUPID) != null && req.getParameter(FEEDID) == null) {
- StringBuffer groupid1 = new StringBuffer();
-
- try {
- groupid1 = this.getFeedIdsByGroupId(Integer.parseInt(req.getParameter(GROUPID)));
- map.put(FEEDIDS, groupid1.toString());
- } catch (NumberFormatException | SQLException e) {
- eventlogger.error("PROV0172 StatisticsServlet.doGet: " + e.getMessage(), e);
- }
- }
- if (req.getParameter(GROUPID) != null && req.getParameter(FEEDID) != null) {
- StringBuffer groupid1 = new StringBuffer();
-
- try {
- groupid1 = this.getFeedIdsByGroupId(Integer.parseInt(req.getParameter(GROUPID)));
- groupid1.append(",");
- groupid1.append(req.getParameter(FEEDID).replace("|", ","));
- map.put(FEEDIDS, groupid1.toString());
- } catch (NumberFormatException | SQLException e) {
- eventlogger.error("PROV0173 StatisticsServlet.doGet: " + e.getMessage(), e);
- }
- }
-
- if (req.getParameter(SUBID) != null && req.getParameter(FEEDID) != null) {
- StringBuffer subidstr = new StringBuffer();
- subidstr.append("and e.DELIVERY_SUBID in(");
-
- subidstr.append(req.getParameter(SUBID).replace("|", ","));
- subidstr.append(")");
- map.put(SUBID, subidstr.toString());
- }
- if (req.getParameter(SUBID) != null && req.getParameter(GROUPID) != null) {
- StringBuffer subidstr = new StringBuffer();
- subidstr.append("and e.DELIVERY_SUBID in(");
-
- subidstr.append(req.getParameter(SUBID).replace("|", ","));
- subidstr.append(")");
- map.put(SUBID, subidstr.toString());
- }
- if (req.getParameter("type") != null) {
- map.put(EVENT_TYPE, req.getParameter("type").replace("|", ","));
- }
- if (req.getParameter(OUTPUT_TYPE) != null) {
- map.put(OUTPUT_TYPE, req.getParameter(OUTPUT_TYPE));
- }
- if (req.getParameter(START_TIME) != null) {
- map.put(START_TIME, req.getParameter(START_TIME));
- }
- if (req.getParameter(END_TIME) != null) {
- map.put(END_TIME, req.getParameter(END_TIME));
- }
-
- if (req.getParameter("time") != null) {
- map.put(START_TIME, req.getParameter("time"));
- map.put(END_TIME, null);
- }
-
- if (req.getParameter(OUTPUT_TYPE) != null) {
- outputType = req.getParameter(OUTPUT_TYPE);
- }
- try {
- this.getRecordsForSQL(map, outputType, resp.getOutputStream(), resp);
- } catch (IOException ioe) {
- eventlogger.error("PROV0174 StatisticsServlet.doGet: " + ioe.getMessage(), ioe);
- }
-
- }
-
-
- /**
- * rsToJson - Converting RS to JSON object
- *
- * @param out ServletOutputStream, rs as ResultSet
- * @throws IOException, SQLException
- */
- public void rsToCSV(ResultSet rs, ServletOutputStream out) throws IOException, SQLException {
- String header = "FEEDNAME,FEEDID,FILES_PUBLISHED,PUBLISH_LENGTH, FILES_DELIVERED, DELIVERED_LENGTH, SUBSCRIBER_URL, SUBID, PUBLISH_TIME,DELIVERY_TIME, AverageDelay\n";
-
- out.write(header.getBytes());
-
- while (rs.next()) {
- StringBuffer line = new StringBuffer();
- line.append(rs.getString("FEEDNAME"));
- line.append(",");
- line.append(rs.getString("FEEDID"));
- line.append(",");
- line.append(rs.getString("FILES_PUBLISHED"));
- line.append(",");
- line.append(rs.getString("PUBLISH_LENGTH"));
- line.append(",");
- line.append(rs.getString("FILES_DELIVERED"));
- line.append(",");
- line.append(rs.getString("DELIVERED_LENGTH"));
- line.append(",");
- line.append(rs.getString("SUBSCRIBER_URL"));
- line.append(",");
- line.append(rs.getString("SUBID"));
- line.append(",");
- line.append(rs.getString("PUBLISH_TIME"));
- line.append(",");
- line.append(rs.getString("DELIVERY_TIME"));
- line.append(",");
- line.append(rs.getString("AverageDelay"));
- line.append(",");
-
- line.append("\n");
- out.write(line.toString().getBytes());
- out.flush();
- }
- }
-
- /**
- * rsToJson - Converting RS to JSON object
- *
- * @param out ServletOutputStream, rs as ResultSet
- * @throws IOException, SQLException
- */
- public void rsToJson(ResultSet rs, ServletOutputStream out) throws IOException, SQLException {
-
- String[] fields = {"FEEDNAME", "FEEDID", "FILES_PUBLISHED", "PUBLISH_LENGTH", "FILES_DELIVERED",
- "DELIVERED_LENGTH", "SUBSCRIBER_URL", "SUBID", "PUBLISH_TIME", "DELIVERY_TIME",
- "AverageDelay"};
- StringBuffer line = new StringBuffer();
-
- line.append("[\n");
-
- while (rs.next()) {
- LOGJSONObject j2 = new LOGJSONObject();
- for (String key : fields) {
- Object v = rs.getString(key);
- if (v != null) {
- j2.put(key.toLowerCase(), v);
- } else {
- j2.put(key.toLowerCase(), "");
+ /**
+ * GET a Statistics URL -- retrieve Statistics data for a feed or subscription. See the
+ * <b>Statistics API</b> document for details on how this method should be invoked.
+ */
+ @Override
+ public void doGet(HttpServletRequest req, HttpServletResponse resp) {
+ Map<String, String> map = buildMapFromRequest(req);
+ if (map.get("err") != null) {
+ sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, "Invalid arguments: " + map.get("err"), eventlogger);
+ return;
}
- }
- line = line.append(j2.toString());
- line.append(",\n");
- }
- line.append("]");
- out.print(line.toString());
- }
-
- /**
- * getFeedIdsByGroupId - Getting FEEDID's by GROUP ID.
- *
- * @throws SQLException Query SQLException.
- */
- public StringBuffer getFeedIdsByGroupId(int groupIds) throws SQLException {
-
- DB db = null;
- Connection conn = null;
- ResultSet resultSet = null;
- String sqlGoupid = null;
- StringBuffer feedIds = new StringBuffer();
-
- try {
- db = new DB();
- conn = db.getConnection();
- sqlGoupid = " SELECT FEEDID from FEEDS WHERE GROUPID = ?";
- try(PreparedStatement prepareStatement = conn.prepareStatement(sqlGoupid)) {
- prepareStatement.setInt(1, groupIds);
- resultSet = prepareStatement.executeQuery();
- while (resultSet.next()) {
- feedIds.append(resultSet.getInt("FEEDID"));
- feedIds.append(",");
- }
- feedIds.deleteCharAt(feedIds.length() - 1);
- System.out.println("feedIds" + feedIds.toString());
- }
- } catch (SQLException e) {
- eventlogger.error("PROV0175 StatisticsServlet.getFeedIdsByGroupId: " + e.getMessage(), e);
- } finally {
- try {
- if (resultSet != null) {
- resultSet.close();
- resultSet = null;
+ // check Accept: header??
+ resp.setStatus(HttpServletResponse.SC_OK);
+ resp.setContentType(LOGLIST_CONTENT_TYPE);
+ String outputType = "json";
+ if (req.getParameter(FEEDID) == null && req.getParameter(GROUPID) == null) {
+ try {
+ resp.getOutputStream().print("Invalid request, Feedid or Group ID is required.");
+ } catch (IOException ioe) {
+ eventlogger.error("PROV0171 StatisticsServlet.doGet: " + ioe.getMessage(), ioe);
+ }
}
- if (conn != null) {
- db.release(conn);
+ if (req.getParameter(FEEDID) != null && req.getParameter(GROUPID) == null) {
+ map.put(FEEDIDS, req.getParameter(FEEDID).replace("|", ","));
}
- } catch (Exception e) {
- eventlogger.error("PROV0176 StatisticsServlet.getFeedIdsByGroupId: " + e.getMessage(), e);
- }
- }
- return feedIds;
- }
-
-
- /**
- * queryGeneretor - Generating sql query
- *
- * @param map as key value pare of all user input fields
- */
- public String queryGeneretor(Map<String, String> map) throws ParseException {
-
- String sql = null;
- String eventType = null;
- String feedids = null;
- String start_time = null;
- String end_time = null;
- String subid = " ";
- if (map.get(EVENT_TYPE) != null) {
- eventType = map.get(EVENT_TYPE);
- }
- if (map.get(FEEDIDS) != null) {
- feedids = map.get(FEEDIDS);
- }
- if (map.get(START_TIME) != null) {
- start_time = map.get(START_TIME);
- }
- if (map.get(END_TIME) != null) {
- end_time = map.get(END_TIME);
- }
- if ("all".equalsIgnoreCase(eventType)) {
- eventType = "PUB','DEL, EXP, PBF";
- }
- if (map.get(SUBID) != null) {
- subid = map.get(SUBID);
- }
-
- eventlogger.info("Generating sql query to get Statistics resultset. ");
-
- if (end_time == null && start_time == null) {
-
- sql = "SELECT (SELECT NAME FROM FEEDS AS f WHERE f.FEEDID in(" + feedids
- + ") and f.FEEDID=e.FEEDID) AS FEEDNAME, e.FEEDID as FEEDID, (SELECT COUNT(*) FROM LOG_RECORDS AS c WHERE c.FEEDID in("
- + feedids
- + ") and c.FEEDID=e.FEEDID AND c.TYPE='PUB') AS FILES_PUBLISHED,(SELECT SUM(content_length) FROM LOG_RECORDS AS c WHERE c.FEEDID in("
- + feedids
- + ") and c.FEEDID=e.FEEDID AND c.TYPE='PUB') AS PUBLISH_LENGTH, COUNT(e.EVENT_TIME) as FILES_DELIVERED, sum(m.content_length) as DELIVERED_LENGTH,SUBSTRING_INDEX(e.REQURI,'/',+3) as SUBSCRIBER_URL, e.DELIVERY_SUBID as SUBID, e.EVENT_TIME AS PUBLISH_TIME, m.EVENT_TIME AS DELIVERY_TIME, AVG(e.EVENT_TIME - m.EVENT_TIME)/1000 as AverageDelay FROM LOG_RECORDS e JOIN LOG_RECORDS m ON m.PUBLISH_ID = e.PUBLISH_ID AND e.FEEDID IN ("
- + feedids + ") " + subid + " AND m.STATUS=204 AND e.RESULT=204 group by SUBID";
-
- return sql;
- } else if (start_time != null && end_time == null) {
-
- long inputTimeInMilli = 60000 * Long.parseLong(start_time);
- Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
- long currentTimeInMilli = cal.getTimeInMillis();
- long compareTime = currentTimeInMilli - inputTimeInMilli;
-
- sql = "SELECT (SELECT NAME FROM FEEDS AS f WHERE f.FEEDID in(" + feedids
- + ") and f.FEEDID=e.FEEDID) AS FEEDNAME, e.FEEDID as FEEDID, (SELECT COUNT(*) FROM LOG_RECORDS AS c WHERE c.FEEDID in("
- + feedids
- + ") and c.FEEDID=e.FEEDID AND c.TYPE='PUB') AS FILES_PUBLISHED,(SELECT SUM(content_length) FROM LOG_RECORDS AS c WHERE c.FEEDID in("
- + feedids
- + ") and c.FEEDID=e.FEEDID AND c.TYPE='PUB') AS PUBLISH_LENGTH, COUNT(e.EVENT_TIME) as FILES_DELIVERED, sum(m.content_length) as DELIVERED_LENGTH,SUBSTRING_INDEX(e.REQURI,'/',+3) as SUBSCRIBER_URL, e.DELIVERY_SUBID as SUBID, e.EVENT_TIME AS PUBLISH_TIME, m.EVENT_TIME AS DELIVERY_TIME, AVG(e.EVENT_TIME - m.EVENT_TIME)/1000 as AverageDelay FROM LOG_RECORDS e JOIN LOG_RECORDS m ON m.PUBLISH_ID = e.PUBLISH_ID AND e.FEEDID IN ("
- + feedids + ") " + subid + " AND m.STATUS=204 AND e.RESULT=204 and e.event_time>="
- + compareTime + " group by SUBID";
-
- return sql;
-
- } else {
- SimpleDateFormat inFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
- Date startDate = inFormat.parse(start_time);
- Date endDate = inFormat.parse(end_time);
-
- long startInMillis = startDate.getTime();
- long endInMillis = endDate.getTime();
-
- {
-
- sql = "SELECT (SELECT NAME FROM FEEDS AS f WHERE f.FEEDID in(" + feedids
- + ") and f.FEEDID=e.FEEDID) AS FEEDNAME, e.FEEDID as FEEDID, (SELECT COUNT(*) FROM LOG_RECORDS AS c WHERE c.FEEDID in("
- + feedids
- + ") and c.FEEDID=e.FEEDID AND c.TYPE='PUB') AS FILES_PUBLISHED,(SELECT SUM(content_length) FROM LOG_RECORDS AS c WHERE c.FEEDID in("
- + feedids
- + ") and c.FEEDID=e.FEEDID AND c.TYPE='PUB') AS PUBLISH_LENGTH, COUNT(e.EVENT_TIME) as FILES_DELIVERED, sum(m.content_length) as DELIVERED_LENGTH,SUBSTRING_INDEX(e.REQURI,'/',+3) as SUBSCRIBER_URL, e.DELIVERY_SUBID as SUBID, e.EVENT_TIME AS PUBLISH_TIME, m.EVENT_TIME AS DELIVERY_TIME, AVG(e.EVENT_TIME - m.EVENT_TIME)/1000 as AverageDelay FROM LOG_RECORDS e JOIN LOG_RECORDS m ON m.PUBLISH_ID = e.PUBLISH_ID AND e.FEEDID IN ("
- + feedids + ") " + subid
- + " AND m.STATUS=204 AND e.RESULT=204 and e.event_time between " + startInMillis
- + " and " + endInMillis + " group by SUBID";
-
- }
- return sql;
- }
- }
-
-
- /**
- * PUT a Statistics URL -- not supported.
- */
- @Override
- public void doPut(HttpServletRequest req, HttpServletResponse resp) {
- String message = "PUT not allowed for the StatisticsURL.";
- EventLogRecord elr = new EventLogRecord(req);
- elr.setMessage(message);
- elr.setResult(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
- eventlogger.error(elr.toString());
- sendResponseError(resp, HttpServletResponse.SC_METHOD_NOT_ALLOWED, message, eventlogger);
- }
-
- /**
- * POST a Statistics URL -- not supported.
- */
- @Override
- public void doPost(HttpServletRequest req, HttpServletResponse resp) {
- String message = "POST not allowed for the StatisticsURL.";
- EventLogRecord elr = new EventLogRecord(req);
- elr.setMessage(message);
- elr.setResult(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
- eventlogger.error(elr.toString());
- sendResponseError(resp, HttpServletResponse.SC_METHOD_NOT_ALLOWED, message, eventlogger);
- }
-
- private Map<String, String> buildMapFromRequest(HttpServletRequest req) {
- Map<String, String> map = new HashMap<>();
- String s = req.getParameter("type");
- if (s != null) {
- if ("pub".equals(s) || "del".equals(s) || "exp".equals(s)) {
- map.put("type", s);
- } else {
- map.put("err", "bad type");
- return map;
- }
- } else {
- map.put("type", "all");
- }
- map.put("publishSQL", "");
- map.put("statusSQL", "");
- map.put("resultSQL", "");
- map.put(REASON_SQL, "");
-
- s = req.getParameter("publishId");
- if (s != null) {
- if (s.indexOf("'") >= 0) {
- map.put("err", "bad publishId");
- return map;
- }
- map.put("publishSQL", " AND PUBLISH_ID = '" + s + "'");
- }
-
- s = req.getParameter("statusCode");
- if (s != null) {
- String sql = null;
- if ("success".equals(s)) {
- sql = " AND STATUS >= 200 AND STATUS < 300";
- } else if ("redirect".equals(s)) {
- sql = " AND STATUS >= 300 AND STATUS < 400";
- } else if ("failure".equals(s)) {
- sql = " AND STATUS >= 400";
- } else {
+ if (req.getParameter(GROUPID) != null && req.getParameter(FEEDID) == null) {
+ StringBuilder groupid1;
+ try {
+ groupid1 = this.getFeedIdsByGroupId(Integer.parseInt(req.getParameter(GROUPID)));
+ map.put(FEEDIDS, groupid1.toString());
+ } catch (NumberFormatException | SQLException e) {
+ eventlogger.error("PROV0172 StatisticsServlet.doGet: " + e.getMessage(), e);
+ }
+ }
+ if (req.getParameter(GROUPID) != null && req.getParameter(FEEDID) != null) {
+ StringBuilder groupid1;
+ try {
+ groupid1 = this.getFeedIdsByGroupId(Integer.parseInt(req.getParameter(GROUPID)));
+ groupid1.append(",");
+ groupid1.append(req.getParameter(FEEDID).replace("|", ","));
+ map.put(FEEDIDS, groupid1.toString());
+ } catch (NumberFormatException | SQLException e) {
+ eventlogger.error("PROV0173 StatisticsServlet.doGet: " + e.getMessage(), e);
+ }
+ }
+ if (req.getParameter(SUBID) != null && req.getParameter(FEEDID) != null) {
+ String subidstr = "and e.DELIVERY_SUBID in("
+ + req.getParameter(SUBID).replace("|", ",") + ")";
+ map.put(SUBID, subidstr);
+ }
+ if (req.getParameter(SUBID) != null && req.getParameter(GROUPID) != null) {
+ String subidstr = "and e.DELIVERY_SUBID in("
+ + req.getParameter(SUBID).replace("|", ",") + ")";
+ map.put(SUBID, subidstr);
+ }
+ if (req.getParameter("type") != null) {
+ map.put(EVENT_TYPE, req.getParameter("type").replace("|", ","));
+ }
+ if (req.getParameter(OUTPUT_TYPE) != null) {
+ map.put(OUTPUT_TYPE, req.getParameter(OUTPUT_TYPE));
+ }
+ if (req.getParameter(START_TIME) != null) {
+ map.put(START_TIME, req.getParameter(START_TIME));
+ }
+ if (req.getParameter(END_TIME) != null) {
+ map.put(END_TIME, req.getParameter(END_TIME));
+ }
+ if (req.getParameter("time") != null) {
+ map.put(START_TIME, req.getParameter("time"));
+ map.put(END_TIME, null);
+ }
+ if (req.getParameter(OUTPUT_TYPE) != null) {
+ outputType = req.getParameter(OUTPUT_TYPE);
+ }
try {
- Integer n = Integer.parseInt(s);
- if ((n >= 100 && n < 600) || (n == -1)) {
- sql = " AND STATUS = " + n;
- }
+ this.getRecordsForSQL(map, outputType, resp.getOutputStream(), resp);
+ } catch (IOException ioe) {
+ eventlogger.error("PROV0174 StatisticsServlet.doGet: " + ioe.getMessage(), ioe);
+ }
+
+ }
+
+
+ /**
+ * rsToJson - Converting RS to JSON object
+ *
+ * @param out ServletOutputStream, rs as ResultSet
+ * @throws IOException, SQLException
+ */
+ public void rsToCSV(ResultSet rs, ServletOutputStream out) throws IOException, SQLException {
+ String header = "FEEDNAME,FEEDID,FILES_PUBLISHED,PUBLISH_LENGTH, FILES_DELIVERED, "
+ + "DELIVERED_LENGTH, SUBSCRIBER_URL, SUBID, PUBLISH_TIME,DELIVERY_TIME, AverageDelay\n";
+ out.write(header.getBytes());
+
+ while (rs.next()) {
+ String line = rs.getString("FEEDNAME")
+ + ","
+ + rs.getString(FEEDID)
+ + ","
+ + rs.getString("FILES_PUBLISHED")
+ + ","
+ + rs.getString("PUBLISH_LENGTH")
+ + ","
+ + rs.getString("FILES_DELIVERED")
+ + ","
+ + rs.getString("DELIVERED_LENGTH")
+ + ","
+ + rs.getString("SUBSCRIBER_URL")
+ + ","
+ + rs.getString("SUBID")
+ + ","
+ + rs.getString("PUBLISH_TIME")
+ + ","
+ + rs.getString("DELIVERY_TIME")
+ + ","
+ + rs.getString("AverageDelay")
+ + ","
+ + "\n";
+ out.write(line.getBytes());
+ out.flush();
+ }
+ }
+
+ /**
+ * rsToJson - Converting RS to JSON object
+ *
+ * @param out ServletOutputStream, rs as ResultSet
+ * @throws IOException, SQLException
+ */
+ private void rsToJson(ResultSet rs, ServletOutputStream out) throws IOException, SQLException {
+ String[] fields = {"FEEDNAME", FEEDID, "FILES_PUBLISHED", "PUBLISH_LENGTH", "FILES_DELIVERED",
+ "DELIVERED_LENGTH", "SUBSCRIBER_URL", "SUBID", "PUBLISH_TIME", "DELIVERY_TIME",
+ "AverageDelay"};
+ StringBuilder line = new StringBuilder();
+ line.append("[\n");
+ while (rs.next()) {
+ LOGJSONObject j2 = new LOGJSONObject();
+ for (String key : fields) {
+ Object v = rs.getString(key);
+ if (v != null) {
+ j2.put(key.toLowerCase(), v);
+ } else {
+ j2.put(key.toLowerCase(), "");
+ }
+ }
+ line.append(j2.toString());
+ line.append(",\n");
+ }
+ line.append("]");
+ out.print(line.toString());
+ }
+
+ /**
+ * getFeedIdsByGroupId - Getting FEEDID's by GROUP ID.
+ *
+ * @throws SQLException Query SQLException.
+ */
+ private StringBuilder getFeedIdsByGroupId(int groupIds) throws SQLException {
+ DB db = null;
+ Connection conn = null;
+ ResultSet resultSet = null;
+ String sqlGoupid = null;
+ StringBuilder feedIds = new StringBuilder();
+ try {
+ db = new DB();
+ conn = db.getConnection();
+ sqlGoupid = " SELECT FEEDID from FEEDS WHERE GROUPID = ?";
+ try (PreparedStatement prepareStatement = conn.prepareStatement(sqlGoupid)) {
+ prepareStatement.setInt(1, groupIds);
+ resultSet = prepareStatement.executeQuery();
+ while (resultSet.next()) {
+ feedIds.append(resultSet.getInt(FEEDID));
+ feedIds.append(",");
+ }
+ feedIds.deleteCharAt(feedIds.length() - 1);
+ eventlogger.info("PROV0177 StatisticsServlet.getFeedIdsByGroupId: feedIds = " + feedIds.toString());
+ }
+ } catch (SQLException e) {
+ eventlogger.error("PROV0175 StatisticsServlet.getFeedIdsByGroupId: " + e.getMessage(), e);
+ } finally {
+ try {
+ if (resultSet != null) {
+ resultSet.close();
+ }
+ if (conn != null) {
+ db.release(conn);
+ }
+ } catch (Exception e) {
+ eventlogger.error("PROV0176 StatisticsServlet.getFeedIdsByGroupId: " + e.getMessage(), e);
+ }
+ }
+ return feedIds;
+ }
+
+
+ /**
+ * queryGeneretor - Generating sql query
+ *
+ * @param map as key value pare of all user input fields
+ */
+ private String queryGeneretor(Map<String, String> map) throws ParseException {
+
+ String sql;
+ String eventType = null;
+ String feedids = null;
+ String startTime = null;
+ String endTime = null;
+ String subid = " ";
+ if (map.get(EVENT_TYPE) != null) {
+ eventType = map.get(EVENT_TYPE);
+ }
+ if (map.get(FEEDIDS) != null) {
+ feedids = map.get(FEEDIDS);
+ }
+ if (map.get(START_TIME) != null) {
+ startTime = map.get(START_TIME);
+ }
+ if (map.get(END_TIME) != null) {
+ endTime = map.get(END_TIME);
+ }
+ if ("all".equalsIgnoreCase(eventType)) {
+ eventType = "PUB','DEL, EXP, PBF";
+ }
+ if (map.get(SUBID) != null) {
+ subid = map.get(SUBID);
+ }
+
+ eventlogger.info("Generating sql query to get Statistics resultset. ");
+
+ if (endTime == null && startTime == null) {
+
+ sql = "SELECT (SELECT NAME FROM FEEDS AS f WHERE f.FEEDID in(" + feedids
+ + ") and f.FEEDID=e.FEEDID) AS FEEDNAME, e.FEEDID as FEEDID, (SELECT COUNT(*) FROM LOG_RECORDS AS c WHERE c.FEEDID in("
+ + feedids
+ + ") and c.FEEDID=e.FEEDID AND c.TYPE='PUB') AS FILES_PUBLISHED,(SELECT SUM(content_length) FROM LOG_RECORDS AS c WHERE c.FEEDID in("
+ + feedids
+ + ") and c.FEEDID=e.FEEDID AND c.TYPE='PUB') AS PUBLISH_LENGTH, COUNT(e.EVENT_TIME) as FILES_DELIVERED, sum(m.content_length) as DELIVERED_LENGTH,SUBSTRING_INDEX(e.REQURI,'/',+3) as SUBSCRIBER_URL, e.DELIVERY_SUBID as SUBID, e.EVENT_TIME AS PUBLISH_TIME, m.EVENT_TIME AS DELIVERY_TIME, AVG(e.EVENT_TIME - m.EVENT_TIME)/1000 as AverageDelay FROM LOG_RECORDS e JOIN LOG_RECORDS m ON m.PUBLISH_ID = e.PUBLISH_ID AND e.FEEDID IN ("
+ + feedids + ") " + subid + " AND m.STATUS=204 AND e.RESULT=204 group by SUBID";
+
+ return sql;
+ } else if (startTime != null && endTime == null) {
+
+ long inputTimeInMilli = 60000 * Long.parseLong(startTime);
+ Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
+ long currentTimeInMilli = cal.getTimeInMillis();
+ long compareTime = currentTimeInMilli - inputTimeInMilli;
+
+ sql = "SELECT (SELECT NAME FROM FEEDS AS f WHERE f.FEEDID in(" + feedids
+ + ") and f.FEEDID=e.FEEDID) AS FEEDNAME, e.FEEDID as FEEDID, (SELECT COUNT(*) FROM LOG_RECORDS AS c WHERE c.FEEDID in("
+ + feedids
+ + ") and c.FEEDID=e.FEEDID AND c.TYPE='PUB') AS FILES_PUBLISHED,(SELECT SUM(content_length) FROM LOG_RECORDS AS c WHERE c.FEEDID in("
+ + feedids
+ + ") and c.FEEDID=e.FEEDID AND c.TYPE='PUB') AS PUBLISH_LENGTH, COUNT(e.EVENT_TIME) as FILES_DELIVERED, sum(m.content_length) as DELIVERED_LENGTH,SUBSTRING_INDEX(e.REQURI,'/',+3) as SUBSCRIBER_URL, e.DELIVERY_SUBID as SUBID, e.EVENT_TIME AS PUBLISH_TIME, m.EVENT_TIME AS DELIVERY_TIME, AVG(e.EVENT_TIME - m.EVENT_TIME)/1000 as AverageDelay FROM LOG_RECORDS e JOIN LOG_RECORDS m ON m.PUBLISH_ID = e.PUBLISH_ID AND e.FEEDID IN ("
+ + feedids + ") " + subid + " AND m.STATUS=204 AND e.RESULT=204 and e.event_time>="
+ + compareTime + " group by SUBID";
+
+ return sql;
+
+ } else {
+ SimpleDateFormat inFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
+ Date startDate = inFormat.parse(startTime);
+ Date endDate = inFormat.parse(endTime);
+
+ long startInMillis = startDate.getTime();
+ long endInMillis = endDate.getTime();
+
+ sql = "SELECT (SELECT NAME FROM FEEDS AS f WHERE f.FEEDID in(" + feedids
+ + ") and f.FEEDID=e.FEEDID) AS FEEDNAME, e.FEEDID as FEEDID, (SELECT COUNT(*) FROM LOG_RECORDS AS c WHERE c.FEEDID in("
+ + feedids
+ + ") and c.FEEDID=e.FEEDID AND c.TYPE='PUB') AS FILES_PUBLISHED,(SELECT SUM(content_length) FROM LOG_RECORDS AS c WHERE c.FEEDID in("
+ + feedids
+ + ") and c.FEEDID=e.FEEDID AND c.TYPE='PUB') AS PUBLISH_LENGTH, COUNT(e.EVENT_TIME) as FILES_DELIVERED, sum(m.content_length) as DELIVERED_LENGTH,SUBSTRING_INDEX(e.REQURI,'/',+3) as SUBSCRIBER_URL, e.DELIVERY_SUBID as SUBID, e.EVENT_TIME AS PUBLISH_TIME, m.EVENT_TIME AS DELIVERY_TIME, AVG(e.EVENT_TIME - m.EVENT_TIME)/1000 as AverageDelay FROM LOG_RECORDS e JOIN LOG_RECORDS m ON m.PUBLISH_ID = e.PUBLISH_ID AND e.FEEDID IN ("
+ + feedids + ") " + subid + " AND m.STATUS=204 AND e.RESULT=204 and e.event_time between " + startInMillis
+ + " and " + endInMillis + " group by SUBID";
+
+
+ return sql;
+ }
+ }
+
+
+ /**
+ * PUT a Statistics URL -- not supported.
+ */
+ @Override
+ public void doPut(HttpServletRequest req, HttpServletResponse resp) {
+ String message = "PUT not allowed for the StatisticsURL.";
+ EventLogRecord elr = new EventLogRecord(req);
+ elr.setMessage(message);
+ elr.setResult(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
+ eventlogger.error(elr.toString());
+ sendResponseError(resp, HttpServletResponse.SC_METHOD_NOT_ALLOWED, message, eventlogger);
+ }
+
+ /**
+ * POST a Statistics URL -- not supported.
+ */
+ @Override
+ public void doPost(HttpServletRequest req, HttpServletResponse resp) {
+ String message = "POST not allowed for the StatisticsURL.";
+ EventLogRecord elr = new EventLogRecord(req);
+ elr.setMessage(message);
+ elr.setResult(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
+ eventlogger.error(elr.toString());
+ sendResponseError(resp, HttpServletResponse.SC_METHOD_NOT_ALLOWED, message, eventlogger);
+ }
+
+ private Map<String, String> buildMapFromRequest(HttpServletRequest req) {
+ Map<String, String> map = new HashMap<>();
+ String s = req.getParameter("type");
+ if (s != null) {
+ if ("pub".equals(s) || "del".equals(s) || "exp".equals(s)) {
+ map.put("type", s);
+ } else {
+ map.put("err", "bad type");
+ return map;
+ }
+ } else {
+ map.put("type", "all");
+ }
+ map.put("publishSQL", "");
+ map.put("statusSQL", "");
+ map.put("resultSQL", "");
+ map.put(REASON_SQL, "");
+
+ s = req.getParameter("publishId");
+ if (s != null) {
+ if (s.indexOf("'") >= 0) {
+ map.put("err", "bad publishId");
+ return map;
+ }
+ map.put("publishSQL", " AND PUBLISH_ID = '" + s + "'");
+ }
+
+ s = req.getParameter("statusCode");
+ if (s != null) {
+ String sql = null;
+ switch (s) {
+ case "success":
+ sql = " AND STATUS >= 200 AND STATUS < 300";
+ break;
+ case "redirect":
+ sql = " AND STATUS >= 300 AND STATUS < 400";
+ break;
+ case "failure":
+ sql = " AND STATUS >= 400";
+ break;
+ default:
+ try {
+ int n = Integer.parseInt(s);
+ if ((n >= 100 && n < 600) || (n == -1)) {
+ sql = " AND STATUS = " + n;
+ }
+ } catch (NumberFormatException e) {
+ eventlogger.error("Failed to parse input", e);
+ }
+ break;
+ }
+ if (sql == null) {
+ map.put("err", "bad statusCode");
+ return map;
+ }
+ map.put("statusSQL", sql);
+ map.put("resultSQL", sql.replaceAll("STATUS", "RESULT"));
+ }
+
+ s = req.getParameter("expiryReason");
+ if (s != null) {
+ map.put("type", "exp");
+ switch (s) {
+ case "notRetryable":
+ map.put(REASON_SQL, " AND REASON = 'notRetryable'");
+ break;
+ case "retriesExhausted":
+ map.put(REASON_SQL, " AND REASON = 'retriesExhausted'");
+ break;
+ case "diskFull":
+ map.put(REASON_SQL, " AND REASON = 'diskFull'");
+ break;
+ case "other":
+ map.put(REASON_SQL, " AND REASON = 'other'");
+ break;
+ default:
+ map.put("err", "bad expiryReason");
+ return map;
+ }
+ }
+
+ long stime = getTimeFromParam(req.getParameter("start"));
+ if (stime < 0) {
+ map.put("err", "bad start");
+ return map;
+ }
+ long etime = getTimeFromParam(req.getParameter("end"));
+ if (etime < 0) {
+ map.put("err", "bad end");
+ return map;
+ }
+ if (stime == 0 && etime == 0) {
+ etime = System.currentTimeMillis();
+ stime = etime - TWENTYFOUR_HOURS;
+ } else if (stime == 0) {
+ stime = etime - TWENTYFOUR_HOURS;
+ } else if (etime == 0) {
+ etime = stime + TWENTYFOUR_HOURS;
+ }
+ map.put("timeSQL", String.format(" AND EVENT_TIME >= %d AND EVENT_TIME <= %d", stime, etime));
+ return map;
+ }
+
+ private long getTimeFromParam(final String s) {
+ if (s == null) {
+ return 0;
+ }
+ try {
+ // First, look for an RFC 3339 date
+ String fmt = (s.indexOf('.') > 0) ? FMT2 : FMT1;
+ SimpleDateFormat sdf = new SimpleDateFormat(fmt);
+ Date d = sdf.parse(s);
+ return d.getTime();
+ } catch (ParseException e) {
+ intlogger.error("Exception in getting Time :- " + e.getMessage(), e);
+ }
+ try {
+ // Also allow a long (in ms); useful for testing
+ return Long.parseLong(s);
} catch (NumberFormatException e) {
+ intlogger.error("Exception in getting Time :- " + e.getMessage(), e);
}
- }
- if (sql == null) {
- map.put("err", "bad statusCode");
- return map;
- }
- map.put("statusSQL", sql);
- map.put("resultSQL", sql.replaceAll("STATUS", "RESULT"));
+ intlogger.info("Error parsing time=" + s);
+ return -1;
}
- s = req.getParameter("expiryReason");
- if (s != null) {
- map.put("type", "exp");
- if ("notRetryable".equals(s)) {
- map.put(REASON_SQL, " AND REASON = 'notRetryable'");
- } else if ("retriesExhausted".equals(s)) {
- map.put(REASON_SQL, " AND REASON = 'retriesExhausted'");
- } else if ("diskFull".equals(s)) {
- map.put(REASON_SQL, " AND REASON = 'diskFull'");
- } else if ("other".equals("other")) {
- map.put(REASON_SQL, " AND REASON = 'other'");
- } else {
- map.put("err", "bad expiryReason");
- return map;
- }
- }
-
- long stime = getTimeFromParam(req.getParameter("start"));
- if (stime < 0) {
- map.put("err", "bad start");
- return map;
- }
- long etime = getTimeFromParam(req.getParameter("end"));
- if (etime < 0) {
- map.put("err", "bad end");
- return map;
- }
- if (stime == 0 && etime == 0) {
- etime = System.currentTimeMillis();
- stime = etime - TWENTYFOUR_HOURS;
- } else if (stime == 0) {
- stime = etime - TWENTYFOUR_HOURS;
- } else if (etime == 0) {
- etime = stime + TWENTYFOUR_HOURS;
- }
- map.put("timeSQL", String.format(" AND EVENT_TIME >= %d AND EVENT_TIME <= %d", stime, etime));
- return map;
- }
-
- private long getTimeFromParam(final String s) {
- if (s == null) {
- return 0;
- }
- try {
- // First, look for an RFC 3339 date
- String fmt = (s.indexOf('.') > 0) ? FMT2 : FMT1;
- SimpleDateFormat sdf = new SimpleDateFormat(fmt);
- Date d = sdf.parse(s);
- return d.getTime();
- } catch (ParseException e) {
- }
- try {
- // Also allow a long (in ms); useful for testing
- return Long.parseLong(s);
- } catch (NumberFormatException e) {
- }
- intlogger.info("Error parsing time=" + s);
- return -1;
- }
-
- private void getRecordsForSQL(Map<String, String> map, String outputType, ServletOutputStream out, HttpServletResponse resp) {
- try {
-
- String filterQuery = this.queryGeneretor(map);
- eventlogger.debug("SQL Query for Statistics resultset. " + filterQuery);
- intlogger.debug(filterQuery);
- long start = System.currentTimeMillis();
- DB db = new DB();
- try (Connection conn = db.getConnection()) {
- try (ResultSet rs = conn.prepareStatement(filterQuery).executeQuery()) {
- if ("csv".equals(outputType)) {
- resp.setContentType("application/octet-stream");
- Date date = new Date();
- SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-YYYY HH:mm:ss");
- resp.setHeader("Content-Disposition",
- "attachment; filename=\"result:" + dateFormat.format(date) + ".csv\"");
- eventlogger.info("Generating CSV file from Statistics resultset");
-
- rsToCSV(rs, out);
- } else {
- eventlogger.info("Generating JSON for Statistics resultset");
- this.rsToJson(rs, out);
- }
+ private void getRecordsForSQL(Map<String, String> map, String outputType, ServletOutputStream out, HttpServletResponse resp) {
+ try {
+ String filterQuery = this.queryGeneretor(map);
+ eventlogger.debug("SQL Query for Statistics resultset. " + filterQuery);
+ intlogger.debug(filterQuery);
+ long start = System.currentTimeMillis();
+ DB db = new DB();
+ try (Connection conn = db.getConnection()) {
+ try (ResultSet rs = conn.prepareStatement(filterQuery).executeQuery()) {
+ if ("csv".equals(outputType)) {
+ resp.setContentType("application/octet-stream");
+ Date date = new Date();
+ SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-YYYY HH:mm:ss");
+ resp.setHeader("Content-Disposition",
+ "attachment; filename=\"result:" + dateFormat.format(date) + ".csv\"");
+ eventlogger.info("Generating CSV file from Statistics resultset");
+ rsToCSV(rs, out);
+ } else {
+ eventlogger.info("Generating JSON for Statistics resultset");
+ this.rsToJson(rs, out);
+ }
+ }
+ db.release(conn);
+ } catch (SQLException e) {
+ eventlogger.error("SQLException:" + e);
+ }
+ intlogger.debug("Time: " + (System.currentTimeMillis() - start) + " ms");
+ } catch (IOException e) {
+ eventlogger.error("IOException - Generating JSON/CSV:" + e);
+ } catch (JSONException e) {
+ eventlogger.error("JSONException - executing SQL query:" + e);
+ } catch (ParseException e) {
+ eventlogger.error("ParseException - executing SQL query:" + e);
}
- } catch (SQLException e) {
- eventlogger.error("SQLException:" + e);
- }
- intlogger.debug("Time: " + (System.currentTimeMillis() - start) + " ms");
- } catch (IOException e) {
- eventlogger.error("IOException - Generating JSON/CSV:" + e);
- } catch (JSONException e) {
- eventlogger.error("JSONException - executing SQL query:" + e);
- } catch (ParseException e) {
- eventlogger.error("ParseException - executing SQL query:" + e);
}
- }
}
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/SubscriptionServlet.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/SubscriptionServlet.java
index 125c50d..715c5e1 100644
--- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/SubscriptionServlet.java
+++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/SubscriptionServlet.java
@@ -24,16 +24,18 @@
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.IOException;
import java.io.InvalidObjectException;
import java.net.HttpURLConnection;
import java.net.URL;
+import java.util.ArrayList;
import java.util.List;
-import java.util.Vector;
-
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-
import org.json.JSONException;
import org.json.JSONObject;
import org.onap.dmaap.datarouter.authz.AuthorizationResponse;
@@ -41,11 +43,6 @@
import org.onap.dmaap.datarouter.provisioning.beans.Subscription;
import org.onap.dmaap.datarouter.provisioning.eelf.EelfMsgs;
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
-
-import static org.onap.dmaap.datarouter.provisioning.utils.HttpServletUtils.sendResponseError;
-
/**
* This servlet handles provisioning for the <subscriptionURL> which is generated by the provisioning server to
* handle the inspection, modification, and deletion of a particular subscription to a feed. It supports DELETE to
@@ -515,16 +512,16 @@
* A Thread class used to serially send reset notifications to all nodes in the DR network, when a POST is received
* for a subscription.
*/
- public class SubscriberNotifyThread extends Thread {
+ public static class SubscriberNotifyThread extends Thread {
- public static final String URL_TEMPLATE = "http://%s/internal/resetSubscription/%d";
- private List<String> urls = new Vector<>();
+ static final String URL_TEMPLATE = "http://%s/internal/resetSubscription/%d";
+ private List<String> urls = new ArrayList<>();
- public SubscriberNotifyThread() {
+ SubscriberNotifyThread() {
setName("SubscriberNotifyThread");
}
- public void resetSubscription(int subid) {
+ void resetSubscription(int subid) {
for (String nodename : BaseServlet.getNodes()) {
String u = String.format(URL_TEMPLATE, nodename, subid);
urls.add(u);
@@ -533,23 +530,26 @@
@Override
public void run() {
-
try {
while (!urls.isEmpty()) {
- String u = urls.remove(0);
- try {
- URL url = new URL(u);
- HttpURLConnection conn = (HttpURLConnection) url.openConnection();
- conn.connect();
- conn.getContentLength(); // Force the GET through
- conn.disconnect();
- } catch (IOException e) {
- intlogger.info("PROV0194 Error accessing URL: " + u + ": " + e.getMessage(), e);
- }
+ String url = urls.remove(0);
+ forceGetThrough(url);
}
} catch (Exception e) {
intlogger.warn("PROV0195 Caught exception in SubscriberNotifyThread: " + e.getMessage(), e);
}
}
+
+ private void forceGetThrough(String url) {
+ try {
+ URL urlObj = new URL(url);
+ HttpURLConnection conn = (HttpURLConnection) urlObj.openConnection();
+ conn.connect();
+ conn.getContentLength(); // Force the GET through
+ conn.disconnect();
+ } catch (IOException e) {
+ intlogger.info("PROV0194 Error accessing URL: " + url + ": " + e.getMessage(), e);
+ }
+ }
}
}
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/DeliveryRecord.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/DeliveryRecord.java
index 0bce491..648c4e5 100644
--- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/DeliveryRecord.java
+++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/DeliveryRecord.java
@@ -41,6 +41,9 @@
* @version $Id: DeliveryRecord.java,v 1.9 2014/03/12 19:45:41 eby Exp $
*/
public class DeliveryRecord extends BaseLogRecord {
+
+ private static final String STATUS_CODE = "statusCode";
+ private static final String DELIVERY_ID = "deliveryId";
private int subid;
private String fileid;
private int result;
@@ -53,12 +56,12 @@
*/
public DeliveryRecord(String[] pp) throws ParseException {
super(pp);
- String fileid = pp[5];
- if (fileid.lastIndexOf('/') >= 0) {
- fileid = fileid.substring(fileid.lastIndexOf('/') + 1);
+ String thisFileid = pp[5];
+ if (thisFileid.lastIndexOf('/') >= 0) {
+ thisFileid = thisFileid.substring(thisFileid.lastIndexOf('/') + 1);
}
this.subid = Integer.parseInt(pp[4]);
- this.fileid = fileid;
+ this.fileid = thisFileid;
this.result = Integer.parseInt(pp[10]);
this.user = pp[9];
if (this.user != null && this.user.length() > 50) {
@@ -119,14 +122,12 @@
public LOGJSONObject reOrderObject(LOGJSONObject jo) {
LinkedHashMap<String, Object> logrecordObj = new LinkedHashMap<>();
- logrecordObj.put("statusCode", jo.get("statusCode"));
- logrecordObj.put("deliveryId", jo.get("deliveryId"));
+ logrecordObj.put(STATUS_CODE, jo.get(STATUS_CODE));
+ logrecordObj.put(DELIVERY_ID, jo.get(DELIVERY_ID));
logrecordObj.put("publishId", jo.get("publishId"));
logrecordObj.put("requestURI", jo.get("requestURI"));
- //logrecordObj.put("sourceIP", jo.get("sourceIP"));
logrecordObj.put("method", jo.get("method"));
logrecordObj.put("contentType", jo.get("contentType"));
- //logrecordObj.put("endpointId", jo.get("endpointId"));
logrecordObj.put("type", jo.get("type"));
logrecordObj.put("date", jo.get("date"));
logrecordObj.put("contentLength", jo.get("contentLength"));
@@ -139,8 +140,8 @@
public LOGJSONObject asJSONObject() {
LOGJSONObject jo = super.asJSONObject();
jo.put("type", "del");
- jo.put("deliveryId", user);
- jo.put("statusCode", result);
+ jo.put(DELIVERY_ID, user);
+ jo.put(STATUS_CODE, result);
return this.reOrderObject(jo);
}
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/EgressRoute.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/EgressRoute.java
index 54d5b39..2b6462d 100644
--- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/EgressRoute.java
+++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/EgressRoute.java
@@ -57,10 +57,6 @@
public EgressRoute(int subid, int nodeid) {
this.subid = subid;
this.nodeid = nodeid;
- // Note: unlike for Feeds, it subscriptions can be removed from the tables, so it is
- // possible that an orphan ERT entry can exist if a sub is removed.
- // if (Subscription.getSubscriptionById(subid) == null)
- // throw new IllegalArgumentException("No such subscription: "+subid);
}
public EgressRoute(int subid, String node) {
@@ -149,7 +145,6 @@
ps.setInt(1, this.subid);
ps.setInt(2, this.nodeid);
ps.execute();
- ps.close();
rv = true;
} catch (SQLException e) {
intlogger.warn("PROV0005 doInsert: " + e.getMessage(), e);
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/ExpiryRecord.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/ExpiryRecord.java
index d812036..4c7fffa 100644
--- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/ExpiryRecord.java
+++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/ExpiryRecord.java
@@ -41,9 +41,12 @@
* @version $Id: ExpiryRecord.java,v 1.4 2013/10/28 18:06:52 eby Exp $
*/
public class ExpiryRecord extends BaseLogRecord {
+
+ public static final String EXPIRY_REASON = "expiryReason";
+ public static final String ATTEMPTS = "attempts";
private int subid;
private String fileid;
- private int attempts;
+ private int deliveryAttempts;
private String reason;
/**
@@ -53,13 +56,13 @@
*/
public ExpiryRecord(String[] pp) throws ParseException {
super(pp);
- String fileid = pp[5];
- if (fileid.lastIndexOf('/') >= 0) {
- fileid = fileid.substring(fileid.lastIndexOf('/') + 1);
+ String thisFileid = pp[5];
+ if (thisFileid.lastIndexOf('/') >= 0) {
+ thisFileid = thisFileid.substring(thisFileid.lastIndexOf('/') + 1);
}
this.subid = Integer.parseInt(pp[4]);
- this.fileid = fileid;
- this.attempts = Integer.parseInt(pp[10]);
+ this.fileid = thisFileid;
+ this.deliveryAttempts = Integer.parseInt(pp[10]);
this.reason = pp[9];
if (!reason.equals("notRetryable") && !reason.equals("retriesExhausted") && !reason.equals("diskFull")) {
this.reason = "other";
@@ -75,7 +78,7 @@
super(rs);
this.subid = rs.getInt("DELIVERY_SUBID");
this.fileid = rs.getString("DELIVERY_FILEID");
- this.attempts = rs.getInt("ATTEMPTS");
+ this.deliveryAttempts = rs.getInt("ATTEMPTS");
this.reason = rs.getString("REASON");
}
@@ -95,12 +98,12 @@
this.fileid = fileid;
}
- public int getAttempts() {
- return attempts;
+ public int getDeliveryAttempts() {
+ return deliveryAttempts;
}
- public void setAttempts(int attempts) {
- this.attempts = attempts;
+ public void setDeliveryAttempts(int deliveryAttempts) {
+ this.deliveryAttempts = deliveryAttempts;
}
public String getReason() {
@@ -119,9 +122,9 @@
public LOGJSONObject reOrderObject(LOGJSONObject jo) {
LinkedHashMap<String, Object> logrecordObj = new LinkedHashMap<>();
- logrecordObj.put("expiryReason", jo.get("expiryReason"));
+ logrecordObj.put(EXPIRY_REASON, jo.get(EXPIRY_REASON));
logrecordObj.put("publishId", jo.get("publishId"));
- logrecordObj.put("attempts", jo.get("attempts"));
+ logrecordObj.put(ATTEMPTS, jo.get(ATTEMPTS));
logrecordObj.put("requestURI", jo.get("requestURI"));
logrecordObj.put("method", jo.get("method"));
logrecordObj.put("contentType", jo.get("contentType"));
@@ -136,8 +139,8 @@
public LOGJSONObject asJSONObject() {
LOGJSONObject jo = super.asJSONObject();
jo.put("type", "exp");
- jo.put("expiryReason", reason);
- jo.put("attempts", attempts);
+ jo.put(EXPIRY_REASON, reason);
+ jo.put(ATTEMPTS, deliveryAttempts);
return reOrderObject(jo);
}
@@ -153,7 +156,7 @@
ps.setInt(13, getSubid());
ps.setString(14, getFileid());
ps.setNull(15, Types.INTEGER);
- ps.setInt(16, getAttempts());
+ ps.setInt(16, getDeliveryAttempts());
ps.setString(17, getReason());
ps.setNull(19, Types.BIGINT);
ps.setNull(20, Types.VARCHAR);
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/Feed.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/Feed.java
index a8be6b3..4a14da2 100644
--- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/Feed.java
+++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/Feed.java
@@ -200,7 +200,7 @@
Feed feed = map.get(id);
if (feed != null) {
FeedEndpointID epi = new FeedEndpointID(rs);
- Collection<FeedEndpointID> ecoll = feed.getAuthorization().getEndpoint_ids();
+ Collection<FeedEndpointID> ecoll = feed.getAuthorization().getEndpointIDS();
ecoll.add(epi);
}
}
@@ -212,7 +212,7 @@
int id = rs.getInt("FEEDID");
Feed feed = map.get(id);
if (feed != null) {
- Collection<String> acoll = feed.getAuthorization().getEndpoint_addrs();
+ Collection<String> acoll = feed.getAuthorization().getEndpointAddrs();
acoll.add(rs.getString("ADDR"));
}
}
@@ -281,7 +281,7 @@
if (feed != null) {
sql = "select * from FEED_ENDPOINT_IDS where FEEDID = " + feed.feedid;
try (ResultSet rs = stmt.executeQuery(sql)) {
- Collection<FeedEndpointID> ecoll = feed.getAuthorization().getEndpoint_ids();
+ Collection<FeedEndpointID> ecoll = feed.getAuthorization().getEndpointIDS();
while (rs.next()) {
FeedEndpointID epi = new FeedEndpointID(rs);
ecoll.add(epi);
@@ -289,7 +289,7 @@
}
sql = "select * from FEED_ENDPOINT_ADDRS where FEEDID = " + feed.feedid;
try (ResultSet rs = stmt.executeQuery(sql)) {
- Collection<String> acoll = feed.getAuthorization().getEndpoint_addrs();
+ Collection<String> acoll = feed.getAuthorization().getEndpointAddrs();
while (rs.next()) {
acoll.add(rs.getString("ADDR"));
}
@@ -413,9 +413,9 @@
//Fortify scan fixes - Privacy Violation
throw new InvalidObjectException("password field is too long (" + fid.getPassword() + ")");
}
- this.authorization.getEndpoint_ids().add(fid);
+ this.authorization.getEndpointIDS().add(fid);
}
- if (this.authorization.getEndpoint_ids().isEmpty()) {
+ if (this.authorization.getEndpointIDS().isEmpty()) {
throw new InvalidObjectException("need to specify at least one endpoint_id");
}
endPointIds = jauth.getJSONArray("endpoint_addrs");
@@ -424,7 +424,7 @@
if (!JSONUtilities.validIPAddrOrSubnet(addr)) {
throw new InvalidObjectException("bad IP addr or subnet mask: " + addr);
}
- this.authorization.getEndpoint_addrs().add(addr);
+ this.authorization.getEndpointAddrs().add(addr);
}
this.publisher = jo.optString("publisher", "");
@@ -651,7 +651,7 @@
FeedAuthorization auth = getAuthorization();
String sql = "insert into FEED_ENDPOINT_IDS values (?, ?, ?)";
try (PreparedStatement ps2 = conn.prepareStatement(sql)) {
- for (FeedEndpointID fid : auth.getEndpoint_ids()) {
+ for (FeedEndpointID fid : auth.getEndpointIDS()) {
ps2.setInt(1, feedid);
ps2.setString(2, fid.getId());
ps2.setString(3, fid.getPassword());
@@ -662,7 +662,7 @@
// Create FEED_ENDPOINT_ADDRS rows
sql = "insert into FEED_ENDPOINT_ADDRS values (?, ?)";
try (PreparedStatement ps2 = conn.prepareStatement(sql)) {
- for (String t : auth.getEndpoint_addrs()) {
+ for (String t : auth.getEndpointAddrs()) {
ps2.setInt(1, feedid);
ps2.setString(2, t);
ps2.executeUpdate();
@@ -705,8 +705,8 @@
Feed oldobj = getFeedById(feedid);
PreparedStatement ps = null;
try {
- Set<FeedEndpointID> newset = getAuthorization().getEndpoint_ids();
- Set<FeedEndpointID> oldset = oldobj.getAuthorization().getEndpoint_ids();
+ Set<FeedEndpointID> newset = getAuthorization().getEndpointIDS();
+ Set<FeedEndpointID> oldset = oldobj.getAuthorization().getEndpointIDS();
// Insert new FEED_ENDPOINT_IDS rows
String sql = "insert into FEED_ENDPOINT_IDS values (?, ?, ?)";
@@ -735,8 +735,8 @@
ps.close();
// Insert new FEED_ENDPOINT_ADDRS rows
- Set<String> newset2 = getAuthorization().getEndpoint_addrs();
- Set<String> oldset2 = oldobj.getAuthorization().getEndpoint_addrs();
+ Set<String> newset2 = getAuthorization().getEndpointAddrs();
+ Set<String> oldset2 = oldobj.getAuthorization().getEndpointAddrs();
sql = "insert into FEED_ENDPOINT_ADDRS values (?, ?)";
ps = conn.prepareStatement(sql);
for (String t : newset2) {
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/FeedAuthorization.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/FeedAuthorization.java
index ff08f59..fad6a33 100644
--- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/FeedAuthorization.java
+++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/FeedAuthorization.java
@@ -60,19 +60,19 @@
this.classification = classification;
}
- public Set<FeedEndpointID> getEndpoint_ids() {
+ public Set<FeedEndpointID> getEndpointIDS() {
return endpointIds;
}
- public void setEndpoint_ids(Set<FeedEndpointID> endpointIds) {
+ public void setEndpointIDS(Set<FeedEndpointID> endpointIds) {
this.endpointIds = endpointIds;
}
- public Set<String> getEndpoint_addrs() {
+ public Set<String> getEndpointAddrs() {
return endpointAddrs;
}
- public void setEndpoint_addrs(Set<String> endpointAddrs) {
+ public void setEndpointAddrs(Set<String> endpointAddrs) {
this.endpointAddrs = endpointAddrs;
}
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/FeedLinks.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/FeedLinks.java
index 779bffa..d3ee643 100644
--- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/FeedLinks.java
+++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/FeedLinks.java
@@ -24,9 +24,7 @@
package org.onap.dmaap.datarouter.provisioning.beans;
-import java.io.InvalidObjectException;
import java.util.Objects;
-
import org.json.JSONObject;
/**
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/Group.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/Group.java
index e0756f9..3f68590 100644
--- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/Group.java
+++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/Group.java
@@ -152,10 +152,7 @@
*/
public static Group getGroupMatching(Group gup, int groupid) {
String sql = String.format(
- "select * from GROUPS where NAME = '%s' and GROUPID != %d ",
- gup.getName(),
- gup.getGroupid()
- );
+ "select * from GROUPS where NAME = '%s' and GROUPID != %d ", gup.getName(), gup.getGroupid());
List<Group> list = getGroupsForSQL(sql);
return !list.isEmpty() ? list.get(0) : null;
}
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/IngressRoute.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/IngressRoute.java
index f1fa54c..555c5b6 100644
--- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/IngressRoute.java
+++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/IngressRoute.java
@@ -398,7 +398,6 @@
ps.setString(2, userid);
ps.setString(3, subnet);
ps.execute();
- ps.close();
// Delete the NodeSet
ps2.setInt(1, nodelist);
ps2.execute();
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/PublishRecord.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/PublishRecord.java
index 4afb61c..f5a2000 100644
--- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/PublishRecord.java
+++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/PublishRecord.java
@@ -42,6 +42,11 @@
*/
public class PublishRecord extends BaseLogRecord {
+
+ public static final String STATUS_CODE = "statusCode";
+ public static final String SOURCE_IP = "sourceIP";
+ public static final String ENDPOINT_ID = "endpointId";
+ public static final String FILE_NAME = "fileName";
private String feedFileid;
private String remoteAddr;
private String user;
@@ -134,17 +139,17 @@
LinkedHashMap<String, Object> logrecordObj = new LinkedHashMap<>();
- logrecordObj.put("statusCode", jo.get("statusCode"));
+ logrecordObj.put(STATUS_CODE, jo.get(STATUS_CODE));
logrecordObj.put("publishId", jo.get("publishId"));
logrecordObj.put("requestURI", jo.get("requestURI"));
- logrecordObj.put("sourceIP", jo.get("sourceIP"));
+ logrecordObj.put(SOURCE_IP, jo.get(SOURCE_IP));
logrecordObj.put("method", jo.get("method"));
logrecordObj.put("contentType", jo.get("contentType"));
- logrecordObj.put("endpointId", jo.get("endpointId"));
+ logrecordObj.put(ENDPOINT_ID, jo.get(ENDPOINT_ID));
logrecordObj.put("type", jo.get("type"));
logrecordObj.put("date", jo.get("date"));
logrecordObj.put("contentLength", jo.get("contentLength"));
- logrecordObj.put("fileName", jo.get("fileName"));
+ logrecordObj.put(FILE_NAME, jo.get(FILE_NAME));
return new LOGJSONObject(logrecordObj);
}
@@ -157,10 +162,10 @@
jo.put("feedFileid", feedFileid);
jo.put("remoteAddr", remoteAddr);
jo.put("user", user);
- jo.put("sourceIP", remoteAddr);
- jo.put("endpointId", user);
- jo.put("statusCode", status);
- jo.put("fileName", fileName);
+ jo.put(SOURCE_IP, remoteAddr);
+ jo.put(ENDPOINT_ID, user);
+ jo.put(STATUS_CODE, status);
+ jo.put(FILE_NAME, fileName);
return this.reOrderObject(jo);
}
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/SubLinks.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/SubLinks.java
index 9c10fb3..c076ffb 100644
--- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/SubLinks.java
+++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/SubLinks.java
@@ -24,9 +24,7 @@
package org.onap.dmaap.datarouter.provisioning.beans;
-import java.io.InvalidObjectException;
import java.util.Objects;
-
import org.json.JSONObject;
/**
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/JSONUtilities.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/JSONUtilities.java
index 2d4e22b..9abd5a8 100644
--- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/JSONUtilities.java
+++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/JSONUtilities.java
@@ -39,6 +39,10 @@
public class JSONUtilities {
private static final EELFLogger intlogger = EELFManager.getInstance().getLogger("InternalLog");
+
+ private JSONUtilities(){
+
+ }
/**
* Does the String <i>v</i> represent a valid Internet address (with or without a
* mask length appended).
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/PurgeLogDirTask.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/PurgeLogDirTask.java
index c34e954..7cb1c02 100644
--- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/PurgeLogDirTask.java
+++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/PurgeLogDirTask.java
@@ -27,6 +27,8 @@
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
import java.util.Objects;
import java.util.Properties;
import java.util.TimerTask;
@@ -76,7 +78,11 @@
long exptime = System.currentTimeMillis() - interval;
for (File logfile : Objects.requireNonNull(dir.listFiles())) {
if (logfile.lastModified() < exptime) {
- logfile.delete();
+ try {
+ Files.delete(logfile.toPath());
+ } catch (IOException e) {
+ utilsLogger.error("Failed to delete file: " + logfile.getPath(), e);
+ }
}
}
}
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/RLEBitSet.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/RLEBitSet.java
index 7914c81..b57ceb1 100644
--- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/RLEBitSet.java
+++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/RLEBitSet.java
@@ -129,7 +129,7 @@
@Override
public int hashCode() {
- return new Long(start ^ nbits).hashCode();
+ return Long.valueOf(start ^ nbits).hashCode();
}
@Override
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/ThrottleFilter.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/ThrottleFilter.java
index b0fd4f4..da06f6b 100644
--- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/ThrottleFilter.java
+++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/ThrottleFilter.java
@@ -24,6 +24,8 @@
package org.onap.dmaap.datarouter.provisioning.utils;
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
@@ -32,8 +34,6 @@
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;
-import java.util.Vector;
-
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
@@ -42,12 +42,10 @@
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
import org.eclipse.jetty.continuation.Continuation;
import org.eclipse.jetty.continuation.ContinuationSupport;
-import org.eclipse.jetty.server.*;
+import org.eclipse.jetty.server.HttpConnection;
+import org.eclipse.jetty.server.Request;
import org.onap.dmaap.datarouter.provisioning.beans.Parameters;
/**
@@ -88,9 +86,9 @@
* @version $Id: ThrottleFilter.java,v 1.2 2014/03/12 19:45:41 eby Exp $
*/
public class ThrottleFilter extends TimerTask implements Filter {
- public static final int DEFAULT_N = 10;
- public static final int DEFAULT_M = 5;
- public static final String THROTTLE_MARKER = "org.onap.dmaap.datarouter.provisioning.THROTTLE_MARKER";
+ private static final int DEFAULT_N = 10;
+ private static final int DEFAULT_M = 5;
+ private static final String THROTTLE_MARKER = "org.onap.dmaap.datarouter.provisioning.THROTTLE_MARKER";
private static final String JETTY_REQUEST = "org.eclipse.jetty.server.Request";
private static final long ONE_MINUTE = 60000L;
private static final int ACTION_DROP = 0;
@@ -98,8 +96,8 @@
// Configuration
private static boolean enabled = false; // enabled or not
- private static int n_requests = 0; // number of requests in M minutes
- private static int m_minutes = 0; // sampling period
+ private static int numRequests = 0; // number of requests in M minutes
+ private static int samplingPeriod = 0; // sampling period
private static int action = ACTION_DROP; // action to take (throttle or drop)
private static EELFLogger logger = EELFManager.getInstance().getLogger("InternalLog");
@@ -121,19 +119,20 @@
try {
Class.forName(JETTY_REQUEST);
String v = p.getValue();
- if (v != null && !v.equals("off")) {
+ if (v != null && !"off".equals(v)) {
String[] pp = v.split(",");
if (pp != null) {
- n_requests = (pp.length > 0) ? getInt(pp[0], DEFAULT_N) : DEFAULT_N;
- m_minutes = (pp.length > 1) ? getInt(pp[1], DEFAULT_M) : DEFAULT_M;
- action = (pp.length > 2 && pp[2] != null && pp[2].equalsIgnoreCase("throttle")) ? ACTION_THROTTLE : ACTION_DROP;
+ numRequests = (pp.length > 0) ? getInt(pp[0], DEFAULT_N) : DEFAULT_N;
+ samplingPeriod = (pp.length > 1) ? getInt(pp[1], DEFAULT_M) : DEFAULT_M;
+ action = (pp.length > 2 && pp[2] != null && "throttle".equalsIgnoreCase(pp[2])) ? ACTION_THROTTLE : ACTION_DROP;
enabled = true;
// ACTION_THROTTLE is not currently working, so is not supported
if (action == ACTION_THROTTLE) {
action = ACTION_DROP;
logger.info("Throttling is not currently supported; action changed to DROP");
}
- logger.info("ThrottleFilter is ENABLED for /publish requests; N=" + n_requests + ", M=" + m_minutes + ", Action=" + action);
+ logger.info("ThrottleFilter is ENABLED for /publish requests; N=" + numRequests + ", M=" + samplingPeriod
+ + ", Action=" + action);
return;
}
}
@@ -175,27 +174,29 @@
public void dropFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
throws IOException, ServletException {
int rate = getRequestRate(request);
- if (rate >= n_requests) {
+ if (rate >= numRequests) {
// drop request - only works under Jetty
- String m = String.format("Dropping connection: %s %d bad connections in %d minutes", getConnectionId(request), rate, m_minutes);
+ String m = String.format("Dropping connection: %s %d bad connections in %d minutes", getConnectionId(request), rate,
+ samplingPeriod);
logger.info(m);
- Request base_request = (request instanceof Request)
+ Request baseRequest = (request instanceof Request)
? (Request) request
: HttpConnection.getCurrentConnection().getHttpChannel().getRequest();
- base_request.getHttpChannel().getEndPoint().close();
+ baseRequest.getHttpChannel().getEndPoint().close();
} else {
chain.doFilter(request, response);
}
}
- public void throttleFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
+ private void throttleFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
throws IOException, ServletException {
// throttle request
String id = getConnectionId(request);
int rate = getRequestRate(request);
Object results = request.getAttribute(THROTTLE_MARKER);
- if (rate >= n_requests && results == null) {
- String m = String.format("Throttling connection: %s %d bad connections in %d minutes", getConnectionId(request), rate, m_minutes);
+ if (rate >= numRequests && results == null) {
+ String m = String.format("Throttling connection: %s %d bad connections in %d minutes",
+ getConnectionId(request), rate, samplingPeriod);
logger.info(m);
Continuation continuation = ContinuationSupport.getContinuation(request);
continuation.suspend();
@@ -214,22 +215,22 @@
}
}
- private Map<String, List<Continuation>> suspended_requests = new HashMap<>();
+ private Map<String, List<Continuation>> suspendedRequests = new HashMap<>();
private void register(String id, Continuation continuation) {
- synchronized (suspended_requests) {
- List<Continuation> list = suspended_requests.get(id);
+ synchronized (suspendedRequests) {
+ List<Continuation> list = suspendedRequests.get(id);
if (list == null) {
list = new ArrayList<>();
- suspended_requests.put(id, list);
+ suspendedRequests.put(id, list);
}
list.add(continuation);
}
}
private void resume(String id) {
- synchronized (suspended_requests) {
- List<Continuation> list = suspended_requests.get(id);
+ synchronized (suspendedRequests) {
+ List<Continuation> list = suspendedRequests.get(id);
if (list != null) {
// when the waited for event happens
Continuation continuation = list.remove(0);
@@ -248,7 +249,7 @@
*/
private int getRequestRate(HttpServletRequest request) {
String expecthdr = request.getHeader("Expect");
- if (expecthdr != null && expecthdr.equalsIgnoreCase("100-continue"))
+ if (expecthdr != null && "100-continue".equalsIgnoreCase(expecthdr))
return 0;
String key = getConnectionId(request);
@@ -263,11 +264,11 @@
}
public class Counter {
- private List<Long> times = new Vector<>(); // a record of request times
+ private List<Long> times = new ArrayList<>(); // a record of request times
public int prune() {
try {
- long n = System.currentTimeMillis() - (m_minutes * ONE_MINUTE);
+ long n = System.currentTimeMillis() - (samplingPeriod * ONE_MINUTE);
long t = times.get(0);
while (t < n) {
times.remove(0);
diff --git a/datarouter-prov/src/test/java/org/onap/dmaap/datarouter/provisioning/beans/EgressRouteTest.java b/datarouter-prov/src/test/java/org/onap/dmaap/datarouter/provisioning/beans/EgressRouteTest.java
index 7ef52ff..7b77a1e 100644
--- a/datarouter-prov/src/test/java/org/onap/dmaap/datarouter/provisioning/beans/EgressRouteTest.java
+++ b/datarouter-prov/src/test/java/org/onap/dmaap/datarouter/provisioning/beans/EgressRouteTest.java
@@ -64,15 +64,7 @@
}
@Test
- public void Verify_NetworkRoute_Is_Added_Successfully() throws SQLException {
- Assert.assertEquals(1, EgressRoute.getAllEgressRoutes().size());
- egressRoute.doInsert(db.getConnection());
- Assert.assertEquals(2, EgressRoute.getAllEgressRoutes().size());
- egressRoute.doDelete(db.getConnection());
- }
-
- @Test
- public void Verify_NetworkRoute_Is_Removed_Successfully() throws SQLException {
+ public void Verify_EgressRoute_Is_Removed_Successfully() throws SQLException {
Assert.assertEquals(1, EgressRoute.getAllEgressRoutes().size());
EgressRoute egressRoute = new EgressRoute(1, 1);
egressRoute.doDelete(db.getConnection());
@@ -80,7 +72,7 @@
}
@Test
- public void Verify_NetworkRoute_Is_Updated_Successfully() throws SQLException {
+ public void Verify_EgressRoute_Is_Updated_Successfully() throws SQLException {
EgressRoute egressRoute = new EgressRoute(1, 1);
EgressRoute egressRoute1 = new EgressRoute(1, 1);
Assert.assertEquals(egressRoute.hashCode(), egressRoute1.hashCode());
diff --git a/datarouter-prov/src/test/java/org/onap/dmaap/datarouter/provisioning/beans/ExpiryRecordTest.java b/datarouter-prov/src/test/java/org/onap/dmaap/datarouter/provisioning/beans/ExpiryRecordTest.java
index 34a6d97..1bf34e4 100644
--- a/datarouter-prov/src/test/java/org/onap/dmaap/datarouter/provisioning/beans/ExpiryRecordTest.java
+++ b/datarouter-prov/src/test/java/org/onap/dmaap/datarouter/provisioning/beans/ExpiryRecordTest.java
@@ -46,7 +46,7 @@
Assert.assertEquals(2000, expiryRecord.getContentLength());
Assert.assertEquals(285, expiryRecord.getSubid());
Assert.assertEquals("file.txt", expiryRecord.getFileid());
- Assert.assertEquals(100, expiryRecord.getAttempts());
+ Assert.assertEquals(100, expiryRecord.getDeliveryAttempts());
Assert.assertEquals("other", expiryRecord.getReason());
}
@@ -63,7 +63,7 @@
expiryRecord.setMethod("PUT");
expiryRecord.setSubid(322);
expiryRecord.setFileid("file.txt");
- expiryRecord.setAttempts(125);
+ expiryRecord.setDeliveryAttempts(125);
expiryRecord.setReason("Out of memory");
LOGJSONObject expiryRecordJson = createBaseLogRecordJson();
diff --git a/datarouter-prov/src/test/java/org/onap/dmaap/datarouter/provisioning/beans/FeedTest.java b/datarouter-prov/src/test/java/org/onap/dmaap/datarouter/provisioning/beans/FeedTest.java
index dcab541..9db4322 100644
--- a/datarouter-prov/src/test/java/org/onap/dmaap/datarouter/provisioning/beans/FeedTest.java
+++ b/datarouter-prov/src/test/java/org/onap/dmaap/datarouter/provisioning/beans/FeedTest.java
@@ -140,8 +140,8 @@
setA.add(new FeedEndpointID("1", "Name"));
Set setB = new HashSet();
setB.add("172.0.0.1");
- fa.setEndpoint_ids(setA);
- fa.setEndpoint_addrs(setB);
+ fa.setEndpointIDS(setA);
+ fa.setEndpointAddrs(setB);
feed.setAuthorization(fa);
Assert.assertEquals(feed.doInsert(connection), false);
diff --git a/datarouter-prov/src/test/java/org/onap/dmaap/datarouter/provisioning/beans/NetworkRouteTest.java b/datarouter-prov/src/test/java/org/onap/dmaap/datarouter/provisioning/beans/NetworkRouteTest.java
index df786b5..d727bc7 100644
--- a/datarouter-prov/src/test/java/org/onap/dmaap/datarouter/provisioning/beans/NetworkRouteTest.java
+++ b/datarouter-prov/src/test/java/org/onap/dmaap/datarouter/provisioning/beans/NetworkRouteTest.java
@@ -64,14 +64,6 @@
}
@Test
- public void Verify_NetworkRoute_Is_Added_Successfully() throws SQLException {
- Assert.assertEquals(1, NetworkRoute.getAllNetworkRoutes().size());
- networkRoute.doInsert(db.getConnection());
- Assert.assertEquals(2, NetworkRoute.getAllNetworkRoutes().size());
- networkRoute.doDelete(db.getConnection());
- }
-
- @Test
public void Verify_NetworkRoute_Is_Removed_Successfully() throws SQLException {
Assert.assertEquals(1, NetworkRoute.getAllNetworkRoutes().size());
NetworkRoute networkRoute = new NetworkRoute("stub_from.", "stub_to.");
diff --git a/datarouter-prov/src/test/java/org/onap/dmaap/datarouter/provisioning/utils/ThrottleFilterTest.java b/datarouter-prov/src/test/java/org/onap/dmaap/datarouter/provisioning/utils/ThrottleFilterTest.java
index a8e919b..94ef3b7 100644
--- a/datarouter-prov/src/test/java/org/onap/dmaap/datarouter/provisioning/utils/ThrottleFilterTest.java
+++ b/datarouter-prov/src/test/java/org/onap/dmaap/datarouter/provisioning/utils/ThrottleFilterTest.java
@@ -108,7 +108,7 @@
List<Continuation> continuation_list = new ArrayList<>();
continuation_list.add(continuation);
suspended_requests.put("null/-1", continuation_list);
- FieldUtils.writeDeclaredField(throttlefilter, "suspended_requests", suspended_requests, true);
+ FieldUtils.writeDeclaredField(throttlefilter, "suspendedRequests", suspended_requests, true);
throttlefilter.doFilter(request, response, filterchain);
verify(continuation, times(1)).setAttribute(anyString(), any());
verify(continuation, times(1)).resume();