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

cziegeler pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/felix-dev.git


The following commit(s) were added to refs/heads/master by this push:
     new a50ed402c3 Separate wrappers into its own module for reuse
a50ed402c3 is described below

commit a50ed402c345c023a3250e3d999b17c292b02878
Author: Carsten Ziegeler <[email protected]>
AuthorDate: Wed Aug 16 14:57:41 2023 +0200

    Separate wrappers into its own module for reuse
---
 http/base/README                                   |  5 +-
 http/base/pom.xml                                  |  6 ++
 .../http/base/internal/dispatch/Dispatcher.java    |  2 +-
 .../handler/HttpServiceServletHandler.java         |  2 +-
 .../http/base/internal/handler/ServletHandler.java |  2 +-
 .../jakartawrappers/PreprocessorWrapper.java       |  1 +
 .../ServletContextHelperWrapper.java               |  4 +-
 .../http/base/internal/runtime/FilterInfo.java     |  2 +-
 .../http/base/internal/runtime/ServletInfo.java    |  2 +-
 .../internal/service/PerBundleHttpServiceImpl.java |  3 +-
 .../base/internal/service/ServletContextImpl.java  |  4 +-
 .../internal/service/SharedHttpServiceImpl.java    |  2 +-
 .../whiteboard/tracker/JavaxFilterTracker.java     |  2 +-
 .../whiteboard/tracker/JavaxListenersTracker.java  |  2 +-
 .../whiteboard/tracker/JavaxServletTracker.java    |  2 +-
 .../internal/context/ServletContextImplTest.java   |  4 +-
 http/bridge/README                                 |  6 +-
 http/bridge/pom.xml                                | 11 +++-
 http/jetty/README                                  |  5 +-
 http/jetty/pom.xml                                 | 15 ++++-
 http/wrappers/README                               |  1 +
 http/{base => wrappers}/pom.xml                    | 64 ++++++----------------
 .../http}/jakartawrappers/AsyncContextWrapper.java | 12 ++--
 .../jakartawrappers/AsyncListenerWrapper.java      | 27 ++++-----
 .../felix/http}/jakartawrappers/CookieWrapper.java |  2 +-
 .../jakartawrappers/EventListenerWrapper.java      |  8 +--
 .../jakartawrappers/FilterRegistrationWrapper.java |  2 +-
 .../felix/http}/jakartawrappers/FilterWrapper.java | 10 ++--
 .../jakartawrappers/HttpServletMappingWrapper.java |  2 +-
 .../jakartawrappers/HttpServletRequestWrapper.java |  4 +-
 .../HttpServletResponseWrapper.java                |  4 +-
 .../jakartawrappers/HttpSessionContextWrapper.java |  2 +-
 .../http}/jakartawrappers/HttpSessionWrapper.java  |  2 +-
 .../felix/http}/jakartawrappers/PartWrapper.java   |  2 +-
 .../http}/jakartawrappers/PushBuilderWrapper.java  |  2 +-
 .../http}/jakartawrappers/ReadListenerWrapper.java |  2 +-
 .../jakartawrappers/RequestDispatcherWrapper.java  | 10 ++--
 .../jakartawrappers/ServletConfigWrapper.java      |  2 +-
 .../jakartawrappers/ServletContextWrapper.java     |  2 +-
 .../jakartawrappers/ServletExceptionUtil.java      |  6 +-
 .../jakartawrappers/ServletExceptionWrapper.java   |  2 +-
 .../jakartawrappers/ServletInputStreamWrapper.java |  4 +-
 .../ServletOutputStreamWrapper.java                |  4 +-
 .../ServletRegistrationWrapper.java                |  2 +-
 .../jakartawrappers/ServletRequestWrapper.java     | 14 ++---
 .../jakartawrappers/ServletResponseWrapper.java    |  6 +-
 .../http}/jakartawrappers/ServletWrapper.java      | 12 ++--
 .../SessionCookieConfigWrapper.java                |  2 +-
 .../jakartawrappers/WriteListenerWrapper.java      |  2 +-
 .../felix/http/jakartawrappers/package-info.java   | 21 +++++++
 .../http}/javaxwrappers/AsyncContextWrapper.java   | 12 ++--
 .../http}/javaxwrappers/AsyncListenerWrapper.java  | 14 ++---
 .../felix/http}/javaxwrappers/CookieWrapper.java   |  2 +-
 .../http}/javaxwrappers/FilterChainWrapper.java    |  6 +-
 .../http}/javaxwrappers/FilterConfigWrapper.java   |  2 +-
 .../javaxwrappers/FilterRegistrationWrapper.java   |  2 +-
 .../javaxwrappers/HttpServletMappingWrapper.java   |  2 +-
 .../javaxwrappers/HttpServletRequestWrapper.java   |  4 +-
 .../javaxwrappers/HttpServletResponseWrapper.java  |  4 +-
 .../javaxwrappers/HttpSessionContextWrapper.java   |  2 +-
 .../http}/javaxwrappers/HttpSessionWrapper.java    |  2 +-
 .../felix/http}/javaxwrappers/PartWrapper.java     |  2 +-
 .../http}/javaxwrappers/PushBuilderWrapper.java    |  2 +-
 .../http}/javaxwrappers/ReadListenerWrapper.java   |  2 +-
 .../javaxwrappers/RequestDispatcherWrapper.java    | 10 ++--
 .../http}/javaxwrappers/ServletConfigWrapper.java  |  2 +-
 .../http}/javaxwrappers/ServletContextWrapper.java |  2 +-
 .../http}/javaxwrappers/ServletExceptionUtil.java  |  6 +-
 .../javaxwrappers/ServletExceptionWrapper.java     |  2 +-
 .../javaxwrappers/ServletInputStreamWrapper.java   |  4 +-
 .../javaxwrappers/ServletOutputStreamWrapper.java  |  4 +-
 .../javaxwrappers/ServletRegistrationWrapper.java  |  2 +-
 .../http}/javaxwrappers/ServletRequestWrapper.java | 14 ++---
 .../javaxwrappers/ServletResponseWrapper.java      |  6 +-
 .../felix/http}/javaxwrappers/ServletWrapper.java  |  8 +--
 .../javaxwrappers/SessionCookieConfigWrapper.java  |  2 +-
 .../http}/javaxwrappers/WriteListenerWrapper.java  |  2 +-
 .../felix/http/javaxwrappers/package-info.java     | 21 +++++++
 78 files changed, 244 insertions(+), 216 deletions(-)

diff --git a/http/base/README b/http/base/README
index 3acb0c8806..b09b7fd347 100644
--- a/http/base/README
+++ b/http/base/README
@@ -1,5 +1,4 @@
-This directory contains a proof of concept for a new version of the Apache 
Felix Http Service.
+This directory contains a the base code for the Apache Felix Http Service.
 
-It is based on Servlet API 5.
+It is based on Servlet API 5, but also supports Servlet API 3.
 
-This module contains code below the package org.osgi.service.servlet. The API 
in these packages is NOT official OSGi API, it is work in progress for a new 
OSGi specifications being worked in the [Eclipse OSGi working 
group](https://www.osgi.org/). The source is copied from the [design 381 
branch](https://github.com/osgi/osgi/tree/design/381). This API might change in 
any way at any time.
diff --git a/http/base/pom.xml b/http/base/pom.xml
index a7d80a1fc2..85db1a5ca3 100644
--- a/http/base/pom.xml
+++ b/http/base/pom.xml
@@ -97,5 +97,11 @@
             <version>1.5</version>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.http.wrappers</artifactId>
+            <version>1.0.0-SNAPSHOT</version>
+            <scope>provided</scope>
+    </dependency>
     </dependencies>
 </project>
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/Dispatcher.java
 
b/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/Dispatcher.java
index 786857ee4e..68a8aea9a3 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/Dispatcher.java
+++ 
b/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/Dispatcher.java
@@ -22,12 +22,12 @@ import java.util.Set;
 import org.apache.felix.http.base.internal.context.ExtServletContext;
 import org.apache.felix.http.base.internal.handler.FilterHandler;
 import org.apache.felix.http.base.internal.handler.HttpSessionWrapper;
-import 
org.apache.felix.http.base.internal.jakartawrappers.ServletExceptionWrapper;
 import org.apache.felix.http.base.internal.logger.SystemLogger;
 import org.apache.felix.http.base.internal.registry.HandlerRegistry;
 import org.apache.felix.http.base.internal.registry.PathResolution;
 import org.apache.felix.http.base.internal.registry.PerContextHandlerRegistry;
 import org.apache.felix.http.base.internal.whiteboard.WhiteboardManager;
+import org.apache.felix.http.jakartawrappers.ServletExceptionWrapper;
 import org.jetbrains.annotations.Nullable;
 import org.osgi.service.servlet.whiteboard.Preprocessor;
 
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HttpServiceServletHandler.java
 
b/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HttpServiceServletHandler.java
index 74967e34ff..600cb534f0 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HttpServiceServletHandler.java
+++ 
b/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HttpServiceServletHandler.java
@@ -17,9 +17,9 @@
 package org.apache.felix.http.base.internal.handler;
 
 import org.apache.felix.http.base.internal.context.ExtServletContext;
-import org.apache.felix.http.base.internal.jakartawrappers.ServletWrapper;
 import org.apache.felix.http.base.internal.runtime.ServletInfo;
 import org.apache.felix.http.base.internal.service.HttpServiceFactory;
+import org.apache.felix.http.jakartawrappers.ServletWrapper;
 
 import jakarta.servlet.Servlet;
 
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/handler/ServletHandler.java
 
b/http/base/src/main/java/org/apache/felix/http/base/internal/handler/ServletHandler.java
index 9b41b66b29..5a9c97a0ac 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/handler/ServletHandler.java
+++ 
b/http/base/src/main/java/org/apache/felix/http/base/internal/handler/ServletHandler.java
@@ -21,9 +21,9 @@ import java.io.IOException;
 
 import org.apache.felix.http.base.internal.context.ExtServletContext;
 import org.apache.felix.http.base.internal.dispatch.MultipartConfig;
-import org.apache.felix.http.base.internal.jakartawrappers.ServletWrapper;
 import org.apache.felix.http.base.internal.logger.SystemLogger;
 import org.apache.felix.http.base.internal.runtime.ServletInfo;
+import org.apache.felix.http.jakartawrappers.ServletWrapper;
 import org.osgi.framework.Bundle;
 import org.osgi.service.servlet.runtime.dto.DTOConstants;
 
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/PreprocessorWrapper.java
 
b/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/PreprocessorWrapper.java
index 84c1a83b22..fe618f2890 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/PreprocessorWrapper.java
+++ 
b/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/PreprocessorWrapper.java
@@ -16,6 +16,7 @@
  */
 package org.apache.felix.http.base.internal.jakartawrappers;
 
+import org.apache.felix.http.jakartawrappers.FilterWrapper;
 import org.jetbrains.annotations.NotNull;
 import org.osgi.service.servlet.whiteboard.Preprocessor;
 
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ServletContextHelperWrapper.java
 
b/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ServletContextHelperWrapper.java
index 056ce774ab..db15dd21cd 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ServletContextHelperWrapper.java
+++ 
b/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ServletContextHelperWrapper.java
@@ -20,8 +20,8 @@ import java.io.IOException;
 import java.net.URL;
 import java.util.Set;
 
-import org.apache.felix.http.base.internal.javaxwrappers.ServletRequestWrapper;
-import 
org.apache.felix.http.base.internal.javaxwrappers.ServletResponseWrapper;
+import org.apache.felix.http.javaxwrappers.ServletRequestWrapper;
+import org.apache.felix.http.javaxwrappers.ServletResponseWrapper;
 import org.jetbrains.annotations.NotNull;
 import org.osgi.service.servlet.context.ServletContextHelper;
 
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/FilterInfo.java
 
b/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/FilterInfo.java
index c74ff95edb..2e25c44b7e 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/FilterInfo.java
+++ 
b/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/FilterInfo.java
@@ -24,8 +24,8 @@ import java.util.Objects;
 import java.util.regex.Pattern;
 import java.util.regex.PatternSyntaxException;
 
-import org.apache.felix.http.base.internal.jakartawrappers.FilterWrapper;
 import org.apache.felix.http.base.internal.util.PatternUtil;
+import org.apache.felix.http.jakartawrappers.FilterWrapper;
 import org.jetbrains.annotations.NotNull;
 import org.osgi.dto.DTO;
 import org.osgi.framework.ServiceReference;
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/ServletInfo.java
 
b/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/ServletInfo.java
index 3d18f5d677..db40f06902 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/ServletInfo.java
+++ 
b/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/ServletInfo.java
@@ -24,8 +24,8 @@ import java.util.Map;
 import java.util.Objects;
 
 import org.apache.felix.http.base.internal.dispatch.MultipartConfig;
-import org.apache.felix.http.base.internal.jakartawrappers.ServletWrapper;
 import org.apache.felix.http.base.internal.util.PatternUtil;
+import org.apache.felix.http.jakartawrappers.ServletWrapper;
 import org.jetbrains.annotations.NotNull;
 import org.osgi.dto.DTO;
 import org.osgi.framework.ServiceReference;
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/service/PerBundleHttpServiceImpl.java
 
b/http/base/src/main/java/org/apache/felix/http/base/internal/service/PerBundleHttpServiceImpl.java
index 6e76520f8c..baff4f40e0 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/service/PerBundleHttpServiceImpl.java
+++ 
b/http/base/src/main/java/org/apache/felix/http/base/internal/service/PerBundleHttpServiceImpl.java
@@ -27,6 +27,7 @@ import 
org.apache.felix.http.base.internal.context.ExtServletContext;
 import org.apache.felix.http.base.internal.logger.SystemLogger;
 import org.apache.felix.http.base.internal.runtime.ServletInfo;
 import org.apache.felix.http.base.internal.util.PatternUtil;
+import org.apache.felix.http.javaxwrappers.ServletWrapper;
 import org.jetbrains.annotations.NotNull;
 import org.osgi.framework.Bundle;
 import org.osgi.service.http.HttpContext;
@@ -101,7 +102,7 @@ public final class PerBundleHttpServiceImpl implements 
HttpService
         try
         {
             final HttpResourceServlet servlet = new HttpResourceServlet(name);
-            final javax.servlet.Servlet wrapper = new 
org.apache.felix.http.base.internal.javaxwrappers.ServletWrapper(servlet);
+            final javax.servlet.Servlet wrapper = new ServletWrapper(servlet);
             servlet.setWrapper(wrapper);
             registerServlet(alias, wrapper, null, context);
         }
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/service/ServletContextImpl.java
 
b/http/base/src/main/java/org/apache/felix/http/base/internal/service/ServletContextImpl.java
index 166b0e8f06..98f14b830e 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/service/ServletContextImpl.java
+++ 
b/http/base/src/main/java/org/apache/felix/http/base/internal/service/ServletContextImpl.java
@@ -35,14 +35,14 @@ import 
org.apache.felix.http.base.internal.context.ExtServletContext;
 import org.apache.felix.http.base.internal.dispatch.RequestDispatcherImpl;
 import org.apache.felix.http.base.internal.dispatch.RequestInfo;
 import org.apache.felix.http.base.internal.handler.ServletHandler;
-import org.apache.felix.http.base.internal.javaxwrappers.ServletRequestWrapper;
-import 
org.apache.felix.http.base.internal.javaxwrappers.ServletResponseWrapper;
 import org.apache.felix.http.base.internal.logger.SystemLogger;
 import org.apache.felix.http.base.internal.registry.PathResolution;
 import org.apache.felix.http.base.internal.registry.PerContextHandlerRegistry;
 import org.apache.felix.http.base.internal.registry.ServletResolution;
 import org.apache.felix.http.base.internal.util.MimeTypes;
 import org.apache.felix.http.base.internal.util.UriUtils;
+import org.apache.felix.http.javaxwrappers.ServletRequestWrapper;
+import org.apache.felix.http.javaxwrappers.ServletResponseWrapper;
 import org.osgi.framework.Bundle;
 import org.osgi.service.http.HttpContext;
 
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/service/SharedHttpServiceImpl.java
 
b/http/base/src/main/java/org/apache/felix/http/base/internal/service/SharedHttpServiceImpl.java
index a63d4049f2..d96c656375 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/service/SharedHttpServiceImpl.java
+++ 
b/http/base/src/main/java/org/apache/felix/http/base/internal/service/SharedHttpServiceImpl.java
@@ -23,9 +23,9 @@ import java.util.Map;
 import org.apache.felix.http.base.internal.context.ExtServletContext;
 import org.apache.felix.http.base.internal.handler.HttpServiceServletHandler;
 import org.apache.felix.http.base.internal.handler.ServletHandler;
-import org.apache.felix.http.base.internal.jakartawrappers.ServletWrapper;
 import org.apache.felix.http.base.internal.registry.HandlerRegistry;
 import org.apache.felix.http.base.internal.runtime.ServletInfo;
+import org.apache.felix.http.jakartawrappers.ServletWrapper;
 import org.jetbrains.annotations.NotNull;
 import org.osgi.service.http.NamespaceException;
 
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/tracker/JavaxFilterTracker.java
 
b/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/tracker/JavaxFilterTracker.java
index bd4bd7081e..c6a31a19de 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/tracker/JavaxFilterTracker.java
+++ 
b/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/tracker/JavaxFilterTracker.java
@@ -16,11 +16,11 @@
  */
 package org.apache.felix.http.base.internal.whiteboard.tracker;
 
-import org.apache.felix.http.base.internal.jakartawrappers.FilterWrapper;
 import org.apache.felix.http.base.internal.runtime.FilterInfo;
 import org.apache.felix.http.base.internal.runtime.WhiteboardServiceInfo;
 import org.apache.felix.http.base.internal.util.ServiceUtils;
 import org.apache.felix.http.base.internal.whiteboard.WhiteboardManager;
+import org.apache.felix.http.jakartawrappers.FilterWrapper;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
 import org.osgi.service.http.whiteboard.HttpWhiteboardConstants;
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/tracker/JavaxListenersTracker.java
 
b/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/tracker/JavaxListenersTracker.java
index cddd7da11a..bcbbc05040 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/tracker/JavaxListenersTracker.java
+++ 
b/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/tracker/JavaxListenersTracker.java
@@ -20,11 +20,11 @@ import java.util.EventListener;
 import java.util.HashSet;
 import java.util.Set;
 
-import 
org.apache.felix.http.base.internal.jakartawrappers.EventListenerWrapper;
 import org.apache.felix.http.base.internal.runtime.ListenerInfo;
 import org.apache.felix.http.base.internal.runtime.WhiteboardServiceInfo;
 import org.apache.felix.http.base.internal.util.ServiceUtils;
 import org.apache.felix.http.base.internal.whiteboard.WhiteboardManager;
+import org.apache.felix.http.jakartawrappers.EventListenerWrapper;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
 import org.osgi.framework.ServiceReference;
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/tracker/JavaxServletTracker.java
 
b/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/tracker/JavaxServletTracker.java
index 73c20b2f6f..7524876f6a 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/tracker/JavaxServletTracker.java
+++ 
b/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/tracker/JavaxServletTracker.java
@@ -16,11 +16,11 @@
  */
 package org.apache.felix.http.base.internal.whiteboard.tracker;
 
-import org.apache.felix.http.base.internal.jakartawrappers.ServletWrapper;
 import org.apache.felix.http.base.internal.runtime.ServletInfo;
 import org.apache.felix.http.base.internal.runtime.WhiteboardServiceInfo;
 import org.apache.felix.http.base.internal.util.ServiceUtils;
 import org.apache.felix.http.base.internal.whiteboard.WhiteboardManager;
+import org.apache.felix.http.jakartawrappers.ServletWrapper;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
 import org.osgi.service.http.whiteboard.HttpWhiteboardConstants;
diff --git 
a/http/base/src/test/java/org/apache/felix/http/base/internal/context/ServletContextImplTest.java
 
b/http/base/src/test/java/org/apache/felix/http/base/internal/context/ServletContextImplTest.java
index 58bce9e509..f6d5bc420f 100644
--- 
a/http/base/src/test/java/org/apache/felix/http/base/internal/context/ServletContextImplTest.java
+++ 
b/http/base/src/test/java/org/apache/felix/http/base/internal/context/ServletContextImplTest.java
@@ -32,14 +32,14 @@ import java.util.Set;
 
 import org.apache.felix.http.base.internal.HttpConfig;
 import org.apache.felix.http.base.internal.handler.ListenerHandler;
-import 
org.apache.felix.http.base.internal.jakartawrappers.ServletRequestWrapper;
-import 
org.apache.felix.http.base.internal.jakartawrappers.ServletResponseWrapper;
 import org.apache.felix.http.base.internal.registry.EventListenerRegistry;
 import org.apache.felix.http.base.internal.registry.HandlerRegistry;
 import org.apache.felix.http.base.internal.registry.PerContextHandlerRegistry;
 import org.apache.felix.http.base.internal.runtime.ListenerInfo;
 import org.apache.felix.http.base.internal.service.HttpServiceFactory;
 import org.apache.felix.http.base.internal.service.ServletContextImpl;
+import org.apache.felix.http.jakartawrappers.ServletRequestWrapper;
+import org.apache.felix.http.jakartawrappers.ServletResponseWrapper;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/http/bridge/README b/http/bridge/README
index 3acb0c8806..73352d34b5 100644
--- a/http/bridge/README
+++ b/http/bridge/README
@@ -1,5 +1 @@
-This directory contains a proof of concept for a new version of the Apache 
Felix Http Service.
-
-It is based on Servlet API 5.
-
-This module contains code below the package org.osgi.service.servlet. The API 
in these packages is NOT official OSGi API, it is work in progress for a new 
OSGi specifications being worked in the [Eclipse OSGi working 
group](https://www.osgi.org/). The source is copied from the [design 381 
branch](https://github.com/osgi/osgi/tree/design/381). This API might change in 
any way at any time.
+This directory contains the implementation  the Apache Felix Http Bridge.
diff --git a/http/bridge/pom.xml b/http/bridge/pom.xml
index b72681d231..fa79b76df0 100644
--- a/http/bridge/pom.xml
+++ b/http/bridge/pom.xml
@@ -64,7 +64,9 @@
                             org.osgi.service.http.context,
                             org.osgi.service.http.runtime,
                             org.osgi.service.http.runtime.dto,
-                            org.osgi.service.http.whiteboard
+                           org.osgi.service.http.whiteboard,
+                           org.apache.felix.http.jakartawrappers,
+                           org.apache.felix.http.javaxwrappers
                         </Export-Package>
                         <Private-Package>
                             org.apache.felix.http.base.*,
@@ -163,7 +165,12 @@
         <dependency>
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.http.base</artifactId>
-            <version>5.0.4</version>
+            <version>5.0.5-SNAPSHOT</version>
         </dependency>
+       <dependency>
+            <groupId>org.apache.felix</groupId>
+           <artifactId>org.apache.felix.http.wrappers</artifactId>
+           <version>1.0.0-SNAPSHOT</version>
+       </dependency>
     </dependencies>
 </project>
diff --git a/http/jetty/README b/http/jetty/README
index 3acb0c8806..8a95f7280b 100644
--- a/http/jetty/README
+++ b/http/jetty/README
@@ -1,5 +1,2 @@
-This directory contains a proof of concept for a new version of the Apache 
Felix Http Service.
+This directory contains the implementation of the Apache Felix Http Service.
 
-It is based on Servlet API 5.
-
-This module contains code below the package org.osgi.service.servlet. The API 
in these packages is NOT official OSGi API, it is work in progress for a new 
OSGi specifications being worked in the [Eclipse OSGi working 
group](https://www.osgi.org/). The source is copied from the [design 381 
branch](https://github.com/osgi/osgi/tree/design/381). This API might change in 
any way at any time.
diff --git a/http/jetty/pom.xml b/http/jetty/pom.xml
index 755c5fea03..f181cec354 100644
--- a/http/jetty/pom.xml
+++ b/http/jetty/pom.xml
@@ -165,7 +165,9 @@
                             !org.eclipse.jetty,
                             !org.eclipse.jetty.version,
                             org.eclipse.jetty.*,
-                            org.apache.felix.http.jetty
+                           org.apache.felix.http.jetty,
+                            org.apache.felix.http.jakartawrappers,
+                           org.apache.felix.http.javaxwrappers
                         </Export-Package>
                         <Private-Package>
                             org.apache.felix.http.base.*,
@@ -253,7 +255,9 @@
                                     org.osgi.service.http.runtime.dto,
                                     org.osgi.service.http.whiteboard,
                                     !org.osgi.service.servlet.*,
-                                    org.apache.felix.http.jetty
+                                   org.apache.felix.http.jetty,
+                                   org.apache.felix.http.javaxwrappers,
+                                   org.apache.felix.http.jakartawrappers
                                 </Export-Package>
                                 <Private-Package>
                                     org.apache.felix.http.base.*,
@@ -409,8 +413,13 @@
         <dependency>
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.http.base</artifactId>
-            <version>5.0.4</version>
+            <version>5.0.5-SNAPSHOT</version>
         </dependency>
+       <dependency>
+            <groupId>org.apache.felix</groupId>
+           <artifactId>org.apache.felix.http.wrappers</artifactId>
+           <version>1.0.0-SNAPSHOT</version>
+       </dependency>
         <dependency>
             <groupId>commons-fileupload</groupId>
             <artifactId>commons-fileupload</artifactId>
diff --git a/http/wrappers/README b/http/wrappers/README
new file mode 100644
index 0000000000..75f419fab5
--- /dev/null
+++ b/http/wrappers/README
@@ -0,0 +1 @@
+This directory contains wrappers from javax.servlet to jakarta.servlet
diff --git a/http/base/pom.xml b/http/wrappers/pom.xml
similarity index 55%
copy from http/base/pom.xml
copy to http/wrappers/pom.xml
index a7d80a1fc2..ad699d23dd 100644
--- a/http/base/pom.xml
+++ b/http/wrappers/pom.xml
@@ -26,29 +26,33 @@
         <relativePath>../parent/pom.xml</relativePath>
     </parent>
 
-    <name>Apache Felix Http Base</name>
-    <artifactId>org.apache.felix.http.base</artifactId>
-    <version>5.0.5-SNAPSHOT</version>
-    <packaging>jar</packaging>
+    <name>Apache Felix Http Wrappers</name>
+    <artifactId>org.apache.felix.http.wrappers</artifactId>
+    <version>1.0.0-SNAPSHOT</version>
+    <packaging>bundle</packaging>
 
     <scm>
          
<connection>scm:git:https://github.com/apache/felix-dev.git</connection>
          
<developerConnection>scm:git:https://github.com/apache/felix-dev.git</developerConnection>
          <url>https://gitbox.apache.org/repos/asf?p=felix-dev.git</url>
-      <tag>org.apache.felix.http.base-5.0.0-RC2</tag>
-  </scm>
+    </scm>
 
     <properties>
         <felix.java.version>11</felix.java.version>
     </properties>
 
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <version>5.1.9</version>
+                <extensions>true</extensions>
+            </plugin>
+        </plugins>
+    </build>
+
     <dependencies>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-            <version>1.7.36</version>
-            <scope>provided</scope>
-        </dependency>
         <dependency>
             <groupId>javax.servlet</groupId>
             <artifactId>javax.servlet-api</artifactId>
@@ -61,41 +65,5 @@
             <version>5.0.0</version>
             <scope>provided</scope>
         </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>osgi.core</artifactId>
-            <version>8.0.0</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.service.servlet</artifactId>
-            <version>2.0.0</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.service.http</artifactId>
-            <version>1.2.1</version>
-           <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.service.http.whiteboard</artifactId>
-            <version>1.1.0</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.service.useradmin</artifactId>
-            <version>1.1.0</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>commons-fileupload</groupId>
-            <artifactId>commons-fileupload</artifactId>
-            <version>1.5</version>
-            <scope>provided</scope>
-        </dependency>
     </dependencies>
 </project>
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/AsyncContextWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/AsyncContextWrapper.java
similarity index 81%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/AsyncContextWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/AsyncContextWrapper.java
index 4e6fae0c3f..ea9b8ec7ff 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/AsyncContextWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/AsyncContextWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.jakartawrappers;
+package org.apache.felix.http.jakartawrappers;
 
 import org.jetbrains.annotations.NotNull;
 
@@ -67,7 +67,7 @@ public class AsyncContextWrapper implements AsyncContext {
 
     @Override
     public void dispatch(final ServletContext sc, final String path) {
-        context.dispatch(new 
org.apache.felix.http.base.internal.javaxwrappers.ServletContextWrapper(sc), 
path);
+        context.dispatch(new 
org.apache.felix.http.javaxwrappers.ServletContextWrapper(sc), path);
     }
 
     @Override
@@ -82,14 +82,14 @@ public class AsyncContextWrapper implements AsyncContext {
 
     @Override
     public void addListener(final AsyncListener listener) {
-        context.addListener(new 
org.apache.felix.http.base.internal.javaxwrappers.AsyncListenerWrapper(listener));
+        context.addListener(new 
org.apache.felix.http.javaxwrappers.AsyncListenerWrapper(listener));
     }
 
     @Override
     public void addListener(final AsyncListener listener, final ServletRequest 
servletRequest, final ServletResponse servletResponse) {
-        context.addListener(new 
org.apache.felix.http.base.internal.javaxwrappers.AsyncListenerWrapper(listener),
-                
org.apache.felix.http.base.internal.javaxwrappers.ServletRequestWrapper.getWrapper(servletRequest),
-                
org.apache.felix.http.base.internal.javaxwrappers.ServletResponseWrapper.getWrapper(servletResponse));
+        context.addListener(new 
org.apache.felix.http.javaxwrappers.AsyncListenerWrapper(listener),
+                
org.apache.felix.http.javaxwrappers.ServletRequestWrapper.getWrapper(servletRequest),
+                
org.apache.felix.http.javaxwrappers.ServletResponseWrapper.getWrapper(servletResponse));
     }
 
     @Override
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/AsyncListenerWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/AsyncListenerWrapper.java
similarity index 57%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/AsyncListenerWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/AsyncListenerWrapper.java
index efa0168fb5..f617f7b4dd 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/AsyncListenerWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/AsyncListenerWrapper.java
@@ -1,3 +1,4 @@
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -14,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.jakartawrappers;
+package org.apache.felix.http.jakartawrappers;
 
 import java.io.IOException;
 
@@ -41,36 +42,36 @@ public class AsyncListenerWrapper implements AsyncListener {
     @Override
     public void onComplete(final AsyncEvent event) throws IOException {
         this.listener.onComplete(new javax.servlet.AsyncEvent(
-                new 
org.apache.felix.http.base.internal.javaxwrappers.AsyncContextWrapper(event.getAsyncContext()),
-                
org.apache.felix.http.base.internal.javaxwrappers.ServletRequestWrapper.getWrapper(event.getSuppliedRequest()),
-                
org.apache.felix.http.base.internal.javaxwrappers.ServletResponseWrapper.getWrapper(event.getSuppliedResponse()),
+                new 
org.apache.felix.http.javaxwrappers.AsyncContextWrapper(event.getAsyncContext()),
+                
org.apache.felix.http.javaxwrappers.ServletRequestWrapper.getWrapper(event.getSuppliedRequest()),
+                
org.apache.felix.http.javaxwrappers.ServletResponseWrapper.getWrapper(event.getSuppliedResponse()),
                 event.getThrowable()));
     }
 
     @Override
     public void onTimeout(final AsyncEvent event) throws IOException {
         this.listener.onTimeout(new javax.servlet.AsyncEvent(
-                new 
org.apache.felix.http.base.internal.javaxwrappers.AsyncContextWrapper(event.getAsyncContext()),
-                
org.apache.felix.http.base.internal.javaxwrappers.ServletRequestWrapper.getWrapper(event.getSuppliedRequest()),
-                
org.apache.felix.http.base.internal.javaxwrappers.ServletResponseWrapper.getWrapper(event.getSuppliedResponse()),
+                new 
org.apache.felix.http.javaxwrappers.AsyncContextWrapper(event.getAsyncContext()),
+                
org.apache.felix.http.javaxwrappers.ServletRequestWrapper.getWrapper(event.getSuppliedRequest()),
+                
org.apache.felix.http.javaxwrappers.ServletResponseWrapper.getWrapper(event.getSuppliedResponse()),
                 event.getThrowable()));
     }
 
     @Override
     public void onError(final AsyncEvent event) throws IOException {
         this.listener.onError(new javax.servlet.AsyncEvent(
-                new 
org.apache.felix.http.base.internal.javaxwrappers.AsyncContextWrapper(event.getAsyncContext()),
-                
org.apache.felix.http.base.internal.javaxwrappers.ServletRequestWrapper.getWrapper(event.getSuppliedRequest()),
-                
org.apache.felix.http.base.internal.javaxwrappers.ServletResponseWrapper.getWrapper(event.getSuppliedResponse()),
+                new 
org.apache.felix.http.javaxwrappers.AsyncContextWrapper(event.getAsyncContext()),
+                
org.apache.felix.http.javaxwrappers.ServletRequestWrapper.getWrapper(event.getSuppliedRequest()),
+                
org.apache.felix.http.javaxwrappers.ServletResponseWrapper.getWrapper(event.getSuppliedResponse()),
                 event.getThrowable()));
     }
 
     @Override
     public void onStartAsync(final AsyncEvent event) throws IOException {
         this.listener.onStartAsync(new javax.servlet.AsyncEvent(
-                new 
org.apache.felix.http.base.internal.javaxwrappers.AsyncContextWrapper(event.getAsyncContext()),
-                
org.apache.felix.http.base.internal.javaxwrappers.ServletRequestWrapper.getWrapper(event.getSuppliedRequest()),
-                
org.apache.felix.http.base.internal.javaxwrappers.ServletResponseWrapper.getWrapper(event.getSuppliedResponse()),
+                new 
org.apache.felix.http.javaxwrappers.AsyncContextWrapper(event.getAsyncContext()),
+                
org.apache.felix.http.javaxwrappers.ServletRequestWrapper.getWrapper(event.getSuppliedRequest()),
+                
org.apache.felix.http.javaxwrappers.ServletResponseWrapper.getWrapper(event.getSuppliedResponse()),
                 event.getThrowable()));
     }
 }
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/CookieWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/CookieWrapper.java
similarity index 98%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/CookieWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/CookieWrapper.java
index e040659d38..9c85fdeb51 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/CookieWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/CookieWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.jakartawrappers;
+package org.apache.felix.http.jakartawrappers;
 
 import org.jetbrains.annotations.NotNull;
 
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/EventListenerWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/EventListenerWrapper.java
similarity index 97%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/EventListenerWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/EventListenerWrapper.java
index 3f540d28a4..b33539c398 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/EventListenerWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/EventListenerWrapper.java
@@ -14,14 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.jakartawrappers;
+package org.apache.felix.http.jakartawrappers;
 
 import java.util.EventListener;
 import java.util.Set;
 
-import org.apache.felix.http.base.internal.javaxwrappers.HttpSessionWrapper;
-import org.apache.felix.http.base.internal.javaxwrappers.ServletContextWrapper;
-import org.apache.felix.http.base.internal.javaxwrappers.ServletRequestWrapper;
+import org.apache.felix.http.javaxwrappers.HttpSessionWrapper;
+import org.apache.felix.http.javaxwrappers.ServletContextWrapper;
+import org.apache.felix.http.javaxwrappers.ServletRequestWrapper;
 import org.jetbrains.annotations.NotNull;
 
 import jakarta.servlet.ServletContextAttributeEvent;
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/FilterRegistrationWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/FilterRegistrationWrapper.java
similarity index 98%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/FilterRegistrationWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/FilterRegistrationWrapper.java
index e8bb143f17..2acf15d890 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/FilterRegistrationWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/FilterRegistrationWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.jakartawrappers;
+package org.apache.felix.http.jakartawrappers;
 
 import java.util.Collection;
 import java.util.EnumSet;
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/FilterWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/FilterWrapper.java
similarity index 80%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/FilterWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/FilterWrapper.java
index 1e66ca0737..58bfa22632 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/FilterWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/FilterWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.jakartawrappers;
+package org.apache.felix.http.jakartawrappers;
 
 import java.io.IOException;
 
@@ -45,7 +45,7 @@ public class FilterWrapper implements Filter {
     @Override
     public void init(final FilterConfig filterConfig) throws ServletException {
         try {
-            this.filter.init(new 
org.apache.felix.http.base.internal.javaxwrappers.FilterConfigWrapper(filterConfig));
+            this.filter.init(new 
org.apache.felix.http.javaxwrappers.FilterConfigWrapper(filterConfig));
         } catch (final javax.servlet.ServletException e) {
             throw ServletExceptionUtil.getServletException(e);
         }
@@ -55,9 +55,9 @@ public class FilterWrapper implements Filter {
     public void doFilter(ServletRequest request, ServletResponse response, 
FilterChain chain)
             throws IOException, ServletException {
         try {
-            
this.filter.doFilter(org.apache.felix.http.base.internal.javaxwrappers.ServletRequestWrapper.getWrapper(request),
-                    
org.apache.felix.http.base.internal.javaxwrappers.ServletResponseWrapper.getWrapper(response),
-                    new 
org.apache.felix.http.base.internal.javaxwrappers.FilterChainWrapper(chain));
+            
this.filter.doFilter(org.apache.felix.http.javaxwrappers.ServletRequestWrapper.getWrapper(request),
+                    
org.apache.felix.http.javaxwrappers.ServletResponseWrapper.getWrapper(response),
+                    new 
org.apache.felix.http.javaxwrappers.FilterChainWrapper(chain));
         } catch (final javax.servlet.ServletException e) {
             throw ServletExceptionUtil.getServletException(e);
         }
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/HttpServletMappingWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/HttpServletMappingWrapper.java
similarity index 97%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/HttpServletMappingWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/HttpServletMappingWrapper.java
index 22a5aea5e8..bffff0991c 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/HttpServletMappingWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/HttpServletMappingWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.jakartawrappers;
+package org.apache.felix.http.jakartawrappers;
 
 import org.jetbrains.annotations.NotNull;
 
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/HttpServletRequestWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/HttpServletRequestWrapper.java
similarity index 97%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/HttpServletRequestWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/HttpServletRequestWrapper.java
index 35cc59f364..2967dd3c63 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/HttpServletRequestWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/HttpServletRequestWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.jakartawrappers;
+package org.apache.felix.http.jakartawrappers;
 
 import java.io.IOException;
 import java.security.Principal;
@@ -191,7 +191,7 @@ public class HttpServletRequestWrapper extends 
ServletRequestWrapper
     @Override
     public boolean authenticate(final HttpServletResponse response) throws 
IOException, ServletException {
         try {
-            return 
this.request.authenticate((javax.servlet.http.HttpServletResponse)org.apache.felix.http.base.internal.javaxwrappers.ServletResponseWrapper.getWrapper(response));
+            return 
this.request.authenticate((javax.servlet.http.HttpServletResponse)org.apache.felix.http.javaxwrappers.ServletResponseWrapper.getWrapper(response));
         } catch ( final javax.servlet.ServletException e ) {
             throw ServletExceptionUtil.getServletException(e);
         }
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/HttpServletResponseWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/HttpServletResponseWrapper.java
similarity index 96%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/HttpServletResponseWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/HttpServletResponseWrapper.java
index 4cc2cbc9bc..cf8ac0b4b5 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/HttpServletResponseWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/HttpServletResponseWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.jakartawrappers;
+package org.apache.felix.http.jakartawrappers;
 
 import java.io.IOException;
 import java.util.Collection;
@@ -43,7 +43,7 @@ public class HttpServletResponseWrapper extends 
ServletResponseWrapper
 
     @Override
     public void addCookie(final Cookie cookie) {
-        this.response.addCookie(new 
org.apache.felix.http.base.internal.javaxwrappers.CookieWrapper(cookie));
+        this.response.addCookie(new 
org.apache.felix.http.javaxwrappers.CookieWrapper(cookie));
     }
 
     @Override
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/HttpSessionContextWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/HttpSessionContextWrapper.java
similarity index 96%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/HttpSessionContextWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/HttpSessionContextWrapper.java
index 786a84b752..d5f01ad59c 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/HttpSessionContextWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/HttpSessionContextWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.jakartawrappers;
+package org.apache.felix.http.jakartawrappers;
 
 import java.util.Enumeration;
 
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/HttpSessionWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/HttpSessionWrapper.java
similarity index 98%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/HttpSessionWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/HttpSessionWrapper.java
index 27dc9ddee5..4696be66c8 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/HttpSessionWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/HttpSessionWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.jakartawrappers;
+package org.apache.felix.http.jakartawrappers;
 
 import java.util.Enumeration;
 
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/PartWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/PartWrapper.java
similarity index 97%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/PartWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/PartWrapper.java
index 6092c60676..1796495ac4 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/PartWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/PartWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.jakartawrappers;
+package org.apache.felix.http.jakartawrappers;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/PushBuilderWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/PushBuilderWrapper.java
similarity index 97%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/PushBuilderWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/PushBuilderWrapper.java
index 97f2c892b7..7ce9f5266d 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/PushBuilderWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/PushBuilderWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.jakartawrappers;
+package org.apache.felix.http.jakartawrappers;
 
 import java.util.Set;
 
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ReadListenerWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/ReadListenerWrapper.java
similarity index 96%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ReadListenerWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/ReadListenerWrapper.java
index 164e62860c..3bbc847c82 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ReadListenerWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/ReadListenerWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.jakartawrappers;
+package org.apache.felix.http.jakartawrappers;
 
 import java.io.IOException;
 
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/RequestDispatcherWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/RequestDispatcherWrapper.java
similarity index 78%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/RequestDispatcherWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/RequestDispatcherWrapper.java
index 7e5a2ddc21..4e8c3eaf48 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/RequestDispatcherWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/RequestDispatcherWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.jakartawrappers;
+package org.apache.felix.http.jakartawrappers;
 
 import java.io.IOException;
 
@@ -43,8 +43,8 @@ public class RequestDispatcherWrapper implements 
RequestDispatcher {
     @Override
     public void forward(final ServletRequest request, final ServletResponse 
response) throws ServletException, IOException {
         try {
-            
dispatcher.forward(org.apache.felix.http.base.internal.javaxwrappers.ServletRequestWrapper.getWrapper(request),
-                    
org.apache.felix.http.base.internal.javaxwrappers.ServletResponseWrapper.getWrapper(response));
+            
dispatcher.forward(org.apache.felix.http.javaxwrappers.ServletRequestWrapper.getWrapper(request),
+                    
org.apache.felix.http.javaxwrappers.ServletResponseWrapper.getWrapper(response));
         } catch (final javax.servlet.ServletException e) {
             throw ServletExceptionUtil.getServletException(e);
         }
@@ -53,8 +53,8 @@ public class RequestDispatcherWrapper implements 
RequestDispatcher {
     @Override
     public void include(final ServletRequest request, final ServletResponse 
response) throws ServletException, IOException {
         try {
-            
dispatcher.include(org.apache.felix.http.base.internal.javaxwrappers.ServletRequestWrapper.getWrapper(request),
-                    
org.apache.felix.http.base.internal.javaxwrappers.ServletResponseWrapper.getWrapper(response));
+            
dispatcher.include(org.apache.felix.http.javaxwrappers.ServletRequestWrapper.getWrapper(request),
+                    
org.apache.felix.http.javaxwrappers.ServletResponseWrapper.getWrapper(response));
         } catch (final javax.servlet.ServletException e) {
             throw ServletExceptionUtil.getServletException(e);
         }
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ServletConfigWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/ServletConfigWrapper.java
similarity index 96%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ServletConfigWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/ServletConfigWrapper.java
index 881ab60649..9d2235e8d0 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ServletConfigWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/ServletConfigWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.jakartawrappers;
+package org.apache.felix.http.jakartawrappers;
 
 import java.util.Enumeration;
 
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ServletContextWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/ServletContextWrapper.java
similarity index 99%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ServletContextWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/ServletContextWrapper.java
index e936fccdc2..4c4c2b95ce 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ServletContextWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/ServletContextWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.jakartawrappers;
+package org.apache.felix.http.jakartawrappers;
 
 import java.io.InputStream;
 import java.net.MalformedURLException;
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ServletExceptionUtil.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/ServletExceptionUtil.java
similarity index 81%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ServletExceptionUtil.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/ServletExceptionUtil.java
index b55a604fe9..379da0b63d 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ServletExceptionUtil.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/ServletExceptionUtil.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.jakartawrappers;
+package org.apache.felix.http.jakartawrappers;
 
 import org.jetbrains.annotations.NotNull;
 
@@ -31,8 +31,8 @@ public class ServletExceptionUtil {
      * @return The exception
      */
     public static ServletException getServletException(@NotNull final 
javax.servlet.ServletException e) {
-        if ( e instanceof 
org.apache.felix.http.base.internal.javaxwrappers.ServletExceptionWrapper) {
-            return 
((org.apache.felix.http.base.internal.javaxwrappers.ServletExceptionWrapper)e).getException();
+        if ( e instanceof 
org.apache.felix.http.javaxwrappers.ServletExceptionWrapper) {
+            return 
((org.apache.felix.http.javaxwrappers.ServletExceptionWrapper)e).getException();
         }
         return new ServletExceptionWrapper(e);
     }
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ServletExceptionWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/ServletExceptionWrapper.java
similarity index 96%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ServletExceptionWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/ServletExceptionWrapper.java
index cc835a2ea8..3f4bfba1c3 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ServletExceptionWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/ServletExceptionWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.jakartawrappers;
+package org.apache.felix.http.jakartawrappers;
 
 import org.jetbrains.annotations.NotNull;
 
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ServletInputStreamWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/ServletInputStreamWrapper.java
similarity index 94%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ServletInputStreamWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/ServletInputStreamWrapper.java
index 8191f5c455..d6eaf85b7f 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ServletInputStreamWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/ServletInputStreamWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.jakartawrappers;
+package org.apache.felix.http.jakartawrappers;
 
 import java.io.IOException;
 import java.io.OutputStream;
@@ -56,7 +56,7 @@ public class ServletInputStreamWrapper extends 
ServletInputStream {
 
     @Override
     public void setReadListener(final ReadListener readListener) {
-        this.stream.setReadListener(new 
org.apache.felix.http.base.internal.javaxwrappers.ReadListenerWrapper(readListener));
+        this.stream.setReadListener(new 
org.apache.felix.http.javaxwrappers.ReadListenerWrapper(readListener));
     }
 
     @Override
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ServletOutputStreamWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/ServletOutputStreamWrapper.java
similarity index 95%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ServletOutputStreamWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/ServletOutputStreamWrapper.java
index 064fb17e5f..13235c0ed6 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ServletOutputStreamWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/ServletOutputStreamWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.jakartawrappers;
+package org.apache.felix.http.jakartawrappers;
 
 import java.io.IOException;
 
@@ -120,7 +120,7 @@ public class ServletOutputStreamWrapper extends 
ServletOutputStream {
 
     @Override
     public void setWriteListener(final WriteListener writeListener) {
-        this.stream.setWriteListener(new 
org.apache.felix.http.base.internal.javaxwrappers.WriteListenerWrapper(writeListener));
+        this.stream.setWriteListener(new 
org.apache.felix.http.javaxwrappers.WriteListenerWrapper(writeListener));
     }
 
     @Override
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ServletRegistrationWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/ServletRegistrationWrapper.java
similarity index 97%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ServletRegistrationWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/ServletRegistrationWrapper.java
index 4381a738dc..82d06c2661 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ServletRegistrationWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/ServletRegistrationWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.jakartawrappers;
+package org.apache.felix.http.jakartawrappers;
 
 import java.util.Collection;
 import java.util.Map;
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ServletRequestWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/ServletRequestWrapper.java
similarity index 94%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ServletRequestWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/ServletRequestWrapper.java
index 0d42f9128a..95357e43fc 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ServletRequestWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/ServletRequestWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.jakartawrappers;
+package org.apache.felix.http.jakartawrappers;
 
 import static jakarta.servlet.AsyncContext.ASYNC_CONTEXT_PATH;
 import static jakarta.servlet.AsyncContext.ASYNC_MAPPING;
@@ -71,8 +71,8 @@ public class ServletRequestWrapper implements ServletRequest {
      * @return The wrapped request
      */
     public static ServletRequest getWrapper(final javax.servlet.ServletRequest 
r) {
-        if ( r instanceof 
org.apache.felix.http.base.internal.javaxwrappers.ServletRequestWrapper) {
-            return 
((org.apache.felix.http.base.internal.javaxwrappers.ServletRequestWrapper)r).getRequest();
+        if ( r instanceof 
org.apache.felix.http.javaxwrappers.ServletRequestWrapper) {
+            return 
((org.apache.felix.http.javaxwrappers.ServletRequestWrapper)r).getRequest();
         }
         if ( r instanceof javax.servlet.http.HttpServletRequest ) {
             return new 
HttpServletRequestWrapper((javax.servlet.http.HttpServletRequest)r);
@@ -98,8 +98,8 @@ public class ServletRequestWrapper implements ServletRequest {
     }
 
     private Object wrapHttpServletMapping(final Object value) {
-        if ( value instanceof 
org.apache.felix.http.base.internal.javaxwrappers.HttpServletMappingWrapper ) {
-            return 
((org.apache.felix.http.base.internal.javaxwrappers.HttpServletMappingWrapper)value).getMapping();
+        if ( value instanceof 
org.apache.felix.http.javaxwrappers.HttpServletMappingWrapper ) {
+            return 
((org.apache.felix.http.javaxwrappers.HttpServletMappingWrapper)value).getMapping();
         }
         if ( value instanceof javax.servlet.http.HttpServletMapping ) {
             return new 
HttpServletMappingWrapper((javax.servlet.http.HttpServletMapping)value);
@@ -348,8 +348,8 @@ public class ServletRequestWrapper implements 
ServletRequest {
     public AsyncContext startAsync(ServletRequest servletRequest, 
ServletResponse servletResponse)
             throws IllegalStateException {
         return new AsyncContextWrapper(this.request.startAsync(
-                
org.apache.felix.http.base.internal.javaxwrappers.ServletRequestWrapper.getWrapper(servletRequest),
-                
org.apache.felix.http.base.internal.javaxwrappers.ServletResponseWrapper.getWrapper(servletResponse)));
+                
org.apache.felix.http.javaxwrappers.ServletRequestWrapper.getWrapper(servletRequest),
+                
org.apache.felix.http.javaxwrappers.ServletResponseWrapper.getWrapper(servletResponse)));
     }
 
     @Override
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ServletResponseWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/ServletResponseWrapper.java
similarity index 93%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ServletResponseWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/ServletResponseWrapper.java
index 6778578113..17d24091e5 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ServletResponseWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/ServletResponseWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.jakartawrappers;
+package org.apache.felix.http.jakartawrappers;
 
 import java.io.IOException;
 import java.io.PrintWriter;
@@ -38,8 +38,8 @@ public class ServletResponseWrapper implements 
ServletResponse {
      * @return Wrapped response
      */
     public static ServletResponse getWrapper(final 
javax.servlet.ServletResponse r) {
-        if ( r instanceof 
org.apache.felix.http.base.internal.javaxwrappers.ServletResponseWrapper) {
-            return 
((org.apache.felix.http.base.internal.javaxwrappers.ServletResponseWrapper)r).getResponse();
+        if ( r instanceof 
org.apache.felix.http.javaxwrappers.ServletResponseWrapper) {
+            return 
((org.apache.felix.http.javaxwrappers.ServletResponseWrapper)r).getResponse();
         }
         if ( r instanceof javax.servlet.http.HttpServletResponse ) {
             return new 
HttpServletResponseWrapper((javax.servlet.http.HttpServletResponse)r);
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ServletWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/ServletWrapper.java
similarity index 81%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ServletWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/ServletWrapper.java
index 3c38b0b0fe..43d32cb6ae 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/ServletWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/ServletWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.jakartawrappers;
+package org.apache.felix.http.jakartawrappers;
 
 import java.io.IOException;
 
@@ -39,8 +39,8 @@ public class ServletWrapper implements Servlet {
      * @return The registered servlet
      */
     public static Servlet getRegisteredServlet(final javax.servlet.Servlet s) {
-        if ( s instanceof 
org.apache.felix.http.base.internal.javaxwrappers.ServletWrapper ) {
-            return 
((org.apache.felix.http.base.internal.javaxwrappers.ServletWrapper)s).getServlet();
+        if ( s instanceof org.apache.felix.http.javaxwrappers.ServletWrapper ) 
{
+            return 
((org.apache.felix.http.javaxwrappers.ServletWrapper)s).getServlet();
         }
         return new ServletWrapper(s);
     }
@@ -56,7 +56,7 @@ public class ServletWrapper implements Servlet {
     @Override
     public void init(final ServletConfig config) throws ServletException {
         try {
-            servlet.init(new 
org.apache.felix.http.base.internal.javaxwrappers.ServletConfigWrapper(config));
+            servlet.init(new 
org.apache.felix.http.javaxwrappers.ServletConfigWrapper(config));
         } catch (javax.servlet.ServletException e) {
             throw ServletExceptionUtil.getServletException(e);
         }
@@ -71,8 +71,8 @@ public class ServletWrapper implements Servlet {
     public void service(final ServletRequest req, final ServletResponse res)
             throws ServletException, IOException {
         try {
-            
servlet.service(org.apache.felix.http.base.internal.javaxwrappers.ServletRequestWrapper.getWrapper(req),
-                    
org.apache.felix.http.base.internal.javaxwrappers.ServletResponseWrapper.getWrapper(res));
+            
servlet.service(org.apache.felix.http.javaxwrappers.ServletRequestWrapper.getWrapper(req),
+                    
org.apache.felix.http.javaxwrappers.ServletResponseWrapper.getWrapper(res));
         } catch (javax.servlet.ServletException e) {
             throw ServletExceptionUtil.getServletException(e);
         }
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/SessionCookieConfigWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/SessionCookieConfigWrapper.java
similarity index 97%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/SessionCookieConfigWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/SessionCookieConfigWrapper.java
index 50f77dcb3d..a2246ce9f1 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/SessionCookieConfigWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/SessionCookieConfigWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.jakartawrappers;
+package org.apache.felix.http.jakartawrappers;
 
 import org.jetbrains.annotations.NotNull;
 
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/WriteListenerWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/WriteListenerWrapper.java
similarity index 96%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/WriteListenerWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/WriteListenerWrapper.java
index 3f5d673b07..58390b0dc6 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/jakartawrappers/WriteListenerWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/WriteListenerWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.jakartawrappers;
+package org.apache.felix.http.jakartawrappers;
 
 import java.io.IOException;
 
diff --git 
a/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/package-info.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/package-info.java
new file mode 100644
index 0000000000..90b6aecd03
--- /dev/null
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/jakartawrappers/package-info.java
@@ -0,0 +1,21 @@
+/*
+ * 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.
+ */
[email protected]("1.0.0")
+package org.apache.felix.http.jakartawrappers;
+
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/AsyncContextWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/AsyncContextWrapper.java
similarity index 81%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/AsyncContextWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/AsyncContextWrapper.java
index 470034ecf1..faccef3740 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/AsyncContextWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/AsyncContextWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.javaxwrappers;
+package org.apache.felix.http.javaxwrappers;
 
 import org.jetbrains.annotations.NotNull;
 
@@ -62,7 +62,7 @@ public class AsyncContextWrapper implements 
javax.servlet.AsyncContext {
 
     @Override
     public void dispatch(final javax.servlet.ServletContext sc, final String 
path) {
-        context.dispatch(new 
org.apache.felix.http.base.internal.jakartawrappers.ServletContextWrapper(sc), 
path);
+        context.dispatch(new 
org.apache.felix.http.jakartawrappers.ServletContextWrapper(sc), path);
     }
 
     @Override
@@ -77,14 +77,14 @@ public class AsyncContextWrapper implements 
javax.servlet.AsyncContext {
 
     @Override
     public void addListener(final javax.servlet.AsyncListener listener) {
-        context.addListener(new 
org.apache.felix.http.base.internal.jakartawrappers.AsyncListenerWrapper(listener));
+        context.addListener(new 
org.apache.felix.http.jakartawrappers.AsyncListenerWrapper(listener));
     }
 
     @Override
     public void addListener(final javax.servlet.AsyncListener listener, 
javax.servlet.ServletRequest servletRequest, javax.servlet.ServletResponse 
servletResponse) {
-        context.addListener(new 
org.apache.felix.http.base.internal.jakartawrappers.AsyncListenerWrapper(listener),
-                
org.apache.felix.http.base.internal.jakartawrappers.ServletRequestWrapper.getWrapper(servletRequest),
-                
org.apache.felix.http.base.internal.jakartawrappers.ServletResponseWrapper.getWrapper(servletResponse));
+        context.addListener(new 
org.apache.felix.http.jakartawrappers.AsyncListenerWrapper(listener),
+                
org.apache.felix.http.jakartawrappers.ServletRequestWrapper.getWrapper(servletRequest),
+                
org.apache.felix.http.jakartawrappers.ServletResponseWrapper.getWrapper(servletResponse));
     }
 
     @Override
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/AsyncListenerWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/AsyncListenerWrapper.java
similarity index 79%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/AsyncListenerWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/AsyncListenerWrapper.java
index d709bc4b70..94086d1f34 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/AsyncListenerWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/AsyncListenerWrapper.java
@@ -14,12 +14,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.javaxwrappers;
+package org.apache.felix.http.javaxwrappers;
 
 import java.io.IOException;
 
-import 
org.apache.felix.http.base.internal.jakartawrappers.ServletRequestWrapper;
-import 
org.apache.felix.http.base.internal.jakartawrappers.ServletResponseWrapper;
+import org.apache.felix.http.jakartawrappers.ServletRequestWrapper;
+import org.apache.felix.http.jakartawrappers.ServletResponseWrapper;
 import org.jetbrains.annotations.NotNull;
 
 import jakarta.servlet.AsyncEvent;
@@ -43,7 +43,7 @@ public class AsyncListenerWrapper implements 
javax.servlet.AsyncListener {
     @Override
     public void onComplete(final javax.servlet.AsyncEvent event) throws 
IOException {
         this.listener.onComplete(new AsyncEvent(
-                new 
org.apache.felix.http.base.internal.jakartawrappers.AsyncContextWrapper(event.getAsyncContext()),
+                new 
org.apache.felix.http.jakartawrappers.AsyncContextWrapper(event.getAsyncContext()),
                 ServletRequestWrapper.getWrapper(event.getSuppliedRequest()),
                 ServletResponseWrapper.getWrapper(event.getSuppliedResponse()),
                 event.getThrowable()));
@@ -52,7 +52,7 @@ public class AsyncListenerWrapper implements 
javax.servlet.AsyncListener {
     @Override
     public void onTimeout(final javax.servlet.AsyncEvent event) throws 
IOException {
         this.listener.onTimeout(new AsyncEvent(
-                new 
org.apache.felix.http.base.internal.jakartawrappers.AsyncContextWrapper(event.getAsyncContext()),
+                new 
org.apache.felix.http.jakartawrappers.AsyncContextWrapper(event.getAsyncContext()),
                 ServletRequestWrapper.getWrapper(event.getSuppliedRequest()),
                 ServletResponseWrapper.getWrapper(event.getSuppliedResponse()),
                 event.getThrowable()));
@@ -61,7 +61,7 @@ public class AsyncListenerWrapper implements 
javax.servlet.AsyncListener {
     @Override
     public void onError(final javax.servlet.AsyncEvent event) throws 
IOException {
         this.listener.onError(new AsyncEvent(
-                new 
org.apache.felix.http.base.internal.jakartawrappers.AsyncContextWrapper(event.getAsyncContext()),
+                new 
org.apache.felix.http.jakartawrappers.AsyncContextWrapper(event.getAsyncContext()),
                 ServletRequestWrapper.getWrapper(event.getSuppliedRequest()),
                 ServletResponseWrapper.getWrapper(event.getSuppliedResponse()),
                 event.getThrowable()));
@@ -70,7 +70,7 @@ public class AsyncListenerWrapper implements 
javax.servlet.AsyncListener {
     @Override
     public void onStartAsync(final javax.servlet.AsyncEvent event) throws 
IOException {
         this.listener.onStartAsync(new AsyncEvent(
-                new 
org.apache.felix.http.base.internal.jakartawrappers.AsyncContextWrapper(event.getAsyncContext()),
+                new 
org.apache.felix.http.jakartawrappers.AsyncContextWrapper(event.getAsyncContext()),
                 ServletRequestWrapper.getWrapper(event.getSuppliedRequest()),
                 ServletResponseWrapper.getWrapper(event.getSuppliedResponse()),
                 event.getThrowable()));
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/CookieWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/CookieWrapper.java
similarity index 98%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/CookieWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/CookieWrapper.java
index 85d42b4590..7c8bcd79c8 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/CookieWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/CookieWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.javaxwrappers;
+package org.apache.felix.http.javaxwrappers;
 
 import org.jetbrains.annotations.NotNull;
 
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/FilterChainWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/FilterChainWrapper.java
similarity index 86%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/FilterChainWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/FilterChainWrapper.java
index 6d7d5d0a91..307c89c933 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/FilterChainWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/FilterChainWrapper.java
@@ -14,11 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.javaxwrappers;
+package org.apache.felix.http.javaxwrappers;
 
 import java.io.IOException;
 
-import 
org.apache.felix.http.base.internal.jakartawrappers.ServletResponseWrapper;
+import org.apache.felix.http.jakartawrappers.ServletResponseWrapper;
 import org.jetbrains.annotations.NotNull;
 
 import jakarta.servlet.FilterChain;
@@ -42,7 +42,7 @@ public class FilterChainWrapper implements 
javax.servlet.FilterChain {
     public void doFilter(final javax.servlet.ServletRequest request, final 
javax.servlet.ServletResponse response)
             throws IOException, javax.servlet.ServletException {
         try {
-            
filterChain.doFilter(org.apache.felix.http.base.internal.jakartawrappers.ServletRequestWrapper.getWrapper(request),
+            
filterChain.doFilter(org.apache.felix.http.jakartawrappers.ServletRequestWrapper.getWrapper(request),
                     ServletResponseWrapper.getWrapper(response));
         } catch (final jakarta.servlet.ServletException e) {
             throw ServletExceptionUtil.getServletException(e);
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/FilterConfigWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/FilterConfigWrapper.java
similarity index 96%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/FilterConfigWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/FilterConfigWrapper.java
index c6ebe176e2..b040e3762b 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/FilterConfigWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/FilterConfigWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.javaxwrappers;
+package org.apache.felix.http.javaxwrappers;
 
 import java.util.Enumeration;
 
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/FilterRegistrationWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/FilterRegistrationWrapper.java
similarity index 98%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/FilterRegistrationWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/FilterRegistrationWrapper.java
index 7535f5f981..fa9bfbaae8 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/FilterRegistrationWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/FilterRegistrationWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.javaxwrappers;
+package org.apache.felix.http.javaxwrappers;
 
 import java.util.Collection;
 import java.util.EnumSet;
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/HttpServletMappingWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/HttpServletMappingWrapper.java
similarity index 97%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/HttpServletMappingWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/HttpServletMappingWrapper.java
index d8a8679513..6d1a1c961f 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/HttpServletMappingWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/HttpServletMappingWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.javaxwrappers;
+package org.apache.felix.http.javaxwrappers;
 
 import org.jetbrains.annotations.NotNull;
 
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/HttpServletRequestWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/HttpServletRequestWrapper.java
similarity index 97%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/HttpServletRequestWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/HttpServletRequestWrapper.java
index 801f32337c..7396e62db3 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/HttpServletRequestWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/HttpServletRequestWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.javaxwrappers;
+package org.apache.felix.http.javaxwrappers;
 
 import java.io.IOException;
 import java.security.Principal;
@@ -187,7 +187,7 @@ public class HttpServletRequestWrapper extends 
ServletRequestWrapper
     @Override
     public boolean authenticate(final javax.servlet.http.HttpServletResponse 
response) throws IOException, javax.servlet.ServletException {
         try {
-            return 
this.request.authenticate((HttpServletResponse)org.apache.felix.http.base.internal.jakartawrappers.ServletResponseWrapper.getWrapper(response));
+            return 
this.request.authenticate((HttpServletResponse)org.apache.felix.http.jakartawrappers.ServletResponseWrapper.getWrapper(response));
         } catch ( final jakarta.servlet.ServletException e ) {
             throw ServletExceptionUtil.getServletException(e);
         }
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/HttpServletResponseWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/HttpServletResponseWrapper.java
similarity index 96%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/HttpServletResponseWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/HttpServletResponseWrapper.java
index a22738c7af..d1f2475057 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/HttpServletResponseWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/HttpServletResponseWrapper.java
@@ -14,12 +14,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.javaxwrappers;
+package org.apache.felix.http.javaxwrappers;
 
 import java.io.IOException;
 import java.util.Collection;
 
-import org.apache.felix.http.base.internal.jakartawrappers.CookieWrapper;
+import org.apache.felix.http.jakartawrappers.CookieWrapper;
 import org.jetbrains.annotations.NotNull;
 
 import jakarta.servlet.http.HttpServletResponse;
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/HttpSessionContextWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/HttpSessionContextWrapper.java
similarity index 96%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/HttpSessionContextWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/HttpSessionContextWrapper.java
index b54a3694c7..8ef38c7361 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/HttpSessionContextWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/HttpSessionContextWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.javaxwrappers;
+package org.apache.felix.http.javaxwrappers;
 
 import java.util.Enumeration;
 
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/HttpSessionWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/HttpSessionWrapper.java
similarity index 98%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/HttpSessionWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/HttpSessionWrapper.java
index 06412d3a2b..bf15be31f9 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/HttpSessionWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/HttpSessionWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.javaxwrappers;
+package org.apache.felix.http.javaxwrappers;
 
 import java.util.Enumeration;
 
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/PartWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/PartWrapper.java
similarity index 97%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/PartWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/PartWrapper.java
index 2d91b90b49..23daed2a0c 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/PartWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/PartWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.javaxwrappers;
+package org.apache.felix.http.javaxwrappers;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/PushBuilderWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/PushBuilderWrapper.java
similarity index 98%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/PushBuilderWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/PushBuilderWrapper.java
index 88951fc053..09ccf1d71a 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/PushBuilderWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/PushBuilderWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.javaxwrappers;
+package org.apache.felix.http.javaxwrappers;
 
 import java.util.Set;
 
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/ReadListenerWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/ReadListenerWrapper.java
similarity index 96%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/ReadListenerWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/ReadListenerWrapper.java
index 7973a1bc8f..bdd78cd0ac 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/ReadListenerWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/ReadListenerWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.javaxwrappers;
+package org.apache.felix.http.javaxwrappers;
 
 import java.io.IOException;
 
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/RequestDispatcherWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/RequestDispatcherWrapper.java
similarity index 78%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/RequestDispatcherWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/RequestDispatcherWrapper.java
index 53af7618a2..6fcf612575 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/RequestDispatcherWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/RequestDispatcherWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.javaxwrappers;
+package org.apache.felix.http.javaxwrappers;
 
 import java.io.IOException;
 
@@ -41,8 +41,8 @@ public class RequestDispatcherWrapper implements 
javax.servlet.RequestDispatcher
     @Override
     public void forward(final javax.servlet.ServletRequest request, final 
javax.servlet.ServletResponse response) throws javax.servlet.ServletException, 
IOException {
         try {
-            
dispatcher.forward(org.apache.felix.http.base.internal.jakartawrappers.ServletRequestWrapper.getWrapper(request),
-                    
org.apache.felix.http.base.internal.jakartawrappers.ServletResponseWrapper.getWrapper(response));
+            
dispatcher.forward(org.apache.felix.http.jakartawrappers.ServletRequestWrapper.getWrapper(request),
+                    
org.apache.felix.http.jakartawrappers.ServletResponseWrapper.getWrapper(response));
         } catch (final ServletException e) {
             throw ServletExceptionUtil.getServletException(e);
         }
@@ -51,8 +51,8 @@ public class RequestDispatcherWrapper implements 
javax.servlet.RequestDispatcher
     @Override
     public void include(final javax.servlet.ServletRequest request, final 
javax.servlet.ServletResponse response) throws javax.servlet.ServletException, 
IOException {
         try {
-            
dispatcher.include(org.apache.felix.http.base.internal.jakartawrappers.ServletRequestWrapper.getWrapper(request),
-                    
org.apache.felix.http.base.internal.jakartawrappers.ServletResponseWrapper.getWrapper(response));
+            
dispatcher.include(org.apache.felix.http.jakartawrappers.ServletRequestWrapper.getWrapper(request),
+                    
org.apache.felix.http.jakartawrappers.ServletResponseWrapper.getWrapper(response));
         } catch (final ServletException e) {
             throw ServletExceptionUtil.getServletException(e);
         }
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/ServletConfigWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/ServletConfigWrapper.java
similarity index 96%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/ServletConfigWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/ServletConfigWrapper.java
index ab428f887c..3a7c916caf 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/ServletConfigWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/ServletConfigWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.javaxwrappers;
+package org.apache.felix.http.javaxwrappers;
 
 import java.util.Enumeration;
 
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/ServletContextWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/ServletContextWrapper.java
similarity index 99%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/ServletContextWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/ServletContextWrapper.java
index 199c9f6e5d..8ce5e9957b 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/ServletContextWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/ServletContextWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.javaxwrappers;
+package org.apache.felix.http.javaxwrappers;
 
 import java.io.InputStream;
 import java.net.MalformedURLException;
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/ServletExceptionUtil.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/ServletExceptionUtil.java
similarity index 81%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/ServletExceptionUtil.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/ServletExceptionUtil.java
index ad7ecb7de3..9b9e4604e4 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/ServletExceptionUtil.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/ServletExceptionUtil.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.javaxwrappers;
+package org.apache.felix.http.javaxwrappers;
 
 import org.jetbrains.annotations.NotNull;
 
@@ -31,8 +31,8 @@ public class ServletExceptionUtil {
      * @return The exception
      */
     public static javax.servlet.ServletException getServletException(@NotNull 
final ServletException e) {
-        if ( e instanceof 
org.apache.felix.http.base.internal.jakartawrappers.ServletExceptionWrapper) {
-            return 
((org.apache.felix.http.base.internal.jakartawrappers.ServletExceptionWrapper)e).getException();
+        if ( e instanceof 
org.apache.felix.http.jakartawrappers.ServletExceptionWrapper) {
+            return 
((org.apache.felix.http.jakartawrappers.ServletExceptionWrapper)e).getException();
         }
         return new ServletExceptionWrapper(e);
     }
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/ServletExceptionWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/ServletExceptionWrapper.java
similarity index 96%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/ServletExceptionWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/ServletExceptionWrapper.java
index 5ec1a317db..bf2478bc1f 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/ServletExceptionWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/ServletExceptionWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.javaxwrappers;
+package org.apache.felix.http.javaxwrappers;
 
 import org.jetbrains.annotations.NotNull;
 
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/ServletInputStreamWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/ServletInputStreamWrapper.java
similarity index 96%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/ServletInputStreamWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/ServletInputStreamWrapper.java
index 45356cdd96..36de96bb10 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/ServletInputStreamWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/ServletInputStreamWrapper.java
@@ -14,12 +14,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.javaxwrappers;
+package org.apache.felix.http.javaxwrappers;
 
 import java.io.IOException;
 import java.io.OutputStream;
 
-import org.apache.felix.http.base.internal.jakartawrappers.ReadListenerWrapper;
+import org.apache.felix.http.jakartawrappers.ReadListenerWrapper;
 import org.jetbrains.annotations.NotNull;
 
 import jakarta.servlet.ServletInputStream;
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/ServletOutputStreamWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/ServletOutputStreamWrapper.java
similarity index 96%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/ServletOutputStreamWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/ServletOutputStreamWrapper.java
index 127a3826e0..0e91e34c8e 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/ServletOutputStreamWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/ServletOutputStreamWrapper.java
@@ -14,11 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.javaxwrappers;
+package org.apache.felix.http.javaxwrappers;
 
 import java.io.IOException;
 
-import 
org.apache.felix.http.base.internal.jakartawrappers.WriteListenerWrapper;
+import org.apache.felix.http.jakartawrappers.WriteListenerWrapper;
 import org.jetbrains.annotations.NotNull;
 
 import jakarta.servlet.ServletOutputStream;
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/ServletRegistrationWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/ServletRegistrationWrapper.java
similarity index 97%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/ServletRegistrationWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/ServletRegistrationWrapper.java
index f107f8f4a8..ff1496b8d0 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/ServletRegistrationWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/ServletRegistrationWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.javaxwrappers;
+package org.apache.felix.http.javaxwrappers;
 
 import java.util.Collection;
 import java.util.Map;
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/ServletRequestWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/ServletRequestWrapper.java
similarity index 94%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/ServletRequestWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/ServletRequestWrapper.java
index 73a2672cf4..8e9bdab978 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/ServletRequestWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/ServletRequestWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.javaxwrappers;
+package org.apache.felix.http.javaxwrappers;
 
 import static jakarta.servlet.AsyncContext.ASYNC_CONTEXT_PATH;
 import static jakarta.servlet.AsyncContext.ASYNC_MAPPING;
@@ -48,7 +48,7 @@ import java.util.Enumeration;
 import java.util.Locale;
 import java.util.Map;
 
-import 
org.apache.felix.http.base.internal.jakartawrappers.ServletResponseWrapper;
+import org.apache.felix.http.jakartawrappers.ServletResponseWrapper;
 import org.jetbrains.annotations.NotNull;
 
 import jakarta.servlet.RequestDispatcher;
@@ -69,8 +69,8 @@ public class ServletRequestWrapper implements 
javax.servlet.ServletRequest {
      * @return The wrapped request
      */
     public static javax.servlet.ServletRequest getWrapper(final ServletRequest 
r) {
-        if ( r instanceof 
org.apache.felix.http.base.internal.jakartawrappers.ServletRequestWrapper) {
-            return 
((org.apache.felix.http.base.internal.jakartawrappers.ServletRequestWrapper)r).getRequest();
+        if ( r instanceof 
org.apache.felix.http.jakartawrappers.ServletRequestWrapper) {
+            return 
((org.apache.felix.http.jakartawrappers.ServletRequestWrapper)r).getRequest();
         }
         if ( r instanceof HttpServletRequest ) {
             return new HttpServletRequestWrapper((HttpServletRequest)r);
@@ -95,8 +95,8 @@ public class ServletRequestWrapper implements 
javax.servlet.ServletRequest {
     }
 
     private Object wrapHttpServletMapping(final Object value) {
-        if ( value instanceof 
org.apache.felix.http.base.internal.jakartawrappers.HttpServletMappingWrapper ) 
{
-            return 
((org.apache.felix.http.base.internal.jakartawrappers.HttpServletMappingWrapper)value).getMapping();
+        if ( value instanceof 
org.apache.felix.http.jakartawrappers.HttpServletMappingWrapper ) {
+            return 
((org.apache.felix.http.jakartawrappers.HttpServletMappingWrapper)value).getMapping();
         }
         if ( value instanceof HttpServletMapping ) {
             return new HttpServletMappingWrapper((HttpServletMapping)value);
@@ -344,7 +344,7 @@ public class ServletRequestWrapper implements 
javax.servlet.ServletRequest {
     @Override
     public javax.servlet.AsyncContext startAsync(final 
javax.servlet.ServletRequest servletRequest, final 
javax.servlet.ServletResponse servletResponse)
             throws IllegalStateException {
-        return new 
AsyncContextWrapper(this.request.startAsync(org.apache.felix.http.base.internal.jakartawrappers.ServletRequestWrapper.getWrapper(servletRequest),
+        return new 
AsyncContextWrapper(this.request.startAsync(org.apache.felix.http.jakartawrappers.ServletRequestWrapper.getWrapper(servletRequest),
                 ServletResponseWrapper.getWrapper(servletResponse)));
     }
 
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/ServletResponseWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/ServletResponseWrapper.java
similarity index 93%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/ServletResponseWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/ServletResponseWrapper.java
index 638c802223..0caf362c0b 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/ServletResponseWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/ServletResponseWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.javaxwrappers;
+package org.apache.felix.http.javaxwrappers;
 
 import java.io.IOException;
 import java.io.PrintWriter;
@@ -38,8 +38,8 @@ public class ServletResponseWrapper implements 
javax.servlet.ServletResponse {
      * @return Wrapped response
      */
     public static javax.servlet.ServletResponse getWrapper(final 
ServletResponse r) {
-        if ( r instanceof 
org.apache.felix.http.base.internal.jakartawrappers.ServletResponseWrapper) {
-            return 
((org.apache.felix.http.base.internal.jakartawrappers.ServletResponseWrapper)r).getResponse();
+        if ( r instanceof 
org.apache.felix.http.jakartawrappers.ServletResponseWrapper) {
+            return 
((org.apache.felix.http.jakartawrappers.ServletResponseWrapper)r).getResponse();
         }
         if ( r instanceof HttpServletResponse ) {
             return new HttpServletResponseWrapper((HttpServletResponse)r);
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/ServletWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/ServletWrapper.java
similarity index 85%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/ServletWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/ServletWrapper.java
index 3689668908..f5f878e151 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/ServletWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/ServletWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.javaxwrappers;
+package org.apache.felix.http.javaxwrappers;
 
 import java.io.IOException;
 
@@ -41,7 +41,7 @@ public class ServletWrapper implements javax.servlet.Servlet {
     @Override
     public void init(final javax.servlet.ServletConfig config) throws 
javax.servlet.ServletException {
         try {
-            servlet.init(new 
org.apache.felix.http.base.internal.jakartawrappers.ServletConfigWrapper(config));
+            servlet.init(new 
org.apache.felix.http.jakartawrappers.ServletConfigWrapper(config));
         } catch (final ServletException e) {
             throw ServletExceptionUtil.getServletException(e);
         }
@@ -56,8 +56,8 @@ public class ServletWrapper implements javax.servlet.Servlet {
     public void service(final javax.servlet.ServletRequest req, final 
javax.servlet.ServletResponse res)
             throws javax.servlet.ServletException, IOException {
         try {
-            
servlet.service(org.apache.felix.http.base.internal.jakartawrappers.ServletRequestWrapper.getWrapper(req),
-                    
org.apache.felix.http.base.internal.jakartawrappers.ServletResponseWrapper.getWrapper(res));
+            
servlet.service(org.apache.felix.http.jakartawrappers.ServletRequestWrapper.getWrapper(req),
+                    
org.apache.felix.http.jakartawrappers.ServletResponseWrapper.getWrapper(res));
         } catch (final ServletException e) {
             throw ServletExceptionUtil.getServletException(e);
         }
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/SessionCookieConfigWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/SessionCookieConfigWrapper.java
similarity index 97%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/SessionCookieConfigWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/SessionCookieConfigWrapper.java
index 8ec4095539..e8a8ab3419 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/SessionCookieConfigWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/SessionCookieConfigWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.javaxwrappers;
+package org.apache.felix.http.javaxwrappers;
 
 import org.jetbrains.annotations.NotNull;
 
diff --git 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/WriteListenerWrapper.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/WriteListenerWrapper.java
similarity index 96%
rename from 
http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/WriteListenerWrapper.java
rename to 
http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/WriteListenerWrapper.java
index 748e15d5c0..a92fe04620 100644
--- 
a/http/base/src/main/java/org/apache/felix/http/base/internal/javaxwrappers/WriteListenerWrapper.java
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/WriteListenerWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.felix.http.base.internal.javaxwrappers;
+package org.apache.felix.http.javaxwrappers;
 
 import java.io.IOException;
 
diff --git 
a/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/package-info.java
 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/package-info.java
new file mode 100644
index 0000000000..ad7e49530c
--- /dev/null
+++ 
b/http/wrappers/src/main/java/org/apache/felix/http/javaxwrappers/package-info.java
@@ -0,0 +1,21 @@
+/*
+ * 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.
+ */
[email protected]("1.0.0")
+package org.apache.felix.http.javaxwrappers;
+

Reply via email to