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();
