You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by fm...@apache.org on 2013/06/14 17:04:47 UTC
svn commit: r1493103 -
/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/CmisWebServicesServlet.java
Author: fmui
Date: Fri Jun 14 15:04:46 2013
New Revision: 1493103
URL: http://svn.apache.org/r1493103
Log:
Web Services server: improved error message for clients that don't send MTOM requests
Modified:
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/CmisWebServicesServlet.java
Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/CmisWebServicesServlet.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/CmisWebServicesServlet.java?rev=1493103&r1=1493102&r2=1493103&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/CmisWebServicesServlet.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/CmisWebServicesServlet.java Fri Jun 14 15:04:46 2013
@@ -154,7 +154,22 @@ public class CmisWebServicesServlet exte
return;
}
- super.service(new ProtectionRequestWrapper(request, MAX_SOAP_SIZE), response);
+ // handle other non-POST requests
+ if (!request.getMethod().equals("POST")) {
+ printError(request, response, "Not a HTTP POST request.");
+ return;
+ }
+
+ // handle POST requests
+ ProtectionRequestWrapper requestWrapper = null;
+ try {
+ requestWrapper = new ProtectionRequestWrapper(request, MAX_SOAP_SIZE);
+ } catch (ServletException e) {
+ printError(request, response, "The request is not MTOM encoded.");
+ return;
+ }
+
+ super.service(requestWrapper, response);
}
private void printXml(HttpServletRequest request, HttpServletResponse response, String doc, UrlBuilder baseUrl)
@@ -199,6 +214,36 @@ public class CmisWebServicesServlet exte
pw.flush();
}
+ private void printError(HttpServletRequest request, HttpServletResponse response, String message)
+ throws ServletException, IOException {
+ response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ response.setContentType("text/xml");
+ response.setCharacterEncoding("UTF-8");
+
+ PrintWriter pw = response.getWriter();
+
+ String messageEscaped = StringEscapeUtils.escapeXml(message);
+
+ pw.println("<?xml version='1.0' encoding='UTF-8'?>");
+ pw.println("<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\">");
+ pw.println("<S:Body>");
+ pw.println("<S:Fault>");
+ pw.println("<faultcode>S:Client</faultcode>");
+ pw.println("<faultstring>" + messageEscaped + "</faultstring>");
+ pw.println("<detail>");
+ pw.println("<cmisFault xmlns=\"http://docs.oasis-open.org/ns/cmis/messaging/200908/\">");
+ pw.println("<type>runtime</type>");
+ pw.println("<code>0</code>");
+ pw.println("<message>" + messageEscaped + "</message>");
+ pw.println("</cmisFault>");
+ pw.println("</detail>");
+ pw.println("</S:Fault>");
+ pw.println("</S:Body>");
+ pw.println("</S:Envelope>");
+
+ pw.flush();
+ }
+
private UrlBuilder compileBaseUrl(HttpServletRequest request, HttpServletResponse response) {
UrlBuilder result;