You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by da...@apache.org on 2015/08/10 17:33:11 UTC

[1/3] wicket git commit: Fixed JavaDoc warning by adding @since tag

Repository: wicket
Updated Branches:
  refs/heads/master d547fcd4f -> 877353179


Fixed JavaDoc warning by adding @since tag


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

Branch: refs/heads/master
Commit: d7762cead0471799ccee0d462ef465f8e782b964
Parents: d547fcd
Author: Martijn Dashorst <ma...@gmail.com>
Authored: Mon Aug 10 15:54:51 2015 +0200
Committer: Martijn Dashorst <ma...@gmail.com>
Committed: Mon Aug 10 15:54:51 2015 +0200

----------------------------------------------------------------------
 .../resource/locator/caching/CachingResourceStreamLocator.java  | 5 +++++
 1 file changed, 5 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/d7762cea/wicket-core/src/main/java/org/apache/wicket/core/util/resource/locator/caching/CachingResourceStreamLocator.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/util/resource/locator/caching/CachingResourceStreamLocator.java b/wicket-core/src/main/java/org/apache/wicket/core/util/resource/locator/caching/CachingResourceStreamLocator.java
index 93fb0b3..ceeb59f 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/util/resource/locator/caching/CachingResourceStreamLocator.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/util/resource/locator/caching/CachingResourceStreamLocator.java
@@ -138,6 +138,11 @@ public class CachingResourceStreamLocator implements IResourceStreamLocator
 		return delegate.newResourceNameIterator(path, locale, style, variation, extension, strict);
 	}
 
+	/**
+	 * Clears the resource cache.
+	 * 
+	 * @since 6.16.0
+	 */
 	public void clearCache()
 	{
 		cache.clear();


[3/3] wicket git commit: Fixed WICKET-5967 Unable to load i18n minified js

Posted by da...@apache.org.
Fixed WICKET-5967 Unable to load i18n minified js

Moved location of minified (or not) resources to ResourceStreamLocator instead of the
resources themselves by adding a lookup for .min.<extension> before .<extension> in the list
of extensions to search for. This prioritizes the minified version before the non-minified version,
and allows for style_variation_locale resources to be located in minified versions as well.


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

Branch: refs/heads/master
Commit: 8773531793092e302fa86ec61f3919c7008472d6
Parents: b87bc97
Author: Martijn Dashorst <ma...@gmail.com>
Authored: Mon Aug 10 17:35:23 2015 +0200
Committer: Martijn Dashorst <ma...@gmail.com>
Committed: Mon Aug 10 17:35:23 2015 +0200

----------------------------------------------------------------------
 .../resource/locator/ResourceStreamLocator.java | 31 +++++++-
 .../request/resource/CssPackageResource.java    | 13 +++-
 .../resource/JavaScriptPackageResource.java     | 20 ++++-
 .../resource/PackageResourceReference.java      | 79 +-------------------
 .../MinifiedAwareResourceReferenceTest.java     |  9 ++-
 .../resource/PackageResourceReferenceTest.java  |  2 +-
 .../resource/ResourceReferenceLocatingTest.java |  2 -
 .../wicket/util/resource/ResourceUtils.java     |  2 +
 8 files changed, 72 insertions(+), 86 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/87735317/wicket-core/src/main/java/org/apache/wicket/core/util/resource/locator/ResourceStreamLocator.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/util/resource/locator/ResourceStreamLocator.java b/wicket-core/src/main/java/org/apache/wicket/core/util/resource/locator/ResourceStreamLocator.java
index c555873..55a15c4 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/util/resource/locator/ResourceStreamLocator.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/util/resource/locator/ResourceStreamLocator.java
@@ -197,7 +197,17 @@ public class ResourceStreamLocator implements IResourceStreamLocator
 				// it could be an attack, so ignore it and pretend there are no resources
 				return new EmptyResourceNameIterator();
 			}
-			extensions = Collections.singleton(realExtension);
+
+			// add a minimized file to the resource lookup if necessary
+			if (Application.exists() &&
+				Application.get().getResourceSettings().getUseMinifiedResources())
+			{
+				extensions = Arrays.asList("min." + realExtension, realExtension);
+			}
+			else
+			{
+				extensions = Collections.singleton(realExtension);
+			}
 		}
 		else
 		{
@@ -209,7 +219,24 @@ public class ResourceStreamLocator implements IResourceStreamLocator
 			else
 			{
 				String[] commaSeparated = Strings.split(extension, ',');
-				extensions = Arrays.asList(commaSeparated);
+				List<String> nonMinifiedExtensions = Arrays.asList(commaSeparated);
+
+				// add a minimized file to the resource lookup if necessary
+				if (Application.exists() &&
+					Application.get().getResourceSettings().getUseMinifiedResources())
+				{
+					ArrayList<String> minifiedExtensions = new ArrayList<>();
+					for (String nonMinifiedExtension : nonMinifiedExtensions)
+					{
+						minifiedExtensions.add("min." + nonMinifiedExtension);
+						minifiedExtensions.add(nonMinifiedExtension);
+					}
+					extensions = minifiedExtensions;
+				}
+				else
+				{
+					extensions = nonMinifiedExtensions;
+				}
 			}
 		}
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/87735317/wicket-core/src/main/java/org/apache/wicket/request/resource/CssPackageResource.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/CssPackageResource.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/CssPackageResource.java
index 356ee59..fd48eb8 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/resource/CssPackageResource.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/CssPackageResource.java
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket.request.resource;
 
+import static org.apache.wicket.util.resource.ResourceUtils.MIN_POSTFIX_DEFAULT_AS_EXTENSION;
+
 import java.util.Locale;
 
 import org.apache.wicket.Application;
@@ -39,10 +41,16 @@ public class CssPackageResource extends PackageResource
 	 * Construct.
 	 * 
 	 * @param scope
+	 *            This argument will be used to get the class loader for loading the package
+	 *            resource, and to determine what package it is in
 	 * @param name
+	 *            The relative path to the resource
 	 * @param locale
+	 *            The locale of the resource
 	 * @param style
+	 *            The style of the resource
 	 * @param variation
+	 *            The component's variation (of the style)
 	 */
 	public CssPackageResource(Class<?> scope, String name, Locale locale, String style,
 		String variation)
@@ -51,8 +59,9 @@ public class CssPackageResource extends PackageResource
 
 		this.name = name;
 
-		// CSS resources can be compressed if there is configured ICssCompressor
-		setCompress(true);
+		// CSS resources can be compressed if there is configured ICssCompressor, and the
+		// resource isn't already minified (the file already has .min. in its name).
+		setCompress(!name.contains(MIN_POSTFIX_DEFAULT_AS_EXTENSION));
 	}
 
 	@Override

http://git-wip-us.apache.org/repos/asf/wicket/blob/87735317/wicket-core/src/main/java/org/apache/wicket/request/resource/JavaScriptPackageResource.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/JavaScriptPackageResource.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/JavaScriptPackageResource.java
index b2577ab..0692555 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/resource/JavaScriptPackageResource.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/JavaScriptPackageResource.java
@@ -16,11 +16,14 @@
  */
 package org.apache.wicket.request.resource;
 
+import static org.apache.wicket.util.resource.ResourceUtils.MIN_POSTFIX_DEFAULT_AS_EXTENSION;
+
 import java.util.Locale;
 
 import org.apache.wicket.Application;
 import org.apache.wicket.javascript.IJavaScriptCompressor;
 import org.apache.wicket.resource.IScopeAwareTextResourceProcessor;
+import org.apache.wicket.util.resource.ResourceUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -37,6 +40,18 @@ public class JavaScriptPackageResource extends PackageResource
 
 	/**
 	 * Construct.
+	 * 
+	 * @param scope
+	 *            This argument will be used to get the class loader for loading the package
+	 *            resource, and to determine what package it is in
+	 * @param name
+	 *            The relative path to the resource
+	 * @param locale
+	 *            The locale of the resource
+	 * @param style
+	 *            The style of the resource
+	 * @param variation
+	 *            The component's variation (of the style)
 	 */
 	public JavaScriptPackageResource(Class<?> scope, String name, Locale locale, String style,
 		String variation)
@@ -45,8 +60,9 @@ public class JavaScriptPackageResource extends PackageResource
 
 		this.name = name;
 
-		// JS resources can be compressed if there is configured IJavaScriptCompressor
-		setCompress(true);
+		// JS resources can be compressed if there is configured IJavaScriptCompressor, and the
+		// resource isn't already minified (the file already has .min. in its name).
+		setCompress(!name.contains(MIN_POSTFIX_DEFAULT_AS_EXTENSION));
 	}
 
 	@Override

http://git-wip-us.apache.org/repos/asf/wicket/blob/87735317/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceReference.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceReference.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceReference.java
index 8197ed6..40d7d0c 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceReference.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceReference.java
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket.request.resource;
 
+import static org.apache.wicket.util.resource.ResourceUtils.MIN_POSTFIX_DEFAULT_AS_EXTENSION;
+
 import java.util.Locale;
 import java.util.concurrent.ConcurrentMap;
 
@@ -55,19 +57,6 @@ public class PackageResourceReference extends ResourceReference
 	private boolean readBuffered = true;
 
 	/**
-	 * Cache for existence of minified version of the resource to avoid repetitive calls to
-	 * org.apache.wicket.util.resource.locator.IResourceStreamLocator#locate() and
-	 * #getMinifiedName().
-	 */
-	private static final ConcurrentMap<PackageResourceReference, String> MINIFIED_NAMES_CACHE = Generics.newConcurrentHashMap();
-
-	/**
-	 * A constant used to indicate that there is no minified version of the resource.
-	 */
-	// WARNING: always compare by identity!
-	private static final String NO_MINIFIED_NAME = new String();
-
-	/**
 	 * Construct.
 	 * 
 	 * @param key
@@ -166,8 +155,8 @@ public class PackageResourceReference extends ResourceReference
 	 */
 	protected final void removeCompressFlagIfUnnecessary(final PackageResource resource)
 	{
-		String minifiedName = MINIFIED_NAMES_CACHE.get(this);
-		if (minifiedName != null && minifiedName != NO_MINIFIED_NAME)
+		String minifiedName = getName();
+		if (minifiedName != null && minifiedName.contains(MIN_POSTFIX_DEFAULT_AS_EXTENSION))
 		{
 			resource.setCompress(false);
 		}
@@ -248,38 +237,6 @@ public class PackageResourceReference extends ResourceReference
 	}
 
 	/**
-	 * Initializes the cache for the existence of the minified resource.
-	 * 
-	 * @return the name of the minified resource or the special constant {@link #NO_MINIFIED_NAME}
-	 *         if there is no minified version
-	 */
-	private String internalGetMinifiedName()
-	{
-		String minifiedName = MINIFIED_NAMES_CACHE.get(this);
-		if (minifiedName != null)
-		{
-			return minifiedName;
-		}
-
-		String name = getMinifiedName();
-		IResourceStreamLocator locator = Application.get()
-			.getResourceSettings()
-			.getResourceStreamLocator();
-		String absolutePath = Packages.absolutePath(getScope(), name);
-		IResourceStream stream = locator.locate(getScope(), absolutePath, getStyle(),
-			getVariation(), getLocale(), null, true);
-
-		minifiedName = stream != null ? name : NO_MINIFIED_NAME;
-		MINIFIED_NAMES_CACHE.put(this, minifiedName);
-		if (minifiedName == NO_MINIFIED_NAME && log.isDebugEnabled())
-		{
-			log.debug("No minified version of '" + super.getName() +
-				"' found, expected a file with the name '" + name + "', using full version");
-		}
-		return minifiedName;
-	}
-
-	/**
 	 * @return How the minified file should be named.
 	 */
 	protected String getMinifiedName()
@@ -288,34 +245,6 @@ public class PackageResourceReference extends ResourceReference
 		return ResourceUtils.getMinifiedName(name, ResourceUtils.MIN_POSTFIX_DEFAULT);
 	}
 
-	/**
-	 * Returns the name of the file: minified or full version. This method is called in a
-	 * multithreaded context, so it has to be thread safe.
-	 *
-	 * @see org.apache.wicket.request.resource.ResourceReference#getName()
-	 */
-	@Override
-	public String getName()
-	{
-		String name = null;
-
-		if (Application.exists() &&
-			Application.get().getResourceSettings().getUseMinifiedResources())
-		{
-			String minifiedName = internalGetMinifiedName();
-			if (minifiedName != NO_MINIFIED_NAME)
-			{
-				name = minifiedName;
-			}
-		}
-
-		if (name == null)
-		{
-			name = super.getName();
-		}
-		return name;
-	}
-
 	@Override
 	public ResourceReference.UrlAttributes getUrlAttributes()
 	{

http://git-wip-us.apache.org/repos/asf/wicket/blob/87735317/wicket-core/src/test/java/org/apache/wicket/request/resource/MinifiedAwareResourceReferenceTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/resource/MinifiedAwareResourceReferenceTest.java b/wicket-core/src/test/java/org/apache/wicket/request/resource/MinifiedAwareResourceReferenceTest.java
index 73aee8d..653adb8 100644
--- a/wicket-core/src/test/java/org/apache/wicket/request/resource/MinifiedAwareResourceReferenceTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/request/resource/MinifiedAwareResourceReferenceTest.java
@@ -16,6 +16,10 @@
  */
 package org.apache.wicket.request.resource;
 
+import java.util.Locale;
+import java.util.Map;
+import java.util.Properties;
+
 import org.apache.wicket.Application;
 import org.apache.wicket.core.util.resource.locator.ResourceStreamLocator;
 import org.apache.wicket.request.resource.IResource.Attributes;
@@ -52,7 +56,7 @@ public class MinifiedAwareResourceReferenceTest extends WicketTestCase
 		Application.get().getResourceSettings().setUseMinifiedResources(true);
 		ResourceReference reference = new JavaScriptResourceReference(
 			MinifiedAwareResourceReferenceTest.class, "b.js");
-		assertEquals("b.min.js", reference.getName());
+		assertEquals("b.js", reference.getName());
 		String fileContent = renderResource(reference);
 		assertEquals("// b.min.js", fileContent.trim());
 	}
@@ -74,7 +78,8 @@ public class MinifiedAwareResourceReferenceTest extends WicketTestCase
 		String fileContent = renderResource(reference);
 		assertEquals("//a", fileContent);
 
-		assertEquals(1, locator.minLocated);
+		// this will try 3 lookups for minified resources: en_US.min, en.min and .min 
+		assertEquals(3, locator.minLocated);
 	}
 
 	private class MinCountingResourceStreamLocator extends ResourceStreamLocator

http://git-wip-us.apache.org/repos/asf/wicket/blob/87735317/wicket-core/src/test/java/org/apache/wicket/request/resource/PackageResourceReferenceTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/resource/PackageResourceReferenceTest.java b/wicket-core/src/test/java/org/apache/wicket/request/resource/PackageResourceReferenceTest.java
index 81d7cde..df70f16 100644
--- a/wicket-core/src/test/java/org/apache/wicket/request/resource/PackageResourceReferenceTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/request/resource/PackageResourceReferenceTest.java
@@ -198,7 +198,7 @@ public class PackageResourceReferenceTest extends WicketTestCase
 	 * see WICKET-5251 : Proper detection of already minified resources
 	 */
 	@Test
-	public void testMinifiedNameDetectMinInName() throws Exception
+	public void testMinifiedNameDetectMinInName()
 	{
 		final PackageResourceReference html5minjs = new PackageResourceReference("html5.min.js");
 		Assert.assertEquals("html5.min.js", html5minjs.getMinifiedName());

http://git-wip-us.apache.org/repos/asf/wicket/blob/87735317/wicket-core/src/test/java/org/apache/wicket/request/resource/ResourceReferenceLocatingTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/resource/ResourceReferenceLocatingTest.java b/wicket-core/src/test/java/org/apache/wicket/request/resource/ResourceReferenceLocatingTest.java
index 3be3f60..b2eca5f 100644
--- a/wicket-core/src/test/java/org/apache/wicket/request/resource/ResourceReferenceLocatingTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/request/resource/ResourceReferenceLocatingTest.java
@@ -27,7 +27,6 @@ import java.util.Locale;
 
 import org.apache.wicket.util.io.Streams;
 import org.apache.wicket.util.tester.WicketTestCase;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
@@ -38,7 +37,6 @@ import org.junit.runners.Parameterized.Parameters;
  */
 @SuppressWarnings("javadoc")
 @RunWith(Parameterized.class)
-@Ignore("WICKET-5967 - Unable to load i18n minified js")
 public class ResourceReferenceLocatingTest extends WicketTestCase
 {
 	/** Loads the test cases from a spread sheet in semi-colon separated format. */

http://git-wip-us.apache.org/repos/asf/wicket/blob/87735317/wicket-util/src/main/java/org/apache/wicket/util/resource/ResourceUtils.java
----------------------------------------------------------------------
diff --git a/wicket-util/src/main/java/org/apache/wicket/util/resource/ResourceUtils.java b/wicket-util/src/main/java/org/apache/wicket/util/resource/ResourceUtils.java
index ac1d025..868b727 100644
--- a/wicket-util/src/main/java/org/apache/wicket/util/resource/ResourceUtils.java
+++ b/wicket-util/src/main/java/org/apache/wicket/util/resource/ResourceUtils.java
@@ -33,6 +33,8 @@ public class ResourceUtils
 {
 	/** The default postfix for minified names (ex: /css/mystyle.min.css) **/
 	public static final String MIN_POSTFIX_DEFAULT = "min";
+	/** The default postfix for minified names (ex: /css/mystyle.min.css) **/
+	public static final String MIN_POSTFIX_DEFAULT_AS_EXTENSION = ".min.";
 	/** Regular expression patter to extract the locale from the filename (ex: de_DE) **/
 	private static final Pattern LOCALE_MIN_PATTERN = Pattern
 		.compile("_([a-z]{2})(_([A-Z]{2})(_([^_\\.]+))?)?(\\.min)?$");


[2/3] wicket git commit: WICKET-5967 - Unable to load i18n minified js

Posted by da...@apache.org.
WICKET-5967 - Unable to load i18n minified js


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

Branch: refs/heads/master
Commit: b87bc97526c2644b2c64637ca6bdb6dbfcd4f29d
Parents: d7762ce
Author: Martijn Dashorst <ma...@gmail.com>
Authored: Mon Aug 10 16:49:14 2015 +0200
Committer: Martijn Dashorst <ma...@gmail.com>
Committed: Mon Aug 10 17:03:35 2015 +0200

----------------------------------------------------------------------
 .../MinifiedAwareResourceReferenceTest.java     |   2 +-
 .../request/resource/ResouceBundleTest.java     |   2 +-
 .../resource/ResourceReferenceLocatingTest.csv  |   1 +
 .../resource/ResourceReferenceLocatingTest.java | 255 +++++++++++++++++++
 .../org/apache/wicket/request/resource/b.js     |   2 +-
 .../org/apache/wicket/request/resource/b.min.js |   2 +-
 .../org/apache/wicket/request/resource/b_de.js  |   1 +
 .../org/apache/wicket/request/resource/b_nl.js  |   1 +
 .../apache/wicket/request/resource/b_nl.min.js  |   1 +
 .../apache/wicket/request/resource/b_nl_BE.js   |   1 +
 .../wicket/request/resource/b_nl_BE.min.js      |   1 +
 .../apache/wicket/request/resource/b_style.js   |   1 +
 .../wicket/request/resource/b_style.min.js      |   1 +
 .../wicket/request/resource/b_style_nl.js       |   1 +
 .../wicket/request/resource/b_style_nl.min.js   |   1 +
 .../wicket/request/resource/b_style_nl_BE.js    |   1 +
 .../request/resource/b_style_nl_BE.min.js       |   1 +
 .../wicket/request/resource/b_var_style.js      |   1 +
 .../wicket/request/resource/b_var_style.min.js  |   1 +
 .../wicket/request/resource/b_var_style_nl.js   |   1 +
 .../request/resource/b_var_style_nl.min.js      |   1 +
 .../request/resource/b_var_style_nl_BE.js       |   1 +
 .../request/resource/b_var_style_nl_BE.min.js   |   1 +
 23 files changed, 277 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/b87bc975/wicket-core/src/test/java/org/apache/wicket/request/resource/MinifiedAwareResourceReferenceTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/resource/MinifiedAwareResourceReferenceTest.java b/wicket-core/src/test/java/org/apache/wicket/request/resource/MinifiedAwareResourceReferenceTest.java
index 498ae24..73aee8d 100644
--- a/wicket-core/src/test/java/org/apache/wicket/request/resource/MinifiedAwareResourceReferenceTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/request/resource/MinifiedAwareResourceReferenceTest.java
@@ -54,7 +54,7 @@ public class MinifiedAwareResourceReferenceTest extends WicketTestCase
 			MinifiedAwareResourceReferenceTest.class, "b.js");
 		assertEquals("b.min.js", reference.getName());
 		String fileContent = renderResource(reference);
-		assertEquals("//minified-b", fileContent);
+		assertEquals("// b.min.js", fileContent.trim());
 	}
 
 	/**

http://git-wip-us.apache.org/repos/asf/wicket/blob/b87bc975/wicket-core/src/test/java/org/apache/wicket/request/resource/ResouceBundleTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/resource/ResouceBundleTest.java b/wicket-core/src/test/java/org/apache/wicket/request/resource/ResouceBundleTest.java
index 18b016d..d336f83 100644
--- a/wicket-core/src/test/java/org/apache/wicket/request/resource/ResouceBundleTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/request/resource/ResouceBundleTest.java
@@ -45,7 +45,7 @@ public class ResouceBundleTest extends WicketTestCase
 				ResouceBundleTest.class, "b.js"))));
 
 		tester.startResource(bundle);
-		assertEquals("//a//b", tester.getLastResponseAsString());
+		assertEquals("//a// b.js", tester.getLastResponseAsString().trim());
 	}
 
 	/**

http://git-wip-us.apache.org/repos/asf/wicket/blob/b87bc975/wicket-core/src/test/java/org/apache/wicket/request/resource/ResourceReferenceLocatingTest.csv
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/resource/ResourceReferenceLocatingTest.csv b/wicket-core/src/test/java/org/apache/wicket/request/resource/ResourceReferenceLocatingTest.csv
new file mode 100644
index 0000000..fcafadb
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/request/resource/ResourceReferenceLocatingTest.csv
@@ -0,0 +1 @@
+Locale;Style;Variation;Extension;non-minified;minified;strict-non-min;strict-min
null;null;null;null;b.js;b.min.js;b.js;b.min.js
nl;null;null;null;b_nl.js;b_nl.min.js;b_nl.js;b_nl.min.js
de;null;null;null;b_de.js;b_de.js;b_de.js;b_de.js
nl_BE;null;null;null;b_nl_BE.js;b_nl_BE.min.js;b_nl_BE.js;b_nl_BE.min.js
nl_NL;null;null;null;b_nl.js;b_nl.min.js;null;null
pt_BR;null;null;null;b.js;b.min.js;null;null
null;style;null;null;b_style.js;b_style.min.js;b_style.js;b_style.min.js
nl;style;null;null;b_style_nl.js;b_style_nl.min.js;b_style_nl.js;b_style_nl.min.js
nl_BE;style;null;null;b_style_nl_BE.js;b_style_nl_BE.min.js;b_style_nl_BE.js;b_style_nl_BE.min.js
nl_NL;style;null;null;b_style_nl.js;b_style_nl.min.js;null;null
pt_BR;style;null;null;b_style.js;b_style.min.js;null;null
null;style;var;null;b_var_style.js;b_var_style.min.js;b_var_style.js;b_var_style.min.js
nl;style;var;null;b_var_style_nl.js;b_var_style_nl.min.js;b_var_style_nl.js;b_var_style_nl.min.js
nl_BE;style;var;null;b_var_st
 yle_nl_BE.js;b_var_style_nl_BE.min.js;b_var_style_nl_BE.js;b_var_style_nl_BE.min.js
nl_NL;style;var;null;b_var_style_nl.js;b_var_style_nl.min.js;null;null
pt_BR;style;var;null;b_var_style.js;b_var_style.min.js;null;null
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/wicket/blob/b87bc975/wicket-core/src/test/java/org/apache/wicket/request/resource/ResourceReferenceLocatingTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/resource/ResourceReferenceLocatingTest.java b/wicket-core/src/test/java/org/apache/wicket/request/resource/ResourceReferenceLocatingTest.java
new file mode 100644
index 0000000..3be3f60
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/request/resource/ResourceReferenceLocatingTest.java
@@ -0,0 +1,255 @@
+/*
+ * 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.request.resource;
+
+import static org.hamcrest.CoreMatchers.is;
+
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+
+import org.apache.wicket.util.io.Streams;
+import org.apache.wicket.util.tester.WicketTestCase;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+/**
+ * Test case for WICKET-5967 - Unable to load i18n minified js.
+ */
+@SuppressWarnings("javadoc")
+@RunWith(Parameterized.class)
+@Ignore("WICKET-5967 - Unable to load i18n minified js")
+public class ResourceReferenceLocatingTest extends WicketTestCase
+{
+	/** Loads the test cases from a spread sheet in semi-colon separated format. */
+	@Parameters(name = "{0}")
+	public static List<Object[]> parameters()
+	{
+		try (InputStream is = ResourceReferenceLocatingTest.class
+			.getResourceAsStream("ResourceReferenceLocatingTest.csv"))
+		{
+			String csv = Streams.readString(is);
+			StringReader sr = new StringReader(csv);
+			BufferedReader br = new BufferedReader(sr);
+			List<Object[]> result = new ArrayList<>();
+
+			String line = br.readLine(); // read header line
+			while ((line = br.readLine()) != null)
+			{
+				if (!line.isEmpty())
+					result.add(new Object[] { TestCase.fromLine(line) });
+			}
+			return result;
+		}
+		catch (Exception e)
+		{
+			throw new AssertionError(e);
+		}
+	}
+
+	public static class TestCase
+	{
+		private Locale locale;
+		private String style;
+		private String variation;
+		private String extension;
+		private String nonMinifiedContents;
+		private String minifiedContents;
+		private String strictNonMinifiedContents;
+		private String strictMinifiedContents;
+
+		private TestCase(Locale locale, String style, String variation, String extension,
+			String nonMinifiedContents, String minifiedContents, String strictNonMinifiedContents,
+			String strictMinifiedContents)
+		{
+			this.locale = locale;
+			this.style = style;
+			this.variation = variation;
+			this.extension = extension;
+			this.nonMinifiedContents = nonMinifiedContents;
+			this.minifiedContents = minifiedContents;
+			this.strictNonMinifiedContents = strictNonMinifiedContents;
+			this.strictMinifiedContents = strictMinifiedContents;
+		}
+
+		private static boolean isNull(String s)
+		{
+			return s == null || s.isEmpty() || s.equals("null");
+		}
+
+		private static String nullOrValue(String s)
+		{
+			return isNull(s) ? null : s;
+		}
+
+		public static TestCase fromLine(String line)
+		{
+			String splitter;
+			if (line.contains("\t"))
+				splitter = "\t";
+			else if (line.contains(";"))
+				splitter = ";";
+			else if (line.contains(","))
+				splitter = ",";
+			else
+				throw new IllegalArgumentException(
+					"Unable to split line with either tab, komma or semicolon");
+
+			String[] pars = line.split(splitter);
+
+			Locale locale = isNull(pars[0]) ? null
+				: Locale.forLanguageTag(pars[0].replace('_', '-'));
+			String style = nullOrValue(pars[1]);
+			String variation = nullOrValue(pars[2]);
+			String extension = nullOrValue(pars[3]);
+			String resultNonMin = nullOrValue(pars[4]);
+			String resultMin = nullOrValue(pars[5]);
+			String resultStrictNonMin = nullOrValue(pars[6]);
+			String resultStrictMin = nullOrValue(pars[7]);
+
+			TestCase test = new TestCase(locale, style, variation, extension, resultNonMin,
+				resultMin, resultStrictNonMin, resultStrictMin);
+			return test;
+		}
+
+		public Locale getLocale()
+		{
+			return locale;
+		}
+
+		public String getStyle()
+		{
+			return style;
+		}
+
+		public String getVariation()
+		{
+			return variation;
+		}
+
+		public String getExtension()
+		{
+			return extension;
+		}
+
+		public String getNonMinifiedContents()
+		{
+			return nonMinifiedContents;
+		}
+
+		public String getMinifiedContents()
+		{
+			return minifiedContents;
+		}
+
+		public String getStrictNonMinifiedContents()
+		{
+			return strictNonMinifiedContents;
+		}
+
+		public String getStrictMinifiedContents()
+		{
+			return strictMinifiedContents;
+		}
+
+		@Override
+		public String toString()
+		{
+			return "TestCase [locale=" + locale + ", style=" + style + ", variation=" + variation +
+				", extension=" + extension + "]";
+		}
+	}
+
+	private TestCase test;
+
+	public ResourceReferenceLocatingTest(TestCase test)
+	{
+		this.test = test;
+	}
+
+	/**
+	 * Locate a resource without a minification requirement.
+	 */
+	@Test
+	public void locateNonMinifiedJavaScriptResourceReference()
+	{
+		tester.getApplication().getResourceSettings().setUseMinifiedResources(false);
+
+		checkNonStrictUsingJavaScriptResourceReference(test.getNonMinifiedContents());
+	}
+
+	/** */
+	@Test
+	public void locateNonMinifiedPackageResourceReference()
+	{
+		tester.getApplication().getResourceSettings().setUseMinifiedResources(false);
+
+		checkNonStrictUsingPackageResourceReference(test.getNonMinifiedContents());
+	}
+
+	/** */
+	@Test
+	public void locateMinifiedJavaScriptResourceReference()
+	{
+		tester.getApplication().getResourceSettings().setUseMinifiedResources(true);
+
+		checkNonStrictUsingJavaScriptResourceReference(test.getMinifiedContents());
+	}
+
+	/** */
+	@Test
+	public void locateMinifiedPackageResourceReference()
+	{
+		tester.getApplication().getResourceSettings().setUseMinifiedResources(true);
+
+		checkNonStrictUsingPackageResourceReference(test.getMinifiedContents());
+	}
+
+	private void checkNonStrictUsingJavaScriptResourceReference(String expectedResult)
+	{
+		Locale locale = test.getLocale();
+		String style = test.getStyle();
+		String variation = test.getVariation();
+		String extension = test.getExtension();
+
+		JavaScriptResourceReference reference = new JavaScriptResourceReference(
+			ResourceReferenceLocatingTest.class, "b.js", locale, style, variation);
+		tester.startResourceReference(reference);
+		assertThat(test.toString(), tester.getLastResponseAsString().trim(),
+			is("// " + expectedResult));
+	}
+
+	private void checkNonStrictUsingPackageResourceReference(String expectedResult)
+	{
+		Locale locale = test.getLocale();
+		String style = test.getStyle();
+		String variation = test.getVariation();
+		String extension = test.getExtension();
+
+		PackageResourceReference reference = new PackageResourceReference(
+			ResourceReferenceLocatingTest.class, "b.js", locale, style, variation);
+		tester.startResourceReference(reference);
+		assertThat(test.toString(), tester.getLastResponseAsString().trim(),
+			is("// " + expectedResult));
+	}
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/b87bc975/wicket-core/src/test/java/org/apache/wicket/request/resource/b.js
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/resource/b.js b/wicket-core/src/test/java/org/apache/wicket/request/resource/b.js
index 8e53d35..f120561 100644
--- a/wicket-core/src/test/java/org/apache/wicket/request/resource/b.js
+++ b/wicket-core/src/test/java/org/apache/wicket/request/resource/b.js
@@ -1 +1 @@
-//b
\ No newline at end of file
+// b.js

http://git-wip-us.apache.org/repos/asf/wicket/blob/b87bc975/wicket-core/src/test/java/org/apache/wicket/request/resource/b.min.js
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/resource/b.min.js b/wicket-core/src/test/java/org/apache/wicket/request/resource/b.min.js
index d97109c..cd0205a 100644
--- a/wicket-core/src/test/java/org/apache/wicket/request/resource/b.min.js
+++ b/wicket-core/src/test/java/org/apache/wicket/request/resource/b.min.js
@@ -1 +1 @@
-//minified-b
\ No newline at end of file
+// b.min.js

http://git-wip-us.apache.org/repos/asf/wicket/blob/b87bc975/wicket-core/src/test/java/org/apache/wicket/request/resource/b_de.js
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/resource/b_de.js b/wicket-core/src/test/java/org/apache/wicket/request/resource/b_de.js
new file mode 100644
index 0000000..c4fddec
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/request/resource/b_de.js
@@ -0,0 +1 @@
+// b_de.js

http://git-wip-us.apache.org/repos/asf/wicket/blob/b87bc975/wicket-core/src/test/java/org/apache/wicket/request/resource/b_nl.js
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/resource/b_nl.js b/wicket-core/src/test/java/org/apache/wicket/request/resource/b_nl.js
new file mode 100644
index 0000000..6a3da57
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/request/resource/b_nl.js
@@ -0,0 +1 @@
+// b_nl.js

http://git-wip-us.apache.org/repos/asf/wicket/blob/b87bc975/wicket-core/src/test/java/org/apache/wicket/request/resource/b_nl.min.js
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/resource/b_nl.min.js b/wicket-core/src/test/java/org/apache/wicket/request/resource/b_nl.min.js
new file mode 100644
index 0000000..8f1a439
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/request/resource/b_nl.min.js
@@ -0,0 +1 @@
+// b_nl.min.js

http://git-wip-us.apache.org/repos/asf/wicket/blob/b87bc975/wicket-core/src/test/java/org/apache/wicket/request/resource/b_nl_BE.js
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/resource/b_nl_BE.js b/wicket-core/src/test/java/org/apache/wicket/request/resource/b_nl_BE.js
new file mode 100644
index 0000000..5ded0f5
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/request/resource/b_nl_BE.js
@@ -0,0 +1 @@
+// b_nl_BE.js

http://git-wip-us.apache.org/repos/asf/wicket/blob/b87bc975/wicket-core/src/test/java/org/apache/wicket/request/resource/b_nl_BE.min.js
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/resource/b_nl_BE.min.js b/wicket-core/src/test/java/org/apache/wicket/request/resource/b_nl_BE.min.js
new file mode 100644
index 0000000..41263f9
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/request/resource/b_nl_BE.min.js
@@ -0,0 +1 @@
+// b_nl_BE.min.js

http://git-wip-us.apache.org/repos/asf/wicket/blob/b87bc975/wicket-core/src/test/java/org/apache/wicket/request/resource/b_style.js
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/resource/b_style.js b/wicket-core/src/test/java/org/apache/wicket/request/resource/b_style.js
new file mode 100644
index 0000000..d2e1003
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/request/resource/b_style.js
@@ -0,0 +1 @@
+// b_style.js

http://git-wip-us.apache.org/repos/asf/wicket/blob/b87bc975/wicket-core/src/test/java/org/apache/wicket/request/resource/b_style.min.js
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/resource/b_style.min.js b/wicket-core/src/test/java/org/apache/wicket/request/resource/b_style.min.js
new file mode 100644
index 0000000..f443b86
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/request/resource/b_style.min.js
@@ -0,0 +1 @@
+// b_style.min.js

http://git-wip-us.apache.org/repos/asf/wicket/blob/b87bc975/wicket-core/src/test/java/org/apache/wicket/request/resource/b_style_nl.js
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/resource/b_style_nl.js b/wicket-core/src/test/java/org/apache/wicket/request/resource/b_style_nl.js
new file mode 100644
index 0000000..065a588
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/request/resource/b_style_nl.js
@@ -0,0 +1 @@
+// b_style_nl.js

http://git-wip-us.apache.org/repos/asf/wicket/blob/b87bc975/wicket-core/src/test/java/org/apache/wicket/request/resource/b_style_nl.min.js
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/resource/b_style_nl.min.js b/wicket-core/src/test/java/org/apache/wicket/request/resource/b_style_nl.min.js
new file mode 100644
index 0000000..04b4623
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/request/resource/b_style_nl.min.js
@@ -0,0 +1 @@
+// b_style_nl.min.js

http://git-wip-us.apache.org/repos/asf/wicket/blob/b87bc975/wicket-core/src/test/java/org/apache/wicket/request/resource/b_style_nl_BE.js
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/resource/b_style_nl_BE.js b/wicket-core/src/test/java/org/apache/wicket/request/resource/b_style_nl_BE.js
new file mode 100644
index 0000000..ad6a4ca
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/request/resource/b_style_nl_BE.js
@@ -0,0 +1 @@
+// b_style_nl_BE.js

http://git-wip-us.apache.org/repos/asf/wicket/blob/b87bc975/wicket-core/src/test/java/org/apache/wicket/request/resource/b_style_nl_BE.min.js
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/resource/b_style_nl_BE.min.js b/wicket-core/src/test/java/org/apache/wicket/request/resource/b_style_nl_BE.min.js
new file mode 100644
index 0000000..08b67c0
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/request/resource/b_style_nl_BE.min.js
@@ -0,0 +1 @@
+// b_style_nl_BE.min.js

http://git-wip-us.apache.org/repos/asf/wicket/blob/b87bc975/wicket-core/src/test/java/org/apache/wicket/request/resource/b_var_style.js
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/resource/b_var_style.js b/wicket-core/src/test/java/org/apache/wicket/request/resource/b_var_style.js
new file mode 100644
index 0000000..5a69bbb
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/request/resource/b_var_style.js
@@ -0,0 +1 @@
+// b_var_style.js

http://git-wip-us.apache.org/repos/asf/wicket/blob/b87bc975/wicket-core/src/test/java/org/apache/wicket/request/resource/b_var_style.min.js
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/resource/b_var_style.min.js b/wicket-core/src/test/java/org/apache/wicket/request/resource/b_var_style.min.js
new file mode 100644
index 0000000..f99182e
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/request/resource/b_var_style.min.js
@@ -0,0 +1 @@
+// b_var_style.min.js

http://git-wip-us.apache.org/repos/asf/wicket/blob/b87bc975/wicket-core/src/test/java/org/apache/wicket/request/resource/b_var_style_nl.js
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/resource/b_var_style_nl.js b/wicket-core/src/test/java/org/apache/wicket/request/resource/b_var_style_nl.js
new file mode 100644
index 0000000..caefe88
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/request/resource/b_var_style_nl.js
@@ -0,0 +1 @@
+// b_var_style_nl.js

http://git-wip-us.apache.org/repos/asf/wicket/blob/b87bc975/wicket-core/src/test/java/org/apache/wicket/request/resource/b_var_style_nl.min.js
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/resource/b_var_style_nl.min.js b/wicket-core/src/test/java/org/apache/wicket/request/resource/b_var_style_nl.min.js
new file mode 100644
index 0000000..b146f7c
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/request/resource/b_var_style_nl.min.js
@@ -0,0 +1 @@
+// b_var_style_nl.min.js

http://git-wip-us.apache.org/repos/asf/wicket/blob/b87bc975/wicket-core/src/test/java/org/apache/wicket/request/resource/b_var_style_nl_BE.js
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/resource/b_var_style_nl_BE.js b/wicket-core/src/test/java/org/apache/wicket/request/resource/b_var_style_nl_BE.js
new file mode 100644
index 0000000..30fd06a
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/request/resource/b_var_style_nl_BE.js
@@ -0,0 +1 @@
+// b_var_style_nl_BE.js

http://git-wip-us.apache.org/repos/asf/wicket/blob/b87bc975/wicket-core/src/test/java/org/apache/wicket/request/resource/b_var_style_nl_BE.min.js
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/resource/b_var_style_nl_BE.min.js b/wicket-core/src/test/java/org/apache/wicket/request/resource/b_var_style_nl_BE.min.js
new file mode 100644
index 0000000..ca4b0a4
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/request/resource/b_var_style_nl_BE.min.js
@@ -0,0 +1 @@
+// b_var_style_nl_BE.min.js