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