Fix matching against context with implicit server namespace
Closes gh-44188
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user