diff --git a/build.gradle b/build.gradle index cdee360649..2808e97141 100644 --- a/build.gradle +++ b/build.gradle @@ -6,6 +6,7 @@ buildscript { dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion" classpath "org.jetbrains.kotlin:kotlin-allopen:$kotlinVersion" + classpath "org.asciidoctor:asciidoctor-gradle-plugin:1.5.6" classpath 'org.asciidoctor:asciidoctorj-pdf:1.5.0-alpha.16' } } @@ -819,6 +820,12 @@ project("spring-integration-bom") { } } +apply plugin: "org.asciidoctor.convert" + +asciidoctorj { + version = '1.5.5' +} + configurations { docs } @@ -836,33 +843,52 @@ task prepareAsciidocBuild(type: Sync) { into "$buildDir/asciidoc" } -asciidoctor { - dependsOn 'prepareAsciidocBuild' +task('makePDF', type: org.asciidoctor.gradle.AsciidoctorTask) { + dependsOn prepareAsciidocBuild + backends 'pdf' sourceDir "$buildDir/asciidoc" sources { - include 'index.adoc' + include 'index-single.adoc' } + options doctype: 'book', eruby: 'erubis' + logDocuments = true + attributes 'icons': 'font', + 'sectanchors': '', + 'sectnums': '', + 'toc': '', + 'source-highlighter' : 'coderay', + revnumber: project.version +} + +asciidoctor { + dependsOn makePDF + backends 'html5' + sourceDir "$buildDir/asciidoc" resources { from(sourceDir) { - include 'images/*', 'css/*', 'js/**' + include 'images/*', 'css/**', 'js/**' } } - backends = ['html5', 'pdf'] options doctype: 'book', eruby: 'erubis' - attributes 'icons': 'font', - 'idprefix': '', - 'idseparator': '-', - docinfo: 'shared', - sectanchors: '', - sectnums: '', - stylesdir: 'css/', - stylesheet: 'spring.css', - 'linkcss': true, - 'source-highlighter=highlight.js', - 'highlightjsdir=js/highlight', - 'highlightjs-theme=atom-one-dark-reasonable', - 'project-version': project.version, - 'allow-uri-read': '' + logDocuments = true + attributes 'docinfo': 'shared', + // use provided stylesheet + stylesdir: "css/", + stylesheet: 'spring.css', + 'linkcss': true, + 'icons': 'font', + 'sectanchors': '', + // use provided highlighter + 'source-highlighter=highlight.js', + 'highlightjsdir=js/highlight', + 'highlightjs-theme=atom-one-dark-reasonable', + 'idprefix': '', + 'idseparator': '-', + 'spring-version': project.version, + 'allow-uri-read': '', + 'toc': 'left', + 'toclevbels': '4', + revnumber: project.version } task reference(dependsOn: asciidoctor) { @@ -953,8 +979,9 @@ task docsZip(type: Zip, dependsOn: reference) { } from ('build/asciidoc/pdf') { - include 'index.pdf' - into 'reference/pdf' + include "index-single.pdf" + rename 'index-single.pdf', 'spring-integration-reference.pdf' + into 'reference/pdf' } } diff --git a/src/reference/asciidoc/aggregator.adoc b/src/reference/asciidoc/aggregator.adoc index 3ec012fe19..1492d69344 100644 --- a/src/reference/asciidoc/aggregator.adoc +++ b/src/reference/asciidoc/aggregator.adoc @@ -108,7 +108,7 @@ It is done only if the message group release result is not a message or collecti In that case a target `MessageGroupProcessor` is responsible for the `MessageBuilder.popSequenceDetails()` call while building those messages. This functionality can be controlled by a new `popSequence` `boolean` property, so the `MessageBuilder.popSequenceDetails()` can be disabled in some scenarios when correlation details have not been populated by the standard splitter. This property, essentially, undoes what has been done by the nearest upstream `applySequence = true` in the `AbstractMessageSplitter`. -See <> for more information. +See <<./splitter.adoc#splitter,Splitter>> for more information. [[agg-message-collection]] IMPORTANT: The `SimpleMessageGroup.getMessages()` method returns an `unmodifiableCollection`. @@ -223,7 +223,7 @@ The 4.3 release changed the default `Collection` for messages in a `SimpleMessag This was expensive when removing individual messages from large groups (an O(n) linear scan was required). Although the hash set is generally much faster to remove, it can be expensive for large messages, because the hash has to be calculated on both inserts and removes. If you have messages that are expensive to hash, consider using some other collection type. -As discussed in <>, a `SimpleMessageGroupFactory` is provided so that you can select the `Collection` that best suits your needs. +As discussed in <<./message-store.adoc#message-group-factory,Using `MessageGroupFactory`>>, a `SimpleMessageGroupFactory` is provided so that you can select the `Collection` that best suits your needs. You can also provide your own factory implementation to create some other `Collection>`. The following example shows how to configure an aggregator with the previous implementation and a `SimpleSequenceSizeReleaseStrategy`: @@ -324,7 +324,7 @@ Of course, the first solution above does not apply in this case. [[aggregator-java-dsl]] ==== Configuring an Aggregator in Java DSL -See <> for how to configure an aggregator in Java DSL. +See <<./dsl.adoc#java-dsl-aggregators,Aggregators and Resequencers>> for how to configure an aggregator in Java DSL. [[aggregator-xml]] ===== Configuring an Aggregator with XML @@ -399,7 +399,7 @@ Optional. <6> A reference to a `MessageGroupStore` used to store groups of messages under their correlation key until they are complete. Optional. By default, it is a volatile in-memory store. -See <> for more information. +See <<./message-store.adoc#message-store,Message Store>> for more information. <7> The order of this aggregator when more than one handle is subscribed to the same `DirectChannel` (use for load-balancing purposes). Optional. <8> Indicates that expired messages should be aggregated and sent to the 'output-channel' or 'replyChannel' once their containing `MessageGroup` is expired (see https://docs.spring.io/spring-integration/api/org/springframework/integration/store/MessageGroupStore.html#expireMessageGroups-long[`MessageGroupStore.expireMessageGroups(long)`]). @@ -457,7 +457,7 @@ Note that the actual time to expire an empty group is also affected by the reape It used to obtain a `Lock` based on the `groupId` for concurrent operations on the `MessageGroup`. By default, an internal `DefaultLockRegistry` is used. Use of a distributed `LockRegistry`, such as the `ZookeeperLockRegistry`, ensures only one instance of the aggregator can operate on a group concurrently. -See <>, <>, and <> for more information. +See <<./redis.adoc#redis-lock-registry,Redis Lock Registry>>, <<./gemfire.adoc#gemfire-lock-registry,Gemfire Lock Registry>>, and <<./zookeeper.adoc#zk-lock-registry,Zookeeper Lock Registry>> for more information. <21> A timeout (in milliseconds) to force the `MessageGroup` complete when the `ReleaseStrategy` does not release the group when the current message arrives. This attribute provides a built-in time-based release strategy for the aggregator when there is a need to emit a partial result (or discard the group) if a new message does not arrive for the `MessageGroup` within the timeout. When a new message arrives at the aggregator, any existing `ScheduledFuture` for its `MessageGroup` is canceled. @@ -750,7 +750,7 @@ public MessageHandler aggregator(MessageGroupStore jdbcMessageGroupStore) { ---- ==== -See <> and <> for more information. +See <> and <<./configuration.adoc#annotations_on_beans,Annotations on `@Bean` Methods>> for more information. NOTE: Starting with version 4.2, the `AggregatorFactoryBean` is available to simplify Java configuration for the `AggregatingMessageHandler`. @@ -863,5 +863,5 @@ Messages with the same correlation key are stored in the same message group. Some `MessageStore` implementations allow using the same physical resources, by partitioning the data. For example, the `JdbcMessageStore` has a `region` property, and the `MongoDbMessageStore` has a `collectionName` property. -For more information about the `MessageStore` interface and its implementations, see <>. +For more information about the `MessageStore` interface and its implementations, see <<./message-store.adoc#message-store,Message Store>>. ===== diff --git a/src/reference/asciidoc/amqp.adoc b/src/reference/asciidoc/amqp.adoc index c61923a0dd..5eb800f0e9 100644 --- a/src/reference/asciidoc/amqp.adoc +++ b/src/reference/asciidoc/amqp.adoc @@ -294,7 +294,7 @@ The default `BatchingStrategy` is the `SimpleBatchingStrategy`, but this can be ==== Overview Version 5.0.1 introduced a polled channel adapter, letting you fetch individual messages on demand -- for example, with a `MessageSourcePollingTemplate` or a poller. -See <> for more information. +See <<./polling-consumer.adoc#deferred-acks-message-source,Deferred Acknowledgment Pollable Message Source>> for more information. It does not currently support XML configuration. @@ -1036,7 +1036,7 @@ When `true` (the default), the connection is established (if it does not already it) when the first message is sent. ==== -See also <> for more information. +See also <<./service-activator.adoc#async-service-activator,Asynchronous Service Activator>> for more information. [IMPORTANT] .RabbitTemplate @@ -1492,7 +1492,7 @@ This is because the template "`borrows`" a channel from the cache for each send One solution is to start a transaction before the splitter, but transactions are expensive in RabbitMQ and can reduce performance several hundred fold. To solve this problem in a more efficient manner, starting with version 5.1, Spring Integration provides the `BoundRabbitChannelAdvice` which is a `HandleMessageAdvice`. -See <>. +See <<./handler-advice.adoc#handle-message-advice,Handling Message Advice>>. When applied before the splitter, it ensures that all downstream operations are performed on the same channel and, optionally, can wait until publisher confirmations for all sent messages are received (if the connection factory is configured for confirmations). The following example shows how to use `BoundRabbitChannelAdvice`: diff --git a/src/reference/asciidoc/chain.adoc b/src/reference/asciidoc/chain.adoc index ab8b99d35e..86709f103e 100644 --- a/src/reference/asciidoc/chain.adoc +++ b/src/reference/asciidoc/chain.adoc @@ -121,7 +121,7 @@ In this case, it is 'somethingChain$child#1'. Note, this transformer is not registered as a bean within the application context, so it does not get a `beanName`. However its `componentName` has a value that is useful for logging and other purposes. -The `id` attribute for `` elements lets them be eligible for <>, and they are trackable in the <>. +The `id` attribute for `` elements lets them be eligible for <<./jmx.adoc#jmx-mbean-exporter,,JMX export>>, and they are trackable in the <<./message-history.adoc#message-history,,message history>>. You can access them from the `BeanFactory` by using the appropriate bean name, as discussed earlier. TIP: It is useful to provide an explicit `id` attribute on `` elements to simplify the identification of sub-components in logs and to provide access to them from the `BeanFactory` etc. diff --git a/src/reference/asciidoc/changes-1.0-2.0.adoc b/src/reference/asciidoc/changes-1.0-2.0.adoc index 340b366eaf..3f6508b923 100644 --- a/src/reference/asciidoc/changes-1.0-2.0.adoc +++ b/src/reference/asciidoc/changes-1.0-2.0.adoc @@ -18,7 +18,7 @@ This guide includes many samples. ===== Conversion Service and Converter You can now benefit from the conversion service support provided with Spring while configuring many Spring Integration components, such as a https://www.enterpriseintegrationpatterns.com/DatatypeChannel.html[Datatype channel]. -See <> and <>. +See <<./channel.adoc#channel-implementations,Message Channel Implementations>> and <<./service-activator.adoc#service-activator,Service Activator>>. Also, the SpEL support mentioned in the previous point also relies upon the conversion service. Therefore, you can register converters once and take advantage of them anywhere you use SpEL expressions. @@ -30,14 +30,14 @@ Spring Integration (which uses a lot of scheduling) now builds upon these. In fact, Spring Integration 1.0 had originally defined some of the components (such as `CronTrigger`) that have now been migrated into Spring 3.0's core API. Now you can benefit from reusing the same components within the entire application context (not just Spring Integration configuration). We also greatly simplified configuration of Spring Integration pollers by providing attributes for directly configuring rates, delays, cron expressions, and trigger references. -See <> for sample configurations. +See <<./channel-adapter.adoc#channel-adapter,Channel Adapter>> for sample configurations. [[rest-support]] ===== `RestTemplate` and `HttpMessageConverter` Our outbound HTTP adapters now delegate to Spring's `RestTemplate` for executing the HTTP request and handling its response. This also means that you can reuse any custom `HttpMessageConverter` implementations. -See <> for more details. +See <<./http.adoc#http-outbound,HTTP Outbound Components>> for more details. [[new-eip]] ==== Enterprise Integration Pattern Additions @@ -48,7 +48,7 @@ Also in 2.0, we have added support for even more of the patterns described in Ho ===== Message History We now provide support for the https://www.enterpriseintegrationpatterns.com/MessageHistory.html[message history] pattern, letting you keep track of all traversed components, including the name of each channel and endpoint as well as the timestamp of that traversal. -See <> for more details. +See <<./message-history.adoc#message-history,Message History>> for more details. [[new-message-store]] ===== Message Store @@ -56,7 +56,7 @@ See <> for more details. We now provide support for the https://www.enterpriseintegrationpatterns.com/MessageStore.html[message store] pattern. The message store provides a strategy for persisting messages on behalf of any process whose scope extends beyond a single transaction, such as the aggregator and the resequencer. Many sections of this guide include samples of how to use a message store, as it affects several areas of Spring Integration. -See <>, <>, <>, <>, <>`", and <> for more details. +See <<./message-store.adoc#message-store,Message Store>>, <<./claim-check.adoc#claim-check,Claim Check>>, <<./channel.adoc#channel,Message Channels>>, <<./aggregator.adoc#aggregator,Aggregator>>, <<./jdbc.adoc#jdbc,JDBC Support>>`", and <<./resequencer.adoc#resequencer,Resequencer>> for more details. [[new-claim-check]] ===== Claim Check @@ -64,14 +64,14 @@ See <>, <>, <>, <>, <>`", We have added an implementation of the https://www.enterpriseintegrationpatterns.com/StoreInLibrary.html[claim check] pattern. The idea behind the claim check pattern is that you can exchange a message payload for a "`claim ticket`". This lets you reduce bandwidth and avoid potential security issues when sending messages across channels. -See <> for more details. +See <<./claim-check.adoc#claim-check,Claim Check>> for more details. [[new-control-bus]] ===== Control Bus We have provided implementations of the https://www.enterpriseintegrationpatterns.com/ControlBus.html[control bus] pattern, which lets you use messaging to manage and monitor endpoints and channels. The implementations include both a SpEL-based approach and one that runs Groovy scripts. -See <> and <> for more details. +See <<./control-bus.adoc#control-bus,Control Bus>> and <<./groovy.adoc#groovy-control-bus,Control Bus>> for more details. [[new-adapters]] ==== New Channel Adapters and Gateways @@ -82,7 +82,7 @@ We have added several new channel adapters and messaging gateways in Spring Inte ===== TCP and UDP Adapters We have added channel adapters for receiving and sending messages over the TCP and UDP internet protocols. -See <> for more details. +See <<./ip.adoc#ip,TCP and UDP Support>> for more details. See also the following blog: https://spring.io/blog/2010/03/29/using-udp-and-tcp-adapters-in-spring-integration-2-0-m3/["`Using UDP and TCP Adapters in Spring Integration 2.0 M3`"]. [[new-twitter]] @@ -96,25 +96,25 @@ See https://github.com/spring-projects/spring-integration-extensions/tree/master ===== XMPP Adapters The new XMPP adapters support both chat messages and presence events. -See <> for more details. +See <<./xmpp.adoc#xmpp,XMPP Support>> for more details. [[new-ftp]] ===== FTP and FTPS Adapters Inbound and outbound file transfer support over FTP and FTPS is now available. -See <> for more details. +See <<./ftp.adoc#ftp,FTP/FTPS Adapters>> for more details. [[new-sftp]] ===== SFTP Adapters Inbound and outbound file transfer support over SFTP is now available. -See <> for more details. +See <<./sftp.adoc#sftp,SFTP Adapters>> for more details. [[new-feed]] ===== Feed Adapters We have also added channel adapters for receiving news feeds (ATOM and RSS). -See <> for more details. +See <<./feed.adoc#feed,Feed Adapter>> for more details. [[new-other]] ==== Other Additions @@ -125,33 +125,33 @@ This section describes them. ===== Groovy Support Spring Integration 2.0 added Groovy support, letting you use the Groovy scripting language to provide integration and business logic. -See <> for more details. +See <<./groovy.adoc#groovy,Groovy support>> for more details. [[new-map-transformer]] ===== Map Transformers These symmetrical transformers convert payload objects to and from `Map` objects. -See <> for more details. +See <<./transformer.adoc#transformer,Transformer>> for more details. [[new-json-transformer]] ===== JSON Transformers These symmetrical transformers convert payload objects to and from JSON. -See <> for more details. +See <<./transformer.adoc#transformer,Transformer>> for more details. [[new-serialize-transformer]] ===== Serialization Transformers These symmetrical transformers convert payload objects to and from byte arrays. They also support the serializer and deserializer strategy interfaces that Spring 3.0.5 added. -See <> for more details. +See <<./transformer.adoc#transformer,Transformer>> for more details. [[new-refactoring]] ==== Framework Refactoring The core API went through some significant refactoring to make it simpler and more usable. Although we anticipate that the impact to developers should be minimal, you should read through this document to find what was changed. -Specifically, you should read <>, <>, <>, <>, and <>. +Specifically, you should read <<./router.adoc#dynamic-routers,Dynamic Routers>>, <<./gateway.adoc#gateway,Messaging Gateways>>, <<./http.adoc#http-outbound,HTTP Outbound Components>>, <<./message.adoc#message,Message>>, and <<./aggregator.adoc#aggregator,Aggregator>>. If you directly depend on some of the core components (`Message`, `MessageHeaders`, `MessageChannel`, `MessageBuilder`, and others), you need to update any import statements. We restructured some packaging to provide the flexibility we needed for extending the domain model while avoiding any cyclical dependencies (it is a policy of the framework to avoid such "`tangles`"). diff --git a/src/reference/asciidoc/changes-2.0-2.1.adoc b/src/reference/asciidoc/changes-2.0-2.1.adoc index 1818d1efc6..2e21f3e6ff 100644 --- a/src/reference/asciidoc/changes-2.0-2.1.adoc +++ b/src/reference/asciidoc/changes-2.0-2.1.adoc @@ -20,7 +20,7 @@ Now you have the ability to use any scripting language that supports JSR-223 inc * Python and Jython * Groovy -For further details, see <>. +For further details, see <<./scripting.adoc#scripting,Scripting Support>>. [[x2.1-new-gemfire-support]] ===== GemFire Support @@ -28,7 +28,7 @@ For further details, see <>. Spring Integration provides support for https://www.vmware.com/products/pivotal-gemfire.html[GemFire] by providing inbound adapters for entry and continuous query events, an outbound adapter to write entries to the cache, and https://docs.spring.io/spring-integration/api/org/springframework/integration/store/MessageStore.html[`MessageStore`] and https://docs.spring.io/spring-integration/api/org/springframework/integration/store/MessageGroupStore.html[`MessageGroupStore`] implementations. Spring integration leverages the https://spring.io/projects/spring-data-gemfire[Spring Gemfire] project, providing a thin wrapper over its components. -For further details, see <>. +For further details, see <<./gemfire.adoc#gemfire,Pivotal GemFire and Apache Geode Support>>. [[x2.1-new-amqp-support]] ===== AMQP Support @@ -36,21 +36,21 @@ For further details, see <>. Spring Integration 2.1 added several channel adapters for receiving and sending messages by using the https://www.amqp.org/[Advanced Message Queuing Protocol] (AMQP). Furthermore, Spring Integration also provides a point-to-point message channel and a publish-subscribe message channel, both of which are backed by AMQP Exchanges and Queues. -For further details, see <>. +For further details, see <<./amqp.adoc#amqp,AMQP Support>>. [[x2.1-new-mongodb-support]] ===== MongoDB Support As of version 2.1, Spring Integration provides support for https://www.mongodb.org/[MongoDB] by providing a MongoDB-based `MessageStore`. -For further details, see <>. +For further details, see <<./mongodb.adoc#mongodb,MongoDb Support>>. [[x2.1-new-redis-support]] ===== Redis Support As of version 2.1, Spring Integration supports https://redis.io/[Redis], an advanced key-value store, by providing a Redis-based `MessageStore` as well as publish-subscribe messaging adapters. -For further details, see <>. +For further details, see <<./redis.adoc#redis,Redis Support>>. [[x2.1-new-resource-support]] ===== Support for Spring's Resource abstraction @@ -58,7 +58,7 @@ For further details, see <>. In version 2.1, we introduced a new resource inbound channel adapter that builds upon Spring's resource abstraction to support greater flexibility across a variety of actual types of underlying resources, such as a file, a URL, or a classpath resource. Therefore, it is similar to but more generic than the file inbound channel adapter. -For further details, see <>. +For further details, see <<./resource.adoc#resource-inbound-channel-adapter,Resource Inbound Channel Adapter>>. [[x2.1-new-stored-proc-support]] ===== Stored Procedure Components @@ -81,7 +81,7 @@ The stored procedure components also support SQL functions for the following dat * Oracle * PostgreSQL -For further details, see <>. +For further details, see <<./jdbc.adoc#stored-procedures,Stored Procedures>>. [[x2.1-new-xpath-filter-support]] ===== XPath and XML Validating Filter @@ -91,7 +91,7 @@ It is part of the `XML` module. The XPath filter lets you filter messages by using XPath Expressions. We also added documentation for the XML validating filter. -For more details, see <> and <>. +For more details, see <<./xml.adoc#xml-xpath-filter,Using the XPath Filter>> and <<./xml.adoc#xml-validating-filter,XML Validating Filter>>. [[x2.1-new-payload-enricher-support]] ===== Payload Enricher @@ -100,7 +100,7 @@ Since Spring Integration 2.1, we added the payload enricher. A payload enricher defines an endpoint that typically passes a https://docs.spring.io/spring-integration/api/org/springframework/integration/Message.html[`Message`] to the exposed request channel and then expects a reply message. The reply message then becomes the root object for evaluation of expressions to enrich the target payload. -For further details, see <>. +For further details, see <<./content-enrichment.adoc#payload-enricher,Payload Enricher>>. [[x2.1-new-ftp-outbound-gateway]] ===== FTP and SFTP Outbound Gateways @@ -110,7 +110,7 @@ These two gateways let you directly execute a limited set of remote commands. For instance, you can use these outbound gateways to list, retrieve, and delete remote files and have the Spring Integration message flow continue with the remote server's response. -For further details, see <> and <>. +For further details, see <<./ftp.adoc#ftp-outbound-gateway,FTP Outbound Gateway>> and <<./sftp.adoc#sftp-outbound-gateway,SFTP Outbound Gateway>>. [[x2.1-new-ftp-session-caching]] ===== FTP Session Caching @@ -120,7 +120,7 @@ As of version 2.1, we have exposed more flexibility with regards to session mana Specifically, we deprecated the `cache-sessions` attribute (which is available via the XML namespace support). As an alternative, we added the `sessionCacheSize` and `sessionWaitTimeout` attributes on the `CachingSessionFactory`. -For further details, see <> and <>. +For further details, see <<./ftp.adoc#ftp-session-caching,FTP Session Caching>> and <<./sftp.adoc#sftp-session-caching,SFTP Session Caching>>. [[x2.1-framework-refactorings]] ==== Framework Refactoring @@ -142,7 +142,7 @@ If, however, you do want to drop messages silently, you can set `default-output- IMPORTANT: With the standardization of router parameters and the consolidation of the parameters described earlier, older Spring Integration based applications may break. -For further details, see `<>`. +For further details, see `<<./router.adoc#router,Routers>>`. [[x2.1-schema-updated]] ===== XML Schemas updated to 2.1 diff --git a/src/reference/asciidoc/changes-2.1-2.2.adoc b/src/reference/asciidoc/changes-2.1-2.2.adoc index c36faeb5d3..ee81e19ea1 100644 --- a/src/reference/asciidoc/changes-2.1-2.2.adoc +++ b/src/reference/asciidoc/changes-2.1-2.2.adoc @@ -13,13 +13,13 @@ Version 2.2 added a number of new components. ===== `RedisStore` Inbound and Outbound Channel Adapters Spring Integration now has `RedisStore` Inbound and Outbound Channel Adapters, letting you write and read `Message` payloads to and from Redis collections. -For more information, see <> and <>. +For more information, see <<./redis.adoc#redis-store-outbound-channel-adapter,RedisStore Outbound Channel Adapter>> and <<./redis.adoc#redis-store-inbound-channel-adapter,Redis Store Inbound Channel Adapter>>. [[x2.2-mongo-adapters]] ===== MongoDB Inbound and Outbound Channel Adapters Spring Integration now has MongoDB inbound and outbound channel adapters, letting you write and read `Message` payloads to and from a MongoDB document store. -For more information, see <> and <>. +For more information, see <<./mongodb.adoc#mongodb-outbound-channel-adapter,MongoDB Outbound Channel Adapter>> and <<./mongodb.adoc#mongodb-inbound-channel-adapter,MongoDB Inbound Channel Adapter>>. [[x2.2-jpa]] ===== JPA Endpoints @@ -27,12 +27,12 @@ For more information, see <> and <> -* <> -* <> -* <> +* <<./jpa.adoc#jpa-inbound-channel-adapter,,Inbound channel adapter>> +* <<./jpa.adoc#jpa-outbound-channel-adapter,,Outbound channel adapter>> +* <<./jpa.adoc#jpa-updating-outbound-gateway,,Updating outbound gateway>> +* <<./jpa.adoc#jpa-retrieving-outbound-gateway,,Retrieving outbound gateway>> -For more information, see <>. +For more information, see <<./jpa.adoc#jpa,JPA Support>>. [[x2.2-general]] ==== General Changes @@ -58,7 +58,7 @@ In addition, we added three standard advice classes for this purpose: * `MessageHandlerCircuitBreakerAdvice` * `ExpressionEvaluatingMessageHandlerAdvice` -For more information, see <>. +For more information, see <<./handler-advice.adoc#message-handler-advice-chain,Adding Behavior to Endpoints>>. [[x2.2-transaction-sync]] ===== Transaction Synchronization and Pseudo Transactions @@ -68,7 +68,7 @@ This allows for synchronizing such operations as renaming files by an inbound ch In addition, you can enable these features when no "`real`" transaction is present, by means of a `PseudoTransactionManager`. -For more information, see <>. +For more information, see <<./transactions.adoc#transaction-synchronization,Transaction Synchronization>>. [[x2.2-file-adapter]] ===== File Adapter: Improved File Overwrite and Append Handling @@ -82,7 +82,7 @@ Now you can specify the following options: * `FAIL` * `IGNORE` -For more information, see <>. +For more information, see <<./file.adoc#file-writing-destination-exists,Dealing with Existing Destination Files>>. [[x2.2-outbound-gateways]] ===== Reply-Timeout Added to More Outbound Gateways @@ -116,7 +116,7 @@ When using the stored procedure components of the Spring Integration JDBC Adapte Doing so lets you specify the stored procedures to be invoked at runtime. For example, you can provide stored procedure names that you would like to execute through message headers. -For more information, see <>. +For more information, see <<./jdbc.adoc#stored-procedures,Stored Procedures>>. ====== JMX Support @@ -136,7 +136,7 @@ You can now provide only a select query by using the request message as a source ===== JDBC Support: Channel-specific Message Store Implementation We added a new message channel-specific message store implementation, providing a more scalable solution using database-specific SQL queries. -For more information, see <>. +For more information, see <<./jdbc.adoc#jdbc-message-store-channels,Backing Message Channels>>. [[x2.2-shutdown]] ===== Orderly Shutdown @@ -154,7 +154,7 @@ Doing so can improve performance of the gateway. ===== `ObjectToJsonTransformer` By default, the `ObjectToJsonTransformer` now sets the `content-type` header to `application/json`. -For more information, see <>. +For more information, see <<./transformer.adoc#transformer,Transformer>>. [[httpChanges]] ===== HTTP Support diff --git a/src/reference/asciidoc/changes-2.2-3.0.adoc b/src/reference/asciidoc/changes-2.2-3.0.adoc index aa67628098..ad9c9ff919 100644 --- a/src/reference/asciidoc/changes-2.2-3.0.adoc +++ b/src/reference/asciidoc/changes-2.2-3.0.adoc @@ -18,26 +18,26 @@ Upon parsing of the HTTP inbound endpoint, either a new `IntegrationRequestMappi To achieve flexible request mapping configuration, Spring Integration provides the `` child element for `` and the ``. Both HTTP inbound endpoints are now fully based on the request mapping infrastructure that was introduced with Spring MVC 3.1. For example, multiple paths are supported on a single inbound endpoint. -For more information see <>. +For more information see <<./http.adoc#http-namespace,HTTP Namespace Support>>. [[x3.0-spel-customization]] ===== Spring Expression Language (SpEL) Configuration We added a new `IntegrationEvaluationContextFactoryBean` to allow configuration of custom `PropertyAccessor` implementations and functions for use in SpEL expressions throughout the framework. -For more information, see <>. +For more information, see <<./spel.adoc#spel,Spring Expression Language (SpEL)>>. [[x3.0-spel-functions]] ===== SpEL Functions Support To customize the SpEL `EvaluationContext` with static `Method` functions, we introduced the `` component. We also added two built-in functions: `#jsonPath` and `#xpath`. -For more information, see <>. +For more information, see <<./spel.adoc#spel-functions,SpEL Functions>>. [[x3.0-spel-property-accessors]] ===== SpEL PropertyAccessors Support To customize the SpEL `EvaluationContext` with `PropertyAccessor` implementations, we added the `` component. -For more information, see <>. +For more information, see <<./spel.adoc#spel-property-accessors,Property Accessors>>. [[x3.0-redis-new-components]] ===== Redis: New Components @@ -52,14 +52,14 @@ This new `MetadataStore` implementation can be used with adapters, such as: We added new queue-based components. We added the `` and `` components to perform 'right pop' and 'left push' operations, respectively, on a Redis List. -For more information, "`see <>`". +For more information, "`see <<./redis.adoc#redis,Redis Support>>`". [[x3.0-hcr]] ===== Header Channel Registry You can now instruct the framework to store reply channels and error channels in a registry for later resolution. This is useful for cases where the `replyChannel` or `errorChannel` might be lost (for example, when serializing a message). -See <> for more information. +See <<./content-enrichment.adoc#header-enricher,Header Enricher>> for more information. [[x3.0-configurable-mongo-MS]] ===== MongoDB support: New `ConfigurableMongoDbMessageStore` @@ -68,19 +68,19 @@ In addition to the existing `eMongoDbMessageStore`, we introduced a new `Configu This provides a more robust and flexible implementation of `MessageStore` for MongoDB. It does not have backward compatibility with the existing store, but we recommend using it for new applications. Existing applications can use it, but messages in the old store are not available. -See <> for more information. +See <<./mongodb.adoc#mongodb,MongoDb Support>> for more information. [[x3.0-syslog]] ===== Syslog Support Building on the 2.2 `SyslogToMapTransformer`, Spring Integration 3.0 introduces `UDP` and `TCP` inbound channel adapters especially tailored for receiving SYSLOG messages. -For more information, see <>. +For more information, see <<./syslog.adoc#syslog,Syslog Support>>. [[x3.0-tail]] ===== `tail` Support We added file inbound channel adapters that use the `tail` command to generate messages when lines are added to the end of text files. -See <>. +See <<./file.adoc#file-tailing,'tail'ing Files>>. [[x3.0-jmx]] ===== JMX Support @@ -92,7 +92,7 @@ It permits simple transformation to, for example, JSON. The `IntegrationMBeanExporter` now allows the configuration of a custom `ObjectNamingStrategy` by using the `naming-strategy` attribute. -For more information, see <>. +For more information, see <<./jmx.adoc#jmx,JMX Support>>. [[x3.0-tcp-events]] ===== TCP/IP Connection Events and Connection Management @@ -112,19 +112,19 @@ It lets applications broadcast to all open connections, among other uses. Finally, the connection factories also provide a new method called `closeConnection(String connectionId)`, which lets applications explicitly close a connection by using its ID. -For more information see <>. +For more information see <<./ip.adoc#tcp-events,TCP Connection Events>>. [[x3.0-inbound-script]] ===== Inbound Channel Adapter Script Support The `` now supports using `` and `