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");
 

Reply via email to