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

kwin pushed a commit to branch feature/expose-wrapped-servlet-in-webconsole
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-servlets-resolver.git

commit 39df4a336cbbf7281df969130c4d550dfb384126
Author: Konrad Windszus <[email protected]>
AuthorDate: Tue Feb 3 14:05:43 2026 +0100

    SLING-13091 Expose information about wrapped servlets
---
 .../internal/console/WebConsolePlugin.java         | 22 ++++++++++++++++++++--
 1 file changed, 20 insertions(+), 2 deletions(-)

diff --git 
a/src/main/java/org/apache/sling/servlets/resolver/internal/console/WebConsolePlugin.java
 
b/src/main/java/org/apache/sling/servlets/resolver/internal/console/WebConsolePlugin.java
index a1d86e0..69e9fce 100644
--- 
a/src/main/java/org/apache/sling/servlets/resolver/internal/console/WebConsolePlugin.java
+++ 
b/src/main/java/org/apache/sling/servlets/resolver/internal/console/WebConsolePlugin.java
@@ -48,6 +48,7 @@ import org.apache.sling.api.servlets.JakartaOptingServlet;
 import org.apache.sling.api.uri.SlingUriBuilder;
 import org.apache.sling.serviceusermapping.ServiceUserMapped;
 import org.apache.sling.servlets.resolver.internal.ResolverConfig;
+import org.apache.sling.servlets.resolver.internal.ServletWrapperUtil;
 import org.apache.sling.servlets.resolver.internal.SlingServletResolver;
 import org.apache.sling.servlets.resolver.internal.bundle.BundledScriptServlet;
 import org.apache.sling.servlets.resolver.internal.helper.ResourceCollector;
@@ -418,6 +419,7 @@ public class WebConsolePlugin extends HttpServlet {
     private void outputHTMLServlets(final PrintWriter pw, final 
Iterator<Resource> iterator) {
         while (iterator.hasNext()) {
             Resource candidateResource = iterator.next();
+            // is it wrapped resource?
             Servlet candidate = candidateResource.adaptTo(Servlet.class);
             if (candidate != null) {
                 final boolean allowed =
@@ -450,13 +452,29 @@ public class WebConsolePlugin extends HttpServlet {
                 details.append(" (Bundled Script)");
             } else {
                 final boolean isOptingServlet = servlet instanceof 
JakartaOptingServlet;
-                details.append(Encode.forHtml(servlet.getClass().getName()));
+                final Class<?> servletClass;
+                javax.servlet.Servlet javaxServlet = null;
+                ;
+                if (servlet instanceof 
ServletWrapperUtil.JakartaScriptServletWrapper wrapper) {
+                    javaxServlet = wrapper.servlet;
+
+                } else if (servlet instanceof 
ServletWrapperUtil.JakartaScriptOptingServletWrapper wrapper) {
+                    javaxServlet = wrapper.servlet;
+                }
+                if (javaxServlet != null) {
+                    servletClass = javaxServlet.getClass();
+                    details.append("Jakarta wrapper for ");
+                } else {
+                    servletClass = servlet.getClass();
+                }
+                details.append(Encode.forHtml(servletClass.getName()));
                 if (isOptingServlet) {
                     details.append(" (OptingServlet)");
                 } else {
                     details.append(" (Servlet)");
                 }
-                bundle = FrameworkUtil.getBundle(servlet.getClass());
+
+                bundle = FrameworkUtil.getBundle(servletClass);
             }
             if (bundle != null) {
                 details.append(" in bundle '")

Reply via email to