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