: > ...i was trying to avoid keeping the parser name out of the query string, : > so we don't have to do any hack parsing of : > HttpServletRequest.getQueryString() to get it. : : We need code to do that anyway since getParameterMap() doesn't support : getting params from the URL if it's a POST (I believe I tried this in : the past and it didn't work).
Uh ... i'm pretty sure you are mistaken ... yep, i've just checked and you are *definitely* mistaken. getParameterMap will in fact pull out params from both the URL and the body if it's a POST -- but only if you have not allready accessed either getReader or getInputStream -- this was at the heart of my cumbersome preProcess/process API that we all agree now was way too complicated. At the bottom of this email is a quick and dirty servlet i just tried to prove to myself that posting with params in the URL and the body worked fine ... i do rememebr reading up on this a few years back and verifying that it's documented somewhere in the servlet spec, a quick google search points this this article implying it was solidified in 2.2... http://java.sun.com/developer/technicalArticles/Servlets/servletapi/ (grep for "Nit-picky on Parameters") : Pluggable request parsers seems needlessly complex, and it gets harder : to explain it all to someone new. : Can't we start simple and defer anything like that until there is a real need? Alas ... i appear to be getting worse at explaining myself in my old age. What i was trying to say is that this idea i had for expressing requestParsers as an optional prefix in fron of the requestHandler would allow us to worry about the things i'm worried about *later* -- if/when they become a problem (or when i have time to stop whinning, and actually write the code) The nut shell being: i'm totally on board with Ryan's simple URL scheme, having a single RequestParser/SolrRequestBuilder, going with an entirely "inspection" based approach for deciding where the streams come from, and leaving all mention of parsers or "stream.type" out of the URL. (because i have a good idea of how to support it in a backwards campatible way *later*) public class TestServlet extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws Exception { response.setContentType("text/plain"); java.util.Map params = request.getParameterMap(); for (Object k : params.keySet()) { Object v = params.get(k); if (v instanceof Object[]) { for (Object vv : (Object[])v) { response.getWriter().println(k.toString() + ":" + vv); } } else { response.getWriter().println(k.toString() + ":" + v); } } } }