From b36cd5ce80f986b12902a578cc29bdec803ea479 Mon Sep 17 00:00:00 2001 From: Robert Butora <robert.butora@gmail.com> Date: Wed, 27 Mar 2024 10:36:57 -0400 Subject: [PATCH] adds (crude) error handling to Formatting-filter --- .../vlkb/webapi/FormatResponseFilter.java | 27 ++++++++++++------- .../main/java/vlkb/webapi/SearchServlet.java | 4 --- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/data-discovery/src/main/java/vlkb/webapi/FormatResponseFilter.java b/data-discovery/src/main/java/vlkb/webapi/FormatResponseFilter.java index 1f7718c..ca76456 100644 --- a/data-discovery/src/main/java/vlkb/webapi/FormatResponseFilter.java +++ b/data-discovery/src/main/java/vlkb/webapi/FormatResponseFilter.java @@ -57,6 +57,11 @@ public class FormatResponseFilter implements Filter protected Subsurvey[] dbSubsurveyArr = null; private String reqQueryString; + protected void doUsageError(String message, PrintWriter printWriter) + { + printWriter.println("UsageError : " + message); + } + @Override public void init(FilterConfig filterConfig) throws ServletException @@ -76,17 +81,12 @@ public class FormatResponseFilter implements Filter { LOGGER.info("trace"); LOGGER.info("REQUEST START ============================================================================================="); - - Map<String, String[]> params = request.getParameterMap(); - //for(String keys : params.keySet()) LOGGER.info("Params: " + keys); - Coord coord = new Coord(params); - SubsurveyId subsurveyId = new SubsurveyId(params); - // FIXME add invalid param excpetions FormatResponseWrapper responseWrapper = new FormatResponseWrapper((HttpServletResponse) response); chain.doFilter(request, responseWrapper); + long startTime_msec = System.currentTimeMillis(); String[] pubdidArr = responseWrapper.getPubdidArr(); @@ -95,6 +95,12 @@ public class FormatResponseFilter implements Filter { PrintWriter responseWriter = ((HttpServletResponse)response).getWriter(); + Map<String, String[]> params = request.getParameterMap(); + Coord coord = new Coord(params); + SubsurveyId subsurveyId = new SubsurveyId(params); + // FIXME add invalid param excpetions -> params already parsed in servlet + + Dataset[] datasetArr = queryObsCore( pubdidArr, coord,// VLKB: calc ovelrap-codes @@ -126,15 +132,18 @@ public class FormatResponseFilter implements Filter } else { - ; // FIXME throws wrong setting-file param: batter convert string to enum and throw 'unrecoginzed respFormat' then; - // here use switch with enums and switch-default: say error: 'unsupported respFromat' type + final String errMsg = "Illegal response format request: " + respFormat; + LOGGER.info(errMsg); + response.setContentType("text/plain"); + doUsageError(errMsg, responseWriter); + // FIXME set http err code } responseWriter.close(); } else { - LOGGER.info("Servlet returned no ID's."); + LOGGER.info("SearchServlet returned no ID's."); } LOGGER.info("REQUEST END ============================================================================================="); diff --git a/data-discovery/src/main/java/vlkb/webapi/SearchServlet.java b/data-discovery/src/main/java/vlkb/webapi/SearchServlet.java index 86e13c2..06ef4ed 100644 --- a/data-discovery/src/main/java/vlkb/webapi/SearchServlet.java +++ b/data-discovery/src/main/java/vlkb/webapi/SearchServlet.java @@ -99,7 +99,6 @@ public class SearchServlet extends javax.servlet.http.HttpServlet response.setContentType("text/plain"); response.setCharacterEncoding(RESPONSE_ENCODING); - //PrintWriter writer = response.getWriter(); for(String pubdid : pubdidArr) { @@ -114,7 +113,6 @@ public class SearchServlet extends javax.servlet.http.HttpServlet response.setStatus(HttpServletResponse.SC_BAD_REQUEST); response.setContentType("text/plain"); - //PrintWriter writer = new PrintWriter(new OutputStreamWriter(respOutputStream, RESPONSE_ENCODING)); doMultiValuedParamNotSupported(ex.getMessage(), writer); writer.close(); @@ -125,7 +123,6 @@ public class SearchServlet extends javax.servlet.http.HttpServlet response.setStatus(HttpServletResponse.SC_BAD_REQUEST); response.setContentType("text/plain"); - //PrintWriter writer = new PrintWriter(new OutputStreamWriter(respOutputStream, RESPONSE_ENCODING)); doUsageError(ex.getMessage(), writer); writer.close(); @@ -137,7 +134,6 @@ public class SearchServlet extends javax.servlet.http.HttpServlet response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); response.setContentType("text/plain"); - //PrintWriter writer = new PrintWriter(new OutputStreamWriter(respOutputStream, RESPONSE_ENCODING)); doError(ex.toString(), writer); writer.close(); -- GitLab