diff --git a/build.gradle b/build.gradle
index ee3625b08b..a5581fd5a2 100644
--- a/build.gradle
+++ b/build.gradle
@@ -21,7 +21,7 @@ plugins {
id 'org.ajoberstar.grgit' version '4.1.1'
id 'io.spring.dependency-management' version '1.1.2'
id 'com.jfrog.artifactory' version '4.33.1' apply false
- id 'org.jetbrains.dokka' version "1.8.20"
+ id 'org.jetbrains.dokka' version '1.8.20'
id 'org.antora' version '1.0.0'
id 'io.spring.antora.generate-antora-yml' version '0.0.1'
}
@@ -288,7 +288,7 @@ configure(javaProjects) { subproject ->
ext.xLintArg = '-Xlint:all,-options,-processing'
[compileJava, compileTestJava]*.options*.compilerArgs = [xLintArg, '-parameters']
- task updateCopyrights {
+ tasks.register('updateCopyrights') {
onlyIf { !isCI }
inputs.files(modifiedFiles.map(files -> files.filter { f -> f.path.contains(subproject.name) }))
outputs.dir('build/classes')
@@ -338,7 +338,7 @@ configure(javaProjects) { subproject ->
}
}
- task testAll(type: Test, dependsOn: ['check'])
+ tasks.register('testAll', Test) { dependsOn['check'] }
gradle.taskGraph.whenReady { graph ->
if (graph.hasTask(testAll)) {
@@ -390,7 +390,7 @@ configure(javaProjects) { subproject ->
}
}
- task checkClasspathForConflicts {
+ tasks.register('checkClasspathForConflicts') {
onlyIf { isCI }
inputs.files(configurations.runtimeClasspath)
@@ -1170,7 +1170,7 @@ sonar {
}
}
-task api(type: Javadoc) {
+tasks.register('api', Javadoc) {
group = 'Documentation'
description = 'Generates aggregated Javadoc API documentation.'
title = "${rootProject.description} ${version} API"
@@ -1196,14 +1196,14 @@ task api(type: Javadoc) {
}
dokkaHtmlMultiModule {
- dependsOn api
+ dependsOn 'api'
moduleName.set('spring-integration')
outputDirectory.set(file("$buildDir/kdoc"))
}
apply from: "${rootDir}/gradle/docs.gradle"
-task schemaZip(type: Zip) {
+tasks.register('schemaZip', Zip) {
group = 'Distribution'
archiveClassifier = 'schema'
description = "Builds -${archiveClassifier} archive containing all " +
@@ -1238,7 +1238,8 @@ task schemaZip(type: Zip) {
}
}
-task docsZip(type: Zip, dependsOn: [dokkaHtmlMultiModule]) {
+tasks.register('docsZip', Zip) {
+ dependsOn 'dokkaHtmlMultiModule'
group = 'Distribution'
archiveClassifier = 'docs'
description = "Builds -${archiveClassifier} archive containing api and reference " +
@@ -1257,7 +1258,9 @@ task docsZip(type: Zip, dependsOn: [dokkaHtmlMultiModule]) {
}
}
-task distZip(type: Zip, dependsOn: [docsZip, schemaZip]) {
+tasks.register('distZip', Zip) {
+ dependsOn 'docsZip'
+ dependsOn 'schemaZip'
group = 'Distribution'
archiveClassifier = 'dist'
description = "Builds -${archiveClassifier} archive, containing all jars and docs, " +
@@ -1299,7 +1302,8 @@ task distZip(type: Zip, dependsOn: [docsZip, schemaZip]) {
}
}
-task dist(dependsOn: assemble) {
+tasks.register('dist') {
+ dependsOn assemble
group = 'Distribution'
description = 'Builds -dist, -docs and -schema distribution archives.'
}
diff --git a/gradle/docs.gradle b/gradle/docs.gradle
index 5fd5c30a5d..a12aa834d8 100644
--- a/gradle/docs.gradle
+++ b/gradle/docs.gradle
@@ -23,12 +23,12 @@ tasks.named("generateAntoraYml") {
baseAntoraYmlFile = file('src/reference/antora/antora.yml')
}
-tasks.create(name: 'createAntoraPartials', type: Sync) {
- from { tasks.filterMetricsDocsContent.outputs }
+tasks.register('createAntoraPartials', Sync) {
+ from tasks.filterMetricsDocsContent.outputs
into layout.buildDirectory.dir('generated-antora-resources/modules/ROOT/partials')
}
-tasks.create('generateAntoraResources') {
+tasks.register('generateAntoraResources') {
dependsOn 'createAntoraPartials'
dependsOn 'generateAntoraYml'
}
@@ -44,7 +44,7 @@ dependencies {
def observationInputDir = file('spring-integration-core/src/main/java/org/springframework/integration/support/management/observation').absolutePath
def generatedDocsDir = file("$buildDir/reference/generated").absolutePath
-task generateObservabilityDocs(type: JavaExec) {
+tasks.register('generateObservabilityDocs', JavaExec) {
inputs.dir(observationInputDir)
outputs.dir(generatedDocsDir)
classpath configurations.micrometerDocs
@@ -52,7 +52,7 @@ task generateObservabilityDocs(type: JavaExec) {
mainClass = 'io.micrometer.docs.DocsGeneratorCommand'
}
-task filterMetricsDocsContent(type: Copy) {
+tasks.register('filterMetricsDocsContent', Copy) {
dependsOn generateObservabilityDocs
from generatedDocsDir
include '_*.adoc'
diff --git a/src/reference/antora/antora.yml b/src/reference/antora/antora.yml
index f792fc87cf..ec6ea4a6d7 100644
--- a/src/reference/antora/antora.yml
+++ b/src/reference/antora/antora.yml
@@ -6,7 +6,7 @@ nav:
ext:
collector:
run:
- command: gradlew -q "-Dorg.gradle.jvmargs=-Xmx3g -XX:+HeapDumpOnOutOfMemoryError" :generateAntoraResources
+ command: gradlew :generateAntoraResources
local: true
scan:
dir: build/generated-antora-resources
diff --git a/src/reference/antora/modules/ROOT/assets/images/epub-cover.png b/src/reference/antora/modules/ROOT/assets/images/epub-cover.png
deleted file mode 100644
index 6db73beb53..0000000000
Binary files a/src/reference/antora/modules/ROOT/assets/images/epub-cover.png and /dev/null differ
diff --git a/src/reference/antora/modules/ROOT/assets/images/epub-cover.svg b/src/reference/antora/modules/ROOT/assets/images/epub-cover.svg
deleted file mode 100644
index 32512d351f..0000000000
--- a/src/reference/antora/modules/ROOT/assets/images/epub-cover.svg
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
diff --git a/src/reference/antora/modules/ROOT/nav.adoc b/src/reference/antora/modules/ROOT/nav.adoc
index 145929caff..3fa30b40de 100644
--- a/src/reference/antora/modules/ROOT/nav.adoc
+++ b/src/reference/antora/modules/ROOT/nav.adoc
@@ -159,6 +159,23 @@
** xref:http/header-mapping.adoc[]
** xref:http/int-graph-controller.adoc[]
** xref:http/samples.adoc[]
+* xref:ip.adoc[]
+** xref:ip/intro.adoc[]
+** xref:ip/udp-adapters.adoc[]
+** xref:ip/tcp-connection-factories.adoc[]
+** xref:ip/testing-connections.adoc[]
+** xref:ip/interceptors.adoc[]
+** xref:ip/tcp-events.adoc[]
+** xref:ip/tcp-adapters.adoc[]
+** xref:ip/tcp-gateways.adoc[]
+** xref:ip/correlation.adoc[]
+** xref:ip/note-nio.adoc[]
+** xref:ip/ssl-tls.adoc[]
+** xref:ip/tcp-advanced-techniques.adoc[]
+** xref:ip/endpoint-reference.adoc[]
+** xref:ip/msg-headers.adoc[]
+** xref:ip/annotation.adoc[]
+** xref:ip/dsl.adoc[]
* xref:jdbc.adoc[]
** xref:jdbc/inbound-channel-adapter.adoc[]
** xref:jdbc/outbound-channel-adapter.adoc[]
@@ -203,23 +220,6 @@
* xref:stomp.adoc[]
* xref:stream.adoc[]
* xref:syslog.adoc[]
-* xref:ip.adoc[]
-** xref:ip/intro.adoc[]
-** xref:ip/udp-adapters.adoc[]
-** xref:ip/tcp-connection-factories.adoc[]
-** xref:ip/testing-connections.adoc[]
-** xref:ip/interceptors.adoc[]
-** xref:ip/tcp-events.adoc[]
-** xref:ip/tcp-adapters.adoc[]
-** xref:ip/tcp-gateways.adoc[]
-** xref:ip/correlation.adoc[]
-** xref:ip/note-nio.adoc[]
-** xref:ip/ssl-tls.adoc[]
-** xref:ip/tcp-advanced-techniques.adoc[]
-** xref:ip/endpoint-reference.adoc[]
-** xref:ip/msg-headers.adoc[]
-** xref:ip/annotation.adoc[]
-** xref:ip/dsl.adoc[]
* xref:webflux.adoc[]
* xref:web-sockets.adoc[]
* xref:ws.adoc[]
@@ -235,6 +235,7 @@
** xref:xml/validating-filter.adoc[]
* xref:xmpp.adoc[]
* xref:zeromq.adoc[]
+* xref:zip.adoc[]
* xref:zookeeper.adoc[]
* xref:error-handling.adoc[]
* xref:spel.adoc[]
@@ -268,4 +269,3 @@
** xref:changes-2.1-2.2.adoc[]
** xref:changes-2.0-2.1.adoc[]
** xref:changes-1.0-2.0.adoc[]
-* xref:zip.adoc[]
diff --git a/src/reference/antora/modules/ROOT/pages/event.adoc b/src/reference/antora/modules/ROOT/pages/event.adoc
index 5c6aad0d24..368239dd5a 100644
--- a/src/reference/antora/modules/ROOT/pages/event.adoc
+++ b/src/reference/antora/modules/ROOT/pages/event.adoc
@@ -2,7 +2,7 @@
= Spring `ApplicationEvent` Support
Spring Integration provides support for inbound and outbound `ApplicationEvents`, as defined by the underlying Spring Framework.
-For more information about Spring's support for events and listeners, see the https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#context-functionality-events[Spring Reference Manual].
+For more information about Spring's support for events and listeners, see the https://docs.spring.io/spring-framework/reference/core/beans/context-introduction.html#context-functionality-events[Spring Reference Manual].
You need to include this dependency into your project:
diff --git a/src/reference/antora/modules/ROOT/pages/index.adoc b/src/reference/antora/modules/ROOT/pages/index.adoc
index 993b0fbb3e..cffeb1030a 100644
--- a/src/reference/antora/modules/ROOT/pages/index.adoc
+++ b/src/reference/antora/modules/ROOT/pages/index.adoc
@@ -70,7 +70,7 @@ xref:spel.adoc[Spring Expression Language (SpEL)] :: Details about SpEL support
xref:message-publishing.adoc[Message Publishing] :: The Publisher annotation etc.
xref:jms.adoc#jms-ob-transactions[Transaction Support] :: Overview of transactions support in Spring Integration
xref:security.adoc[Security in Spring Integration] :: Securing Spring Integration flows
-xref:kafka.adoc#kafka-inbound-gateway-configurartion[Configuration] :: Messaging annotations, task scheduler, global properties, message mapping
+xref:kafka.adoc#kafka-inbound-gateway-configuration[Configuration] :: Messaging annotations, task scheduler, global properties, message mapping
xref:testing.adoc[Testing support] :: Test utilities, Integration mocks and testing framework
xref:samples.adoc#samples-impl[Spring Integration Samples] :: The samples dedicated project
xref:resources.adoc[Additional Resources] :: Other resources related to project
diff --git a/src/reference/antora/modules/ROOT/pages/jms.adoc b/src/reference/antora/modules/ROOT/pages/jms.adoc
index bf5fbd8c83..5f3c399035 100644
--- a/src/reference/antora/modules/ROOT/pages/jms.adoc
+++ b/src/reference/antora/modules/ROOT/pages/jms.adoc
@@ -35,7 +35,7 @@ The outbound channel adapter uses the `JmsTemplate` to convert and send a JMS me
By using `JmsTemplate` and the `MessageListener` container, Spring Integration relies on Spring's JMS support.
This is important to understand, since most of the attributes exposed on these adapters configure the underlying `JmsTemplate` and `MessageListener` container.
-For more details about `JmsTemplate` and the `MessageListener` container, see the https://docs.spring.io/spring/docs/current/spring-framework-reference/html/jms.html[Spring JMS documentation].
+For more details about `JmsTemplate` and the `MessageListener` container, see the https://docs.spring.io/spring-framework/reference/integration/jms.html[Spring JMS documentation].
Whereas the JMS channel adapters are intended for unidirectional messaging (send-only or receive-only), Spring Integration also provides inbound and outbound JMS Gateways for request and reply operations.
The inbound gateway relies on one of Spring's `MessageListener` container implementations for message-driven reception.
@@ -886,7 +886,7 @@ If configured properly, the JMS-backed message channel also supports transaction
In other words, a producer would not actually write to a transactional JMS-backed channel if its send operation is part of a transaction that rolls back.
Likewise, a consumer would not physically remove a JMS message from the channel if the reception of that message is part of a transaction that rolls back.
Note that the producer and consumer transactions are separate in such a scenario.
-This is significantly different than the propagation of a transactional context across a simple, synchronous `` element that has no `` child element.
+This is significantly different from the propagation of a transactional context across a simple, synchronous `` element that has no `` child element.
Since the preceding example above references a JMS Queue instance, it acts as a point-to-point channel.
If, on the other hand, you need publish-subscribe behavior, you can use a separate element and reference a JMS Topic instead.
diff --git a/src/reference/antora/modules/ROOT/pages/kafka.adoc b/src/reference/antora/modules/ROOT/pages/kafka.adoc
index 40f04a0ed5..c7ef462c78 100644
--- a/src/reference/antora/modules/ROOT/pages/kafka.adoc
+++ b/src/reference/antora/modules/ROOT/pages/kafka.adoc
@@ -566,7 +566,7 @@ public IntegrationFlow outboundGateFlow() {
The inbound gateway is for request/reply operations.
-[[kafka-inbound-gateway-configurartion]]
+[[kafka-inbound-gateway-configuration]]
=== Configuration
The following example shows how to configure an inbound gateway:
diff --git a/src/reference/antora/modules/ROOT/pages/message-publishing.adoc b/src/reference/antora/modules/ROOT/pages/message-publishing.adoc
index b3dc56eec7..1f1c013323 100644
--- a/src/reference/antora/modules/ROOT/pages/message-publishing.adoc
+++ b/src/reference/antora/modules/ROOT/pages/message-publishing.adoc
@@ -269,10 +269,10 @@ The following example shows how to an asynchronous `publishing-interceptor`:
----
-
+
-
+
diff --git a/src/reference/antora/modules/ROOT/pages/message-routing.adoc b/src/reference/antora/modules/ROOT/pages/message-routing.adoc
index 5030f353f7..910bcf1050 100644
--- a/src/reference/antora/modules/ROOT/pages/message-routing.adoc
+++ b/src/reference/antora/modules/ROOT/pages/message-routing.adoc
@@ -3,13 +3,3 @@
:page-section-summary-toc: 1
This chapter covers the details of using Spring Integration to route messages.
-
-// BE SURE TO PRECEDE ALL include:: with a blank line - see https://github.com/asciidoctor/asciidoctor/issues/1297
-
-
-
-
-
-
-
-// BE SURE TO PRECEDE ALL include:: with a blank line - see https://github.com/asciidoctor/asciidoctor/issues/1297
diff --git a/src/reference/antora/modules/ROOT/pages/mqtt.adoc b/src/reference/antora/modules/ROOT/pages/mqtt.adoc
index 70f940a2e1..bbad0a567c 100644
--- a/src/reference/antora/modules/ROOT/pages/mqtt.adoc
+++ b/src/reference/antora/modules/ROOT/pages/mqtt.adoc
@@ -302,7 +302,7 @@ The default is `false` (the send blocks until delivery is confirmed).
It contains the message, the topic, the `messageId` generated by the client library, the `clientId`, and the `clientInstance` (incremented each time the client is connected).
When the delivery is confirmed by the client library, an `MqttMessageDeliveredEvent` is emitted.
It contains the `messageId`, the `clientId`, and the `clientInstance`, enabling delivery to be correlated with the `send()`.
-Any `ApplicationListener` or an event inbound channel adapter can received these events.
+Any `ApplicationListener` or an event inbound channel adapter can receive these events.
Note that it is possible for the `MqttMessageDeliveredEvent` to be received before the `MqttMessageSentEvent`.
The default is `false`.
@@ -459,7 +459,7 @@ See more information in the `Mqttv5PahoMessageHandler` javadocs and its supercla
The inbound channel adapter for the MQTT v5 protocol is present as an `Mqttv5PahoMessageDrivenChannelAdapter`.
It requires a `clientId` and MQTT broker URL or `MqttConnectionOptions` reference, plus topics to which to subscribe and consume from.
It supports a `MqttClientPersistence` option, which is in-memory by default.
-The expected `payloadType` (`byte[]` by default) can be configured and it is propagated to the provided `SmartMessageConverter` for conversion from `byte[]` of the received `MqttMessage`.
+The expected `payloadType` (`byte[]` by default) can be configured, and it is propagated to the provided `SmartMessageConverter` for conversion from `byte[]` of the received `MqttMessage`.
If the `manualAck` option is set, then an `IntegrationMessageHeaderAccessor.ACKNOWLEDGMENT_CALLBACK` header is added to the message to produce as an instance of `SimpleAcknowledgment`.
The `HeaderMapper` is used to map `PUBLISH` frame properties (including user properties) into the target message headers.
Standard `MqttMessage` properties, such as `qos`, `id`, `dup`, `retained`, plus received topic are always mapped to headers.
diff --git a/src/reference/antora/modules/ROOT/pages/native-aot.adoc b/src/reference/antora/modules/ROOT/pages/native-aot.adoc
index aa304b155c..a7bc750181 100644
--- a/src/reference/antora/modules/ROOT/pages/native-aot.adoc
+++ b/src/reference/antora/modules/ROOT/pages/native-aot.adoc
@@ -1,7 +1,7 @@
[[native-images-support]]
= Native Images Support
-Starting with version 6.0, GraalVM compilation of Spring Integration applications to native images is supported by https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#aot[Spring AOT] native hints.
+Starting with version 6.0, GraalVM compilation of Spring Integration applications to native images is supported by https://docs.spring.io/spring-framework/reference/core/aot.html[Spring AOT] native hints.
For most common use cases, such as endpoint definitions with `@Bean` methods, Java DSL configuration with lambdas and `@MessagingGateway` interface scanning (importing), the framework provides respective reflection, proxy and serialization hints.
If configuration uses messaging annotations (`@ServiceActivator`, `@Splitter` etc.) on POJO methods, or POJO methods are used with the `IntegrationFlowBuilder.handle(Object service, String methodName)` API, they have to be also marked with a `@Reflective` annotation since they are invoked by the framework reflectively.
diff --git a/src/reference/antora/modules/ROOT/pages/preface.adoc b/src/reference/antora/modules/ROOT/pages/preface.adoc
index 55926f6cf4..ec8e571b0a 100644
--- a/src/reference/antora/modules/ROOT/pages/preface.adoc
+++ b/src/reference/antora/modules/ROOT/pages/preface.adoc
@@ -15,13 +15,13 @@ This section details the compatible https://www.oracle.com/technetwork/java/java
[[supported-java-versions]]
=== Compatible Java Versions
-For Spring Integration 6.1.x, the minimum compatible Java version is Java SE 17.
+For Spring Integration 6.2.x, the minimum compatible Java version is Java SE 17.
Older versions of Java are not supported.
[[supported-spring-versions]]
=== Compatible Versions of the Spring Framework
-Spring Integration 6.1.x requires Spring Framework 6.0 or later.
+Spring Integration 6.2.x requires Spring Framework 6.1 or later.
[[code-conventions]]
== Code Conventions
diff --git a/src/reference/antora/modules/ROOT/pages/rsocket.adoc b/src/reference/antora/modules/ROOT/pages/rsocket.adoc
index b60e71937a..3531bad3d9 100644
--- a/src/reference/antora/modules/ROOT/pages/rsocket.adoc
+++ b/src/reference/antora/modules/ROOT/pages/rsocket.adoc
@@ -27,7 +27,7 @@ compile "org.springframework.integration:spring-integration-rsocket:{project-ver
======
This module is available starting with version 5.2 and is based on the Spring Messaging foundation with its RSocket component implementations, such as `RSocketRequester`, `RSocketMessageHandler` and `RSocketStrategies`.
-See https://docs.spring.io/spring/docs/current/spring-framework-reference/web-reactive.html#rsocket[Spring Framework RSocket Support] for more information about the RSocket protocol, terminology and components.
+See https://docs.spring.io/spring-framework/reference/rsocket.html[Spring Framework RSocket Support] for more information about the RSocket protocol, terminology and components.
Before starting an integration flow processing via channel adapters, we need to establish an RSocket connection between server and client.
For this purpose, Spring Integration RSocket support provides the `ServerRSocketConnector` and `ClientRSocketConnector` implementations of the `AbstractRSocketConnector`.
@@ -140,7 +140,7 @@ Starting with version 5.3, a `decodeFluxAsUnit` option (default `false`) is adde
By default, incoming `Flux` is transformed the way that each its event is decoded separately.
This is an exact behavior present currently with `@MessageMapping` semantics.
To restore a previous behavior or decode the whole `Flux` as single unit according application requirements, the `decodeFluxAsUnit` has to be set to `true`.
-However the target decoding logic depends on the `Decoder` selected, e.g. a `StringDecoder` requires a new line separator (by default) to be present in the stream to indicate a byte buffer end.
+However, the target decoding logic depends on the `Decoder` selected, e.g. a `StringDecoder` requires a new line separator (by default) to be present in the stream to indicate a byte buffer end.
See xref:rsocket.adoc#rsocket-java-config[Configuring RSocket Endpoints with Java] for samples how to configure an `RSocketInboundGateway` endpoint and deal with payloads downstream.
diff --git a/src/reference/antora/modules/ROOT/pages/samples.adoc b/src/reference/antora/modules/ROOT/pages/samples.adoc
index 5d520e69d3..a7a917cf9c 100644
--- a/src/reference/antora/modules/ROOT/pages/samples.adoc
+++ b/src/reference/antora/modules/ROOT/pages/samples.adoc
@@ -10,7 +10,7 @@ The great benefit to the community is that we can now add more samples and make
Having its own GitHub repository that is not tied to the actual framework is also a great benefit.
You now have a dedicated place to suggest samples as well as report issues with existing samples.
You can also submit a sample to us as a Pull Request.
-If we believe your sample adds value, we would be more then glad to add it to the 'samples' repository, properly crediting you as the author.
+If we believe your sample adds value, we would be more than glad to add it to the 'samples' repository, properly crediting you as the author.
[[samples-get]]
== Where to Get Samples
@@ -225,7 +225,7 @@ For other methods, we do not add any header.
Now we can check downstream for the existence of this header.
Based on its presence and its value, we can determine what type of reply the caller wants.
-Based on the use case, we also know tat some pre-screening steps need to be performed, such as getting and evaluating the consumer's credit score, because some premiere banks only accept quote requests from consumers that meet a minimum credit score requirement.
+Based on the use case, we also know that some pre-screening steps need to be performed, such as getting and evaluating the consumer's credit score, because some premiere banks only accept quote requests from consumers that meet a minimum credit score requirement.
So it would be nice if the message would be enriched with such information before it is forwarded to the banks.
It would also be nice if, when several processes need to be completed to provide such meta-information, those processes could be grouped in a single unit.
In our use case, we need to determine the credit score and, based on the credit score and some rule, select a list of message channels (bank channels) to which to send quote request.
@@ -388,7 +388,7 @@ public class OrderSplitter {
}
----
-In the case of the router, the return value does not have to be a `MessageChannel` instance (although it can be).
+In the case of the router, the return value does not have to be a `MessageChannel` instance (although, it can be).
In this example, a `String` value that holds the channel name is returned instead, as the following listing shows.
[source,java]
diff --git a/src/reference/antora/modules/ROOT/pages/scripting.adoc b/src/reference/antora/modules/ROOT/pages/scripting.adoc
index 8acb3d2bdc..50fff9092d 100644
--- a/src/reference/antora/modules/ROOT/pages/scripting.adoc
+++ b/src/reference/antora/modules/ROOT/pages/scripting.adoc
@@ -31,7 +31,7 @@ compile "org.springframework.integration:spring-integration-scripting:{project-v
In addition, you need to add a script engine implementation, e.g. JRuby, Jython.
Starting with version 5.2, Spring Integration provides a Kotlin Jsr223 support.
-You need to add these dependencies into your project to make it working:
+You need to add this dependency into your project to make it working:
[tabs]
======
@@ -41,17 +41,7 @@ Maven::
----
org.jetbrains.kotlin
- kotlin-script-util
- runtime
-
-
- org.jetbrains.kotlin
- kotlin-compiler-embeddable
- runtime
-
-
- org.jetbrains.kotlin
- kotlin-scripting-compiler-embeddable
+ kotlin-scripting-jsr223runtime
----
@@ -60,14 +50,10 @@ Gradle::
+
[source, groovy, subs="normal", role="secondary"]
----
-runtime 'org.jetbrains.kotlin:kotlin-script-util'
-runtime 'org.jetbrains.kotlin:kotlin-compiler-embeddable'
-runtime 'org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable'
+runtime 'org.jetbrains.kotlin:kotlin-scripting-jsr223'
----
======
-The `KotlinScriptExecutor` is selected by the provided `kotlin` language indicator or script file comes with the `.kts` extension.
-
In order to use a JVM scripting language, a JSR223 implementation for that language must be included in your class path.
The https://groovy-lang.org/[Groovy] and https://www.jruby.org[JRuby] projects provide JSR233 support in their standard distributions.
diff --git a/src/reference/antora/modules/ROOT/pages/spel.adoc b/src/reference/antora/modules/ROOT/pages/spel.adoc
index 7272655b21..2324d25638 100644
--- a/src/reference/antora/modules/ROOT/pages/spel.adoc
+++ b/src/reference/antora/modules/ROOT/pages/spel.adoc
@@ -1,7 +1,7 @@
[[spel]]
= Spring Expression Language (SpEL)
-You can configure many Spring Integration components by using expressions written in the https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#expressions[Spring Expression Language].
+You can configure many Spring Integration components by using expressions written in the https://docs.spring.io/spring-framework/reference/core/expressions.html[Spring Expression Language].
In most cases, the `#root` object is the `Message`, which has two properties (`headers` and `payload`) that allow such expressions as `payload`, `payload.thing`, `headers['my.header']`, and so on.
@@ -80,7 +80,7 @@ In the following example, SpEL expressions always use the bean factory's class l
== SpEL Functions
Spring Integration provides namespace support to let you create SpEL custom functions.
-You can specify `` components to provide https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#expressions-ref-functions[custom SpEL functions] to the `EvaluationContext` used throughout the framework.
+You can specify `` components to provide https://docs.spring.io/spring-framework/reference/core/expressions/language-ref/functions.html[custom SpEL functions] to the `EvaluationContext` used throughout the framework.
Instead of configuring the factory bean shown earlier, you can add one or more of these components, and the framework automatically adds them to the default `integrationEvaluationContext` factory bean.
For example, suppose you have a useful static method to evaluate XPath.
@@ -149,7 +149,7 @@ Otherwise, the `#jsonPath` SpEL function is not registered.
+
For more information regarding JSON see 'JSON Transformers' in xref:transformer.adoc[Transformer].
-* `#xpath`: To evaluate an 'xpath' on some provided object.
+* `#xpath`: To evaluate an xpath on some provided object.
For more information regarding XML and XPath, see xref:xml.adoc[XML Support - Dealing with XML Payloads].
[[spel-property-accessors]]
diff --git a/src/reference/antora/modules/ROOT/pages/stomp.adoc b/src/reference/antora/modules/ROOT/pages/stomp.adoc
index cc663688f8..532c1087b0 100644
--- a/src/reference/antora/modules/ROOT/pages/stomp.adoc
+++ b/src/reference/antora/modules/ROOT/pages/stomp.adoc
@@ -4,7 +4,7 @@
Spring Integration version 4.2 introduced STOMP (Simple Text Orientated Messaging Protocol) client support.
It is based on the architecture, infrastructure, and API from the Spring Framework's messaging module, stomp package.
Spring Integration uses many of Spring STOMP components (such as `StompSession` and `StompClientSupport`).
-For more information, see the https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#websocket-stomp-client[Spring Framework STOMP Support] chapter in the Spring Framework reference manual.
+For more information, see the https://docs.spring.io/spring-framework/reference/web/websocket/stomp/client.html[Spring Framework STOMP Support] chapter in the Spring Framework reference manual.
You need to include this dependency into your project:
@@ -106,7 +106,7 @@ Another example is the `StompMessageHandler`.
It processes `ERROR` STOMP frames, which are server responses to improper (unaccepted) messages sent by this `StompMessageHandler`.
The `StompMessageHandler` emits `StompReceiptEvent` as a part of `StompSession.Receiptable` callbacks in the asynchronous answers for the messages sent to the `StompSession`.
-The `StompReceiptEvent` can be positive or negative, depending on whether or not the `RECEIPT` frame was received from the server within the `receiptTimeLimit` period, which you can configure on the `StompClientSupport` instance.
+The `StompReceiptEvent` can be positive or negative, depending on whether the `RECEIPT` frame was received from the server within the `receiptTimeLimit` period, which you can configure on the `StompClientSupport` instance.
It defaults to `15 * 1000` (in milliseconds, so 15 seconds).
NOTE: The `StompSession.Receiptable` callbacks are added only if the `RECEIPT` STOMP header of the message to send is not `null`.
@@ -254,7 +254,7 @@ The default is `Integer.MIN_VALUE`.
Values can be negative.
See https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/SmartLifecycle.html[`SmartLifeCycle`].
-[[understanding-the--element]]
+[[understanding-the-int-stomp:inbound-channel-adapter-element]]
=== Understanding the `` Element
The following listing shows the available attributes for the STOMP inbound channel adapter:
diff --git a/src/reference/antora/modules/ROOT/pages/system-management.adoc b/src/reference/antora/modules/ROOT/pages/system-management.adoc
index 40663643bd..ce625e34ae 100644
--- a/src/reference/antora/modules/ROOT/pages/system-management.adoc
+++ b/src/reference/antora/modules/ROOT/pages/system-management.adoc
@@ -1,12 +1,3 @@
[[system-management-chapter]]
= System Management
:page-section-summary-toc: 1
-
-// BE SURE TO PRECEDE ALL include:: with a blank line - see https://github.com/asciidoctor/asciidoctor/issues/1297
-
-
-
-
-
-
-// BE SURE TO PRECEDE ALL include:: with a blank line - see https://github.com/asciidoctor/asciidoctor/issues/1297
diff --git a/src/reference/antora/modules/ROOT/pages/testing.adoc b/src/reference/antora/modules/ROOT/pages/testing.adoc
index d378cd34de..b1d19df9ca 100644
--- a/src/reference/antora/modules/ROOT/pages/testing.adoc
+++ b/src/reference/antora/modules/ROOT/pages/testing.adoc
@@ -15,7 +15,7 @@ A thorough treatment of testing in the enterprise is beyond the scope of this re
See the https://www.enterpriseintegrationpatterns.com/docs/TestDrivenEAI.pdf["`Test-Driven Development in Enterprise Integration Projects`"] paper, by Gregor Hohpe and Wendy Istvanick, for a source of ideas and principles for testing your target integration solution.
The Spring Integration Test Framework and test utilities are fully based on existing JUnit, Hamcrest, and Mockito libraries.
-The application context interaction is based on the https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/testing.html#testing[Spring test framework].
+The application context interaction is based on the https://docs.spring.io/spring-framework/reference/testing.html#testing[Spring test framework].
See the documentation for those projects for further information.
Thanks to the canonical implementation of the EIP in Spring Integration Framework and its first-class citizens (such as `MessageChannel`, `Endpoint` and `MessageHandler`), abstractions, and loose coupling principles, you can implement integration solutions of any complexity.
diff --git a/src/reference/antora/modules/ROOT/pages/web-sockets.adoc b/src/reference/antora/modules/ROOT/pages/web-sockets.adoc
index d2ded18d22..eb0184004d 100644
--- a/src/reference/antora/modules/ROOT/pages/web-sockets.adoc
+++ b/src/reference/antora/modules/ROOT/pages/web-sockets.adoc
@@ -4,7 +4,7 @@
Starting with version 4.1, Spring Integration has WebSocket support.
It is based on the architecture, infrastructure, and API from the Spring Framework's `web-socket` module.
Therefore, many of Spring WebSocket's components (such as `SubProtocolHandler` or `WebSocketClient`) and configuration options (such as `@EnableWebSocketMessageBroker`) can be reused within Spring Integration.
-For more information, see the https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#websocket[Spring Framework WebSocket Support] chapter in the Spring Framework reference manual.
+For more information, see the https://docs.spring.io/spring-framework/reference/web/websocket.html[Spring Framework WebSocket Support] chapter in the Spring Framework reference manual.
You need to include this dependency into your project:
@@ -208,7 +208,7 @@ Values can be negative.
See https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/SmartLifecycle.html[`SmartLifeCycle`].
<11> A `Map` of `HttpHeaders` to be used with the Handshake request.
-[[-attributes]]
+[[int-websocket:server-container-attributes]]
=== `` Attributes
The following listing shows the attributes available for the `` element:
@@ -338,7 +338,7 @@ The default is `Integer.MIN_VALUE`.
Values can be negative.
See https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/SmartLifecycle.html[`SmartLifeCycle`].
-[[-attributes]]
+[[int-websocket:inbound-channel-adapter-attributes]]
=== `` Attributes
The following listing shows the attributes available for the `` element:
diff --git a/src/reference/antora/modules/ROOT/pages/webflux.adoc b/src/reference/antora/modules/ROOT/pages/webflux.adoc
index 6a00545007..61428fed1f 100644
--- a/src/reference/antora/modules/ROOT/pages/webflux.adoc
+++ b/src/reference/antora/modules/ROOT/pages/webflux.adoc
@@ -29,7 +29,7 @@ compile "org.springframework.integration:spring-integration-webflux:{project-ver
The `io.projectreactor.netty:reactor-netty` dependency must be included in case of non-Servlet-based server configuration.
The WebFlux support consists of the following gateway implementations: `WebFluxInboundEndpoint` and `WebFluxRequestExecutingMessageHandler`.
-The support is fully based on the Spring https://docs.spring.io/spring/docs/current/spring-framework-reference/web-reactive.html#spring-webflux[WebFlux] and https://projectreactor.io/[Project Reactor] foundations.
+The support is fully based on the Spring https://docs.spring.io/spring-framework/reference/web/webflux.html[WebFlux] and https://projectreactor.io/[Project Reactor] foundations.
See xref:http.adoc[HTTP Support] for more information, since many options are shared between reactive and regular HTTP components.
[[webflux-namespace]]
@@ -229,7 +229,7 @@ The Framework can't assume how complex the `Publisher` object can be after build
If there is a requirements to restrict validation visibility for exactly final payload (or its `Publisher` elements), the validation should go downstream instead of WebFlux endpoint.
See more information in the Spring WebFlux https://docs.spring.io/spring/docs/5.1.8.RELEASE/spring-framework-reference/web-reactive.html#webflux-fn-handler-validation[documentation].
An invalid payload is rejected with an `IntegrationWebExchangeBindException` (a `WebExchangeBindException` extension), containing all the validation `Errors`.
-See more in Spring Framework https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#validation[Reference Manual] about validation.
+See more in Spring Framework https://docs.spring.io/spring-framework/reference/core/validation.html[Reference Manual] about validation.
[[webflux-outbound]]
== WebFlux Outbound Components
@@ -324,7 +324,7 @@ Otherwise, it is treated as an `async` mode, and the `Mono` response is adapted
The target payload of the output message depends on the `WebFluxRequestExecutingMessageHandler` configuration.
The `setExpectedResponseType(Class>)` or `setExpectedResponseTypeExpression(Expression)` identifies the target type of the response body element conversion.
If `replyPayloadToFlux` is set to `true`, the response body is converted to a `Flux` with the provided `expectedResponseType` for each element, and this `Flux` is sent as the payload downstream.
-Afterwards, you can use a xref:splitter.adoc[splitter] to iterate over this `Flux` in a reactive manner.
+Afterward, you can use a xref:splitter.adoc[splitter] to iterate over this `Flux` in a reactive manner.
In addition, a `BodyExtractor, ClientHttpResponse>` can be injected into the `WebFluxRequestExecutingMessageHandler` instead of the `expectedResponseType` and `replyPayloadToFlux` properties.
It can be used for low-level access to the `ClientHttpResponse` and more control over body and HTTP headers conversion.
diff --git a/src/reference/antora/modules/ROOT/pages/whats-new.adoc b/src/reference/antora/modules/ROOT/pages/whats-new.adoc
index 4abc8d8433..5862dee65a 100644
--- a/src/reference/antora/modules/ROOT/pages/whats-new.adoc
+++ b/src/reference/antora/modules/ROOT/pages/whats-new.adoc
@@ -30,7 +30,7 @@ See xref:debezium.adoc[Debezium Support] for more information.
- The XML configuration for `` and `@Poller` annotation now support ISO 8601 duration format for `fixed-delay`, `fixed-rate` and `initial-delay` options.
See xref:endpoint.adoc#endpoint-pollingconsumer[Polling Consumer] for more information.
-- Java, Groovy and Kotlin DSLs have now context-specific methods in the `IntegationFlowDefinition` with a single `Consumer` argument to configure an endpoint and its handler with one builder and readable options.
+- Java, Groovy and Kotlin DSLs have now context-specific methods in the `IntegrationFlowDefinition` with a single `Consumer` argument to configure an endpoint and its handler with one builder and readable options.
See, for example, `transformWith()`, `splitWith()` in xref:dsl.adoc#java-dsl[ Java DSL Chapter].
[[x6.2-websockets]]
diff --git a/src/reference/antora/modules/ROOT/pages/xml.adoc b/src/reference/antora/modules/ROOT/pages/xml.adoc
index 1b24fc80ef..45abc47b7c 100644
--- a/src/reference/antora/modules/ROOT/pages/xml.adoc
+++ b/src/reference/antora/modules/ROOT/pages/xml.adoc
@@ -11,7 +11,7 @@ Spring Integration's XML support extends the core of Spring Integration with the
* xref:xml/xpath-routing.adoc[XPath Router]
* xref:xml/xpath-header-enricher.adoc[XPath Header Enricher]
* xref:xml/xpath-filter.adoc[XPath Filter]
-* xref:xpath-spel-function[#xpath SpEL Function]
+* xref:xml/xpath-spel-function.adoc[#xpath SpEL Function]
* xref:xml/validating-filter.adoc[Validating Filter]
You need to include this dependency into your project:
diff --git a/src/reference/antora/modules/ROOT/pages/zookeeper.adoc b/src/reference/antora/modules/ROOT/pages/zookeeper.adoc
index 8626a00a44..5eb93a9e18 100644
--- a/src/reference/antora/modules/ROOT/pages/zookeeper.adoc
+++ b/src/reference/antora/modules/ROOT/pages/zookeeper.adoc
@@ -33,7 +33,7 @@ compile "org.springframework.integration:spring-integration-zookeeper:{project-v
[[zk-metadata-store]]
== Zookeeper Metadata Store
-You ca use the `ZookeeperMetadataStore` where any `MetadataStore` is needed, such as for persistent file list filters.
+You can use the `ZookeeperMetadataStore` where any `MetadataStore` is needed, such as for persistent file list filters.
See xref:meta-data-store.adoc[Metadata Store] for more information.
The following example configures a Zookeeper metadata store with XML:
@@ -100,7 +100,7 @@ When a leader is elected, an `OnGrantedEvent` is published for the role `cluster
Any endpoints in that role are started.
When leadership is revoked, an `OnRevokedEvent` is published for the role `cluster`.
Any endpoints in that role are stopped.
-See xref:endpoint.adoc#endpoint-roles[Endpoint Roles] for more information.
+See xref:endpoint-roles.adoc[Endpoint Roles] for more information.
You can use Java configuration to create an instance of the leader initiator, as the following example shows: