From c86c80119bbdf43509feb49f15d077ccc2ed4d90 Mon Sep 17 00:00:00 2001 From: OleksandrZharov Date: Fri, 16 Sep 2022 11:18:26 +0200 Subject: [PATCH] Ensure patterns are absolute The contract in web-api does not spell out the requirement for patterns to conform to servlet spec. Jetty implementation needs to ensure they start with a '/' just like the OSGi implementation does. JIRA: AAA-232 Change-Id: I34879163596872e4e497a13c3b60111a317feadd Signed-off-by: OleksandrZharov Signed-off-by: Robert Varga --- .../opendaylight/aaa/web/jetty/JettyWebServer.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/web/impl-jetty/src/main/java/org/opendaylight/aaa/web/jetty/JettyWebServer.java b/web/impl-jetty/src/main/java/org/opendaylight/aaa/web/jetty/JettyWebServer.java index 137855c87..bd811c265 100644 --- a/web/impl-jetty/src/main/java/org/opendaylight/aaa/web/jetty/JettyWebServer.java +++ b/web/impl-jetty/src/main/java/org/opendaylight/aaa/web/jetty/JettyWebServer.java @@ -92,8 +92,7 @@ public class JettyWebServer implements WebServer { @Override public synchronized Registration registerWebContext(final WebContext webContext) throws ServletException { - String contextPathWithSlashPrefix = webContext.contextPath().startsWith("/") - ? webContext.contextPath() : "/" + webContext.contextPath(); + String contextPathWithSlashPrefix = ensureAbsolutePath(webContext.contextPath()); ServletContextHandler handler = new ServletContextHandler(contextHandlerCollection, contextPathWithSlashPrefix, webContext.supportsSessions() ? ServletContextHandler.SESSIONS : ServletContextHandler.NO_SESSIONS); @@ -112,7 +111,8 @@ public class JettyWebServer implements WebServer { FilterHolder filterHolder = new FilterHolder(filter.filter()); filterHolder.setInitParameters(filter.initParams()); filter.urlPatterns().forEach( - urlPattern -> handler.addFilter(filterHolder, urlPattern, EnumSet.allOf(DispatcherType.class)) + urlPattern -> handler.addFilter(filterHolder, ensureAbsolutePath(urlPattern), + EnumSet.allOf(DispatcherType.class)) ); }); @@ -124,7 +124,7 @@ public class JettyWebServer implements WebServer { // AKA 1 servletHolder.setInitOrder(1); servlet.urlPatterns().forEach( - urlPattern -> handler.addServlet(servletHolder, urlPattern) + urlPattern -> handler.addServlet(servletHolder, ensureAbsolutePath(urlPattern)) ); }); @@ -155,4 +155,8 @@ public class JettyWebServer implements WebServer { } contextHandlerCollection.removeHandler(handler); } + + private static String ensureAbsolutePath(final String path) { + return path.startsWith("/") ? path : "/" + path; + } } -- 2.36.6