On 1/15/07, Chris Hostetter <[EMAIL PROTECTED]> wrote:
: The most important issue is to nail down the external HTTP interface. I'm not sure if i agree with that statement .. i would think that figuring out the "model" or how updates should be handled in a generic way, what all of the "Plugin" types are, and what their APIs should be is the most important issue -- once we have those issues settled we could allways write a new "SolrServlet2" that made the URL structure work anyway we want. -Hoss
I hate to inundate you with more code, but it seems like the best way to describe a possible interface. //----------------------------------------------- interface ContentStream { String getName(); String getContentType(); InputStream getStream(); } interface SolrParams { String getParam( String name ); String[] getParams( String name ); } //----------------------------- interface SolrRequest { SolrParams getParams(); ContentStream[] getContentStreams(); // Iterator? long getStartTime(); } interface SolrResponse { int getStatus(); // ??? NamedList getProps(); // ??? } //----------------------------- interface SolrRequestProcessor { SolrResponse process( SolrRequest req ); SolrResponseWriter getWriter( SolrRequest req ); // default } interface SolrResponseWriter { void write(Writer writer, SolrRequest request, SolrResponse response); String getContentType(SolrRequest request, SolrResponse response); } //----------------------------- Then a servlet (or filter) could be in charge of parsing URL/params into a request. It would pick a Processor and send the output to a writer. If someone wanted a custom URL scheme, they would overide the servlet/filter. Perhaps SolrRequest should have an object for solrCore. It would be better if it does not need to go to the static SolrCore.getUpdateHandler(). I am proposing ContentStream[] getContentStreams() because it would be simpler then an iterator. In the case of multipart upload, if you offered an API closer to: http://jakarta.apache.org/commons/fileupload/streaming.html You would not have any parameters until after you read each Item and convert the form fields to parameters. Thoughts?