Repository: wicket Updated Branches: refs/heads/wicket-7.x ea57ae108 -> 3b14e585e
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/3b14e585 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/3b14e585 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/3b14e585 Branch: refs/heads/wicket-7.x Commit: 3b14e585e0b8a025d2ddcb22d7f74ba5c7cde758 Parents: ea57ae1 Author: Martin Tzvetanov Grigorov <[email protected]> Authored: Sat May 21 13:37:36 2016 +0200 Committer: Martin Tzvetanov Grigorov <[email protected]> Committed: Sat May 21 13:37:36 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/3b14e585/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/3b14e585/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/3b14e585/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
