Commit b36cd5ce authored by Robert Butora's avatar Robert Butora
Browse files

adds (crude) error handling to Formatting-filter

parent 05a9f19f
Loading
Loading
Loading
Loading
+18 −9
Original line number Diff line number Diff line
@@ -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
@@ -77,16 +82,11 @@ 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   =============================================================================================");
+0 −4
Original line number Diff line number Diff line
@@ -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();