Reviewers: MikeSamuel,

Description:
If cajoling fails because there's an error in the input, the cajoler
still returns
the errors found during cajoling, but now sets the Http status to 400 so
that clients
that rely on the status can error out early.

Please review this at http://codereview.appspot.com/1904046/show

Affected files:
  M     src/com/google/caja/service/CajolingServlet.java


Index: src/com/google/caja/service/CajolingServlet.java
===================================================================
--- src/com/google/caja/service/CajolingServlet.java    (revision 4221)
+++ src/com/google/caja/service/CajolingServlet.java    (working copy)
@@ -19,6 +19,7 @@
 import com.google.caja.lexer.escaping.Escaping;
 import com.google.caja.reporting.Message;
 import com.google.caja.reporting.MessageContext;
+import com.google.caja.reporting.MessageLevel;
 import com.google.caja.reporting.MessageQueue;
 import com.google.caja.reporting.SimpleMessageQueue;

@@ -144,7 +145,10 @@
       return;
     }

-    resp.setStatus(HttpServletResponse.SC_OK);
+    int status = mq.hasMessageAtLevel(MessageLevel.ERROR) ?
+        HttpServletResponse.SC_BAD_REQUEST : HttpServletResponse.SC_OK;
+    resp.setStatus(status);
+
     String responseContentType = result.getContentType();
     if (result.getCharSet() != null) {
       responseContentType += ";charset=" + result.getCharSet();


Reply via email to