From ced99d77035550aa78a3f7bb5d3b52b3451f0ae0 Mon Sep 17 00:00:00 2001 From: Jim Blake Date: Thu, 2 Apr 2015 17:05:47 -0400 Subject: [PATCH] Improve some error handling to clean up the catalina log. --- .../controller/api/VitroApiServlet.java | 21 ++++++++++++++----- .../serving/FileServingServlet.java | 6 ++++-- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/api/VitroApiServlet.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/api/VitroApiServlet.java index 71e826f37..cbcf26b8f 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/api/VitroApiServlet.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/api/VitroApiServlet.java @@ -3,6 +3,7 @@ package edu.cornell.mannlib.vitro.webapp.controller.api; import java.io.IOException; +import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.util.Collection; @@ -46,13 +47,13 @@ public class VitroApiServlet extends HttpServlet { Authenticator auth = Authenticator.getInstance(req); UserAccount account = auth.getAccountForInternalAuth(email); - + if (auth.accountRequiresEditing(account)) { log.debug("Account " + email + " requires editing."); throw new AuthException("user account must include first and " + "last names and a valid email address."); } - + if (!auth.isCurrentPassword(account, password)) { log.debug("Invalid: '" + email + "'/'" + password + "'"); throw new AuthException("email/password combination is not valid"); @@ -68,7 +69,7 @@ public class VitroApiServlet extends HttpServlet { log.debug("Account " + email + " requires a new password."); throw new AuthException("user account requires a new password."); } - + log.debug("Authorized for '" + email + "'"); } @@ -86,19 +87,29 @@ public class VitroApiServlet extends HttpServlet { protected void sendShortResponse(int statusCode, String message, HttpServletResponse resp) throws IOException { resp.setStatus(statusCode); - PrintWriter writer = resp.getWriter(); + PrintWriter writer = getWriter(resp); writer.println("

" + statusCode + " " + message + "

"); } protected void sendShortResponse(int statusCode, String message, Throwable e, HttpServletResponse resp) throws IOException { + log.warn("Unexpected exception: " + e, e); sendShortResponse(statusCode, message, resp); - PrintWriter writer = resp.getWriter(); + PrintWriter writer = getWriter(resp); writer.println("
");
 		e.printStackTrace(writer);
 		writer.println("
"); } + private PrintWriter getWriter(HttpServletResponse resp) throws IOException { + try { + return resp.getWriter(); + } catch (IllegalStateException e) { + return new PrintWriter(new OutputStreamWriter( + resp.getOutputStream())); + } + } + // ---------------------------------------------------------------------- // Helper classes // ---------------------------------------------------------------------- diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/filestorage/serving/FileServingServlet.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/filestorage/serving/FileServingServlet.java index 7a5c5075b..76927409e 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/filestorage/serving/FileServingServlet.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/filestorage/serving/FileServingServlet.java @@ -117,13 +117,15 @@ public class FileServingServlet extends VitroHttpServlet { try { in.close(); } catch (Exception e) { - e.printStackTrace(); + log.warn("Serving " + request.getRequestURI() + + ". Failed to close input stream.", e); } if (out != null) { try { out.close(); } catch (Exception e) { - e.printStackTrace(); + log.warn("Serving " + request.getRequestURI() + + ". Failed to close output stream.", e); } } }