diff --git a/data-discovery/src/main/java/vlkb/webapi/FormatResponseFilter.java b/data-discovery/src/main/java/vlkb/webapi/FormatResponseFilter.java index f110678855e17c1605ecac8b3e4776919007e70f..1f7718cdffa73323307903b6ee29025bf8d4df0f 100644 --- a/data-discovery/src/main/java/vlkb/webapi/FormatResponseFilter.java +++ b/data-discovery/src/main/java/vlkb/webapi/FormatResponseFilter.java @@ -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 ============================================================================================="); } diff --git a/data-discovery/src/main/java/vlkb/webapi/MultiValuedParamNotSupported.java b/data-discovery/src/main/java/vlkb/webapi/MultiValuedParamNotSupported.java new file mode 100644 index 0000000000000000000000000000000000000000..2b3dd3c6a1efaf93eeea9eccb4b359e0200ab8c4 --- /dev/null +++ b/data-discovery/src/main/java/vlkb/webapi/MultiValuedParamNotSupported.java @@ -0,0 +1,8 @@ + + + +public class MultiValuedParamNotSupported extends IllegalArgumentException { + public MultiValuedParamNotSupported(String errorMessage){//, Throwable err) { + super(errorMessage);//, err); + } +} diff --git a/data-discovery/src/main/java/vlkb/webapi/SearchServlet.java b/data-discovery/src/main/java/vlkb/webapi/SearchServlet.java index 73e1cd04d376c08386541a9b0f94f07105a6261b..86e13c22be05c58f90e78b3f97c3a02960143fb1 100644 --- a/data-discovery/src/main/java/vlkb/webapi/SearchServlet.java +++ b/data-discovery/src/main/java/vlkb/webapi/SearchServlet.java @@ -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,18 +108,62 @@ public class SearchServlet extends javax.servlet.http.HttpServlet writer.close(); } } - catch (IllegalArgumentException illArg) + catch(MultiValuedParamNotSupported ex) { - response.sendError(HttpServletResponse.SC_BAD_REQUEST, - "Request with incorrect parameters: " + illArg.getMessage()); - return; + 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, + "Request with incorrect parameters: " + illArg.getMessage()); + return; + } + catch(Exception ex) + { + LOGGER.info("Exception: " + ex.getMessage()); + ex.printStackTrace(); + } + */ return; }