You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by ad...@apache.org on 2016/06/17 16:34:47 UTC

[12/21] wicket git commit: WICKET-6170 Wrong requestmapper used for cache decorated resources

WICKET-6170 Wrong requestmapper used for cache decorated resources

Undecorate the url before passing it for compatibility score calculation.


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/c1ea238e
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/c1ea238e
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/c1ea238e

Branch: refs/heads/WICKET-6183
Commit: c1ea238e09f17f97530bb30035bffa974e7132f2
Parents: 6966326
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Sat May 21 13:37:36 2016 +0200
Committer: Andrea Del Bene <ad...@apache.org>
Committed: Fri May 27 13:12:16 2016 +0200

----------------------------------------------------------------------
 .../core/request/mapper/ResourceMapper.java     |  7 ++-
 ...esourceMapperWithDecoratedResourcesTest.java | 61 ++++++++++++++++++++
 .../core/request/mapper/decorated-resource.css  |  1 +
 3 files changed, 68 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/c1ea238e/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/ResourceMapper.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/ResourceMapper.java b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/ResourceMapper.java
index d89543e..b6565be 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/ResourceMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/ResourceMapper.java
@@ -172,7 +172,12 @@ public class ResourceMapper extends AbstractBookmarkableMapper
 	@Override
 	public int getCompatibilityScore(Request request)
 	{
-		int score = super.getCompatibilityScore(request);
+		Url originalUrl = new Url(request.getUrl());
+		PageParameters parameters = extractPageParameters(request, mountSegments.length, parametersEncoder);
+		removeCachingDecoration(originalUrl, parameters);
+		Request requestWithoutDecoration = request.cloneWithUrl(originalUrl);
+
+		int score = super.getCompatibilityScore(requestWithoutDecoration);
 		if (score > 0)
 		{
 			score--; // pages always have priority over resources

http://git-wip-us.apache.org/repos/asf/wicket/blob/c1ea238e/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/ResourceMapperWithDecoratedResourcesTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/ResourceMapperWithDecoratedResourcesTest.java b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/ResourceMapperWithDecoratedResourcesTest.java
new file mode 100644
index 0000000..6cacfbb
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/ResourceMapperWithDecoratedResourcesTest.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.wicket.core.request.mapper;
+
+import org.apache.wicket.mock.MockApplication;
+import org.apache.wicket.protocol.http.WebApplication;
+import org.apache.wicket.protocol.http.request.HomePage;
+import org.apache.wicket.request.resource.CssResourceReference;
+import org.apache.wicket.request.resource.caching.FilenameWithVersionResourceCachingStrategy;
+import org.apache.wicket.request.resource.caching.version.CachingResourceVersion;
+import org.apache.wicket.request.resource.caching.version.MessageDigestResourceVersion;
+import org.apache.wicket.util.tester.WicketTestCase;
+import org.junit.Assert;
+import org.junit.Test;
+
+
+/**
+ * Simple test using the WicketTester
+ */
+public class ResourceMapperWithDecoratedResourcesTest extends WicketTestCase {
+
+	@Override
+	protected WebApplication newApplication() {
+		return new MockApplication() {
+			@Override
+			public void init() {
+				super.init();
+				getResourceSettings().setCachingStrategy(new FilenameWithVersionResourceCachingStrategy(
+						new CachingResourceVersion(new MessageDigestResourceVersion())));
+				mountResource("stylesheet.css", new CssResourceReference(ResourceMapperWithDecoratedResourcesTest.class, "decorated-resource.css"));
+				mountPage("/", HomePage.class);
+			}
+		};
+	}
+
+	@Test
+	public void resourceNoCacheDecorationSuccessfully() {
+		tester.executeUrl("stylesheet.css");
+		Assert.assertEquals("body { background-color: lightblue; }", tester.getLastResponseAsString());
+	}
+	
+	@Test
+	public void resourceWithCacheDecorationSuccessfully() {
+		tester.executeUrl("stylesheet-ver-9876543210.css");
+		Assert.assertEquals("body { background-color: lightblue; }", tester.getLastResponseAsString());
+	}
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/c1ea238e/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/decorated-resource.css
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/decorated-resource.css b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/decorated-resource.css
new file mode 100644
index 0000000..57a5407
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/decorated-resource.css
@@ -0,0 +1 @@
+body { background-color: lightblue; }
\ No newline at end of file