Skip to content

Commit 7b0ba01

Browse files
rwinchrstoyanchev
authored andcommitted
Structural Fixes
1 parent 3774e9b commit 7b0ba01

21 files changed

+103
-142
lines changed

framework-docs/modules/ROOT/nav.adoc

Lines changed: 46 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -158,31 +158,31 @@
158158
**** xref:testing/spring-mvc-test-framework/server-htmlunit/geb.adoc[]
159159
** xref:testing/spring-mvc-test-client.adoc[]
160160
** xref:testing/appendix.adoc[]
161-
** xref:testing/annotations.adoc[]
162-
*** xref:testing/annotations/integration-standard.adoc[]
163-
*** xref:testing/annotations/integration-spring.adoc[]
164-
**** xref:testing/annotations/integration-spring/annotation-bootstrapwith.adoc[]
165-
**** xref:testing/annotations/integration-spring/annotation-contextconfiguration.adoc[]
166-
**** xref:testing/annotations/integration-spring/annotation-webappconfiguration.adoc[]
167-
**** xref:testing/annotations/integration-spring/annotation-contexthierarchy.adoc[]
168-
**** xref:testing/annotations/integration-spring/annotation-activeprofiles.adoc[]
169-
**** xref:testing/annotations/integration-spring/annotation-testpropertysource.adoc[]
170-
**** xref:testing/annotations/integration-spring/annotation-dynamicpropertysource.adoc[]
171-
**** xref:testing/annotations/integration-spring/annotation-dirtiescontext.adoc[]
172-
**** xref:testing/annotations/integration-spring/annotation-testexecutionlisteners.adoc[]
173-
**** xref:testing/annotations/integration-spring/annotation-recordapplicationevents.adoc[]
174-
**** xref:testing/annotations/integration-spring/annotation-commit.adoc[]
175-
**** xref:testing/annotations/integration-spring/annotation-rollback.adoc[]
176-
**** xref:testing/annotations/integration-spring/annotation-beforetransaction.adoc[]
177-
**** xref:testing/annotations/integration-spring/annotation-aftertransaction.adoc[]
178-
**** xref:testing/annotations/integration-spring/annotation-sql.adoc[]
179-
**** xref:testing/annotations/integration-spring/annotation-sqlconfig.adoc[]
180-
**** xref:testing/annotations/integration-spring/annotation-sqlmergemode.adoc[]
181-
**** xref:testing/annotations/integration-spring/annotation-sqlgroup.adoc[]
182-
*** xref:testing/annotations/integration-junit4.adoc[]
183-
*** xref:testing/annotations/integration-junit-jupiter.adoc[]
184-
*** xref:testing/annotations/integration-meta.adoc[]
185-
** xref:testing/resources.adoc[]
161+
*** xref:testing/annotations.adoc[]
162+
**** xref:testing/annotations/integration-standard.adoc[]
163+
**** xref:testing/annotations/integration-spring.adoc[]
164+
***** xref:testing/annotations/integration-spring/annotation-bootstrapwith.adoc[]
165+
***** xref:testing/annotations/integration-spring/annotation-contextconfiguration.adoc[]
166+
***** xref:testing/annotations/integration-spring/annotation-webappconfiguration.adoc[]
167+
***** xref:testing/annotations/integration-spring/annotation-contexthierarchy.adoc[]
168+
***** xref:testing/annotations/integration-spring/annotation-activeprofiles.adoc[]
169+
***** xref:testing/annotations/integration-spring/annotation-testpropertysource.adoc[]
170+
***** xref:testing/annotations/integration-spring/annotation-dynamicpropertysource.adoc[]
171+
***** xref:testing/annotations/integration-spring/annotation-dirtiescontext.adoc[]
172+
***** xref:testing/annotations/integration-spring/annotation-testexecutionlisteners.adoc[]
173+
***** xref:testing/annotations/integration-spring/annotation-recordapplicationevents.adoc[]
174+
***** xref:testing/annotations/integration-spring/annotation-commit.adoc[]
175+
***** xref:testing/annotations/integration-spring/annotation-rollback.adoc[]
176+
***** xref:testing/annotations/integration-spring/annotation-beforetransaction.adoc[]
177+
***** xref:testing/annotations/integration-spring/annotation-aftertransaction.adoc[]
178+
***** xref:testing/annotations/integration-spring/annotation-sql.adoc[]
179+
***** xref:testing/annotations/integration-spring/annotation-sqlconfig.adoc[]
180+
***** xref:testing/annotations/integration-spring/annotation-sqlmergemode.adoc[]
181+
***** xref:testing/annotations/integration-spring/annotation-sqlgroup.adoc[]
182+
**** xref:testing/annotations/integration-junit4.adoc[]
183+
**** xref:testing/annotations/integration-junit-jupiter.adoc[]
184+
**** xref:testing/annotations/integration-meta.adoc[]
185+
*** xref:testing/resources.adoc[]
186186
* xref:data-access.adoc[]
187187
** xref:data-access/transaction.adoc[]
188188
*** xref:data-access/transaction/motivation.adoc[]
@@ -268,11 +268,24 @@
268268
**** xref:web/webmvc/mvc-controller/ann-initbinder.adoc[]
269269
**** xref:web/webmvc/mvc-controller/ann-exceptionhandler.adoc[]
270270
**** xref:web/webmvc/mvc-controller/ann-advice.adoc[]
271+
*** xref:web/webmvc-functional.adoc[]
271272
*** xref:web/webmvc/mvc-uri-building.adoc[]
272273
*** xref:web/webmvc/mvc-ann-async.adoc[]
274+
*** xref:web/webmvc-cors.adoc[]
273275
*** xref:web/webmvc/mvc-ann-rest-exceptions.adoc[]
274276
*** xref:web/webmvc/mvc-security.adoc[]
275277
*** xref:web/webmvc/mvc-caching.adoc[]
278+
*** xref:web/webmvc-view.adoc[]
279+
**** xref:web/webmvc-view/mvc-thymeleaf.adoc[]
280+
**** xref:web/webmvc-view/mvc-freemarker.adoc[]
281+
**** xref:web/webmvc-view/mvc-groovymarkup.adoc[]
282+
**** xref:web/webmvc-view/mvc-script.adoc[]
283+
**** xref:web/webmvc-view/mvc-jsp.adoc[]
284+
**** xref:web/webmvc-view/mvc-feeds.adoc[]
285+
**** xref:web/webmvc-view/mvc-document.adoc[]
286+
**** xref:web/webmvc-view/mvc-jackson.adoc[]
287+
**** xref:web/webmvc-view/mvc-xml-marshalling.adoc[]
288+
**** xref:web/webmvc-view/mvc-xslt.adoc[]
276289
*** xref:web/webmvc/mvc-config.adoc[]
277290
**** xref:web/webmvc/mvc-config/enable.adoc[]
278291
**** xref:web/webmvc/mvc-config/customize.adoc[]
@@ -289,21 +302,6 @@
289302
**** xref:web/webmvc/mvc-config/advanced-java.adoc[]
290303
**** xref:web/webmvc/mvc-config/advanced-xml.adoc[]
291304
*** xref:web/webmvc/mvc-http2.adoc[]
292-
** xref:web/web-data-binding-model-design.adoc[]
293-
** xref:web/webmvc-functional.adoc[]
294-
** xref:web/web-uris.adoc[]
295-
** xref:web/webmvc-cors.adoc[]
296-
** xref:web/webmvc-view.adoc[]
297-
*** xref:web/webmvc-view/mvc-thymeleaf.adoc[]
298-
*** xref:web/webmvc-view/mvc-freemarker.adoc[]
299-
*** xref:web/webmvc-view/mvc-groovymarkup.adoc[]
300-
*** xref:web/webmvc-view/mvc-script.adoc[]
301-
*** xref:web/webmvc-view/mvc-jsp.adoc[]
302-
*** xref:web/webmvc-view/mvc-feeds.adoc[]
303-
*** xref:web/webmvc-view/mvc-document.adoc[]
304-
*** xref:web/webmvc-view/mvc-jackson.adoc[]
305-
*** xref:web/webmvc-view/mvc-xml-marshalling.adoc[]
306-
*** xref:web/webmvc-view/mvc-xslt.adoc[]
307305
** xref:web/webmvc-client.adoc[]
308306
** xref:web/webmvc-test.adoc[]
309307
** xref:web/websocket.adoc[]
@@ -333,7 +331,6 @@
333331
**** xref:web/websocket/stomp/configuration-performance.adoc[]
334332
**** xref:web/websocket/stomp/stats.adoc[]
335333
**** xref:web/websocket/stomp/testing.adoc[]
336-
** xref:web/websocket-intro.adoc[]
337334
** xref:web/integration.adoc[]
338335
* xref:web-reactive.adoc[]
339336
** xref:web/webflux.adoc[]
@@ -365,15 +362,15 @@
365362
**** xref:web/webflux/controller/ann-initbinder.adoc[]
366363
**** xref:web/webflux/controller/ann-exceptions.adoc[]
367364
**** xref:web/webflux/controller/ann-advice.adoc[]
365+
*** xref:web/webflux-functional.adoc[]
368366
*** xref:web/webflux/uri-building.adoc[]
367+
*** xref:web/webflux-cors.adoc[]
369368
*** xref:web/webflux/ann-rest-exceptions.adoc[]
370369
*** xref:web/webflux/security.adoc[]
371370
*** xref:web/webflux/caching.adoc[]
371+
*** xref:web/webflux-view.adoc[]
372372
*** xref:web/webflux/config.adoc[]
373373
*** xref:web/webflux/http2.adoc[]
374-
** xref:web/webflux-functional.adoc[]
375-
** xref:web/webflux-cors.adoc[]
376-
** xref:web/webflux-view.adoc[]
377374
** xref:web/webflux-webclient.adoc[]
378375
*** xref:web/webflux-webclient/client-builder.adoc[]
379376
*** xref:web/webflux-webclient/client-retrieve.adoc[]
@@ -384,8 +381,11 @@
384381
*** xref:web/webflux-webclient/client-context.adoc[]
385382
*** xref:web/webflux-webclient/client-synchronous.adoc[]
386383
*** xref:web/webflux-webclient/client-testing.adoc[]
384+
** xref:web/webflux-http-interface-client.adoc[]
387385
** xref:web/webflux-websocket.adoc[]
388-
* xref:rsocket.adoc[]
386+
** xref:web/webflux-test.adoc[]
387+
** xref:rsocket.adoc[]
388+
** xref:web/webflux-reactive-libraries.adoc[]
389389
* xref:integration.adoc[]
390390
** xref:integration/rest-clients.adoc[]
391391
** xref:integration/jms.adoc[]
@@ -431,3 +431,4 @@
431431
** xref:languages/groovy.adoc[]
432432
** xref:languages/dynamic.adoc[]
433433
* xref:appendix.adoc[]
434+
* https://github.com/spring-projects/spring-framework/wiki[Wiki]

framework-docs/modules/ROOT/pages/data-access/oxm.adoc

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -558,6 +558,3 @@ Therefore, it has limited namespace support. As a result, it is rather unsuitabl
558558
within Web Services.
559559

560560

561-
562-
563-
include:../:data-access/appendix.adoc[leveloffset=+1]

framework-docs/modules/ROOT/pages/languages/kotlin/coroutines.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ Version `1.4.0` and above are supported.
3939

4040

4141

42-
[[how-reactive-translates-to-coroutines?]]
42+
[[how-reactive-translates-to-coroutines]]
4343
== How Reactive translates to Coroutines?
4444

4545
For return values, the translation from Reactive to Coroutines APIs is the following:

framework-docs/modules/ROOT/pages/web-reactive.adoc

Lines changed: 0 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -9,65 +9,3 @@ the reactive xref:web/webflux-webclient.adoc[`WebClient`], support for xref:web-
99
and xref:web-reactive.adoc#webflux-reactive-libraries[reactive libraries]. For Servlet-stack web applications,
1010
see xref:web.adoc[Web on Servlet Stack].
1111

12-
13-
14-
15-
[[webflux-http-interface-client]]
16-
== HTTP Interface Client
17-
18-
The Spring Frameworks lets you define an HTTP service as a Java interface with HTTP
19-
exchange methods. You can then generate a proxy that implements this interface and
20-
performs the exchanges. This helps to simplify HTTP remote access and provides additional
21-
flexibility for to choose an API style such as synchronous or reactive.
22-
23-
See xref:integration/rest-clients.adoc#rest-http-interface[REST Endpoints] for details.
24-
25-
26-
27-
28-
29-
[[webflux-test]]
30-
== Testing
31-
[.small]#xref:web/webmvc-test.adoc[Same in Spring MVC]#
32-
33-
The `spring-test` module provides mock implementations of `ServerHttpRequest`,
34-
`ServerHttpResponse`, and `ServerWebExchange`.
35-
See xref:testing/unit.adoc#mock-objects-web-reactive[Spring Web Reactive] for a
36-
discussion of mock objects.
37-
38-
xref:testing/webtestclient.adoc[`WebTestClient`] builds on these mock request and
39-
response objects to provide support for testing WebFlux applications without an HTTP
40-
server. You can use the `WebTestClient` for end-to-end integration tests, too.
41-
42-
43-
44-
45-
[[webflux-reactive-libraries]]
46-
== Reactive Libraries
47-
48-
`spring-webflux` depends on `reactor-core` and uses it internally to compose asynchronous
49-
logic and to provide Reactive Streams support. Generally, WebFlux APIs return `Flux` or
50-
`Mono` (since those are used internally) and leniently accept any Reactive Streams
51-
`Publisher` implementation as input. The use of `Flux` versus `Mono` is important, because
52-
it helps to express cardinality -- for example, whether a single or multiple asynchronous
53-
values are expected, and that can be essential for making decisions (for example, when
54-
encoding or decoding HTTP messages).
55-
56-
For annotated controllers, WebFlux transparently adapts to the reactive library chosen by
57-
the application. This is done with the help of the
58-
{api-spring-framework}/core/ReactiveAdapterRegistry.html[`ReactiveAdapterRegistry`], which
59-
provides pluggable support for reactive library and other asynchronous types. The registry
60-
has built-in support for RxJava 3, Kotlin coroutines and SmallRye Mutiny, but you can
61-
register others, too.
62-
63-
For functional APIs (such as <<webflux-fn>>, the `WebClient`, and others), the general rules
64-
for WebFlux APIs apply -- `Flux` and `Mono` as return values and a Reactive Streams
65-
`Publisher` as input. When a `Publisher`, whether custom or from another reactive library,
66-
is provided, it can be treated only as a stream with unknown semantics (0..N). If, however,
67-
the semantics are known, you can wrap it with `Flux` or `Mono.from(Publisher)` instead
68-
of passing the raw `Publisher`.
69-
70-
For example, given a `Publisher` that is not a `Mono`, the Jackson JSON message writer
71-
expects multiple values. If the media type implies an infinite stream (for example,
72-
`application/json+stream`), values are written and flushed individually. Otherwise,
73-
values are buffered into a list and rendered as a JSON array.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
[[webflux-http-interface-client]]
2+
= HTTP Interface Client
3+
4+
The Spring Frameworks lets you define an HTTP service as a Java interface with HTTP
5+
exchange methods. You can then generate a proxy that implements this interface and
6+
performs the exchanges. This helps to simplify HTTP remote access and provides additional
7+
flexibility for to choose an API style such as synchronous or reactive.
8+
9+
See xref:integration/rest-clients.adoc#rest-http-interface[REST Endpoints] for details.
10+
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
[[webflux-reactive-libraries]]
2+
= Reactive Libraries
3+
4+
`spring-webflux` depends on `reactor-core` and uses it internally to compose asynchronous
5+
logic and to provide Reactive Streams support. Generally, WebFlux APIs return `Flux` or
6+
`Mono` (since those are used internally) and leniently accept any Reactive Streams
7+
`Publisher` implementation as input. The use of `Flux` versus `Mono` is important, because
8+
it helps to express cardinality -- for example, whether a single or multiple asynchronous
9+
values are expected, and that can be essential for making decisions (for example, when
10+
encoding or decoding HTTP messages).
11+
12+
For annotated controllers, WebFlux transparently adapts to the reactive library chosen by
13+
the application. This is done with the help of the
14+
{api-spring-framework}/core/ReactiveAdapterRegistry.html[`ReactiveAdapterRegistry`], which
15+
provides pluggable support for reactive library and other asynchronous types. The registry
16+
has built-in support for RxJava 3, Kotlin coroutines and SmallRye Mutiny, but you can
17+
register others, too.
18+
19+
For functional APIs (such as <<webflux-fn>>, the `WebClient`, and others), the general rules
20+
for WebFlux APIs apply -- `Flux` and `Mono` as return values and a Reactive Streams
21+
`Publisher` as input. When a `Publisher`, whether custom or from another reactive library,
22+
is provided, it can be treated only as a stream with unknown semantics (0..N). If, however,
23+
the semantics are known, you can wrap it with `Flux` or `Mono.from(Publisher)` instead
24+
of passing the raw `Publisher`.
25+
26+
For example, given a `Publisher` that is not a `Mono`, the Jackson JSON message writer
27+
expects multiple values. If the media type implies an infinite stream (for example,
28+
`application/json+stream`), values are written and flushed individually. Otherwise,
29+
values are buffered into a list and rendered as a JSON array.
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
[[webflux-test]]
2+
= Testing
3+
[.small]#xref:web/webmvc-test.adoc[Same in Spring MVC]#
4+
5+
The `spring-test` module provides mock implementations of `ServerHttpRequest`,
6+
`ServerHttpResponse`, and `ServerWebExchange`.
7+
See xref:testing/unit.adoc#mock-objects-web-reactive[Spring Web Reactive] for a
8+
discussion of mock objects.
9+
10+
xref:testing/webtestclient.adoc[`WebTestClient`] builds on these mock request and
11+
response objects to provide support for testing WebFlux applications without an HTTP
12+
server. You can use the `WebTestClient` for end-to-end integration tests, too.

framework-docs/modules/ROOT/pages/web/webflux-websocket.adoc

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,7 @@
55
This part of the reference documentation covers support for reactive-stack WebSocket
66
messaging.
77

8-
9-
10-
8+
include::partial$web/websocket-intro.adoc[leveloffset=+1]
119

1210
[[webflux-websocket-server]]
1311
== WebSocket API

framework-docs/modules/ROOT/pages/web/webflux/caching.adoc

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,3 @@ to 412 (PRECONDITION_FAILED) to prevent concurrent modification.
171171
You should serve static resources with a `Cache-Control` and conditional response headers
172172
for optimal performance. See the section on configuring xref:web/webflux/config.adoc#webflux-config-static-resources[Static Resources].
173173

174-
175-
include:../:webflux-view.adoc[leveloffset=+1]
176-
177-

framework-docs/modules/ROOT/pages/web/webflux/controller/ann-advice.adoc

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,3 @@ performance if used extensively. See the
6262
{api-spring-framework}/web/bind/annotation/ControllerAdvice.html[`@ControllerAdvice`]
6363
javadoc for more details.
6464

65-
include:../../:webflux-functional.adoc[leveloffset=+1]
66-
67-
68-
69-

0 commit comments

Comments
 (0)