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 2015/02/12 22:07:14 UTC
[16/18] wicket git commit: WICKET-5827 Allow to apply multiple
Javascript / CSS compressors
WICKET-5827 Allow to apply multiple Javascript / CSS compressors
Relativize the image path against the css path, then create a PackageResourceReference to create a Wicket url for the image that is processed by the configured IResourceCachingStrategy
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/7ee9d755
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/7ee9d755
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/7ee9d755
Branch: refs/heads/master
Commit: 7ee9d755a29a6b7e2176a4736392090f0a9bed2e
Parents: fe5e545
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Thu Feb 12 23:00:16 2015 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Thu Feb 12 23:00:16 2015 +0200
----------------------------------------------------------------------
.../apache/wicket/resource/CssUrlReplacer.java | 11 ++---
.../wicket/resource/CssUrlReplacerTest.java | 42 +++++++++++++++++---
2 files changed, 42 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/7ee9d755/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java b/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java
index 47a0d47..a636609 100644
--- a/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java
+++ b/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java
@@ -48,16 +48,15 @@ public class CssUrlReplacer implements IScopeAwareTextResourceProcessor
@Override
public String process(String input, Class<?> scope, String name)
{
- PackageResourceReference cssReference = new PackageResourceReference(scope, name);
- CharSequence urlToCss = RequestCycle.get().urlFor(cssReference, null);
- Url cssUrl = Url.parse(urlToCss);
+ RequestCycle cycle = RequestCycle.get();
+ Url cssUrl = Url.parse(name);
Matcher matcher = URL_PATTERN.matcher(input);
StringBuffer output = new StringBuffer();
while (matcher.find())
{
Url imageCandidateUrl = Url.parse(matcher.group(1));
- String processedUrl;
+ CharSequence processedUrl;
if (imageCandidateUrl.isFull())
{
processedUrl = imageCandidateUrl.toString(Url.StringMode.FULL);
@@ -71,7 +70,9 @@ public class CssUrlReplacer implements IScopeAwareTextResourceProcessor
// relativize against the url for the containing CSS file
Url cssUrlCopy = new Url(cssUrl);
cssUrlCopy.resolveRelative(imageCandidateUrl);
- processedUrl = cssUrlCopy.toString();
+ PackageResourceReference imageReference = new PackageResourceReference(scope, cssUrlCopy.toString());
+ processedUrl = cycle.urlFor(imageReference, null);
+
}
matcher.appendReplacement(output, "url('" + processedUrl + "')");
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/7ee9d755/wicket-core/src/test/java/org/apache/wicket/resource/CssUrlReplacerTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/resource/CssUrlReplacerTest.java b/wicket-core/src/test/java/org/apache/wicket/resource/CssUrlReplacerTest.java
index 84bf6cf..df25e63 100644
--- a/wicket-core/src/test/java/org/apache/wicket/resource/CssUrlReplacerTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/resource/CssUrlReplacerTest.java
@@ -20,10 +20,40 @@ import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.is;
import org.apache.wicket.WicketTestCase;
+import org.apache.wicket.mock.MockApplication;
+import org.apache.wicket.protocol.http.WebApplication;
+import org.apache.wicket.request.resource.caching.FilenameWithVersionResourceCachingStrategy;
+import org.apache.wicket.request.resource.caching.IStaticCacheableResource;
+import org.apache.wicket.request.resource.caching.ResourceUrl;
+import org.apache.wicket.request.resource.caching.version.MessageDigestResourceVersion;
import org.junit.Test;
public class CssUrlReplacerTest extends WicketTestCase
{
+
+ private static final String DECORATION_SUFFIX = "--decorated";
+
+ @Override
+ protected WebApplication newApplication()
+ {
+ return new MockApplication() {
+ @Override
+ protected void init()
+ {
+ super.init();
+
+ getResourceSettings().setCachingStrategy(new FilenameWithVersionResourceCachingStrategy("=VER=", new MessageDigestResourceVersion())
+ {
+ @Override
+ public void decorateUrl(ResourceUrl url, IStaticCacheableResource resource)
+ {
+ url.setFileName(url.getFileName() + DECORATION_SUFFIX);
+ }
+ });
+ }
+ };
+ }
+
@Test
public void doNotProcessFullUrls()
{
@@ -57,7 +87,7 @@ public class CssUrlReplacerTest extends WicketTestCase
CssUrlReplacer replacer = new CssUrlReplacer();
String processed = replacer.process(input, scope, cssRelativePath);
- assertThat(processed, is(".class {background-image: url('./wicket/resource/org.apache.wicket.resource.CssUrlReplacerTest/res/css/some.img');}"));
+ assertThat(processed, is(".class {background-image: url('./wicket/resource/org.apache.wicket.resource.CssUrlReplacerTest/res/css/some.img"+DECORATION_SUFFIX+"');}"));
}
@Test
@@ -69,7 +99,7 @@ public class CssUrlReplacerTest extends WicketTestCase
CssUrlReplacer replacer = new CssUrlReplacer();
String processed = replacer.process(input, scope, cssRelativePath);
- assertThat(processed, is(".class {background-image: url('./wicket/resource/org.apache.wicket.resource.CssUrlReplacerTest/res/css/some.img');}"));
+ assertThat(processed, is(".class {background-image: url('./wicket/resource/org.apache.wicket.resource.CssUrlReplacerTest/res/css/some.img"+DECORATION_SUFFIX+"');}"));
}
@Test
@@ -81,7 +111,7 @@ public class CssUrlReplacerTest extends WicketTestCase
CssUrlReplacer replacer = new CssUrlReplacer();
String processed = replacer.process(input, scope, cssRelativePath);
- assertThat(processed, is(".class {background-image: url('./wicket/resource/org.apache.wicket.resource.CssUrlReplacerTest/res/images/some.img');}"));
+ assertThat(processed, is(".class {background-image: url('./wicket/resource/org.apache.wicket.resource.CssUrlReplacerTest/res/images/some.img"+DECORATION_SUFFIX+"');}"));
}
@Test
@@ -93,7 +123,7 @@ public class CssUrlReplacerTest extends WicketTestCase
CssUrlReplacer replacer = new CssUrlReplacer();
String processed = replacer.process(input, scope, cssRelativePath);
- assertThat(processed, is(".class {background-image: url('./wicket/resource/org.apache.wicket.resource.CssUrlReplacerTest/res/css/images/some.img');}"));
+ assertThat(processed, is(".class {background-image: url('./wicket/resource/org.apache.wicket.resource.CssUrlReplacerTest/res/css/images/some.img"+DECORATION_SUFFIX+"');}"));
}
@Test
@@ -109,7 +139,7 @@ public class CssUrlReplacerTest extends WicketTestCase
CssUrlReplacer replacer = new CssUrlReplacer();
String processed = replacer.process(input, scope, cssRelativePath);
- assertThat(processed, containsString("CssUrlReplacerTest/res/images/a.img');"));
- assertThat(processed, containsString("CssUrlReplacerTest/res/css/b.img');"));
+ assertThat(processed, containsString("CssUrlReplacerTest/res/images/a.img"+DECORATION_SUFFIX+"');"));
+ assertThat(processed, containsString("CssUrlReplacerTest/res/css/b.img"+DECORATION_SUFFIX+"');"));
}
}