1
1
/*
2
- * Copyright 2002-2018 the original author or authors.
2
+ * Copyright 2002-2025 the original author or authors.
3
3
*
4
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
5
* you may not use this file except in compliance with the License.
18
18
19
19
import reactor .core .publisher .Mono ;
20
20
21
+ import org .springframework .context .ApplicationContext ;
21
22
import org .springframework .http .codec .ServerCodecConfigurer ;
22
23
import org .springframework .lang .Nullable ;
23
24
import org .springframework .mock .http .server .reactive .MockServerHttpRequest ;
39
40
*/
40
41
public final class MockServerWebExchange extends DefaultServerWebExchange {
41
42
42
- private MockServerWebExchange (MockServerHttpRequest request , WebSessionManager sessionManager ) {
43
- super (request , new MockServerHttpResponse (), sessionManager ,
44
- ServerCodecConfigurer .create (), new AcceptHeaderLocaleContextResolver ());
43
+
44
+ private MockServerWebExchange (
45
+ MockServerHttpRequest request , @ Nullable WebSessionManager sessionManager ,
46
+ @ Nullable ApplicationContext applicationContext ) {
47
+
48
+ super (request , new MockServerHttpResponse (),
49
+ sessionManager != null ? sessionManager : new DefaultWebSessionManager (),
50
+ ServerCodecConfigurer .create (), new AcceptHeaderLocaleContextResolver (),
51
+ applicationContext );
45
52
}
46
53
47
54
@@ -101,6 +108,9 @@ public static class Builder {
101
108
@ Nullable
102
109
private WebSessionManager sessionManager ;
103
110
111
+ @ Nullable
112
+ private ApplicationContext applicationContext ;
113
+
104
114
public Builder (MockServerHttpRequest request ) {
105
115
this .request = request ;
106
116
}
@@ -127,12 +137,21 @@ public Builder sessionManager(WebSessionManager sessionManager) {
127
137
return this ;
128
138
}
129
139
140
+ /**
141
+ * Provide the {@code ApplicationContext} to expose through the exchange.
142
+ * @param applicationContext the context to use
143
+ * @since 6.2.5
144
+ */
145
+ public Builder applicationContext (ApplicationContext applicationContext ) {
146
+ this .applicationContext = applicationContext ;
147
+ return this ;
148
+ }
149
+
130
150
/**
131
151
* Build the {@code MockServerWebExchange} instance.
132
152
*/
133
153
public MockServerWebExchange build () {
134
- return new MockServerWebExchange (this .request ,
135
- this .sessionManager != null ? this .sessionManager : new DefaultWebSessionManager ());
154
+ return new MockServerWebExchange (this .request , this .sessionManager , this .applicationContext );
136
155
}
137
156
}
138
157
0 commit comments