I'm confused by your sentence "A RequestParser converts a HttpServletRequest to a SolrRequest." .. i thought you were advocating that the servlet parse the URL to pick a RequestHandler, and then the RequestHandler dicates the RequestParser?
I was... then you talked me out of it! You are correct, the client should determine the RequestParser independent of the RequestHandler.
: /path/registered/in/solr/config:requestparser?params : : If no ':' is in the URL, use 'standard' parser : : 1. The URL path determins the RequestHandler : 2. The URL path determins the RequestParser : 3. SolrRequest = RequestParser.parse( HttpServletRequest ) : 4. handler.handleRequest( req, res ); : 5. write the response do you mean the path before hte colon determins the RequestHandler and the path after the colon determines the RequestParser?
yes, that is my proposal.
fine too ... i was specificly trying to avoid making any design decissions that required a particular URL structure, in what you propose we are dictating more then just the "/handler/path:parser" piece of the URL, we are also dicating that the Parser decides how the rest of the path and all URL query string data will be interpreted ...
Yes, this proposal would fix the URL structure to be /path/defined/in/solrconfig:parser?params /${handler}:${parser} I *think* this cleanly handles most cases cleanly and simply. The only exception is where you want to extract variables from the URL path. There are pleanty of ways to rewrite RESTfull urls into a path+params structure. If someone absolutly needs RESTfull urls, it can easily be implemented with a new Filter/Servlet that picks the 'handler' and directly creates a SolrRequest from the URL path. In my opinion, for this level of customization is reasonable that people edit web.xml and put in their own servlets and filters.
what i'm proposing is that the Servlet decide how to get the SolrParams out of an HttpServletRequest, using whatever URL that servlet wants;
I guess I'm not understanding this yet: Are you suggesting there would be multiple servlets each with a different methods to get the SolrParams from the url? How does the servlet know if it can touch req.getParameter()? How would the default servlet fill up SolrParams?
I think i'm getting confused ... i thought you were advocating that RequestParsers be implimented as ServletFilters (or Servlets) ...
Originally I was... but again, you talked me out of it. (this time not totally) I think the /path:parser format is clear and allows for most everything off the shelf. If you want to do something different, that can easily be a custom filter (or servlet) Essentially, i think it is reasonable for people to skip 'RequestParsers' in a custom servlet and be able to build the SolrRequest directly. This level of customization is reasonable to handle directly with web.xml