Author: gagan
Date: Wed Mar  2 02:16:47 2011
New Revision: 1076086

URL: http://svn.apache.org/viewvc?rev=1076086&view=rev
Log:
Patch by nikhilmadan23 | Issue 4257044: Bug Fix - Add Pragma and Cache-Control 
header only if not null in AbstractHttpCache | 
http://codereview.appspot.com/4257044/

Modified:
    
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/AbstractHttpCache.java
    
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/AbstractHttpCacheTest.java

Modified: 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/AbstractHttpCache.java
URL: 
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/AbstractHttpCache.java?rev=1076086&r1=1076085&r2=1076086&view=diff
==============================================================================
--- 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/AbstractHttpCache.java
 (original)
+++ 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/AbstractHttpCache.java
 Wed Mar  2 02:16:47 2011
@@ -94,12 +94,24 @@ public abstract class AbstractHttpCache 
   @VisibleForTesting
   HttpResponseBuilder buildStrictNoCacheHttpResponse(HttpRequest request, 
HttpResponse response) {
     HttpResponseBuilder responseBuilder = new HttpResponseBuilder();
-    responseBuilder.setHeader("Cache-Control", 
response.getHeader("Cache-Control"));
-    responseBuilder.setHeader("Pragma", response.getHeader("Pragma"));
+    copyHeaderIfPresent("Cache-Control", response, responseBuilder);
+    copyHeaderIfPresent("Pragma", response, responseBuilder);
     responseBuilder.setCacheControlMaxAge(strictNoCacheResourceTtlInSeconds);
     return responseBuilder;
   }
 
+  /**
+   * Copy the specified header from response into builder if it exists.
+   */
+  private void copyHeaderIfPresent(String header,
+                                   HttpResponse response,
+                                   HttpResponseBuilder builder) {
+    String headerValue = response.getHeader(header);
+    if (headerValue != null) {
+      builder.setHeader(header, headerValue);
+    }
+  }
+
   public HttpResponse removeResponse(HttpRequest request) {
     String keyString = createKey(request);
     HttpResponse response = getResponseImpl(keyString);

Modified: 
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/AbstractHttpCacheTest.java
URL: 
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/AbstractHttpCacheTest.java?rev=1076086&r1=1076085&r2=1076086&view=diff
==============================================================================
--- 
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/AbstractHttpCacheTest.java
 (original)
+++ 
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/AbstractHttpCacheTest.java
 Wed Mar  2 02:16:47 2011
@@ -467,6 +467,7 @@ public class AbstractHttpCacheTest {
     assertTrue(builtResponse.isStrictNoCache());
     assertEquals("", builtResponse.getResponseAsString());
     assertEquals("private,max-age=86400", 
builtResponse.getHeader("Cache-Control"));
+    assertFalse(builtResponse.getHeaders().containsKey("Pragma"));
     assertNull(builtResponse.getHeader("X-Method-Override"));
   }
 
@@ -480,7 +481,7 @@ public class AbstractHttpCacheTest {
     HttpResponse builtResponse = cache
         .buildStrictNoCacheHttpResponse(new HttpRequest(DEFAULT_URI), 
response).create();
 
-    assertTrue(builtResponse.isStrictNoCache());   
+    assertTrue(builtResponse.isStrictNoCache());
     assertEquals("", builtResponse.getResponseAsString());
     assertEquals("max-age=-1", builtResponse.getHeader("Cache-Control"));
     assertEquals("no-cache", builtResponse.getHeader("Pragma"));


Reply via email to