1 package com.atlassian.plugin.refimpl.servlet;
2
3 import org.slf4j.Logger;
4 import org.slf4j.LoggerFactory;
5
6 import javax.servlet.ServletException;
7 import javax.servlet.ServletRequest;
8 import javax.servlet.ServletResponse;
9 import javax.servlet.http.HttpServlet;
10 import javax.servlet.http.HttpServletRequest;
11 import javax.servlet.http.HttpServletResponse;
12 import java.io.IOException;
13 import java.util.Enumeration;
14
15
16
17
18
19
20
21
22
23
24
25
26
27 public class NoOpServlet extends HttpServlet {
28 private static final Logger log = LoggerFactory.getLogger(NoOpServlet.class);
29 private static final String RECEIVED_UNEXPECTED_REQUEST = "NoOpServlet received an unexpected request.";
30 private static final String UNABLE_TO_HANDLE_REQUEST =
31 "Unable to handle request. Request is not a HttpServletRequest";
32
33 public void service(ServletRequest servletRequest, ServletResponse servletResponse)
34 throws ServletException, IOException {
35 log.warn(RECEIVED_UNEXPECTED_REQUEST);
36
37 if (!(servletRequest instanceof HttpServletRequest && servletResponse instanceof HttpServletResponse)) {
38 log.error(UNABLE_TO_HANDLE_REQUEST);
39 return;
40 }
41 HttpServletRequest request = (HttpServletRequest) servletRequest;
42 HttpServletResponse response = (HttpServletResponse) servletResponse;
43
44
45 logRequestInformation(request);
46
47
48 response.sendError(404, RECEIVED_UNEXPECTED_REQUEST + " More information is available in the log file.");
49 }
50
51
52
53
54
55
56 private void logRequestInformation(HttpServletRequest request) {
57 try {
58 log.warn("Request Information");
59 log.warn("- Request URL: " + request.getRequestURL());
60 log.warn("- Query String: " + (request.getQueryString() == null ? "" : request.getQueryString()));
61
62 log.warn("Request Attributes");
63 Enumeration attributeNames = request.getAttributeNames();
64 while (attributeNames.hasMoreElements()) {
65 String name = (String) attributeNames.nextElement();
66 Object attribute = request.getAttribute(name);
67 log.warn("- " + name + ": " + (attribute == null ? "null" : attribute.toString()));
68 }
69 } catch (Throwable t) {
70 log.error("Error rendering logging information" + t);
71 }
72 }
73 }