Commit 05a9f19f authored by Robert Butora's avatar Robert Butora
Browse files

adds VO error handling to SearchServlet

parent a513bf04
Loading
Loading
Loading
Loading
+11 −6
Original line number Diff line number Diff line
@@ -78,7 +78,7 @@ public class FormatResponseFilter implements Filter
      LOGGER.info("REQUEST START =============================================================================================");
 
      Map<String, String[]> params = request.getParameterMap();
      for(String keys : params.keySet()) LOGGER.info("Params: " + keys);
      //for(String keys : params.keySet()) LOGGER.info("Params: " + keys);
      Coord       coord           = new Coord(params);
      SubsurveyId subsurveyId     = new SubsurveyId(params);
      // FIXME add invalid param excpetions 
@@ -89,15 +89,15 @@ public class FormatResponseFilter implements Filter

      long startTime_msec = System.currentTimeMillis();

      PrintWriter responseWriter = ((HttpServletResponse)response).getWriter();
      String[] pubdidArr = responseWrapper.getPubdidArr();

      if (true)
         //if (responseWrapper.getContentType().contains("text/plain"))
      if ((pubdidArr != null) && (pubdidArr.length > 0))
      {
         PrintWriter responseWriter = ((HttpServletResponse)response).getWriter();

         Dataset[] datasetArr = queryObsCore(
               responseWrapper.getPubdidArr(),
               coord,// VLKB: calc ovelrap-code in Spectrum
               pubdidArr,
               coord,// VLKB: calc ovelrap-codes
               settings.serviceUrls.cutoutUrl());

         SearchOutputData searchOutputData = SearchOutputData.marshall(
@@ -132,6 +132,11 @@ public class FormatResponseFilter implements Filter

         responseWriter.close();
      }
      else
      {
         LOGGER.info("Servlet returned no ID's.");
      }

      LOGGER.info("REQUEST END   =============================================================================================");
   }

+8 −0
Original line number Diff line number Diff line



public class MultiValuedParamNotSupported  extends IllegalArgumentException {
    public MultiValuedParamNotSupported(String errorMessage){//, Throwable err) {
        super(errorMessage);//, err);
    }
}
+66 −5
Original line number Diff line number Diff line
@@ -32,12 +32,29 @@ public class SearchServlet extends javax.servlet.http.HttpServlet
      LOGGER.info("DB   : " + settings.dbConn.toString());
   }

   protected void doMultiValuedParamNotSupported(String message, PrintWriter printWriter)
   {
      printWriter.println("MultiValuedParamNotSupported : " + message);
   }

   protected void doUsageError(String message, PrintWriter printWriter)
   {
      printWriter.println("UsageError : " + message);
   }

   protected void doError(String message, PrintWriter printWriter)
   {
      printWriter.println("Error : " + message);
   }


   protected void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException, UnsupportedEncodingException
   {
      LOGGER.info("trace");

      PrintWriter writer = response.getWriter();

      long startTime_msec = System.currentTimeMillis();

      legacyLogEntry(request);
@@ -82,7 +99,7 @@ public class SearchServlet extends javax.servlet.http.HttpServlet

            response.setContentType("text/plain");
            response.setCharacterEncoding(RESPONSE_ENCODING);
            PrintWriter writer = response.getWriter();
            //PrintWriter writer = response.getWriter();

            for(String pubdid : pubdidArr)
            {
@@ -91,6 +108,50 @@ public class SearchServlet extends javax.servlet.http.HttpServlet
            writer.close();
         }
      }
      catch(MultiValuedParamNotSupported ex)
      {
         LOGGER.info("MultiValuedParamNotSupported: " + ex.getMessage());

         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();
      }
      catch(IllegalArgumentException ex)
      {
         LOGGER.info("IllegalArgumentException: " + ex.getMessage());

         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();
      }
      catch(Exception ex)
      {
         LOGGER.info("Exception: " + ex.getMessage());
         ex.printStackTrace();

         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();
      }
      finally
      {
         //writer.close();
      }





      /*
         catch (IllegalArgumentException illArg)
         {
         response.sendError(HttpServletResponse.SC_BAD_REQUEST,
@@ -102,7 +163,7 @@ public class SearchServlet extends javax.servlet.http.HttpServlet
         LOGGER.info("Exception: " + ex.getMessage());
         ex.printStackTrace();
         }

         */
      return;
   }