JAL-3548 start an http server for posting gene ids to retrieve from ensembl and displ...
[jalview.git] / examples / groovy / simpleHttpServlet.groovy
1 import org.eclipse.jetty.server.Server
2 import org.eclipse.jetty.servlet.*
3 import groovy.servlet.*
4 import javax.servlet.http.*
5 import javax.servlet.api.*
6 import javax.servlet.ServletConfig
7  
8 class SimpleGroovyServlet extends HttpServlet {
9     def requestHandler
10     def context
11     void init(ServletConfig config) {
12         super.init(config)
13         context = config.servletContext
14     }
15     void service(HttpServletRequest request, HttpServletResponse response) {
16         requestHandler.binding = new ServletBinding(request, response, context)
17         use (ServletCategory) {
18             requestHandler.call()
19         }
20     }
21     static void run(int port, Closure requestHandler) {
22         ours = requestHandler;
23         def servlet = new SimpleGroovyServlet(requestHandler: requestHandler)
24         def jetty = new Server(port)
25 //        def handler = new ServletHandler()
26 //        jetty.setHandler(handler)
27         
28         def context = new ServletContextHandler(jetty, '/', ServletContextHandler.SESSIONS)
29         context.addServlet(new ServletHolder(servlet), '/*')
30         jetty.start()
31     }
32     static Closure ours;
33 }
34
35 if ( SimpleGroovyServlet.ours == null ) {
36 SimpleGroovyServlet.run(8878, { ->
37     response.contentType = 'text/plain'
38     println "Retrieving ENSEMBL ${params.name}"
39 //    println "my path is ${request.pathInfo}"
40 //    println "my params are $params"
41     jalview.gui.SequenceFetcher.fetchAndShow("ENSEMBL",""+params.get("name"))
42 })
43 } else {
44   print "Already running."
45 }