You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by ad...@apache.org on 2023/09/12 08:56:09 UTC

[wicket] branch master updated (9dee3bc571 -> 806050d3a4)

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

adelbene pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/wicket.git


    from 9dee3bc571 Bump jakarta.websocket:jakarta.websocket-api from 2.0.0 to 2.1.1 (#635)
     new 5239d15492 WICKET-7066: Make type=module possible for JavascriptHeaderItem
     new 22becc5048 Remarks of Martin
     new 806050d3a4 WICKET-7066: Make it possible to use custom script types if needed

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../AbstractJavaScriptReferenceHeaderItem.java     | 27 +++++++--
 ...eaderItem.java => JavaScriptReferenceType.java} | 35 ++++-------
 .../AbstractJavaScriptReferenceHeaderItemTest.java | 70 ++++++++++++++++++++++
 3 files changed, 105 insertions(+), 27 deletions(-)
 copy wicket-core/src/main/java/org/apache/wicket/markup/head/{NoHeaderItem.java => JavaScriptReferenceType.java} (60%)
 create mode 100644 wicket-core/src/test/java/org/apache/wicket/markup/head/AbstractJavaScriptReferenceHeaderItemTest.java


[wicket] 02/03: Remarks of Martin

Posted by ad...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

adelbene pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/wicket.git

commit 22becc50488fab30b27fc3e7cca77a60d0fcdfe6
Author: Schäfer, H.H. (Hans Hosea) <Ha...@ing.de>
AuthorDate: Wed Aug 9 15:45:11 2023 +0200

    Remarks of Martin
---
 .../wicket/markup/head/AbstractJavaScriptReferenceHeaderItem.java    | 2 +-
 .../java/org/apache/wicket/markup/head/JavascriptReferenceType.java  | 5 +++++
 2 files changed, 6 insertions(+), 1 deletion(-)

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 babca19bbb..b8827963da 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
@@ -16,7 +16,7 @@
  */
 package org.apache.wicket.markup.head;
 
-import static org.apache.wicket.markup.head.JavascriptReferenceType.*;
+import static org.apache.wicket.markup.head.JavascriptReferenceType.TEXT_JAVASCRIPT;
 
 import java.util.Objects;
 import java.util.Optional;
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/head/JavascriptReferenceType.java b/wicket-core/src/main/java/org/apache/wicket/markup/head/JavascriptReferenceType.java
index 95273cd4af..9493514c85 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/head/JavascriptReferenceType.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/head/JavascriptReferenceType.java
@@ -16,6 +16,11 @@
  */
 package org.apache.wicket.markup.head;
 
+/**
+ * To be used to define the "type"-Attribute of the script-Tag written by a {@link AbstractJavaScriptReferenceHeaderItem}.
+ *
+ * @see ISubresourceHeaderItem#setCrossOrigin(org.apache.wicket.markup.html.CrossOrigin)
+ */
 public enum JavascriptReferenceType {
 
 	TEXT_JAVASCRIPT("text/javascript"), MODULE("module");


[wicket] 03/03: WICKET-7066: Make it possible to use custom script types if needed

Posted by ad...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

adelbene pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/wicket.git

commit 806050d3a4eef4fc1eb4e9d27d9e55d1c4a711fb
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
AuthorDate: Tue Aug 22 12:35:38 2023 +0300

    WICKET-7066: Make it possible to use custom script types if needed
    
    Signed-off-by: Martin Tzvetanov Grigorov <mg...@apache.org>
---
 .../AbstractJavaScriptReferenceHeaderItem.java     | 14 +++++-----
 ...renceType.java => JavaScriptReferenceType.java} | 16 +++++++-----
 .../AbstractJavaScriptReferenceHeaderItemTest.java | 30 ++++++++++++++++++----
 3 files changed, 41 insertions(+), 19 deletions(-)

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 b8827963da..116da72435 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
@@ -16,10 +16,7 @@
  */
 package org.apache.wicket.markup.head;
 
-import static org.apache.wicket.markup.head.JavascriptReferenceType.TEXT_JAVASCRIPT;
-
 import java.util.Objects;
-import java.util.Optional;
 
 import org.apache.wicket.core.util.string.JavaScriptUtils;
 import org.apache.wicket.markup.html.CrossOrigin;
@@ -37,7 +34,7 @@ public abstract class AbstractJavaScriptReferenceHeaderItem extends JavaScriptHe
 	private String charset;
 	private CrossOrigin crossOrigin;
 	private String integrity;
-	private JavascriptReferenceType type = TEXT_JAVASCRIPT;
+	private JavaScriptReferenceType type = JavaScriptReferenceType.TEXT_JAVASCRIPT;
 
 	/**
 	 * @return if the script should be loaded and executed asynchronously
@@ -107,11 +104,11 @@ public abstract class AbstractJavaScriptReferenceHeaderItem extends JavaScriptHe
 		return this;
 	}
 
-	public JavascriptReferenceType getType() {
+	public JavaScriptReferenceType getType() {
 		return type;
 	}
 
-	public AbstractJavaScriptReferenceHeaderItem setType(final JavascriptReferenceType type) {
+	public AbstractJavaScriptReferenceHeaderItem setType(final JavaScriptReferenceType type) {
 		this.type = type;
 		return this;
 	}
@@ -125,7 +122,10 @@ public abstract class AbstractJavaScriptReferenceHeaderItem extends JavaScriptHe
 
 	final AttributeMap createAttributeMap(final String url) {
 		final AttributeMap attributes = new AttributeMap();
-		attributes.putAttribute(JavaScriptUtils.ATTR_TYPE, Optional.ofNullable(type).orElse(TEXT_JAVASCRIPT).getType());
+		final JavaScriptReferenceType type = getType();
+		if (type != null) {
+			attributes.putAttribute(JavaScriptUtils.ATTR_TYPE, type.getType());
+		}
 		attributes.putAttribute(JavaScriptUtils.ATTR_ID, getId());
 		attributes.putAttribute(JavaScriptUtils.ATTR_SCRIPT_DEFER, defer);
 		// XXX this attribute is not necessary for modern browsers
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/head/JavascriptReferenceType.java b/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptReferenceType.java
similarity index 64%
rename from wicket-core/src/main/java/org/apache/wicket/markup/head/JavascriptReferenceType.java
rename to wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptReferenceType.java
index 9493514c85..37f4a452f4 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/head/JavascriptReferenceType.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptReferenceType.java
@@ -16,19 +16,21 @@
  */
 package org.apache.wicket.markup.head;
 
+import org.apache.wicket.util.lang.Args;
+
 /**
- * To be used to define the "type"-Attribute of the script-Tag written by a {@link AbstractJavaScriptReferenceHeaderItem}.
- *
- * @see ISubresourceHeaderItem#setCrossOrigin(org.apache.wicket.markup.html.CrossOrigin)
+ * To be used to define the "type" attribute of the script tag written
+ * by a {@link AbstractJavaScriptReferenceHeaderItem}.
  */
-public enum JavascriptReferenceType {
+public class JavaScriptReferenceType {
 
-	TEXT_JAVASCRIPT("text/javascript"), MODULE("module");
+	public static final JavaScriptReferenceType TEXT_JAVASCRIPT = new JavaScriptReferenceType("text/javascript");
+	public static final JavaScriptReferenceType MODULE = new JavaScriptReferenceType("module");
 
 	private final String type;
 
-	JavascriptReferenceType(final String type) {
-		this.type = type;
+	public JavaScriptReferenceType(final String type) {
+		this.type = Args.notEmpty(type, "type");
 	}
 
 	public String getType() {
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/head/AbstractJavaScriptReferenceHeaderItemTest.java b/wicket-core/src/test/java/org/apache/wicket/markup/head/AbstractJavaScriptReferenceHeaderItemTest.java
index f842471c7c..f1648585c1 100644
--- a/wicket-core/src/test/java/org/apache/wicket/markup/head/AbstractJavaScriptReferenceHeaderItemTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/head/AbstractJavaScriptReferenceHeaderItemTest.java
@@ -17,6 +17,7 @@
 package org.apache.wicket.markup.head;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
 
 import org.apache.wicket.core.util.string.JavaScriptUtils;
 import org.apache.wicket.request.Response;
@@ -26,17 +27,36 @@ import org.junit.jupiter.api.Test;
 class AbstractJavaScriptReferenceHeaderItemTest {
 
 	@Test
-	public void testDefaultType() {
-		final AttributeMap attributeMap = new TestJavascriptReferenceHeaderItem().createAttributeMap("https://wicket.apache.org/");
+	void typeDefault() {
+		final AttributeMap attributeMap = new TestJavascriptReferenceHeaderItem()
+				.createAttributeMap("https://wicket.apache.org/");
 		assertEquals("text/javascript", attributeMap.get(JavaScriptUtils.ATTR_TYPE));
 	}
 
 	@Test
-	public void testSetType() {
-		final AttributeMap attributeMap = new TestJavascriptReferenceHeaderItem().setType(JavascriptReferenceType.MODULE).createAttributeMap("https://wicket.apache.org/");
+	void typeTextJavascript() {
+		final AttributeMap attributeMap = new TestJavascriptReferenceHeaderItem()
+				.setType(JavaScriptReferenceType.TEXT_JAVASCRIPT)
+				.createAttributeMap("https://wicket.apache.org/");
+		assertEquals("text/javascript", attributeMap.get(JavaScriptUtils.ATTR_TYPE));
+	}
+
+	@Test
+	void typeModule() {
+		final AttributeMap attributeMap = new TestJavascriptReferenceHeaderItem()
+				.setType(JavaScriptReferenceType.MODULE)
+				.createAttributeMap("https://wicket.apache.org/");
 		assertEquals("module", attributeMap.get(JavaScriptUtils.ATTR_TYPE));
 	}
 
+	@Test
+	void typeCustom() {
+		final AttributeMap attributeMap = new TestJavascriptReferenceHeaderItem()
+				.setType(new JavaScriptReferenceType("custom-type"))
+				.createAttributeMap("https://wicket.apache.org/");
+		assertEquals("custom-type", attributeMap.get(JavaScriptUtils.ATTR_TYPE));
+	}
+
 	static class TestJavascriptReferenceHeaderItem extends AbstractJavaScriptReferenceHeaderItem {
 		@Override
 		public Iterable<?> getRenderTokens() {
@@ -47,4 +67,4 @@ class AbstractJavaScriptReferenceHeaderItemTest {
 		public void render(Response response) {
 		}
 	}
-}
\ No newline at end of file
+}


[wicket] 01/03: WICKET-7066: Make type=module possible for JavascriptHeaderItem

Posted by ad...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

adelbene pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/wicket.git

commit 5239d1549268f0da040d93a8a74ba789a3f3431b
Author: Schäfer, H.H. (Hans Hosea) <Ha...@ing.de>
AuthorDate: Fri Aug 4 17:09:30 2023 +0200

    WICKET-7066: Make type=module possible for JavascriptHeaderItem
---
 .../AbstractJavaScriptReferenceHeaderItem.java     | 27 ++++++++++--
 .../markup/head/JavascriptReferenceType.java       | 32 ++++++++++++++
 .../AbstractJavaScriptReferenceHeaderItemTest.java | 50 ++++++++++++++++++++++
 3 files changed, 105 insertions(+), 4 deletions(-)

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 91daf7fcdd..babca19bbb 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
@@ -16,7 +16,10 @@
  */
 package org.apache.wicket.markup.head;
 
+import static org.apache.wicket.markup.head.JavascriptReferenceType.*;
+
 import java.util.Objects;
+import java.util.Optional;
 
 import org.apache.wicket.core.util.string.JavaScriptUtils;
 import org.apache.wicket.markup.html.CrossOrigin;
@@ -34,6 +37,7 @@ public abstract class AbstractJavaScriptReferenceHeaderItem extends JavaScriptHe
 	private String charset;
 	private CrossOrigin crossOrigin;
 	private String integrity;
+	private JavascriptReferenceType type = TEXT_JAVASCRIPT;
 
 	/**
 	 * @return if the script should be loaded and executed asynchronously
@@ -103,12 +107,25 @@ public abstract class AbstractJavaScriptReferenceHeaderItem extends JavaScriptHe
 		return this;
 	}
 
+	public JavascriptReferenceType getType() {
+		return type;
+	}
+
+	public AbstractJavaScriptReferenceHeaderItem setType(final JavascriptReferenceType type) {
+		this.type = type;
+		return this;
+	}
+
 	protected final void internalRenderJavaScriptReference(Response response, String url)
 	{
 		Args.notEmpty(url, "url");
+		final AttributeMap attributes = createAttributeMap(url);
+		JavaScriptUtils.writeScript(response, attributes);
+	}
 
-		AttributeMap attributes = new AttributeMap();
-		attributes.putAttribute(JavaScriptUtils.ATTR_TYPE, "text/javascript");
+	final AttributeMap createAttributeMap(final String url) {
+		final AttributeMap attributes = new AttributeMap();
+		attributes.putAttribute(JavaScriptUtils.ATTR_TYPE, Optional.ofNullable(type).orElse(TEXT_JAVASCRIPT).getType());
 		attributes.putAttribute(JavaScriptUtils.ATTR_ID, getId());
 		attributes.putAttribute(JavaScriptUtils.ATTR_SCRIPT_DEFER, defer);
 		// XXX this attribute is not necessary for modern browsers
@@ -118,7 +135,7 @@ public abstract class AbstractJavaScriptReferenceHeaderItem extends JavaScriptHe
 		attributes.putAttribute(JavaScriptUtils.ATTR_CSP_NONCE, getNonce());
 		attributes.putAttribute(JavaScriptUtils.ATTR_CROSS_ORIGIN, getCrossOrigin() == null ? null : getCrossOrigin().getRealName());
 		attributes.putAttribute(JavaScriptUtils.ATTR_INTEGRITY, getIntegrity());
-		JavaScriptUtils.writeScript(response, attributes);
+		return attributes;
 	}
 
 	@Override
@@ -133,7 +150,8 @@ public abstract class AbstractJavaScriptReferenceHeaderItem extends JavaScriptHe
 		AbstractJavaScriptReferenceHeaderItem that = (AbstractJavaScriptReferenceHeaderItem)o;
 		return async == that.async &&
 				defer == that.defer &&
-				Objects.equals(charset, that.charset);
+				Objects.equals(charset, that.charset) &&
+		  		Objects.equals(type, that.type);
 	}
 
 	@Override
@@ -144,6 +162,7 @@ public abstract class AbstractJavaScriptReferenceHeaderItem extends JavaScriptHe
 		result = 31 * result + (async ? 1 : 0);
 		result = 31 * result + (defer ? 1 : 0);
 		result = 31 * result + (charset != null ? charset.hashCode() : 0);
+		result = 31 * result + (type != null ? type.hashCode() : 0);
 		return result;
 	}
 }
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/head/JavascriptReferenceType.java b/wicket-core/src/main/java/org/apache/wicket/markup/head/JavascriptReferenceType.java
new file mode 100644
index 0000000000..95273cd4af
--- /dev/null
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/head/JavascriptReferenceType.java
@@ -0,0 +1,32 @@
+/*
+ * 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.markup.head;
+
+public enum JavascriptReferenceType {
+
+	TEXT_JAVASCRIPT("text/javascript"), MODULE("module");
+
+	private final String type;
+
+	JavascriptReferenceType(final String type) {
+		this.type = type;
+	}
+
+	public String getType() {
+		return type;
+	}
+}
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/head/AbstractJavaScriptReferenceHeaderItemTest.java b/wicket-core/src/test/java/org/apache/wicket/markup/head/AbstractJavaScriptReferenceHeaderItemTest.java
new file mode 100644
index 0000000000..f842471c7c
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/head/AbstractJavaScriptReferenceHeaderItemTest.java
@@ -0,0 +1,50 @@
+/*
+ * 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.markup.head;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import org.apache.wicket.core.util.string.JavaScriptUtils;
+import org.apache.wicket.request.Response;
+import org.apache.wicket.util.value.AttributeMap;
+import org.junit.jupiter.api.Test;
+
+class AbstractJavaScriptReferenceHeaderItemTest {
+
+	@Test
+	public void testDefaultType() {
+		final AttributeMap attributeMap = new TestJavascriptReferenceHeaderItem().createAttributeMap("https://wicket.apache.org/");
+		assertEquals("text/javascript", attributeMap.get(JavaScriptUtils.ATTR_TYPE));
+	}
+
+	@Test
+	public void testSetType() {
+		final AttributeMap attributeMap = new TestJavascriptReferenceHeaderItem().setType(JavascriptReferenceType.MODULE).createAttributeMap("https://wicket.apache.org/");
+		assertEquals("module", attributeMap.get(JavaScriptUtils.ATTR_TYPE));
+	}
+
+	static class TestJavascriptReferenceHeaderItem extends AbstractJavaScriptReferenceHeaderItem {
+		@Override
+		public Iterable<?> getRenderTokens() {
+			return null;
+		}
+
+		@Override
+		public void render(Response response) {
+		}
+	}
+}
\ No newline at end of file