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
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 }