You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@reef.apache.org by af...@apache.org on 2015/10/05 19:25:38 UTC
incubator-reef git commit: [REEF-781] Fix NPE on receiving filename
query without arguments
Repository: incubator-reef
Updated Branches:
refs/heads/master b9b8dca4a -> ce017df22
[REEF-781] Fix NPE on receiving filename query without arguments
This PR addresses the followings issues in HttpServerReefEventHandler:
* Fix NullPointerException on `filename` query without arguments
* Use typed list to avoid dynamic type-casting
* Remove mixed use of both `getWriter()` and `getOutputStream()'
JIRA:
[REEF-781](https://issues.apache.org/jira/browse/REEF-781)
Pull Request:
Closes #520
Project: http://git-wip-us.apache.org/repos/asf/incubator-reef/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-reef/commit/ce017df2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-reef/tree/ce017df2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-reef/diff/ce017df2
Branch: refs/heads/master
Commit: ce017df225ab618d654585d9c23b32aa3f0e265c
Parents: b9b8dca
Author: Dongjoon Hyun <do...@apache.org>
Authored: Wed Sep 23 17:50:41 2015 +0900
Committer: Dongjoon Hyun <do...@apache.org>
Committed: Mon Oct 5 04:45:50 2015 +0900
----------------------------------------------------------------------
.../webserver/HttpServerReefEventHandler.java | 39 ++++++++++++--------
1 file changed, 23 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/ce017df2/lang/java/reef-webserver/src/main/java/org/apache/reef/webserver/HttpServerReefEventHandler.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-webserver/src/main/java/org/apache/reef/webserver/HttpServerReefEventHandler.java b/lang/java/reef-webserver/src/main/java/org/apache/reef/webserver/HttpServerReefEventHandler.java
index ad6f9b0..dfa3362 100644
--- a/lang/java/reef-webserver/src/main/java/org/apache/reef/webserver/HttpServerReefEventHandler.java
+++ b/lang/java/reef-webserver/src/main/java/org/apache/reef/webserver/HttpServerReefEventHandler.java
@@ -29,6 +29,7 @@ import org.apache.reef.util.logging.LogParser;
import org.apache.reef.util.logging.LoggingScopeFactory;
import org.apache.reef.util.logging.LoggingScopeImpl;
import org.apache.reef.wake.EventHandler;
+
import javax.inject.Inject;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletResponse;
@@ -38,6 +39,7 @@ import java.net.InetSocketAddress;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
+import java.util.Arrays;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -169,20 +171,22 @@ public final class HttpServerReefEventHandler implements HttpHandler {
writeLines(response, result, "Current Stages...");
break;
case "logfile":
- final List names = parsedHttpRequest.getQueryMap().get("filename");
+ final List<String> names = parsedHttpRequest.getQueryMap().get("filename");
+ final PrintWriter writer = response.getWriter();
if (names == null || names.size() == 0) {
- response.getWriter().println(String.format("File name is not provided"));
- }
-
- final String fileName = (String)names.get(0);
- if (!fileName.equals(driverStdoutFile) && !fileName.equals(driverStderrFile)) {
- response.getWriter().println(String.format("Unsupported file names: [%s] ", fileName));
- }
- try {
- final byte[] outputBody = readFile((String) names.get(0)).getBytes(StandardCharsets.UTF_8);
- response.getOutputStream().write(outputBody);
- } catch(final IOException e) {
- response.getWriter().println(String.format("Cannot find the log file: [%s].", fileName));
+ writer.println("File name is not provided");
+ } else {
+ final String fileName = names.get(0);
+ if (!fileName.equals(driverStdoutFile) && !fileName.equals(driverStderrFile)) {
+ writer.println(String.format("Unsupported file names: [%s] ", fileName));
+ } else {
+ try {
+ final byte[] outputBody = readFile(fileName).getBytes(StandardCharsets.UTF_8);
+ writer.print(Arrays.toString(outputBody));
+ } catch (final IOException e) {
+ writer.println(String.format("Cannot find the log file: [%s].", fileName));
+ }
+ }
}
break;
// TODO[JIRA REEF-798] Use this provider in the HTTP
@@ -280,7 +284,7 @@ public final class HttpServerReefEventHandler implements HttpHandler {
* Get all evaluator ids and send it back to response as JSON.
*/
private void writeEvaluatorsJsonOutput(final HttpServletResponse response) throws IOException {
- LOG.log(Level.INFO, "HttpServerReefEventHandler getEvaluators is called");
+ LOG.log(Level.INFO, "HttpServerReefEventHandler writeEvaluatorsJsonOutput is called");
try {
final EvaluatorListSerializer serializer =
Tang.Factory.getTang().newInjector().getInstance(EvaluatorListSerializer.class);
@@ -302,7 +306,7 @@ public final class HttpServerReefEventHandler implements HttpHandler {
*/
private void writeEvaluatorsWebOutput(final HttpServletResponse response) throws IOException {
- LOG.log(Level.INFO, "HttpServerReefEventHandler getEvaluators is called");
+ LOG.log(Level.INFO, "HttpServerReefEventHandler writeEvaluatorsWebOutput is called");
final PrintWriter writer = response.getWriter();
@@ -329,6 +333,9 @@ public final class HttpServerReefEventHandler implements HttpHandler {
* Write Driver Info as JSON string to Response.
*/
private void writeDriverJsonInformation(final HttpServletResponse response) throws IOException {
+
+ LOG.log(Level.INFO, "HttpServerReefEventHandler writeDriverJsonInformation invoked.");
+
try {
final DriverInfoSerializer serializer =
Tang.Factory.getTang().newInjector().getInstance(DriverInfoSerializer.class);
@@ -355,7 +362,7 @@ public final class HttpServerReefEventHandler implements HttpHandler {
*/
private void writeDriverWebInformation(final HttpServletResponse response) throws IOException {
- LOG.log(Level.INFO, "HttpServerReefEventHandler writeDriverInformation invoked.");
+ LOG.log(Level.INFO, "HttpServerReefEventHandler writeDriverWebInformation invoked.");
final PrintWriter writer = response.getWriter();