You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by th...@apache.org on 2014/02/08 19:40:05 UTC

[1/2] git commit: TAP5-2275: invalid caching response headers. Adds method Response.addHeader(String, String).

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 <th...@apache.org>
Authored: Sat Feb 8 16:39:22 2014 -0200
Committer: Thiago H. de Paula Figueiredo <th...@apache.org>
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");
 


[2/2] git commit: TAP5-2275: invalid caching response headers. Adds method Response.addHeader(String, String).

Posted by th...@apache.org.
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/bf714977
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/bf714977
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/bf714977

Branch: refs/heads/master
Commit: bf7149776891371db11f17cd92fb60fce52ca130
Parents: 3a21f85
Author: Thiago H. de Paula Figueiredo <th...@apache.org>
Authored: Sat Feb 8 16:39:43 2014 -0200
Committer: Thiago H. de Paula Figueiredo <th...@apache.org>
Committed: Sat Feb 8 16:39:43 2014 -0200

----------------------------------------------------------------------
 .../tapestry5/internal/ResponseImplTest.java    | 53 ++++++++++++++++++++
 .../kaptcha/components/KaptchaUnitTest.java     | 36 +++++++++++++
 2 files changed, 89 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/bf714977/tapestry-core/src/test/java/org/apache/tapestry5/internal/ResponseImplTest.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/ResponseImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/ResponseImplTest.java
new file mode 100644
index 0000000..15d4e6b
--- /dev/null
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/ResponseImplTest.java
@@ -0,0 +1,53 @@
+//  Copyright 2008 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry5.internal;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.tapestry5.internal.services.ResponseImpl;
+import org.apache.tapestry5.internal.test.InternalBaseTestCase;
+import org.apache.tapestry5.services.Response;
+import org.testng.annotations.Test;
+
+public class ResponseImplTest extends InternalBaseTestCase
+{
+    @Test
+    public void addHeader()
+    {
+        final String HEADER_NAME = "Header-Name";
+        final String[] HEADER_VALUES = {"asdfasdf", "FHDFGH", "####"};
+        
+        final HttpServletResponse httpServletResponse = mockHttpServletResponse();
+        final HttpServletRequest httpServletRequest = mockHttpServletRequest();
+        
+        Response response = new ResponseImpl(httpServletRequest, httpServletResponse);
+        for (String value : HEADER_VALUES)
+        {
+            httpServletResponse.addHeader(HEADER_NAME, value);
+        }
+        
+        replay();
+    
+        for (String value : HEADER_VALUES)
+        {
+            response.addHeader(HEADER_NAME, value);
+        }
+        
+        verify();
+        
+    }
+    
+}

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/bf714977/tapestry-kaptcha/src/test/java/org/apache/tapestry5/kaptcha/components/KaptchaUnitTest.java
----------------------------------------------------------------------
diff --git a/tapestry-kaptcha/src/test/java/org/apache/tapestry5/kaptcha/components/KaptchaUnitTest.java b/tapestry-kaptcha/src/test/java/org/apache/tapestry5/kaptcha/components/KaptchaUnitTest.java
new file mode 100644
index 0000000..849bf00
--- /dev/null
+++ b/tapestry-kaptcha/src/test/java/org/apache/tapestry5/kaptcha/components/KaptchaUnitTest.java
@@ -0,0 +1,36 @@
+// Copyright 2014 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package org.apache.tapestry5.kaptcha.components;
+
+import java.util.List;
+
+import org.apache.tapestry5.internal.test.TestableResponse;
+import org.apache.tapestry5.test.PageTester;
+import org.junit.Test;
+
+public class KaptchaUnitTest
+{
+    
+    @SuppressWarnings("unchecked")
+    @Test
+    public void cache_control_header()
+    {
+        PageTester tester = new PageTester("kaptcha.demo", "app");
+        final TestableResponse response = tester.renderPageAndReturnResponse("KaptchaDemo");
+        final List<String> headers = (List<String>) response.getHeaders("Cache-Control");
+        assert "no-store, no-cache, must-revalidate".equals(headers.get(0));
+        assert "post-check=0, pre-check=0".equals(headers.get(1));
+    }
+
+}


[2/2] git commit: TAP5-2275: invalid caching response headers. Adds method Response.addHeader(String, String).

Posted by th...@apache.org.
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/bf714977
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/bf714977
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/bf714977

Branch: refs/heads/master
Commit: bf7149776891371db11f17cd92fb60fce52ca130
Parents: 3a21f85
Author: Thiago H. de Paula Figueiredo <th...@apache.org>
Authored: Sat Feb 8 16:39:43 2014 -0200
Committer: Thiago H. de Paula Figueiredo <th...@apache.org>
Committed: Sat Feb 8 16:39:43 2014 -0200

----------------------------------------------------------------------
 .../tapestry5/internal/ResponseImplTest.java    | 53 ++++++++++++++++++++
 .../kaptcha/components/KaptchaUnitTest.java     | 36 +++++++++++++
 2 files changed, 89 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/bf714977/tapestry-core/src/test/java/org/apache/tapestry5/internal/ResponseImplTest.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/ResponseImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/ResponseImplTest.java
new file mode 100644
index 0000000..15d4e6b
--- /dev/null
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/ResponseImplTest.java
@@ -0,0 +1,53 @@
+//  Copyright 2008 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry5.internal;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.tapestry5.internal.services.ResponseImpl;
+import org.apache.tapestry5.internal.test.InternalBaseTestCase;
+import org.apache.tapestry5.services.Response;
+import org.testng.annotations.Test;
+
+public class ResponseImplTest extends InternalBaseTestCase
+{
+    @Test
+    public void addHeader()
+    {
+        final String HEADER_NAME = "Header-Name";
+        final String[] HEADER_VALUES = {"asdfasdf", "FHDFGH", "####"};
+        
+        final HttpServletResponse httpServletResponse = mockHttpServletResponse();
+        final HttpServletRequest httpServletRequest = mockHttpServletRequest();
+        
+        Response response = new ResponseImpl(httpServletRequest, httpServletResponse);
+        for (String value : HEADER_VALUES)
+        {
+            httpServletResponse.addHeader(HEADER_NAME, value);
+        }
+        
+        replay();
+    
+        for (String value : HEADER_VALUES)
+        {
+            response.addHeader(HEADER_NAME, value);
+        }
+        
+        verify();
+        
+    }
+    
+}

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/bf714977/tapestry-kaptcha/src/test/java/org/apache/tapestry5/kaptcha/components/KaptchaUnitTest.java
----------------------------------------------------------------------
diff --git a/tapestry-kaptcha/src/test/java/org/apache/tapestry5/kaptcha/components/KaptchaUnitTest.java b/tapestry-kaptcha/src/test/java/org/apache/tapestry5/kaptcha/components/KaptchaUnitTest.java
new file mode 100644
index 0000000..849bf00
--- /dev/null
+++ b/tapestry-kaptcha/src/test/java/org/apache/tapestry5/kaptcha/components/KaptchaUnitTest.java
@@ -0,0 +1,36 @@
+// Copyright 2014 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package org.apache.tapestry5.kaptcha.components;
+
+import java.util.List;
+
+import org.apache.tapestry5.internal.test.TestableResponse;
+import org.apache.tapestry5.test.PageTester;
+import org.junit.Test;
+
+public class KaptchaUnitTest
+{
+    
+    @SuppressWarnings("unchecked")
+    @Test
+    public void cache_control_header()
+    {
+        PageTester tester = new PageTester("kaptcha.demo", "app");
+        final TestableResponse response = tester.renderPageAndReturnResponse("KaptchaDemo");
+        final List<String> headers = (List<String>) response.getHeaders("Cache-Control");
+        assert "no-store, no-cache, must-revalidate".equals(headers.get(0));
+        assert "post-check=0, pre-check=0".equals(headers.get(1));
+    }
+
+}