You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2014/01/09 14:03:51 UTC
[05/50] [abbrv] git commit: WICKET-5441 IResourceCachingStrategy
implementations should only set caching if version matches
WICKET-5441 IResourceCachingStrategy implementations should only set caching if version matches
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/8ccb1f6d
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/8ccb1f6d
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/8ccb1f6d
Branch: refs/heads/sandbox/WICKET-4686
Commit: 8ccb1f6de4479bef623bc97dd4ad4abeb7b802df
Parents: df6e151
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Mon Dec 16 15:16:22 2013 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Mon Dec 16 15:16:22 2013 +0200
----------------------------------------------------------------------
...enameWithVersionResourceCachingStrategy.java | 9 +++-
...tringWithVersionResourceCachingStrategy.java | 9 +++-
...eWithVersionResourceCachingStrategyTest.java | 49 ++++++++++++++++----
...gWithVersionResourceCachingStrategyTest.java | 45 +++++++++++++++---
4 files changed, 94 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/8ccb1f6d/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/FilenameWithVersionResourceCachingStrategy.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/FilenameWithVersionResourceCachingStrategy.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/FilenameWithVersionResourceCachingStrategy.java
index 2125f35..087ea13 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/FilenameWithVersionResourceCachingStrategy.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/FilenameWithVersionResourceCachingStrategy.java
@@ -196,7 +196,12 @@ public class FilenameWithVersionResourceCachingStrategy implements IResourceCach
@Override
public void decorateResponse(AbstractResource.ResourceResponse response, IStaticCacheableResource resource)
{
- response.setCacheDurationToMaximum();
- response.setCacheScope(WebResponse.CacheScope.PUBLIC);
+ String requestedVersion = RequestCycle.get().getMetaData(URL_VERSION);
+ String calculatedVersion = this.resourceVersion.getVersion(resource);
+ if (calculatedVersion != null && calculatedVersion.equals(requestedVersion))
+ {
+ response.setCacheDurationToMaximum();
+ response.setCacheScope(WebResponse.CacheScope.PUBLIC);
+ }
}
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/8ccb1f6d/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/QueryStringWithVersionResourceCachingStrategy.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/QueryStringWithVersionResourceCachingStrategy.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/QueryStringWithVersionResourceCachingStrategy.java
index 292f159..e40e082 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/QueryStringWithVersionResourceCachingStrategy.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/QueryStringWithVersionResourceCachingStrategy.java
@@ -127,7 +127,12 @@ public class QueryStringWithVersionResourceCachingStrategy implements IResourceC
@Override
public void decorateResponse(AbstractResource.ResourceResponse response, IStaticCacheableResource resource)
{
- response.setCacheDurationToMaximum();
- response.setCacheScope(WebResponse.CacheScope.PUBLIC);
+ String requestedVersion = RequestCycle.get().getMetaData(URL_VERSION);
+ String calculatedVersion = this.resourceVersion.getVersion(resource);
+ if (calculatedVersion != null && calculatedVersion.equals(requestedVersion))
+ {
+ response.setCacheDurationToMaximum();
+ response.setCacheScope(WebResponse.CacheScope.PUBLIC);
+ }
}
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/8ccb1f6d/wicket-core/src/test/java/org/apache/wicket/request/resource/caching/FilenameWithVersionResourceCachingStrategyTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/resource/caching/FilenameWithVersionResourceCachingStrategyTest.java b/wicket-core/src/test/java/org/apache/wicket/request/resource/caching/FilenameWithVersionResourceCachingStrategyTest.java
index 4923003..9ad3a7f 100644
--- a/wicket-core/src/test/java/org/apache/wicket/request/resource/caching/FilenameWithVersionResourceCachingStrategyTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/request/resource/caching/FilenameWithVersionResourceCachingStrategyTest.java
@@ -16,12 +16,17 @@
*/
package org.apache.wicket.request.resource.caching;
+import org.apache.wicket.Application;
+import org.apache.wicket.ThreadContext;
+import org.apache.wicket.request.cycle.RequestCycle;
import org.apache.wicket.request.http.WebResponse;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.request.resource.AbstractResource;
import org.apache.wicket.request.resource.caching.version.IResourceVersion;
import org.apache.wicket.request.resource.caching.version.MessageDigestResourceVersion;
+import org.apache.wicket.util.tester.BaseWicketTester;
import org.apache.wicket.util.tester.WicketTester;
+import org.apache.wicket.util.time.Duration;
import org.junit.Assert;
import org.junit.Test;
@@ -30,6 +35,8 @@ import org.junit.Test;
*/
public class FilenameWithVersionResourceCachingStrategyTest extends Assert
{
+ public static final String TEST_RESOURCE_VERSION = "9A0364B9E99BB480DD25E1F0284C8555";
+
private final String versionPrefix = "--vers--";
private final IResourceVersion resourceVersion = new MessageDigestResourceVersion();
private final FilenameWithVersionResourceCachingStrategy strategy =
@@ -41,13 +48,13 @@ public class FilenameWithVersionResourceCachingStrategyTest extends Assert
ResourceUrl resourceUrl = new ResourceUrl("some-resource.txt", new PageParameters());
strategy.decorateUrl(resourceUrl, new TestResource());
- assertEquals("some-resource--vers--9A0364B9E99BB480DD25E1F0284C8555.txt", resourceUrl.getFileName());
+ assertEquals("some-resource--vers--"+TEST_RESOURCE_VERSION+".txt", resourceUrl.getFileName());
}
@Test
public void testUndecorateUrl() throws Exception
{
- ResourceUrl resourceUrl = new ResourceUrl("some-resource--vers--9A0364B9E99BB480DD25E1F0284C8555.txt", new PageParameters());
+ ResourceUrl resourceUrl = new ResourceUrl("some-resource--vers--"+TEST_RESOURCE_VERSION+".txt", new PageParameters());
strategy.undecorateUrl(resourceUrl);
assertEquals("some-resource.txt", resourceUrl.getFileName());
@@ -56,11 +63,37 @@ public class FilenameWithVersionResourceCachingStrategyTest extends Assert
@Test
public void testDecorateResponse() throws Exception
{
- AbstractResource.ResourceResponse response = new AbstractResource.ResourceResponse();
- strategy.decorateResponse(response, new TestResource());
+ Duration defaultDuration = Duration.minutes(60);
+
+ // setup RequestCycle
+ BaseWicketTester tester = new BaseWicketTester();
+ RequestCycle requestCycle = ThreadContext.getRequestCycle();
+ Application.get().getResourceSettings().setDefaultCacheDuration(defaultDuration);
+
+ try
+ {
+ // version match
+ requestCycle.setMetaData(IResourceCachingStrategy.URL_VERSION, TEST_RESOURCE_VERSION);
+
+ AbstractResource.ResourceResponse response = new AbstractResource.ResourceResponse();
+ strategy.decorateResponse(response, new TestResource());
+
+ assertEquals(WebResponse.MAX_CACHE_DURATION, response.getCacheDuration());
+ assertEquals(WebResponse.CacheScope.PUBLIC, response.getCacheScope());
- assertEquals(WebResponse.MAX_CACHE_DURATION, response.getCacheDuration());
- assertEquals(WebResponse.CacheScope.PUBLIC, response.getCacheScope());
+ // version mismatch
+ requestCycle.setMetaData(IResourceCachingStrategy.URL_VERSION, "foo");
+
+ response = new AbstractResource.ResourceResponse();
+ strategy.decorateResponse(response, new TestResource());
+
+ assertEquals(defaultDuration, response.getCacheDuration());
+ assertEquals(WebResponse.CacheScope.PRIVATE, response.getCacheScope());
+ }
+ finally
+ {
+ tester.destroy();
+ }
}
@Test
@@ -71,12 +104,12 @@ public class FilenameWithVersionResourceCachingStrategyTest extends Assert
try
{
- ResourceUrl resourceUrl = new ResourceUrl("some-resource--vers--9A0364B9E99BB480DD25E1F0284C8555.txt", new PageParameters());
+ ResourceUrl resourceUrl = new ResourceUrl("some-resource--vers--"+TEST_RESOURCE_VERSION+".txt", new PageParameters());
strategy.undecorateUrl(resourceUrl);
String version = tester.getRequestCycle().getMetaData(IResourceCachingStrategy.URL_VERSION);
- assertEquals("9A0364B9E99BB480DD25E1F0284C8555", version);
+ assertEquals(TEST_RESOURCE_VERSION, version);
}
finally
{
http://git-wip-us.apache.org/repos/asf/wicket/blob/8ccb1f6d/wicket-core/src/test/java/org/apache/wicket/request/resource/caching/QueryStringWithVersionResourceCachingStrategyTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/resource/caching/QueryStringWithVersionResourceCachingStrategyTest.java b/wicket-core/src/test/java/org/apache/wicket/request/resource/caching/QueryStringWithVersionResourceCachingStrategyTest.java
index acfee96..6611a57 100644
--- a/wicket-core/src/test/java/org/apache/wicket/request/resource/caching/QueryStringWithVersionResourceCachingStrategyTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/request/resource/caching/QueryStringWithVersionResourceCachingStrategyTest.java
@@ -16,12 +16,17 @@
*/
package org.apache.wicket.request.resource.caching;
+import org.apache.wicket.Application;
+import org.apache.wicket.ThreadContext;
+import org.apache.wicket.request.cycle.RequestCycle;
import org.apache.wicket.request.http.WebResponse;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.request.resource.AbstractResource;
import org.apache.wicket.request.resource.caching.version.IResourceVersion;
import org.apache.wicket.request.resource.caching.version.MessageDigestResourceVersion;
+import org.apache.wicket.util.tester.BaseWicketTester;
import org.apache.wicket.util.tester.WicketTester;
+import org.apache.wicket.util.time.Duration;
import org.junit.Assert;
import org.junit.Test;
@@ -30,6 +35,8 @@ import org.junit.Test;
*/
public class QueryStringWithVersionResourceCachingStrategyTest extends Assert
{
+ public static final String TEST_RESOURCE_VERSION = "9A0364B9E99BB480DD25E1F0284C8555";
+
private final String versionParameter = "vers";
private final IResourceVersion resourceVersion = new MessageDigestResourceVersion();
private final IResourceCachingStrategy strategy =
@@ -42,14 +49,14 @@ public class QueryStringWithVersionResourceCachingStrategyTest extends Assert
strategy.decorateUrl(resourceUrl, new TestResource());
assertEquals("some-resource.txt", resourceUrl.getFileName());
- assertEquals("9A0364B9E99BB480DD25E1F0284C8555", resourceUrl.getParameters().get(versionParameter).toString());
+ assertEquals(TEST_RESOURCE_VERSION, resourceUrl.getParameters().get(versionParameter).toString());
}
@Test
public void testUndecorateUrl() throws Exception
{
PageParameters urlParameters = new PageParameters();
- urlParameters.add(versionParameter, "9A0364B9E99BB480DD25E1F0284C8555");
+ urlParameters.add(versionParameter, TEST_RESOURCE_VERSION);
ResourceUrl resourceUrl = new ResourceUrl("some-resource.txt", urlParameters);
strategy.undecorateUrl(resourceUrl);
@@ -60,11 +67,37 @@ public class QueryStringWithVersionResourceCachingStrategyTest extends Assert
@Test
public void testDecorateResponse() throws Exception
{
- AbstractResource.ResourceResponse response = new AbstractResource.ResourceResponse();
- strategy.decorateResponse(response, new TestResource());
+ Duration defaultDuration = Duration.minutes(60);
+
+ // setup RequestCycle
+ BaseWicketTester tester = new BaseWicketTester();
+ RequestCycle requestCycle = ThreadContext.getRequestCycle();
+ Application.get().getResourceSettings().setDefaultCacheDuration(defaultDuration);
+
+ try
+ {
+ // version match
+ requestCycle.setMetaData(IResourceCachingStrategy.URL_VERSION, TEST_RESOURCE_VERSION);
+
+ AbstractResource.ResourceResponse response = new AbstractResource.ResourceResponse();
+ strategy.decorateResponse(response, new TestResource());
+
+ assertEquals(WebResponse.MAX_CACHE_DURATION, response.getCacheDuration());
+ assertEquals(WebResponse.CacheScope.PUBLIC, response.getCacheScope());
- assertEquals(WebResponse.MAX_CACHE_DURATION, response.getCacheDuration());
- assertEquals(WebResponse.CacheScope.PUBLIC, response.getCacheScope());
+ // version mismatch
+ requestCycle.setMetaData(IResourceCachingStrategy.URL_VERSION, "foo");
+
+ response = new AbstractResource.ResourceResponse();
+ strategy.decorateResponse(response, new TestResource());
+
+ assertEquals(defaultDuration, response.getCacheDuration());
+ assertEquals(WebResponse.CacheScope.PRIVATE, response.getCacheScope());
+ }
+ finally
+ {
+ tester.destroy();
+ }
}
@Test