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

Reply via email to