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+"');"));
 	}
 }