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 '")
