View Javadoc

1   //
2   //  ========================================================================
3   //  Copyright (c) 1995-2016 Mort Bay Consulting Pty. Ltd.
4   //  ------------------------------------------------------------------------
5   //  All rights reserved. This program and the accompanying materials
6   //  are made available under the terms of the Eclipse Public License v1.0
7   //  and Apache License v2.0 which accompanies this distribution.
8   //
9   //      The Eclipse Public License is available at
10  //      http://www.eclipse.org/legal/epl-v10.html
11  //
12  //      The Apache License v2.0 is available at
13  //      http://www.opensource.org/licenses/apache2.0.php
14  //
15  //  You may elect to redistribute this code under either of these licenses.
16  //  ========================================================================
17  //
18  
19  package org.eclipse.jetty.example.asyncrest;
20  
21  import java.io.BufferedReader;
22  import java.io.IOException;
23  import java.io.InputStreamReader;
24  import java.io.PrintWriter;
25  import java.net.HttpURLConnection;
26  import java.net.URL;
27  import java.util.LinkedList;
28  import java.util.Map;
29  import java.util.Queue;
30  
31  import javax.servlet.ServletException;
32  import javax.servlet.http.HttpServlet;
33  import javax.servlet.http.HttpServletRequest;
34  import javax.servlet.http.HttpServletResponse;
35  
36  import org.eclipse.jetty.util.ajax.JSON;
37  
38  /**
39   * Servlet implementation class SerialRestServlet
40   */
41  public class SerialRestServlet extends AbstractRestServlet
42  {   
43      protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
44      {
45          long start = System.nanoTime();
46          
47  
48          String[] keywords=sanitize(request.getParameter(ITEMS_PARAM)).split(",");
49          Queue<Map<String,String>> results = new LinkedList<Map<String,String>>();
50          
51          // make all requests serially
52          for (String itemName : keywords)
53          {
54              URL url = new URL(restURL(itemName));
55              
56              HttpURLConnection connection = (HttpURLConnection)url.openConnection();
57              connection.setRequestMethod("GET");
58              
59              Map query = (Map)JSON.parse(new BufferedReader(new InputStreamReader(connection.getInputStream())));
60              Object[] auctions = (Object[]) query.get("Item");
61              if (auctions != null)
62              {
63                  for (Object o : auctions)
64                      results.add((Map) o);
65              }
66          }
67          
68  
69          // Generate the response
70          String thumbs=generateThumbs(results);
71          
72          response.setContentType("text/html");
73          PrintWriter out = response.getWriter();
74          out.println("<html><head>");
75          out.println(STYLE);
76          out.println("</head><body><small>");
77  
78          long now = System.nanoTime();
79          long total=now-start;
80  
81          out.print("<b>Blocking: "+sanitize(request.getParameter(ITEMS_PARAM))+"</b><br/>");
82          out.print("Total Time: "+ms(total)+"ms<br/>");
83          out.print("Thread held (<span class='red'>red</span>): "+ms(total)+"ms<br/>");
84          
85          out.println("<img border='0px' src='asyncrest/red.png'   height='20px' width='"+width(total)+"px'>");
86          
87          out.println("<hr />");
88          out.println(thumbs);
89          out.println("</small>");
90          out.println("</body></html>");
91          out.close();
92          
93          
94  
95      }
96  
97      /**
98       * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
99       *      response)
100      */
101     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
102     {
103         doGet(request, response);
104     }
105 
106 }