Fix matching against context with implicit server namespace

Closes gh-44188
This commit is contained in:
Andy Wilkinson
2025-02-10 09:02:49 +00:00
parent fafcfb41c8
commit 3603cb4ad9
2 changed files with 17 additions and 8 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2012-2024 the original author or authors.
* Copyright 2012-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -184,8 +184,14 @@ public final class EndpointRequest {
protected final boolean hasWebServerNamespace(ApplicationContext applicationContext,
WebServerNamespace webServerNamespace) {
return WebServerApplicationContext.hasServerNamespace(applicationContext, webServerNamespace.getValue())
|| (webServerNamespace.equals(WebServerNamespace.SERVER)
&& !(applicationContext instanceof WebServerApplicationContext));
|| hasImplicitServerNamespace(applicationContext, webServerNamespace);
}
private boolean hasImplicitServerNamespace(ApplicationContext applicationContext,
WebServerNamespace webServerNamespace) {
return WebServerNamespace.SERVER.equals(webServerNamespace)
&& WebServerApplicationContext.getServerNamespace(applicationContext) == null
&& applicationContext.getParent() == null;
}
@Override

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2012-2024 the original author or authors.
* Copyright 2012-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -340,9 +340,12 @@ class EndpointRequestTests {
}
private RequestMatcherAssert assertMatcher(RequestMatcher matcher, PathMappedEndpoints pathMappedEndpoints,
RequestMatcherProvider matcherProvider, WebServerNamespace webServerNamespace) {
StaticWebApplicationContext context = (webServerNamespace != null)
? new NamedStaticWebApplicationContext(webServerNamespace) : new StaticWebApplicationContext();
RequestMatcherProvider matcherProvider, WebServerNamespace namespace) {
StaticWebApplicationContext context = new StaticWebApplicationContext();
if (namespace != null && !WebServerNamespace.SERVER.equals(namespace)) {
NamedStaticWebApplicationContext parentContext = new NamedStaticWebApplicationContext(namespace);
context.setParent(parentContext);
}
context.registerBean(WebEndpointProperties.class);
if (pathMappedEndpoints != null) {
context.registerBean(PathMappedEndpoints.class, () -> pathMappedEndpoints);
@@ -373,7 +376,7 @@ class EndpointRequestTests {
@Override
public String getServerNamespace() {
return this.webServerNamespace.getValue();
return (this.webServerNamespace != null) ? this.webServerNamespace.getValue() : null;
}
}