Return-Path: Delivered-To: apmail-sling-commits-archive@www.apache.org Received: (qmail 31367 invoked from network); 26 Apr 2010 09:05:26 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 26 Apr 2010 09:05:26 -0000 Received: (qmail 1784 invoked by uid 500); 26 Apr 2010 09:05:25 -0000 Delivered-To: apmail-sling-commits-archive@sling.apache.org Received: (qmail 1722 invoked by uid 500); 26 Apr 2010 09:05:24 -0000 Mailing-List: contact commits-help@sling.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@sling.apache.org Delivered-To: mailing list commits@sling.apache.org Received: (qmail 1715 invoked by uid 99); 26 Apr 2010 09:05:23 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 26 Apr 2010 09:05:23 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 26 Apr 2010 09:05:20 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 992FE23889D7; Mon, 26 Apr 2010 09:04:34 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r937970 - in /sling/trunk: bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/helper/ bundles/servlets/post/src/test/java/org/apache/sling/servlets/post/impl/helper/ launchpad/testing/src/test/java/org/apache/sling/laun... Date: Mon, 26 Apr 2010 09:04:34 -0000 To: commits@sling.apache.org From: vramdal@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20100426090434.992FE23889D7@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: vramdal Date: Mon Apr 26 09:04:34 2010 New Revision: 937970 URL: http://svn.apache.org/viewvc?rev=937970&view=rev Log: SLING-1501 Let JSONResponse set the correct HTTP response code (applying path from Simon Gaeremynck - thanks!) Modified: sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/helper/JSONResponse.java sling/trunk/bundles/servlets/post/src/test/java/org/apache/sling/servlets/post/impl/helper/JsonResponseTest.java sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/post/PostServletOutputContentTypeTest.java Modified: sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/helper/JSONResponse.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/helper/JSONResponse.java?rev=937970&r1=937969&r2=937970&view=diff ============================================================================== --- sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/helper/JSONResponse.java (original) +++ sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/helper/JSONResponse.java Mon Apr 26 09:04:34 2010 @@ -144,6 +144,20 @@ public class JSONResponse extends HtmlRe setReferer(referer); response.setContentType(RESPONSE_CONTENT_TYPE); response.setCharacterEncoding(RESPONSE_CHARSET); + + // Status code + if (setStatus) { + Object status = getProperty(PN_STATUS_CODE); + if (status instanceof Number) { + int statusCode = ((Number) status).intValue(); + response.setStatus(statusCode); + + // special treatment of 201/CREATED: Requires Location + if (statusCode == HttpServletResponse.SC_CREATED) { + response.setHeader("Location", getLocation()); + } + } + } try { json.write(response.getWriter()); Modified: sling/trunk/bundles/servlets/post/src/test/java/org/apache/sling/servlets/post/impl/helper/JsonResponseTest.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/post/src/test/java/org/apache/sling/servlets/post/impl/helper/JsonResponseTest.java?rev=937970&r1=937969&r2=937970&view=diff ============================================================================== --- sling/trunk/bundles/servlets/post/src/test/java/org/apache/sling/servlets/post/impl/helper/JsonResponseTest.java (original) +++ sling/trunk/bundles/servlets/post/src/test/java/org/apache/sling/servlets/post/impl/helper/JsonResponseTest.java Mon Apr 26 09:04:34 2010 @@ -171,11 +171,9 @@ public class JsonResponseTest extends Te } public void setStatus(int i) { - throw new UnsupportedOperationException("Not implemented: " + getClass().getName() + ".setStatus"); } public void setStatus(int i, String s) { - throw new UnsupportedOperationException("Not implemented: " + getClass().getName() + ".setStatus"); } public String getCharacterEncoding() { Modified: sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/post/PostServletOutputContentTypeTest.java URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/post/PostServletOutputContentTypeTest.java?rev=937970&r1=937969&r2=937970&view=diff ============================================================================== --- sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/post/PostServletOutputContentTypeTest.java (original) +++ sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/post/PostServletOutputContentTypeTest.java Mon Apr 26 09:04:34 2010 @@ -17,8 +17,15 @@ package org.apache.sling.launchpad.webapp.integrationtest.servlets.post; import org.apache.commons.httpclient.Header; +import org.apache.commons.httpclient.NameValuePair; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.sling.commons.testing.integration.HttpTestBase; +import org.apache.sling.servlets.post.SlingPostConstants; + +import java.util.ArrayList; +import java.util.List; + +import javax.servlet.http.HttpServletResponse; /** Test switching the output content-type of the POST servlet using * either an Accept header or :http-equiv-accept parameter */ @@ -75,4 +82,24 @@ public class PostServletOutputContentTyp public void testJsonContentTypeWithQ() throws Exception { runTest("text/plain; q=0.5, text/html; q=0.8, application/json; q=0.9", CONTENT_TYPE_JSON); } + + public void testJsonContentTypeException() throws Exception { + final String testPath = MY_TEST_PATH + "/abs/" + System.currentTimeMillis(); + final String url = HTTP_BASE_URL + "/" + MY_TEST_PATH; + + // create dest as parent + testClient.createNode(HTTP_BASE_URL + testPath + "/dest", null); + + // Perform a POST that should fail. + final PostMethod post = new PostMethod(url); + post.setFollowRedirects(false); + post.addParameter(new NameValuePair(SlingPostConstants.RP_DEST, testPath + "/dest/")); + post.addParameter(new NameValuePair(SlingPostConstants.RP_OPERATION, + SlingPostConstants.OPERATION_COPY)); + post.addRequestHeader("Accept", CONTENT_TYPE_JSON); + + final int status = httpClient.executeMethod(post); + assertEquals(500, status); + } + }