You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2021/05/27 13:06:56 UTC

[wicket] branch master updated: WICKET-6887 Merge wicket-http2 into wicket-core

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 315611f  WICKET-6887 Merge wicket-http2 into wicket-core
315611f is described below

commit 315611f7b674cef9bcb2e150671f52805b3207fc
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
AuthorDate: Tue May 18 09:40:37 2021 +0300

    WICKET-6887 Merge wicket-http2 into wicket-core
    
    Move the classes from wicket-http2-core and wicket-http2-servlet4 to wicket-core.
    Delete the Tomcat/Jetty/Undertow specific classes.
---
 .../wicket/markup/head/http2/IPushBuilder.java     |   4 +-
 .../wicket/markup/head/http2/PushBuilder.java      |  11 +--
 .../wicket/markup/head/http2}/PushHeaderItem.java  |  31 +++---
 .../apache/wicket/markup/head/http2}/PushItem.java |   6 +-
 .../markup/head/http2}/PushItemHeaderValue.java    |   2 +-
 wicket-experimental/pom.xml                        |   1 -
 wicket-experimental/wicket-http2/pom.xml           |  41 --------
 .../wicket-http2/wicket-http2-core/pom.xml         |  46 ---------
 .../org/apache/wicket/http2/Http2Settings.java     | 108 ---------------------
 .../wicket/http2/markup/head/NoopPushBuilder.java  |  60 ------------
 .../util/license/ApacheLicenceHeaderTest.java      |  34 -------
 .../wicket-http2/wicket-http2-jetty/pom.xml        |  51 ----------
 .../http2/markup/head/jetty/Initializer.java       |  44 ---------
 .../http2/markup/head/jetty/Jetty9PushBuilder.java |  69 -------------
 .../services/org.apache.wicket.IInitializer        |   1 -
 .../util/license/ApacheLicenceHeaderTest.java      |  34 -------
 .../wicket-http2/wicket-http2-servlet4/pom.xml     |  50 ----------
 .../http2/markup/head/servlet4/Initializer.java    |  44 ---------
 .../services/org.apache.wicket.IInitializer        |   1 -
 .../util/license/ApacheLicenceHeaderTest.java      |  34 -------
 .../wicket-http2/wicket-http2-tomcat/pom.xml       |  61 ------------
 .../http2/markup/head/tomcat/Initializer.java      |  44 ---------
 .../markup/head/tomcat/Tomcat85PushBuilder.java    |  68 -------------
 .../services/org.apache.wicket.IInitializer        |   1 -
 .../util/license/ApacheLicenceHeaderTest.java      |  34 -------
 .../wicket-http2/wicket-http2-undertow/pom.xml     |  61 ------------
 .../http2/markup/head/undertow/Initializer.java    |  46 ---------
 .../markup/head/undertow/UndertowPushBuilder.java  |  71 --------------
 .../services/org.apache.wicket.IInitializer        |   1 -
 .../util/license/ApacheLicenceHeaderTest.java      |  34 -------
 30 files changed, 27 insertions(+), 1066 deletions(-)

diff --git a/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushBuilder.java b/wicket-core/src/main/java/org/apache/wicket/markup/head/http2/IPushBuilder.java
similarity index 94%
rename from wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushBuilder.java
rename to wicket-core/src/main/java/org/apache/wicket/markup/head/http2/IPushBuilder.java
index 246b091..c7733e5 100644
--- a/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushBuilder.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/head/http2/IPushBuilder.java
@@ -14,14 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.wicket.http2.markup.head;
+package org.apache.wicket.markup.head.http2;
 
 import jakarta.servlet.http.HttpServletRequest;
 
 /**
  * Used to delegate the push call to the vendor specific push builder API
  */
-public interface PushBuilder
+public interface IPushBuilder
 {
 	/**
 	 * Pushes the given paths with the push builder received from the http servlet request
diff --git a/wicket-experimental/wicket-http2/wicket-http2-servlet4/src/main/java/org/apache/wicket/http2/markup/head/servlet4/Servlet4PushBuilder.java b/wicket-core/src/main/java/org/apache/wicket/markup/head/http2/PushBuilder.java
similarity index 82%
rename from wicket-experimental/wicket-http2/wicket-http2-servlet4/src/main/java/org/apache/wicket/http2/markup/head/servlet4/Servlet4PushBuilder.java
rename to wicket-core/src/main/java/org/apache/wicket/markup/head/http2/PushBuilder.java
index a706417..214c3e6 100644
--- a/wicket-experimental/wicket-http2/wicket-http2-servlet4/src/main/java/org/apache/wicket/http2/markup/head/servlet4/Servlet4PushBuilder.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/head/http2/PushBuilder.java
@@ -14,14 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.wicket.http2.markup.head.servlet4;
+package org.apache.wicket.markup.head.http2;
 
 import jakarta.servlet.http.HttpServletRequest;
 
-import org.apache.wicket.http2.markup.head.PushBuilder;
-import org.apache.wicket.http2.markup.head.PushItem;
-import org.apache.wicket.http2.markup.head.PushItemHeaderValue;
-import org.apache.wicket.http2.markup.head.PushItemHeaderValue.HeaderOperation;
+import org.apache.wicket.markup.head.http2.PushItemHeaderValue.HeaderOperation;
 import org.apache.wicket.request.Request;
 import org.apache.wicket.request.cycle.RequestCycle;
 import org.slf4j.Logger;
@@ -32,9 +29,9 @@ import org.slf4j.LoggerFactory;
  * 
  * @author Tobias Soloschenko
  */
-public class Servlet4PushBuilder implements PushBuilder
+public class PushBuilder implements IPushBuilder
 {
-	private static final Logger LOG = LoggerFactory.getLogger(Servlet4PushBuilder.class);
+	private static final Logger LOG = LoggerFactory.getLogger(PushBuilder.class);
 
 	@Override
 	public void push(HttpServletRequest httpServletRequest, PushItem... pushItems)
diff --git a/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushHeaderItem.java b/wicket-core/src/main/java/org/apache/wicket/markup/head/http2/PushHeaderItem.java
similarity index 94%
rename from wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushHeaderItem.java
rename to wicket-core/src/main/java/org/apache/wicket/markup/head/http2/PushHeaderItem.java
index aabfb27..acdb2f3 100644
--- a/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushHeaderItem.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/head/http2/PushHeaderItem.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.wicket.http2.markup.head;
+package org.apache.wicket.markup.head.http2;
 
 import java.io.IOException;
 import java.net.URL;
@@ -31,10 +31,8 @@ import java.util.TreeSet;
 import java.util.concurrent.ConcurrentHashMap;
 
 import jakarta.servlet.http.HttpServletRequest;
-import org.apache.wicket.Application;
 import org.apache.wicket.Page;
 import org.apache.wicket.WicketRuntimeException;
-import org.apache.wicket.http2.Http2Settings;
 import org.apache.wicket.markup.head.HeaderItem;
 import org.apache.wicket.markup.html.WebPage;
 import org.apache.wicket.protocol.http.WebApplication;
@@ -48,6 +46,7 @@ import org.apache.wicket.request.http.WebResponse;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.request.mapper.parameter.PageParametersEncoder;
 import org.apache.wicket.request.resource.ResourceReference;
+import org.apache.wicket.util.lang.Args;
 
 /**
  * A push header item to be used in the http/2 context and to reduce the latency of the web
@@ -113,6 +112,8 @@ public class PushHeaderItem extends HeaderItem
 	 */
 	private Page page;
 
+	private final IPushBuilder pushBuilder;
+
 	/**
 	 * Creates a push header item based on the given page and the corresponding page request / page
 	 * response. To get the request and response
@@ -127,17 +128,22 @@ public class PushHeaderItem extends HeaderItem
 	 */
 	public PushHeaderItem(Page page, Request pageRequest, Response pageResponse)
 	{
-		if (page == null || !(page instanceof WebPage) || pageResponse == null ||
-			!(pageResponse instanceof WebResponse))
+		this(page, pageRequest, pageResponse, new PushBuilder());
+	}
+
+	public PushHeaderItem(Page page, Request pageRequest, Response pageResponse, IPushBuilder pushBuilder)
+	{
+		if (!(page instanceof WebPage) || !(pageRequest instanceof WebRequest) || !(pageResponse instanceof WebResponse))
 		{
 			throw new WicketRuntimeException(
-				"Please hand over the web page, the web request and the web response to the push header item like \"new PushHeaderItem(this, yourWebPageRequest, yourWebPageResponse)\" - " +
-					"The webPageResponse / webPageRequest can be obtained via \"getRequestCycle().getRequest()\" / \"getRequestCycle().getResponse()\" and placed into the page as fields " +
+				"Please hand over the web page, the web request and the web response to the push header item like \"new PushHeaderItem(page, webRequest, webResponse)\" - " +
+					"The webResponse / webRequest can be obtained via \"getRequestCycle().getRequest()\" / \"getRequestCycle().getResponse()\" and placed into the page as fields " +
 					"\"private transient Response webPageResponse;\" / \"private transient Request webPageRequest;\"");
 		}
 		this.pageWebRequest = (WebRequest)pageRequest;
 		this.pageWebResponse = (WebResponse)pageResponse;
 		this.page = page;
+		this.pushBuilder = Args.notNull(pushBuilder, "pushBuilder");
 	}
 
 	/**
@@ -146,7 +152,7 @@ public class PushHeaderItem extends HeaderItem
 	@Override
 	public Iterable<?> getRenderTokens()
 	{
-		Set<String> tokens = new TreeSet<String>();
+		Set<String> tokens = new TreeSet<>();
 		for (PushItem pushItem : pushItems)
 		{
 			tokens.add(pushItem.getUrl() + TOKEN_SUFFIX);
@@ -303,10 +309,7 @@ public class PushHeaderItem extends HeaderItem
 	 */
 	protected void push(HttpServletRequest request)
 	{
-		// Receives the vendor specific push builder
-		Http2Settings http2Settings = Http2Settings.Holder.get(Application.get());
-		PushBuilder pushBuilder = http2Settings.getPushBuilder();
-		pushBuilder.push(request, pushItems.toArray(new PushItem[pushItems.size()]));
+		pushBuilder.push(request, pushItems.toArray(new PushItem[0]));
 	}
 
 	/**
@@ -333,7 +336,7 @@ public class PushHeaderItem extends HeaderItem
 						"Please provide an object to the items to be pushed, so that the url can be created for the given resource.");
 				}
 
-				CharSequence url = null;
+				CharSequence url;
 				if (object instanceof ResourceReference)
 				{
 					url = requestCycle.urlFor((ResourceReference)object, parameters);
@@ -385,7 +388,7 @@ public class PushHeaderItem extends HeaderItem
 					filterPath = filterPath.substring(0, filterPath.length() - 1);
 				}
 				partialUrl.append(filterPath);
-				partialUrl.append(url.toString());
+				partialUrl.append(url);
 
 				// Set the url the resource is going to be pushed with
 				pushItem.setUrl(partialUrl.toString());
diff --git a/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushItem.java b/wicket-core/src/main/java/org/apache/wicket/markup/head/http2/PushItem.java
similarity index 95%
rename from wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushItem.java
rename to wicket-core/src/main/java/org/apache/wicket/markup/head/http2/PushItem.java
index 1e73af9..54a6e4e 100644
--- a/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushItem.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/head/http2/PushItem.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.wicket.http2.markup.head;
+package org.apache.wicket.markup.head.http2;
 
 import java.io.Serializable;
 import java.util.HashMap;
@@ -157,7 +157,7 @@ public class PushItem implements Serializable
 	/**
 	 * Gets the URL composed within the push header item
 	 *
-	 * @see {@link org.apache.wicket.http2.markup.head.PushHeaderItem#push(List)}
+	 * @see {@link PushHeaderItem#push(List)}
 	 * @return the URL to be pushed
 	 */
 	public String getUrl()
@@ -168,7 +168,7 @@ public class PushItem implements Serializable
 	/**
 	 * Sets the URL composed within the push header item
 	 *
-	 * @see {@link org.apache.wicket.http2.markup.head.PushHeaderItem#push(List)}
+	 * @see {@link PushHeaderItem#push(List)}
 	 * @param url
 	 *            the URL used to push the resource
 	 * @return the push item
diff --git a/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushItemHeaderValue.java b/wicket-core/src/main/java/org/apache/wicket/markup/head/http2/PushItemHeaderValue.java
similarity index 97%
rename from wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushItemHeaderValue.java
rename to wicket-core/src/main/java/org/apache/wicket/markup/head/http2/PushItemHeaderValue.java
index 2c3c72c..8bcd3e5 100644
--- a/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/PushItemHeaderValue.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/head/http2/PushItemHeaderValue.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.wicket.http2.markup.head;
+package org.apache.wicket.markup.head.http2;
 
 /**
  * A push header to be applied when the resource is pushed
diff --git a/wicket-experimental/pom.xml b/wicket-experimental/pom.xml
index 92f9cce..b511652 100644
--- a/wicket-experimental/pom.xml
+++ b/wicket-experimental/pom.xml
@@ -29,7 +29,6 @@
 	<name>Wicket-Experimental</name>
 	<description>Wicket-Experimental contains experimental Wicket modules that may or may not be supported in the future.</description>
 	<modules>
-		<module>wicket-http2</module>
 		<module>wicket-metrics</module>
 	</modules>
 
diff --git a/wicket-experimental/wicket-http2/pom.xml b/wicket-experimental/wicket-http2/pom.xml
deleted file mode 100644
index d14a47a..0000000
--- a/wicket-experimental/wicket-http2/pom.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-   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.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-		<groupId>org.apache.wicket.experimental.wicket9</groupId>
-		<artifactId>wicket-experimental</artifactId>
-		<version>10.0.0-M1-SNAPSHOT</version>
-		<relativePath>../pom.xml</relativePath>
-	</parent>
-	<artifactId>wicket-http2</artifactId>
-	<version>0.25-SNAPSHOT</version>
-	<packaging>pom</packaging>
-	<name>Wicket Http/2</name>
-	<description>
-		Wicket’s implementation to use the PushBuilder API
-		to serve resource via http/2 with less requests
-	</description>
-	<modules>
-		<module>wicket-http2-core</module>
-		<module>wicket-http2-jetty</module>
-		<module>wicket-http2-servlet4</module>
-		<module>wicket-http2-tomcat</module>
-		<module>wicket-http2-undertow</module>
-	</modules>
-</project>
diff --git a/wicket-experimental/wicket-http2/wicket-http2-core/pom.xml b/wicket-experimental/wicket-http2/wicket-http2-core/pom.xml
deleted file mode 100644
index 9d1eb3a..0000000
--- a/wicket-experimental/wicket-http2/wicket-http2-core/pom.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-   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.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-		<groupId>org.apache.wicket.experimental.wicket9</groupId>
-		<artifactId>wicket-http2</artifactId>
-		<version>0.25-SNAPSHOT</version>
-		<relativePath>../pom.xml</relativePath>
-	</parent>
-	<artifactId>wicket-http2-core</artifactId>
-	<packaging>bundle</packaging>
-	<name>Wicket Http/2 Core</name>
-	<description>
-		Wicket’s implementation to use the PushBuilder API
-		to serve resource via http/2 with less requests. This
-		is the core implementation which provides the header item
-		that uses the API.
-	</description>
-
-	<properties>
-		<automatic-module-name>org.apache.wicket.http2.core</automatic-module-name>
-	</properties>
-
-	<dependencies>
-		<dependency>
-			<groupId>org.apache.wicket</groupId>
-			<artifactId>wicket-core</artifactId>
-		</dependency>
-	</dependencies>
-</project>
diff --git a/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/Http2Settings.java b/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/Http2Settings.java
deleted file mode 100644
index dc4ff64..0000000
--- a/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/Http2Settings.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * 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.http2;
-
-import org.apache.wicket.Application;
-import org.apache.wicket.MetaDataKey;
-import org.apache.wicket.http2.markup.head.NoopPushBuilder;
-import org.apache.wicket.http2.markup.head.PushBuilder;
-import org.apache.wicket.util.lang.Args;
-
-/**
- * The http2 settings used to get the vendor specific push builder API
- * 
- * @author Martin Grigorov
- */
-public class Http2Settings
-{
-	/**
-	 * The meta data key of the http2 settings
-	 */
-	private static final MetaDataKey<Http2Settings> KEY = new MetaDataKey<>()
-	{
-		private static final long serialVersionUID = 1L;
-	};
-
-	/**
-	 * Holds this Http2Settings in the Application's meta data. This way wicket-core module doesn't
-	 * have reference to wicket-http2-core
-	 */
-	public static final class Holder
-	{
-		/**
-		 * Gets the http2 settings from the given application
-		 * 
-		 * @param application
-		 *            the application to get the meta data from
-		 * @return the http2 settings
-		 */
-		public static Http2Settings get(Application application)
-		{
-			Http2Settings settings = application.getMetaData(KEY);
-			if (settings == null)
-			{
-				synchronized (application)
-				{
-					if (settings == null)
-					{
-						settings = new Http2Settings();
-						set(application, settings);
-					}
-				}
-			}
-			return settings;
-		}
-
-		/**
-		 * Sets the given http2 settings to the given application
-		 * 
-		 * @param application
-		 *            the application to set the meta data key to
-		 * @param settings
-		 *            the http2 settings to be set to the application
-		 */
-		public static void set(Application application, Http2Settings settings)
-		{
-			application.setMetaData(KEY, settings);
-		}
-	}
-
-	private PushBuilder pushBuilder = NoopPushBuilder.INSTANCE;
-
-	/**
-	 * Sets the push builder that has been initialized
-	 * 
-	 * @param pushBuilder
-	 *            the push builder to be used after the initialization
-	 * @return the push builder
-	 */
-	public Http2Settings setPushBuilder(PushBuilder pushBuilder)
-	{
-		this.pushBuilder = Args.notNull(pushBuilder, "pushBuilder");
-		return this;
-	}
-
-	/**
-	 * Gets the push builder which has been initialized
-	 * 
-	 * @return the push builder
-	 */
-	public PushBuilder getPushBuilder()
-	{
-		return pushBuilder;
-	}
-}
diff --git a/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/NoopPushBuilder.java b/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/NoopPushBuilder.java
deleted file mode 100644
index 52dffa9..0000000
--- a/wicket-experimental/wicket-http2/wicket-http2-core/src/main/java/org/apache/wicket/http2/markup/head/NoopPushBuilder.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * 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.http2.markup.head;
-
-import jakarta.servlet.http.HttpServletRequest;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * The noop push builder is used to inform the dev to place in a vendor specific jar to support the
- * push builder API
- * 
- * @author Martin Grigorov
- *
- */
-public class NoopPushBuilder implements PushBuilder
-{
-	private static final Logger LOG = LoggerFactory.getLogger(NoopPushBuilder.class);
-
-	/**
-	 * An instance of the push builder
-	 */
-	public static final NoopPushBuilder INSTANCE = new NoopPushBuilder();
-
-	/**
-	 * Creates the noop push builder
-	 */
-	private NoopPushBuilder()
-	{
-		// NOOP
-	}
-
-	/**
-	 * Warns the dev to provide a vendor specific push builder API.
-	 * <p>
-	 * {@inheritDoc}
-	 * </p>
-	 */
-	@Override
-	public void push(HttpServletRequest httpServletRequest, PushItem... pushItems)
-	{
-		LOG.warn(
-			"This PushBuilder does nothing. Please use one of the other implementations - Jetty9 or Tomcat8.5+");
-	}
-}
diff --git a/wicket-experimental/wicket-http2/wicket-http2-core/src/test/java/org/apache/wicket/util/license/ApacheLicenceHeaderTest.java b/wicket-experimental/wicket-http2/wicket-http2-core/src/test/java/org/apache/wicket/util/license/ApacheLicenceHeaderTest.java
deleted file mode 100644
index 7efc3af..0000000
--- a/wicket-experimental/wicket-http2/wicket-http2-core/src/test/java/org/apache/wicket/util/license/ApacheLicenceHeaderTest.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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.util.license;
-
-/**
- * Test that the license headers are in place in this project. The tests are run from
- * {@link ApacheLicenseHeaderTestCase}, but you can add project specific tests here if needed.
- * 
- * @author Frank Bille Jensen (frankbille)
- */
-public class ApacheLicenceHeaderTest extends ApacheLicenseHeaderTestCase
-{
-	/**
-	 * Construct.
-	 */
-	public ApacheLicenceHeaderTest()
-	{
-		// addHeaders = true;
-	}
-}
diff --git a/wicket-experimental/wicket-http2/wicket-http2-jetty/pom.xml b/wicket-experimental/wicket-http2/wicket-http2-jetty/pom.xml
deleted file mode 100644
index 0725ac3..0000000
--- a/wicket-experimental/wicket-http2/wicket-http2-jetty/pom.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-   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.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-		<groupId>org.apache.wicket.experimental.wicket9</groupId>
-		<artifactId>wicket-http2</artifactId>
-		<version>0.25-SNAPSHOT</version>
-		<relativePath>../pom.xml</relativePath>
-	</parent>
-	<artifactId>wicket-http2-jetty</artifactId>
-	<packaging>bundle</packaging>
-	<name>Wicket Http/2 Jetty 9.3+</name>
-	<description>
-		Wicket’s implementation to use the PushBuilder API
-		to serve resource via http/2 with less requests. This
-		is the jetty implementation to resolve the PushBuilder API and
-		provide the IInitializer.
-	</description>
-
-	<properties>
-		<automatic-module-name>org.apache.wicket.http2.jetty</automatic-module-name>
-	</properties>
-
-	<dependencies>
-		<dependency>
-			<groupId>org.eclipse.jetty</groupId>
-			<artifactId>jetty-server</artifactId>
-			<scope>provided</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.wicket.experimental.wicket9</groupId>
-			<artifactId>wicket-http2-core</artifactId>
-		</dependency>
-	</dependencies>
-</project>
diff --git a/wicket-experimental/wicket-http2/wicket-http2-jetty/src/main/java/org/apache/wicket/http2/markup/head/jetty/Initializer.java b/wicket-experimental/wicket-http2/wicket-http2-jetty/src/main/java/org/apache/wicket/http2/markup/head/jetty/Initializer.java
deleted file mode 100644
index 265be8c..0000000
--- a/wicket-experimental/wicket-http2/wicket-http2-jetty/src/main/java/org/apache/wicket/http2/markup/head/jetty/Initializer.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * 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.http2.markup.head.jetty;
-
-import org.apache.wicket.Application;
-import org.apache.wicket.IInitializer;
-import org.apache.wicket.http2.Http2Settings;
-
-/**
- * Initializes the jetty specific push builder API and makes it available through the HTTP2
- * settings
- */
-public class Initializer implements IInitializer
-{
-	/**
-	 * Initializes the push builder API of Jetty 9.3+
-	 */
-	@Override
-	public void init(Application application)
-	{
-		Http2Settings http2Settings = Http2Settings.Holder.get(application);
-		http2Settings.setPushBuilder(new Jetty9PushBuilder());
-	}
-
-	@Override
-	public void destroy(Application application)
-	{
-		// NOOP
-	}
-}
diff --git a/wicket-experimental/wicket-http2/wicket-http2-jetty/src/main/java/org/apache/wicket/http2/markup/head/jetty/Jetty9PushBuilder.java b/wicket-experimental/wicket-http2/wicket-http2-jetty/src/main/java/org/apache/wicket/http2/markup/head/jetty/Jetty9PushBuilder.java
deleted file mode 100644
index ebabba6..0000000
--- a/wicket-experimental/wicket-http2/wicket-http2-jetty/src/main/java/org/apache/wicket/http2/markup/head/jetty/Jetty9PushBuilder.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * 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.http2.markup.head.jetty;
-
-import jakarta.servlet.http.HttpServletRequest;
-
-import org.apache.wicket.http2.markup.head.PushBuilder;
-import org.apache.wicket.http2.markup.head.PushItem;
-import org.apache.wicket.http2.markup.head.PushItemHeaderValue;
-import org.apache.wicket.http2.markup.head.PushItemHeaderValue.HeaderOperation;
-import org.apache.wicket.request.Request;
-import org.apache.wicket.request.cycle.RequestCycle;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Allows to push resources with the Jetty 9.3+ specific push builder API
- * 
- * @author Tobias Soloschenko
- */
-public class Jetty9PushBuilder implements PushBuilder
-{
-	private static final Logger LOG = LoggerFactory.getLogger(Jetty9PushBuilder.class);
-
-	@Override
-	public void push(HttpServletRequest httpServletRequest, PushItem... pushItems)
-	{
-		Request request = RequestCycle.get().getRequest();
-		HttpServletRequest httpRequest = (HttpServletRequest) request.getContainerRequest();
-		// FIXME Wicket 10
-		final jakarta.servlet.http.PushBuilder pushBuilder = null;//org.eclipse.jetty.server.Request.getBaseRequest(httpRequest).getPushBuilder();
-		if (pushBuilder != null)
-		{
-			for (PushItem pushItem : pushItems)
-			{
-				pushBuilder.path(pushItem.getUrl());
-				pushItem.getHeaders().entrySet().stream().forEach(pushHeader -> {
-					String key = pushHeader.getKey();
-					PushItemHeaderValue value = pushHeader.getValue();
-					if(value.getOperation() == HeaderOperation.ADD){
-						pushBuilder.addHeader(key, value.getValue());
-					}else{
-						pushBuilder.setHeader(key, value.getValue());
-					}
-				});
-				pushBuilder.push();
-			}
-		}
-		else
-		{
-			LOG.warn("Attempted to use HTTP2 Push but it is not supported for the current request: {}!",
-					httpRequest);
-		}
-	}
-}
diff --git a/wicket-experimental/wicket-http2/wicket-http2-jetty/src/main/resources/META-INF/services/org.apache.wicket.IInitializer b/wicket-experimental/wicket-http2/wicket-http2-jetty/src/main/resources/META-INF/services/org.apache.wicket.IInitializer
deleted file mode 100644
index 5fb7d70..0000000
--- a/wicket-experimental/wicket-http2/wicket-http2-jetty/src/main/resources/META-INF/services/org.apache.wicket.IInitializer
+++ /dev/null
@@ -1 +0,0 @@
-org.apache.wicket.http2.markup.head.jetty.Initializer
diff --git a/wicket-experimental/wicket-http2/wicket-http2-jetty/src/test/java/org/apache/wicket/util/license/ApacheLicenceHeaderTest.java b/wicket-experimental/wicket-http2/wicket-http2-jetty/src/test/java/org/apache/wicket/util/license/ApacheLicenceHeaderTest.java
deleted file mode 100644
index 7efc3af..0000000
--- a/wicket-experimental/wicket-http2/wicket-http2-jetty/src/test/java/org/apache/wicket/util/license/ApacheLicenceHeaderTest.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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.util.license;
-
-/**
- * Test that the license headers are in place in this project. The tests are run from
- * {@link ApacheLicenseHeaderTestCase}, but you can add project specific tests here if needed.
- * 
- * @author Frank Bille Jensen (frankbille)
- */
-public class ApacheLicenceHeaderTest extends ApacheLicenseHeaderTestCase
-{
-	/**
-	 * Construct.
-	 */
-	public ApacheLicenceHeaderTest()
-	{
-		// addHeaders = true;
-	}
-}
diff --git a/wicket-experimental/wicket-http2/wicket-http2-servlet4/pom.xml b/wicket-experimental/wicket-http2/wicket-http2-servlet4/pom.xml
deleted file mode 100644
index 39cd579..0000000
--- a/wicket-experimental/wicket-http2/wicket-http2-servlet4/pom.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-   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.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-		<groupId>org.apache.wicket.experimental.wicket9</groupId>
-		<artifactId>wicket-http2</artifactId>
-		<version>0.25-SNAPSHOT</version>
-		<relativePath>../pom.xml</relativePath>
-	</parent>
-	<artifactId>wicket-http2-servlet4</artifactId>
-	<packaging>bundle</packaging>
-	<name>Wicket Http/2 Servlet 4</name>
-	<description>
-		Wicket’s implementation to use the PushBuilder API
-		to serve resource via http/2 with less requests. This
-		is the Servlet 4 implementation to resolve the PushBuilder API and
-		provide the IInitializer.
-	</description>
-
-	<properties>
-		<automatic-module-name>org.apache.wicket.http2.servlet4</automatic-module-name>
-	</properties>
-
-	<dependencies>
-		<dependency>
-		    <groupId>jakarta.servlet</groupId>
-		    <artifactId>jakarta.servlet-api</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.wicket.experimental.wicket9</groupId>
-			<artifactId>wicket-http2-core</artifactId>
-		</dependency>
-	</dependencies>
-</project>
diff --git a/wicket-experimental/wicket-http2/wicket-http2-servlet4/src/main/java/org/apache/wicket/http2/markup/head/servlet4/Initializer.java b/wicket-experimental/wicket-http2/wicket-http2-servlet4/src/main/java/org/apache/wicket/http2/markup/head/servlet4/Initializer.java
deleted file mode 100644
index 172e27b..0000000
--- a/wicket-experimental/wicket-http2/wicket-http2-servlet4/src/main/java/org/apache/wicket/http2/markup/head/servlet4/Initializer.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * 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.http2.markup.head.servlet4;
-
-import org.apache.wicket.Application;
-import org.apache.wicket.IInitializer;
-import org.apache.wicket.http2.Http2Settings;
-
-/**
- * Initializes the servlet 4 specific push builder API and makes it available through the HTTP2
- * settings
- */
-public class Initializer implements IInitializer
-{
-	/**
-	 * Initializes the push builder API of Servlet 4
-	 */
-	@Override
-	public void init(Application application)
-	{
-		Http2Settings http2Settings = Http2Settings.Holder.get(application);
-		http2Settings.setPushBuilder(new Servlet4PushBuilder());
-	}
-
-	@Override
-	public void destroy(Application application)
-	{
-		// NOOP
-	}
-}
diff --git a/wicket-experimental/wicket-http2/wicket-http2-servlet4/src/main/resources/META-INF/services/org.apache.wicket.IInitializer b/wicket-experimental/wicket-http2/wicket-http2-servlet4/src/main/resources/META-INF/services/org.apache.wicket.IInitializer
deleted file mode 100644
index 644ee65..0000000
--- a/wicket-experimental/wicket-http2/wicket-http2-servlet4/src/main/resources/META-INF/services/org.apache.wicket.IInitializer
+++ /dev/null
@@ -1 +0,0 @@
-org.apache.wicket.http2.markup.head.servlet4.Initializer
diff --git a/wicket-experimental/wicket-http2/wicket-http2-servlet4/src/test/java/org/apache/wicket/util/license/ApacheLicenceHeaderTest.java b/wicket-experimental/wicket-http2/wicket-http2-servlet4/src/test/java/org/apache/wicket/util/license/ApacheLicenceHeaderTest.java
deleted file mode 100644
index 7efc3af..0000000
--- a/wicket-experimental/wicket-http2/wicket-http2-servlet4/src/test/java/org/apache/wicket/util/license/ApacheLicenceHeaderTest.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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.util.license;
-
-/**
- * Test that the license headers are in place in this project. The tests are run from
- * {@link ApacheLicenseHeaderTestCase}, but you can add project specific tests here if needed.
- * 
- * @author Frank Bille Jensen (frankbille)
- */
-public class ApacheLicenceHeaderTest extends ApacheLicenseHeaderTestCase
-{
-	/**
-	 * Construct.
-	 */
-	public ApacheLicenceHeaderTest()
-	{
-		// addHeaders = true;
-	}
-}
diff --git a/wicket-experimental/wicket-http2/wicket-http2-tomcat/pom.xml b/wicket-experimental/wicket-http2/wicket-http2-tomcat/pom.xml
deleted file mode 100644
index 5ae51bd..0000000
--- a/wicket-experimental/wicket-http2/wicket-http2-tomcat/pom.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-   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.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-		<groupId>org.apache.wicket.experimental.wicket9</groupId>
-		<artifactId>wicket-http2</artifactId>
-		<version>0.25-SNAPSHOT</version>
-		<relativePath>../pom.xml</relativePath>
-	</parent>
-	<artifactId>wicket-http2-tomcat</artifactId>
-	<packaging>bundle</packaging>
-	<name>Wicket Http/2 Tomcat 8.5+</name>
-	<description>
-		Wicket’s implementation to use the PushBuilder API
-		to serve resource via http/2 with less requests. This
-		is the Apache Tomcat 8.5+ implementation to resolve the PushBuilder API and
-		provide the IInitializer.
-	</description>
-
-	<properties>
-		<automatic-module-name>org.apache.wicket.http2.tomcat</automatic-module-name>
-	</properties>
-
-	<dependencyManagement>
-		<dependencies>
-			<dependency>
-				<groupId>org.apache.tomcat</groupId>
-				<artifactId>tomcat-catalina</artifactId>
-				<version>8.5.51</version>
-				<scope>provided</scope>
-			</dependency>
-		</dependencies>
-	</dependencyManagement>
-
-	<dependencies>
-		<dependency>
-			<groupId>org.apache.tomcat</groupId>
-			<artifactId>tomcat-catalina</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.wicket.experimental.wicket9</groupId>
-			<artifactId>wicket-http2-core</artifactId>
-		</dependency>
-	</dependencies>
-</project>
diff --git a/wicket-experimental/wicket-http2/wicket-http2-tomcat/src/main/java/org/apache/wicket/http2/markup/head/tomcat/Initializer.java b/wicket-experimental/wicket-http2/wicket-http2-tomcat/src/main/java/org/apache/wicket/http2/markup/head/tomcat/Initializer.java
deleted file mode 100644
index 76373c9..0000000
--- a/wicket-experimental/wicket-http2/wicket-http2-tomcat/src/main/java/org/apache/wicket/http2/markup/head/tomcat/Initializer.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * 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.http2.markup.head.tomcat;
-
-import org.apache.wicket.Application;
-import org.apache.wicket.IInitializer;
-import org.apache.wicket.http2.Http2Settings;
-
-/**
- * Initializes the tomcat specific push builder API and makes it available through the HTTP2
- * settings
- */
-public class Initializer implements IInitializer
-{
-	/**
-	 * Initializes the push builder API of tomcat
-	 */
-	@Override
-	public void init(Application application)
-	{
-		Http2Settings http2Settings = Http2Settings.Holder.get(application);
-		http2Settings.setPushBuilder(new Tomcat85PushBuilder());
-	}
-
-	@Override
-	public void destroy(Application application)
-	{
-		// NOOP
-	}
-}
diff --git a/wicket-experimental/wicket-http2/wicket-http2-tomcat/src/main/java/org/apache/wicket/http2/markup/head/tomcat/Tomcat85PushBuilder.java b/wicket-experimental/wicket-http2/wicket-http2-tomcat/src/main/java/org/apache/wicket/http2/markup/head/tomcat/Tomcat85PushBuilder.java
deleted file mode 100644
index b5e9a1e..0000000
--- a/wicket-experimental/wicket-http2/wicket-http2-tomcat/src/main/java/org/apache/wicket/http2/markup/head/tomcat/Tomcat85PushBuilder.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * 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.http2.markup.head.tomcat;
-
-import jakarta.servlet.http.HttpServletRequest;
-
-import org.apache.catalina.core.ApplicationPushBuilder;
-import org.apache.wicket.http2.markup.head.PushBuilder;
-import org.apache.wicket.http2.markup.head.PushItem;
-import org.apache.wicket.http2.markup.head.PushItemHeaderValue;
-import org.apache.wicket.http2.markup.head.PushItemHeaderValue.HeaderOperation;
-import org.apache.wicket.request.Request;
-import org.apache.wicket.request.cycle.RequestCycle;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Allows to push resources with the Tomcat 8.5+ specific push builder API
- */
-public class Tomcat85PushBuilder implements PushBuilder
-{
-	private static final Logger LOG = LoggerFactory.getLogger(Tomcat85PushBuilder.class);
-
-	@Override
-	public void push(HttpServletRequest httpServletRequest, PushItem... pushItems)
-	{
-		Request request = RequestCycle.get().getRequest();
-		HttpServletRequest httpRequest = (HttpServletRequest) request.getContainerRequest();
-		org.apache.catalina.connector.RequestFacade tomcatRequest = (org.apache.catalina.connector.RequestFacade) httpRequest;
-		ApplicationPushBuilder pushBuilder = (ApplicationPushBuilder) tomcatRequest.newPushBuilder();
-		if (pushBuilder != null)
-		{
-			for (PushItem pushItem : pushItems)
-			{
-				pushBuilder.path(pushItem.getUrl());
-				pushItem.getHeaders().entrySet().stream().forEach(pushHeader -> {
-					String key = pushHeader.getKey();
-					PushItemHeaderValue value = pushHeader.getValue();
-					if(value.getOperation() == HeaderOperation.ADD){
-						pushBuilder.addHeader(key, value.getValue());
-					}else{
-						pushBuilder.setHeader(key, value.getValue());
-					}
-				});
-				pushBuilder.push();
-			}
-		}
-		else
-		{
-			LOG.warn("Attempted to use HTTP2 Push but it is not supported for the current request: {}!",
-						httpRequest);
-		}
-	}
-}
diff --git a/wicket-experimental/wicket-http2/wicket-http2-tomcat/src/main/resources/META-INF/services/org.apache.wicket.IInitializer b/wicket-experimental/wicket-http2/wicket-http2-tomcat/src/main/resources/META-INF/services/org.apache.wicket.IInitializer
deleted file mode 100644
index 87b9d76..0000000
--- a/wicket-experimental/wicket-http2/wicket-http2-tomcat/src/main/resources/META-INF/services/org.apache.wicket.IInitializer
+++ /dev/null
@@ -1 +0,0 @@
-org.apache.wicket.http2.markup.head.tomcat.Initializer
diff --git a/wicket-experimental/wicket-http2/wicket-http2-tomcat/src/test/java/org/apache/wicket/util/license/ApacheLicenceHeaderTest.java b/wicket-experimental/wicket-http2/wicket-http2-tomcat/src/test/java/org/apache/wicket/util/license/ApacheLicenceHeaderTest.java
deleted file mode 100644
index 7efc3af..0000000
--- a/wicket-experimental/wicket-http2/wicket-http2-tomcat/src/test/java/org/apache/wicket/util/license/ApacheLicenceHeaderTest.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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.util.license;
-
-/**
- * Test that the license headers are in place in this project. The tests are run from
- * {@link ApacheLicenseHeaderTestCase}, but you can add project specific tests here if needed.
- * 
- * @author Frank Bille Jensen (frankbille)
- */
-public class ApacheLicenceHeaderTest extends ApacheLicenseHeaderTestCase
-{
-	/**
-	 * Construct.
-	 */
-	public ApacheLicenceHeaderTest()
-	{
-		// addHeaders = true;
-	}
-}
diff --git a/wicket-experimental/wicket-http2/wicket-http2-undertow/pom.xml b/wicket-experimental/wicket-http2/wicket-http2-undertow/pom.xml
deleted file mode 100644
index 7826ddd..0000000
--- a/wicket-experimental/wicket-http2/wicket-http2-undertow/pom.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-   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.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-		<groupId>org.apache.wicket.experimental.wicket9</groupId>
-		<artifactId>wicket-http2</artifactId>
-		<version>0.25-SNAPSHOT</version>
-		<relativePath>../pom.xml</relativePath>
-	</parent>
-	<artifactId>wicket-http2-undertow</artifactId>
-	<packaging>bundle</packaging>
-	<name>Wicket Http/2 Undertow 2+</name>
-	<description>
-		Wicket’s implementation to use the PushBuilder API
-		to serve resource via http/2 with less requests. This
-		is the Undertow 2+ implementation to resolve the PushBuilder API and
-		provide the IInitializer.
-	</description>
-
-	<properties>
-		<automatic-module-name>org.apache.wicket.http2.undertow</automatic-module-name>
-	</properties>
-
-	<dependencyManagement>
-		<dependencies>
-			<dependency>
-				<groupId>io.undertow</groupId>
-				<artifactId>undertow-servlet</artifactId>
-				<version>2.0.29.Final</version>
-				<scope>provided</scope>
-			</dependency>
-		</dependencies>
-	</dependencyManagement>
-
-	<dependencies>
-		<dependency>
-			<groupId>io.undertow</groupId>
-			<artifactId>undertow-servlet</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.wicket.experimental.wicket9</groupId>
-			<artifactId>wicket-http2-core</artifactId>
-		</dependency>
-	</dependencies>
-</project>
diff --git a/wicket-experimental/wicket-http2/wicket-http2-undertow/src/main/java/org/apache/wicket/http2/markup/head/undertow/Initializer.java b/wicket-experimental/wicket-http2/wicket-http2-undertow/src/main/java/org/apache/wicket/http2/markup/head/undertow/Initializer.java
deleted file mode 100644
index 4d95930..0000000
--- a/wicket-experimental/wicket-http2/wicket-http2-undertow/src/main/java/org/apache/wicket/http2/markup/head/undertow/Initializer.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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.http2.markup.head.undertow;
-
-import org.apache.wicket.Application;
-import org.apache.wicket.IInitializer;
-import org.apache.wicket.http2.Http2Settings;
-
-/**
- * Initializes the undertow specific push builder API and makes it available through the http2
- * settings
- * 
- * @author Tobias Soloschenko
- */
-public class Initializer implements IInitializer
-{
-	/**
-	 * Initializes the push builder API of undertow
-	 */
-	@Override
-	public void init(Application application)
-	{
-		Http2Settings http2Settings = Http2Settings.Holder.get(application);
-		http2Settings.setPushBuilder(new UndertowPushBuilder());
-	}
-
-	@Override
-	public void destroy(Application application)
-	{
-		// NOOP
-	}
-}
diff --git a/wicket-experimental/wicket-http2/wicket-http2-undertow/src/main/java/org/apache/wicket/http2/markup/head/undertow/UndertowPushBuilder.java b/wicket-experimental/wicket-http2/wicket-http2-undertow/src/main/java/org/apache/wicket/http2/markup/head/undertow/UndertowPushBuilder.java
deleted file mode 100644
index abf6738..0000000
--- a/wicket-experimental/wicket-http2/wicket-http2-undertow/src/main/java/org/apache/wicket/http2/markup/head/undertow/UndertowPushBuilder.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * 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.http2.markup.head.undertow;
-
-import jakarta.servlet.http.HttpServletRequest;
-
-import org.apache.wicket.http2.markup.head.PushBuilder;
-import org.apache.wicket.http2.markup.head.PushItem;
-import org.apache.wicket.http2.markup.head.PushItemHeaderValue;
-import org.apache.wicket.http2.markup.head.PushItemHeaderValue.HeaderOperation;
-import org.apache.wicket.request.Request;
-import org.apache.wicket.request.cycle.RequestCycle;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Allows to push resources with the Undertow 2+ specific push builder API
- * 
- * @author Tobias Soloschenko
- */
-public class UndertowPushBuilder implements PushBuilder
-{
-	private static final Logger LOG = LoggerFactory.getLogger(UndertowPushBuilder.class);
-
-	@Override
-	public void push(HttpServletRequest httpServletRequest, PushItem... pushItems)
-	{
-		Request request = RequestCycle.get().getRequest();
-		HttpServletRequest httpRequest = (HttpServletRequest) request.getContainerRequest();
-		// FIXME Wicket 10
-		io.undertow.servlet.spec.HttpServletRequestImpl undertowRequest = null;// (io.undertow.servlet.spec.HttpServletRequestImpl) httpRequest;
-		// Added explicit cast here to ensure this is the implementation of undertow
-		io.undertow.servlet.spec.PushBuilderImpl pushBuilder = (io.undertow.servlet.spec.PushBuilderImpl)undertowRequest.newPushBuilder();
-		if (pushBuilder != null)
-		{
-			for (PushItem pushItem : pushItems)
-			{
-				pushBuilder.path(pushItem.getUrl());
-				pushItem.getHeaders().entrySet().stream().forEach(pushHeader -> {
-					String key = pushHeader.getKey();
-					PushItemHeaderValue value = pushHeader.getValue();
-					if(value.getOperation() == HeaderOperation.ADD){
-						pushBuilder.addHeader(key, value.getValue());
-					}else{
-						pushBuilder.setHeader(key, value.getValue());
-					}
-				});
-				pushBuilder.push();
-			}
-		}
-		else
-		{
-			LOG.warn("Attempted to use HTTP2 Push but it is not supported for the current request: {}!",
-					httpRequest);
-		}
-	}
-}
diff --git a/wicket-experimental/wicket-http2/wicket-http2-undertow/src/main/resources/META-INF/services/org.apache.wicket.IInitializer b/wicket-experimental/wicket-http2/wicket-http2-undertow/src/main/resources/META-INF/services/org.apache.wicket.IInitializer
deleted file mode 100644
index 052174b..0000000
--- a/wicket-experimental/wicket-http2/wicket-http2-undertow/src/main/resources/META-INF/services/org.apache.wicket.IInitializer
+++ /dev/null
@@ -1 +0,0 @@
-org.apache.wicket.http2.markup.head.undertow.Initializer
diff --git a/wicket-experimental/wicket-http2/wicket-http2-undertow/src/test/java/org/apache/wicket/util/license/ApacheLicenceHeaderTest.java b/wicket-experimental/wicket-http2/wicket-http2-undertow/src/test/java/org/apache/wicket/util/license/ApacheLicenceHeaderTest.java
deleted file mode 100644
index 7efc3af..0000000
--- a/wicket-experimental/wicket-http2/wicket-http2-undertow/src/test/java/org/apache/wicket/util/license/ApacheLicenceHeaderTest.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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.util.license;
-
-/**
- * Test that the license headers are in place in this project. The tests are run from
- * {@link ApacheLicenseHeaderTestCase}, but you can add project specific tests here if needed.
- * 
- * @author Frank Bille Jensen (frankbille)
- */
-public class ApacheLicenceHeaderTest extends ApacheLicenseHeaderTestCase
-{
-	/**
-	 * Construct.
-	 */
-	public ApacheLicenceHeaderTest()
-	{
-		// addHeaders = true;
-	}
-}