This is an automated email from the ASF dual-hosted git repository.

svenmeier pushed a commit to branch WICKET-6321-cross-origin-integrity
in repository https://gitbox.apache.org/repos/asf/wicket.git

commit 106866e1221fdd057d8c252838d21b13d7844e89
Author: Sven Meier <[email protected]>
AuthorDate: Mon Dec 9 17:56:55 2019 +0100

    WICKET-6667 minimize constructors
    
    and factory methods, defer can be set later
---
 .../java/org/apache/wicket/ResourceBundles.java    |   8 +-
 .../AbstractJavaScriptReferenceHeaderItem.java     |   3 +-
 .../wicket/markup/head/JavaScriptHeaderItem.java   | 100 +++------------------
 .../markup/head/JavaScriptReferenceHeaderItem.java |   7 +-
 .../head/JavaScriptUrlReferenceHeaderItem.java     |   7 +-
 .../wicket/markup/head/ResourceAggregator.java     |   3 +-
 .../markup/html/internal/HeaderResponseTest.java   |   9 +-
 7 files changed, 23 insertions(+), 114 deletions(-)

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 432514e..3b4375e 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ResourceBundles.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ResourceBundles.java
@@ -126,11 +126,9 @@ public class ResourceBundles
                        bundleReference.setCompressor(javaScriptCompressor);
                }
 
-               if (defer) {
-                       return 
addBundle(JavaScriptHeaderItem.forReference(bundleReference, defer));
-               } else{
-                       return 
addBundle(JavaScriptHeaderItem.forReference(bundleReference));
-               }
+               JavaScriptReferenceHeaderItem item = 
JavaScriptHeaderItem.forReference(bundleReference);
+               item.setDefer(defer);
+               return addBundle(item);
        }
 
        /**
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/head/AbstractJavaScriptReferenceHeaderItem.java
 
b/wicket-core/src/main/java/org/apache/wicket/markup/head/AbstractJavaScriptReferenceHeaderItem.java
index 484b44c..136cb24 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/markup/head/AbstractJavaScriptReferenceHeaderItem.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/markup/head/AbstractJavaScriptReferenceHeaderItem.java
@@ -37,9 +37,8 @@ public abstract class AbstractJavaScriptReferenceHeaderItem 
extends JavaScriptHe
         * @param charset
         *              the charset to use when reading the script content
         */
-       protected AbstractJavaScriptReferenceHeaderItem(boolean defer, String 
charset)
+       protected AbstractJavaScriptReferenceHeaderItem(String charset)
        {
-               this.defer = defer;
                this.charset = charset;
        }
 
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptHeaderItem.java
 
b/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptHeaderItem.java
index b7eb42d..20e40fc 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptHeaderItem.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptHeaderItem.java
@@ -66,33 +66,6 @@ public abstract class JavaScriptHeaderItem extends 
AbstractCspHeaderItem
         * 
         * @param reference
         *            resource reference pointing to the javascript resource
-        * @return A newly created {@link JavaScriptReferenceHeaderItem} for 
the given reference.
-        */
-       public static JavaScriptReferenceHeaderItem 
forReference(ResourceReference reference)
-       {
-               return forReference(reference, null);
-       }
-
-       /**
-        * Creates a {@link JavaScriptReferenceHeaderItem} for the given 
reference.
-        * 
-        * @param reference
-        *            resource reference pointing to the javascript resource
-        * @param id
-        *            id that will be used to filter duplicate reference (it's 
still filtered by URL
-        *            too)
-        * @return A newly created {@link JavaScriptReferenceHeaderItem} for 
the given reference.
-        */
-       public static JavaScriptReferenceHeaderItem 
forReference(ResourceReference reference, String id)
-       {
-               return forReference(reference, null, id);
-       }
-
-       /**
-        * Creates a {@link JavaScriptReferenceHeaderItem} for the given 
reference.
-        * 
-        * @param reference
-        *            resource reference pointing to the javascript resource
         * @param pageParameters
         *            the parameters for this Javascript resource reference
         * @param id
@@ -103,28 +76,7 @@ public abstract class JavaScriptHeaderItem extends 
AbstractCspHeaderItem
        public static JavaScriptReferenceHeaderItem 
forReference(ResourceReference reference,
                PageParameters pageParameters, String id)
        {
-               return forReference(reference, pageParameters, id, false);
-       }
-
-       /**
-        * Creates a {@link JavaScriptReferenceHeaderItem} for the given 
reference.
-        * 
-        * @param reference
-        *            resource reference pointing to the javascript resource
-        * @param pageParameters
-        *            the parameters for this Javascript resource reference
-        * @param id
-        *            id that will be used to filter duplicate reference (it's 
still filtered by URL
-        *            too)
-        * @param defer
-        *            specifies that the execution of a script should be 
deferred (delayed) until after
-        *            the page has been loaded.
-        * @return A newly created {@link JavaScriptReferenceHeaderItem} for 
the given reference.
-        */
-       public static JavaScriptReferenceHeaderItem 
forReference(ResourceReference reference,
-               PageParameters pageParameters, String id, boolean defer)
-       {
-               return forReference(reference, pageParameters, id, defer, null);
+               return forReference(reference, pageParameters, id, null);
        }
 
        /**
@@ -135,15 +87,12 @@ public abstract class JavaScriptHeaderItem extends 
AbstractCspHeaderItem
         * @param id
         *            id that will be used to filter duplicate reference (it's 
still filtered by URL
         *            too)
-        * @param defer
-        *            specifies that the execution of a script should be 
deferred (delayed) until after
-        *            the page has been loaded.
         * @return A newly created {@link JavaScriptReferenceHeaderItem} for 
the given reference.
         */
        public static JavaScriptReferenceHeaderItem 
forReference(ResourceReference reference,
-               String id, boolean defer)
+               String id)
        {
-               return forReference(reference, null, id, defer, null);
+               return forReference(reference, null, id, null);
        }
 
        /**
@@ -151,15 +100,11 @@ public abstract class JavaScriptHeaderItem extends 
AbstractCspHeaderItem
         *
         * @param reference
         *            resource reference pointing to the JavaScript resource
-        * @param defer
-        *            specifies that the execution of a script should be 
deferred (delayed) until after
-        *            the page has been loaded.
         * @return A newly created {@link JavaScriptReferenceHeaderItem} for 
the given reference.
         */
-       public static JavaScriptReferenceHeaderItem 
forReference(ResourceReference reference,
-               boolean defer)
+       public static JavaScriptReferenceHeaderItem 
forReference(ResourceReference reference)
        {
-               return forReference(reference, null, null, defer, null);
+               return forReference(reference, null, null, null);
        }
 
        /**
@@ -172,17 +117,14 @@ public abstract class JavaScriptHeaderItem extends 
AbstractCspHeaderItem
         * @param id
         *            id that will be used to filter duplicate reference (it's 
still filtered by URL
         *            too)
-        * @param defer
-        *            specifies that the execution of a script should be 
deferred (delayed) until after
-        *            the page has been loaded.
         * @param charset
         *            a non null value specifies the charset attribute of the 
script tag
         * @return A newly created {@link JavaScriptReferenceHeaderItem} for 
the given reference.
         */
        public static JavaScriptReferenceHeaderItem 
forReference(ResourceReference reference,
-               PageParameters pageParameters, String id, boolean defer, String 
charset)
+               PageParameters pageParameters, String id, String charset)
        {
-               return new JavaScriptReferenceHeaderItem(reference, 
pageParameters, id, defer, charset);
+               return new JavaScriptReferenceHeaderItem(reference, 
pageParameters, id, charset);
        }
 
        /**
@@ -224,25 +166,7 @@ public abstract class JavaScriptHeaderItem extends 
AbstractCspHeaderItem
         */
        public static JavaScriptUrlReferenceHeaderItem forUrl(String url, 
String id)
        {
-               return forUrl(url, id, false);
-       }
-
-       /**
-        * Creates a {@link JavaScriptUrlReferenceHeaderItem} for the given url.
-        * 
-        * @param url
-        *            context-relative url of the the javascript resource
-        * @param id
-        *            id that will be used to filter duplicate reference (it's 
still filtered by URL
-        *            too)
-        * @param defer
-        *            specifies that the execution of a script should be 
deferred (delayed) until after
-        *            the page has been loaded.
-        * @return A newly created {@link JavaScriptUrlReferenceHeaderItem} for 
the given url.
-        */
-       public static JavaScriptUrlReferenceHeaderItem forUrl(String url, 
String id, boolean defer)
-       {
-               return forUrl(url, id, defer, null);
+               return new JavaScriptUrlReferenceHeaderItem(url, id, null);
        }
 
        /**
@@ -253,17 +177,13 @@ public abstract class JavaScriptHeaderItem extends 
AbstractCspHeaderItem
         * @param id
         *            id that will be used to filter duplicate reference (it's 
still filtered by URL
         *            too)
-        * @param defer
-        *            specifies that the execution of a script should be 
deferred (delayed) until after
-        *            the page has been loaded.
         * @param charset
         *            a non null value specifies the charset attribute of the 
script tag
         * @return A newly created {@link JavaScriptUrlReferenceHeaderItem} for 
the given url.
         */
-       public static JavaScriptUrlReferenceHeaderItem forUrl(String url, 
String id, boolean defer,
-               String charset)
+       public static JavaScriptUrlReferenceHeaderItem forUrl(String url, 
String id, String charset)
        {
-               return new JavaScriptUrlReferenceHeaderItem(url, id, defer, 
charset);
+               return new JavaScriptUrlReferenceHeaderItem(url, id, charset);
        }
 
        protected final void internalRenderJavaScriptReference(Response 
response, String url,
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptReferenceHeaderItem.java
 
b/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptReferenceHeaderItem.java
index f46323c..5c8d42e 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptReferenceHeaderItem.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptReferenceHeaderItem.java
@@ -52,16 +52,13 @@ public class JavaScriptReferenceHeaderItem extends 
AbstractJavaScriptReferenceHe
         * @param id
         *            id that will be used to filter duplicate reference (it's 
still filtered by URL
         *            too)
-        * @param defer
-        *            specifies that the execution of a script should be 
deferred (delayed) until after
-        *            the page has been loaded.
         * @param charset
         *            a non null value specifies the charset attribute of the 
script tag
         */
        public JavaScriptReferenceHeaderItem(ResourceReference reference,
-               PageParameters pageParameters, String id, boolean defer, String 
charset)
+               PageParameters pageParameters, String id, String charset)
        {
-               super(defer, charset);
+               super(charset);
                this.reference = Args.notNull(reference, "reference");
                this.pageParameters = pageParameters;
                setId(id);
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptUrlReferenceHeaderItem.java
 
b/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptUrlReferenceHeaderItem.java
index cc22f54..460978c 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptUrlReferenceHeaderItem.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptUrlReferenceHeaderItem.java
@@ -43,15 +43,12 @@ public class JavaScriptUrlReferenceHeaderItem extends 
AbstractJavaScriptReferenc
         * @param id
         *            id that will be used to filter duplicate reference (it's 
still filtered by URL
         *            too)
-        * @param defer
-        *            specifies that the execution of a script should be 
deferred (delayed) until after
-        *            the page has been loaded.
         * @param charset
         *            a non null value specifies the charset attribute of the 
script tag
         */
-       public JavaScriptUrlReferenceHeaderItem(String url, String id, boolean 
defer, String charset)
+       public JavaScriptUrlReferenceHeaderItem(String url, String id, String 
charset)
        {
-               super(defer, charset);
+               super(charset);
                this.url = url;
                setId(id);
        }
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/head/ResourceAggregator.java
 
b/wicket-core/src/main/java/org/apache/wicket/markup/head/ResourceAggregator.java
index 8246fd1..78526a1 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/markup/head/ResourceAggregator.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/markup/head/ResourceAggregator.java
@@ -512,9 +512,8 @@ public class ResourceAggregator extends 
DecoratingHeaderResponse
                        resultBundle = 
JavaScriptHeaderItem.forReference(bundleReference,
                                        item.getPageParameters(),
                                        item.getId(),
-                                       item.isDefer(),
                                        item.getCharset()
-                       );
+                       
).setDefer(item.isDefer()).setAsync(item.isAsync()).setNonce(item.getNonce());
                }
                else
                {
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/HeaderResponseTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/HeaderResponseTest.java
index bb4a494..4767555 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/HeaderResponseTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/HeaderResponseTest.java
@@ -114,7 +114,7 @@ class HeaderResponseTest
     void deferJavaScriptReference()
     {
         boolean defer = true;
-        headerResponse.render(JavaScriptHeaderItem.forUrl("js-resource.js", 
"some-id", defer));
+        headerResponse.render(JavaScriptHeaderItem.forUrl("js-resource.js", 
"some-id").setDefer(defer));
         String expected = "<script type=\"text/javascript\" id=\"some-id\" 
defer=\"defer\" src=\"" +
             RESOURCE_NAME + "\"></script>\n";
         String actual = headerResponse.getResponse().toString();
@@ -130,7 +130,7 @@ class HeaderResponseTest
     void deferFalseJavaScriptReference()
     {
         boolean defer = false;
-        headerResponse.render(JavaScriptHeaderItem.forUrl("js-resource.js", 
"some-id", defer));
+        headerResponse.render(JavaScriptHeaderItem.forUrl("js-resource.js", 
"some-id").setDefer(defer));
         String expected = "<script type=\"text/javascript\" id=\"some-id\" 
src=\"" + RESOURCE_NAME +
             "\"></script>\n";
         String actual = headerResponse.getResponse().toString();
@@ -146,8 +146,7 @@ class HeaderResponseTest
     void charsetSetJavaScriptReference()
     {
         String charset = "foo";
-        headerResponse.render(JavaScriptHeaderItem.forUrl("js-resource.js", 
"some-id", false,
-            charset));
+        headerResponse.render(JavaScriptHeaderItem.forUrl("js-resource.js", 
"some-id", charset));
         String expected = "<script type=\"text/javascript\" id=\"some-id\" 
charset=\"" + charset +
             "\" src=\"" + RESOURCE_NAME + "\"></script>\n";
         String actual = headerResponse.getResponse().toString();
@@ -162,7 +161,7 @@ class HeaderResponseTest
     @Test
     void charsetNotSetJavaScriptReference()
     {
-        headerResponse.render(JavaScriptHeaderItem.forUrl("js-resource.js", 
"some-id", false, null));
+        headerResponse.render(JavaScriptHeaderItem.forUrl("js-resource.js", 
"some-id", null));
         String expected = "<script type=\"text/javascript\" id=\"some-id\" 
src=\"" + RESOURCE_NAME +
             "\"></script>\n";
         String actual = headerResponse.getResponse().toString();

Reply via email to