doc update
[jabaws.git] / webservices / compbio / stat / servlet / ServiceStatus.java
1 package compbio.stat.servlet;\r
2 \r
3 import java.io.IOException;\r
4 import java.io.PrintWriter;\r
5 import java.io.StringWriter;\r
6 import java.util.ArrayList;\r
7 import java.util.List;\r
8 \r
9 import javax.servlet.RequestDispatcher;\r
10 import javax.servlet.ServletException;\r
11 import javax.servlet.http.HttpServlet;\r
12 import javax.servlet.http.HttpServletRequest;\r
13 import javax.servlet.http.HttpServletResponse;\r
14 \r
15 import org.apache.log4j.Logger;\r
16 \r
17 import compbio.ws.client.Services;\r
18 import compbio.ws.client.WSTester;\r
19 \r
20 /**\r
21  * Use cases:\r
22  * <dl>\r
23  * <li>Test web services and display results on the web page</li>\r
24  * </dl>\r
25  * \r
26  * @author pvtroshin\r
27  * \r
28  */\r
29 public class ServiceStatus extends HttpServlet {\r
30 \r
31         private final static Logger log = Logger.getLogger(ServiceStatus.class);\r
32 \r
33         @Override\r
34         protected void doGet(HttpServletRequest req, HttpServletResponse resp)\r
35                         throws ServletException, IOException {\r
36 \r
37                 StringBuffer jabawspath = req.getRequestURL();\r
38                 jabawspath = jabawspath.delete(jabawspath.lastIndexOf("/"),\r
39                                 jabawspath.length());\r
40                 String serverPath = jabawspath.toString();\r
41 \r
42                 List<ServiceTestResult> testResults = new ArrayList<ServiceTestResult>();\r
43 \r
44                 for (Services service : Services.values()) {\r
45                         StringWriter testres = new StringWriter();\r
46                         PrintWriter writer = new PrintWriter(testres, true);\r
47                         WSTester tester = new WSTester(serverPath, writer);\r
48                         ServiceTestResult result = new ServiceTestResult(service);\r
49                         try {\r
50                                 result.failed = tester.checkService(service);\r
51                         } catch (Exception e) {\r
52                                 log.info(e, e.getCause());\r
53                                 writer.println("Fails to connect to a web service: " + service\r
54                                                 + " With " + e.getLocalizedMessage() + "\nDetails: ");\r
55                                 e.printStackTrace(writer);\r
56                         } finally {\r
57                                 writer.close();\r
58                         }\r
59                         result.details = testres.toString();\r
60                         testResults.add(result);\r
61                 }\r
62                 req.setAttribute("results", testResults);\r
63                 RequestDispatcher rd = req\r
64                                 .getRequestDispatcher("statpages/ServicesStatus.jsp");\r
65                 rd.forward(req, resp);\r
66         }\r
67 \r
68 }\r