Updated Branches: refs/heads/master e81c4b2fe -> bf7149776
TAP5-2275: invalid caching response headers. Adds method Response.addHeader(String,String). Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/3a21f85b Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/3a21f85b Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/3a21f85b Branch: refs/heads/master Commit: 3a21f85bf6f6a620736b996d2cbdc0e4f030b7f7 Parents: e81c4b2 Author: Thiago H. de Paula Figueiredo <[email protected]> Authored: Sat Feb 8 16:39:22 2014 -0200 Committer: Thiago H. de Paula Figueiredo <[email protected]> Committed: Sat Feb 8 16:39:22 2014 -0200 ---------------------------------------------------------------------- .../tapestry5/internal/services/ResponseImpl.java | 5 +++++ .../tapestry5/internal/test/TestableResponse.java | 9 +++++++++ .../internal/test/TestableResponseImpl.java | 18 ++++++++++++++++++ .../org/apache/tapestry5/services/Response.java | 14 ++++++++++++++ .../apache/tapestry5/util/ResponseWrapper.java | 5 +++++ .../kaptcha/components/KaptchaImage.java | 4 ++-- 6 files changed, 53 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/3a21f85b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResponseImpl.java ---------------------------------------------------------------------- diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResponseImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResponseImpl.java index 3c21f2a..fff8db9 100644 --- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResponseImpl.java +++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResponseImpl.java @@ -113,6 +113,11 @@ public class ResponseImpl implements Response response.setHeader(name, value); } + public void addHeader(String name, String value) + { + response.addHeader(name, value); + } + public void setIntHeader(String name, int value) { response.setIntHeader(name, value); http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/3a21f85b/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableResponse.java ---------------------------------------------------------------------- diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableResponse.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableResponse.java index 3d465a0..5efc7c8 100644 --- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableResponse.java +++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableResponse.java @@ -14,6 +14,8 @@ package org.apache.tapestry5.internal.test; +import java.util.List; + import org.apache.tapestry5.Link; import org.apache.tapestry5.dom.Document; import org.apache.tapestry5.services.Response; @@ -46,6 +48,13 @@ public interface TestableResponse extends Response * @since 5.2.3 */ Object getHeader(String name); + + /** + * Returns the values of a named header. + * + * @since 5.4 + */ + List<?> getHeaders(String name); /** * Returns the redirect URL. http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/3a21f85b/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableResponseImpl.java ---------------------------------------------------------------------- diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableResponseImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableResponseImpl.java index 1d63809..68ffb6c 100644 --- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableResponseImpl.java +++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableResponseImpl.java @@ -19,6 +19,8 @@ import java.io.IOException; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; +import java.util.ArrayList; +import java.util.List; import java.util.Map; import javax.servlet.ServletOutputStream; @@ -109,6 +111,22 @@ public class TestableResponseImpl implements TestableResponse { headers.put(name, value); } + + @SuppressWarnings("unchecked") + public void addHeader(String name, String value) + { + List<String> values = (List<String>) headers.get(name); + if (values == null) { + values = new ArrayList<String>(); + headers.put(name, values); + } + values.add(value); + } + + public List<?> getHeaders(String name) + { + return (List<?>) headers.get(name); + } public void setIntHeader(String name, int value) { http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/3a21f85b/tapestry-core/src/main/java/org/apache/tapestry5/services/Response.java ---------------------------------------------------------------------- diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/Response.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/Response.java index fc1bc9e..1269937 100644 --- a/tapestry-core/src/main/java/org/apache/tapestry5/services/Response.java +++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/Response.java @@ -15,6 +15,7 @@ package org.apache.tapestry5.services; import org.apache.tapestry5.Link; +import org.apache.tapestry5.ioc.annotations.IncompatibleChange; import java.io.IOException; import java.io.OutputStream; @@ -126,6 +127,19 @@ public interface Response void setHeader(String name, String value); /** + * Adds a response header with the given name and value, not overwriting any previous values which + * may have already been added. + * + * @param name + * the name of the header to add + * @param value + * the assigned value + * @since 5.4 + */ + @IncompatibleChange(release = "5.4", details = "Added method") + void addHeader(String name, String value); + + /** * Sets a response header with the given name and integer value. If the header had already been set, the new value * overwrites the previous one. * http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/3a21f85b/tapestry-core/src/main/java/org/apache/tapestry5/util/ResponseWrapper.java ---------------------------------------------------------------------- diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/util/ResponseWrapper.java b/tapestry-core/src/main/java/org/apache/tapestry5/util/ResponseWrapper.java index 0ed1e20..3cb0b71 100644 --- a/tapestry-core/src/main/java/org/apache/tapestry5/util/ResponseWrapper.java +++ b/tapestry-core/src/main/java/org/apache/tapestry5/util/ResponseWrapper.java @@ -79,6 +79,11 @@ public class ResponseWrapper implements Response { response.setHeader(name, value); } + + public void addHeader(String name, String value) + { + response.addHeader(name, value); + } public void setIntHeader(String name, int value) { http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/3a21f85b/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/components/KaptchaImage.java ---------------------------------------------------------------------- diff --git a/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/components/KaptchaImage.java b/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/components/KaptchaImage.java index c4cf847..cca4bfb 100644 --- a/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/components/KaptchaImage.java +++ b/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/components/KaptchaImage.java @@ -90,9 +90,9 @@ public class KaptchaImage response.setDateHeader("Expires", 0); // Set standard HTTP/1.1 no-cache headers. - response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate"); + response.addHeader("Cache-Control", "no-store, no-cache, must-revalidate"); // Set IE extended HTTP/1.1 no-cache headers (use addHeader). - response.setHeader("Cache-Control", "post-check=0, pre-check=0"); + response.addHeader("Cache-Control", "post-check=0, pre-check=0"); // Set standard HTTP/1.0 no-cache header. response.setHeader("Pragma", "no-cache");
