Repository: wicket Updated Branches: refs/heads/master 7a72a623e -> d71d384a0
WICKET-6323 Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/d71d384a Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/d71d384a Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/d71d384a Branch: refs/heads/master Commit: d71d384a04cabd1c84a4974816d48ed6e1bd3e4d Parents: 7a72a62 Author: Tobias Soloschenko <[email protected]> Authored: Tue Feb 21 18:33:49 2017 +0100 Committer: Tobias Soloschenko <[email protected]> Committed: Tue Feb 21 18:33:49 2017 +0100 ---------------------------------------------------------------------- .../java/org/apache/wicket/ResourceBundles.java | 32 +++++++++++++++++++- .../resource/BundlesPage_result_defer.html | 6 ++++ .../request/resource/ResouceBundleTest.java | 17 +++++++++++ 3 files changed, 54 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/d71d384a/wicket-core/src/main/java/org/apache/wicket/ResourceBundles.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/ResourceBundles.java b/wicket-core/src/main/java/org/apache/wicket/ResourceBundles.java index fed2d2a..34def5a 100644 --- a/wicket-core/src/main/java/org/apache/wicket/ResourceBundles.java +++ b/wicket-core/src/main/java/org/apache/wicket/ResourceBundles.java @@ -84,6 +84,32 @@ public class ResourceBundles public JavaScriptReferenceHeaderItem addJavaScriptBundle(Class<?> scope, String name, JavaScriptResourceReference... references) { + return addJavaScriptBundle(scope, name, false, references); + } + + /** + * Adds a javascript bundle that is automatically generated by concatenating the given package + * resources. If the given resources depend on each other, you should make sure that the + * resources are provided in the order they need to be concatenated. If the resources depend on + * other resources, that are not part of the bundle, the bundle will inherit these dependencies. + * + * This method is equivalent to {@link #addBundle(HeaderItem)} with a + * {@link JavaScriptHeaderItem} for a {@link ConcatResourceBundleReference}. + * + * @param scope + * The {@linkplain ResourceReference#getScope() scope} of the bundle + * @param defer + * specifies that the execution of a script should be deferred (delayed) until after + * the page has been loaded. + * @param name + * The name of the resource. This will show up as the filename in the markup. + * @param references + * The resources this bundle will consist of. + * @return the newly created bundle + */ + public JavaScriptReferenceHeaderItem addJavaScriptBundle(Class<?> scope, String name, boolean defer, + JavaScriptResourceReference... references) + { List<JavaScriptReferenceHeaderItem> items = new ArrayList<JavaScriptReferenceHeaderItem>(); for (JavaScriptResourceReference curReference : references) { @@ -96,7 +122,11 @@ public class ResourceBundles IJavaScriptCompressor javaScriptCompressor = Application.get().getResourceSettings().getJavaScriptCompressor(); bundleReference.setCompressor(javaScriptCompressor); } - return addBundle(JavaScriptHeaderItem.forReference(bundleReference)); + if(defer){ + return addBundle(JavaScriptHeaderItem.forReference(bundleReference, defer)); + }else{ + return addBundle(JavaScriptHeaderItem.forReference(bundleReference)); + } } /** http://git-wip-us.apache.org/repos/asf/wicket/blob/d71d384a/wicket-core/src/test/java/org/apache/wicket/request/resource/BundlesPage_result_defer.html ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/request/resource/BundlesPage_result_defer.html b/wicket-core/src/test/java/org/apache/wicket/request/resource/BundlesPage_result_defer.html new file mode 100644 index 0000000..ebaf99e --- /dev/null +++ b/wicket-core/src/test/java/org/apache/wicket/request/resource/BundlesPage_result_defer.html @@ -0,0 +1,6 @@ +<html> +<head><script type="text/javascript" defer="defer" src="../resource/org.apache.wicket.request.resource.ResouceBundleTest/ab.js"></script> +</head><body> + +</body> +</html> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/wicket/blob/d71d384a/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 658fada..f2b87dd 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 @@ -74,6 +74,23 @@ public class ResouceBundleTest extends WicketTestCase } /** + * Tests the replacement of provided resources by their bundle with defer option + * + * @throws Exception + */ + @Test + public void providedResourceWithDefer() throws Exception + { + tester.getApplication() + .getResourceBundles() + .addJavaScriptBundle(ResouceBundleTest.class, "ab.js", true, + new JavaScriptResourceReference(ResouceBundleTest.class, "a.js"), + new JavaScriptResourceReference(ResouceBundleTest.class, "b.js")); + + executeTest(BundlesPage.class, "BundlesPage_result_defer.html"); + } + + /** * Tests an external resource bundle * * @throws Exception
