[Dart] Investigating addition of HTTP PUT submission support

Zachary Mark zmark at cleversafe.com
Tue Jun 20 15:25:23 EDT 2006


It looks like I have a working PUT implementation using the methodology 
given.  I'm going to do some quick testing on it and then send it off to 
Daniel.

-- Zach

Blezek, Daniel J (GE, Research) wrote:

>Zachary,
>
>  This seems the best route to go in my opinion, just create a new Submit when you get a request.  Even if Dart gets complete junk through a post, it will be ignored in the processing anyway.
>
>Thanks,
>-dan
>
>P.S.  Send me the patch/class when you are done and an (optional) JUnit test.  I'm in the midst of Dart-land and Jim is off on other things.
>
>-----Original Message-----
>From: dart-bounces+blezek=crd.ge.com at public.kitware.com
>[mailto:dart-bounces+blezek=crd.ge.com at public.kitware.com]On Behalf Of
>Miller, James V (GE, Research)
>Sent: Tuesday, June 20, 2006 8:42 AM
>To: Zachary Mark; dart at public.kitware.com
>Subject: RE: [Dart] Investigating addition of HTTP PUT submission
>support
>
>
>Zachary, 
>
>I think adding doPut to the CommandServlet and having it call Submit.put()
>will do what you want.  Each project has its own CommandServlet at a unique
>URL, for instance
>
>http://example.com:8081/TestProject/Command/
>http://example.com:8081/SomeOtherProject/Command/
>
>The beginning of doPut() will look similar to the beginning doPost().  It will 
>call getInitParameter("project") to deduce the project (the same servlet is
>mounted for each project at a unique url, we cache an init parameter in each instance
>of the servlet so the servlet knows which project it is responding to). Then instead 
>of doing the two xmlrpc lines, you'll create a Submit command and call put().
>
>As Scott pointed out in another email, you could also create a SubmitServlet
>that would be similar to the CommandServlet except it would implement doPut()
>instead of doPost() as described above.  Then in your Project.xml, you can 
>add the SubmitServlet to the ServletManager using 
>
>    <Servlet>
>      <Class>dart.server.servlet.SubmitServlet</Class>
>      <Context>/Submit/</Context>
>      <Properties/>
>    </Servlet>
> 
>This will mount the submit servlet under
>
>http://example.com:8081/TestProject/Submit
>
>I think I prefer having a separate servlet for this so that if a project
>does not want to allow HTTP PUT submissions, then can remove the servlet
>from the Project.xml file.
>
>Jim
>
>-----Original Message-----
>From: dart-bounces+millerjv=crd.ge.com at public.kitware.com
>[mailto:dart-bounces+millerjv=crd.ge.com at public.kitware.com]On Behalf Of
>Zachary Mark
>Sent: Monday, June 19, 2006 6:04 PM
>To: dart at public.kitware.com
>Subject: [Dart] Investigating addition of HTTP PUT submission support
>
>
>This is a followup to the e-mail thread referenced at 
>http://public.kitware.com/pipermail/dart/2006-June/001557.html
>
>I am investigating the near-term feasibility (as in, beginning very 
>soon) about contributing support for submissions via HTTP PUT into the 
>DartServer.  This functionality is very highly desired and as such I 
>would be willing to implement it myself and contribute it into the Dart 
>code base.
>
>I've spent some of the afternoon reading through the Dart source code 
>and trying to make heads and tails of it, and I think I have a basic 
>design overview, and I'm looking for some of the Dart core devs to take 
>a look at my proposal and evaluate what changes could be made to my 
>idea.  I am not 100% familiar with the Dart code so this is a guess 
>based on what I have gleaned so far.
>
>What I propose is that a void doPut method be added to the 
>java.server.servlet.CommandServlet class with the following signature:
>
>       public void doPut( HttpServletRequest request, 
>HttpServletResponse response ) throws
>                   ServletException, IOException
>
>I would make the assumption that all commands received via PUT are 
>submission requests, rather than the much broader functionality offered 
>by xmlrpc.  The doPut method would contain a submission command object 
>(dart.server.command.Submit) and call the Submit.put method directly.  
>It seems that the Submit.put method should handle all the functionality 
>that I'm looking for, but there is one issue that I potentially have.  
>How can I use HTTP PUT and differentiate between different projects?  
>IIRC, HTTP PUT allows only one submission field which obviously should 
>contain the full XML submission data.  Is there a "default project" 
>setting in the Dart server that I could leverage to direct all PUT 
>requests?  Could the XML format be extended so that clients can specify 
>which project to submit the results to in the XML?  Maybe this could be 
>incorporated into the <DartSubmission> tag, in the following form:
>
>      <DartSubmission version="2.0" createdby="ReSTInstaller" 
>project="SampleProject">
>
>Since the client has to specify which project to submit the result to in 
>the first place, I don't see a reason not to potentially include it in 
>the XML, unless there are some issues that I am not considering.
>
>Sorry I got to the point of rambling, but I'm interested to hear some 
>thoughts on this issue and my PUT proposal.
>
>-- Zach
>
>
>_______________________________________________
>Dart mailing list
>Dart at public.kitware.com
>http://public.kitware.com/mailman/listinfo/dart
>_______________________________________________
>Dart mailing list
>Dart at public.kitware.com
>http://public.kitware.com/mailman/listinfo/dart
>  
>



More information about the Dart mailing list