View Javadoc

1   package com.atlassian.johnson.filters;
2   
3   import com.atlassian.johnson.JohnsonEventContainer;
4   import org.apache.log4j.Category;
5   
6   import javax.servlet.http.HttpServletResponse;
7   import javax.servlet.http.HttpServletRequest;
8   import java.io.IOException;
9   
10  /**
11   * Handles error cases with SOAP fault responses for an application that is unable to handle normal requests.
12   */
13  public class JohnsonSoapFilter extends AbstractJohnsonFilter
14  {
15      public static final Category log = Category.getInstance(JohnsonSoapFilter.class);
16  
17      protected void handleError(JohnsonEventContainer appEventContainer, HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws IOException
18      {
19          log.info("The application is unavailable, or there are errors.  Returning a SOAP fault with the event message.");
20          servletResponse.setContentType(TEXT_XML_UTF8_CONTENT_TYPE);
21          String message = getStringForEvents(appEventContainer.getEvents());
22          servletResponse.setStatus(HttpServletResponse.SC_SERVICE_UNAVAILABLE);
23          servletResponse.getWriter().write(buildSoapFault(message));
24      }
25  
26      protected void handleNotSetup(HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws IOException
27      {
28          log.info("The application is not setup.  Returning a SOAP fault with a 'not setup' message.");
29          servletResponse.setContentType(TEXT_XML_UTF8_CONTENT_TYPE);
30          String message = "The application has not yet been setup.";
31          servletResponse.setStatus(HttpServletResponse.SC_SERVICE_UNAVAILABLE);
32          servletResponse.getWriter().write(buildSoapFault(message));
33      }
34  
35      String buildSoapFault(String errorMessage)
36      {
37          return "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
38                  "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n" +
39                  "                  xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n" +
40                  "    <soapenv:Body>\n" +
41                  "        <soapenv:Fault>\n" +
42                  "            <faultcode>soapenv:Server</faultcode>\n" +
43                  "            <faultstring>" +
44                  errorMessage +
45                  "            </faultstring>\n" +
46                  "        </soapenv:Fault>\n" +
47                  "    </soapenv:Body>\n" +
48                  "</soapenv:Envelope>";
49      }
50  
51  }