Fix HTTP urls to HTTPS

* Do not fix urls for the `http://apache.org/xml/features` when we
configure XML components
* Do not fix urls for localhost and fake links in tests
* Fix all the dead links in docs
This commit is contained in:
Artem Bilan
2019-03-21 17:13:41 -04:00
parent 0ce6216e49
commit 20e8f0af2f
130 changed files with 716 additions and 712 deletions

View File

@@ -40,5 +40,5 @@ appropriate to the circumstances. Maintainers are obligated to maintain confiden
with regard to the reporter of an incident.
This Code of Conduct is adapted from the
http://contributor-covenant.org[Contributor Covenant], version 1.3.0, available at
http://contributor-covenant.org/version/1/3/0/[contributor-covenant.org/version/1/3/0/]
https://contributor-covenant.org[Contributor Covenant], version 1.3.0, available at
https://contributor-covenant.org/version/1/3/0/[contributor-covenant.org/version/1/3/0/]

View File

@@ -33,7 +33,7 @@ Signing the CLA does not grant anyone commit rights to the main repository, but
1. Go to https://github.com/spring-projects/spring-integration[https://github.com/spring-projects/spring-integration]
2. Hit the "fork" button and choose your own github account as the target
3. For more detail see http://help.github.com/fork-a-repo/[Fork A Repo].
3. For more detail see https://help.github.com/fork-a-repo/[Fork A Repo].
== Setup your Local Development Environment
@@ -53,7 +53,7 @@ _you should see branches on origin as well as upstream, including 'master'_
* _Always_ work on topic branches (Typically use the GitHub issue ID as the branch name).
- For example, to create and switch to a new branch for issue 123: `git checkout -b GH-123`
* You might be working on several different topic branches at any given time, but when at a stopping point for one of those branches, commit (a local operation).
* Please follow the "Commit Guidelines" described in http://git-scm.com/book/en/Distributed-Git-Contributing-to-a-Project[this chapter of Pro Git].
* Please follow the "Commit Guidelines" described in https://git-scm.com/book/en/Distributed-Git-Contributing-to-a-Project[this chapter of Pro Git].
* Then to begin working on another issue (say 101): `git checkout GH-101`.
The _-b_ flag is not needed if that branch already exists in your local repository.
* When ready to resolve an issue or to collaborate with others, you can push your branch to origin (your fork), e.g.: `git push origin GH-123`
@@ -65,7 +65,7 @@ Alternatively, they can use `git fetch --all` to sync their local state with all
* A prerequisite for any pull request is that it will be cleanly merge-able with the upstream master's current state.
**This is the responsibility of any contributor.**
If your pull request cannot be applied cleanly, the project lead will most likely add a comment requesting that you make it merge-able.
For a full explanation, see http://git-scm.com/book/en/Git-Branching-Rebasing[the Pro Git section on rebasing].
For a full explanation, see https://git-scm.com/book/en/Git-Branching-Rebasing[the Pro Git section on rebasing].
As stated there: _"> Often, youll do this to make sure your commits apply cleanly on a remote branch — perhaps in a project to which youre trying to contribute but that you dont maintain."_
== Keeping your Local Code in Sync
@@ -80,7 +80,7 @@ As stated there: _"> Often, youll do this to make sure your commits apply cle
- Then: `git pull upstream master`
- Switch back to the topic branch: `git checkout GH-123` (no -b needed since the branch already exists)
- Rebase the topic branch to minimize the distance between it and your recently synced master branch: `git rebase master`
(Again, for more detail see http://git-scm.com/book/en/Git-Branching-Rebasing[the Pro Git section on rebasing]).
(Again, for more detail see https://git-scm.com/book/en/Git-Branching-Rebasing[the Pro Git section on rebasing]).
* **Note** While it is generally recommended to __not__ re-write history by using `push --force`, and we do not do this on `master` (and release) branches in the main repo, we require topic branches for pull requests to be rebased before merging, in order to maintain a clean timeline and avoid "merge" commits.
* If, while rebasing for the merge, we find significant conflicts, we may ask you to rebase and `push --force` to your topic branch after resolving the conflicts.
* Assuming your pull request is merged into the 'upstream' master, you will end up pulling that change into your own master eventually and, at that time, you may decide to delete the topic branch from your local repository and your fork (origin) if you pushed it there.

View File

@@ -1,4 +1,4 @@
Spring Integration [<img src="https://build.spring.io/plugins/servlet/buildStatusImage/INT-MASTER">](https://build.spring.io/browse/INT-MASTER) [![Join the chat at https://gitter.im/spring-projects/spring-integration](https://badges.gitter.im/spring-projects/spring-integration.svg)](https://gitter.im/spring-projects/spring-integration?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
Spring Integration [<img src="https://build.spring.io/plugins/servlet/wittified/build-status/INT-MASTER">](https://build.spring.io/browse/INT-MASTER) [![Join the chat at https://gitter.im/spring-projects/spring-integration](https://badges.gitter.im/spring-projects/spring-integration.svg)](https://gitter.im/spring-projects/spring-integration?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
==================
# Checking out and Building
@@ -53,4 +53,4 @@ To generate IDEA metadata (.iml and .ipr files), do the following:
# Resources
For more information, please visit the Spring Integration website at:
[http://projects.spring.io/spring-integration](http://projects.spring.io/spring-integration/)
[https://projects.spring.io/spring-integration](https://projects.spring.io/spring-integration/)

View File

@@ -9,7 +9,7 @@
<xsd:import namespace="http://www.springframework.org/schema/beans" />
<xsd:import namespace="http://www.springframework.org/schema/tool" />
<xsd:import namespace="http://www.springframework.org/schema/integration"
schemaLocation="http://www.springframework.org/schema/integration/spring-integration-5.2.xsd"/>
schemaLocation="https://www.springframework.org/schema/integration/spring-integration-5.2.xsd"/>
<xsd:element name="outbound-channel-adapter">
<xsd:annotation>

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2014-2018 the original author or authors.
* Copyright 2014-2019 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -28,7 +28,7 @@ import org.springframework.util.Assert;
/**
* The {@link org.aopalliance.intercept.MethodInterceptor} implementation for the
* <a href="http://www.eaipatterns.com/IdempotentReceiver.html">Idempotent Receiver</a>
* <a href="https://www.enterpriseintegrationpatterns.com/IdempotentReceiver.html">Idempotent Receiver</a>
* E.I. Pattern.
* <p>
* This {@link org.aopalliance.intercept.MethodInterceptor} works like a
@@ -48,6 +48,7 @@ import org.springframework.util.Assert;
* @author Gary Russell
*
* @since 4.1
*
* @see org.springframework.integration.selector.MetadataStoreSelector
* @see org.springframework.integration.config.IdempotentReceiverAutoProxyCreatorInitializer
*/

View File

@@ -27,7 +27,7 @@ import com.jayway.jsonpath.Predicate;
/**
* Utility class to {@link #evaluate} a jsonPath on the provided object.
* Delegates evaluation to <a href="http://code.google.com/p/json-path">JsonPath</a>.
* Delegates evaluation to <a href="https://github.com/json-path/JsonPath">JsonPath</a>.
* Note {@link #evaluate} is used as {@code #jsonPath()} SpEL function.
*
* @author Artem Bilan

View File

@@ -44,7 +44,7 @@ import org.springframework.util.ClassUtils;
/**
* The {@link MessageHandler} implementation for the
* <a href="http://www.eaipatterns.com/BroadcastAggregate.html">Scatter-Gather</a> EIP pattern.
* <a href="https://www.enterpriseintegrationpatterns.com/BroadcastAggregate.html">Scatter-Gather</a> EIP pattern.
*
* @author Artem Bilan
* @author Abdul Zaheer

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2014-2018 the original author or authors.
* Copyright 2014-2019 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -39,7 +39,7 @@ import org.springframework.util.Assert;
* {@code MetadataStore} associated with the {@code key}.
* <p>
* This {@link MessageSelector} is useful for an
* <a href="http://www.eaipatterns.com/IdempotentReceiver.html">Idempotent Receiver</a>
* <a href="https://www.enterpriseintegrationpatterns.com/IdempotentReceiver.html">Idempotent Receiver</a>
* implementation.
* <p>
* It can be used in a {@link org.springframework.integration.filter.MessageFilter}

View File

@@ -3,8 +3,8 @@ xmlheaders=\
<beans xmlns="http://www.springframework.org/schema/beans" \
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" \
xmlns:int="http://www.springframework.org/schema/integration" \
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd \
http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd">
xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd \
http://www.springframework.org/schema/integration https://www.springframework.org/schema/integration/spring-integration.xsd">
xmlfooter= </beans>
service-activator=\

View File

@@ -3,8 +3,8 @@ xmlheaders=\
<beans xmlns="http://www.springframework.org/schema/beans" \
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" \
xmlns:int="http://www.springframework.org/schema/integration" \
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd \
http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd">
xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd \
http://www.springframework.org/schema/integration https://www.springframework.org/schema/integration/spring-integration.xsd">
xmlfooter= </beans>
empty=<int:idempotent-receiver endpoint=""/>

View File

@@ -3,9 +3,9 @@ splitter-inner-success=\
<beans:beans xmlns="http://www.springframework.org/schema/integration" \
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" \
xsi:schemaLocation="http://www.springframework.org/schema/beans \
http://www.springframework.org/schema/beans/spring-beans.xsd \
https://www.springframework.org/schema/beans/spring-beans.xsd \
http://www.springframework.org/schema/integration \
http://www.springframework.org/schema/integration/spring-integration.xsd"> \
https://www.springframework.org/schema/integration/spring-integration.xsd"> \
<channel id="inChannel"/> \
<channel id="outChannel"> \
<queue capacity="2" /> \
@@ -21,11 +21,11 @@ splitter-inner-success-with-poller=\
xmlns:beans="http://www.springframework.org/schema/beans" \
xmlns:task="http://www.springframework.org/schema/task" \
xsi:schemaLocation="http://www.springframework.org/schema/beans \
http://www.springframework.org/schema/beans/spring-beans.xsd \
https://www.springframework.org/schema/beans/spring-beans.xsd \
http://www.springframework.org/schema/task \
http://www.springframework.org/schema/task/spring-task.xsd \
https://www.springframework.org/schema/task/spring-task.xsd \
http://www.springframework.org/schema/integration \
http://www.springframework.org/schema/integration/spring-integration.xsd"> \
https://www.springframework.org/schema/integration/spring-integration.xsd"> \
<channel id="inChannel"> \
<queue capacity="2" /> \
</channel> \
@@ -45,11 +45,11 @@ splitter-inner-success-with-poller-reversed-order=\
xmlns:beans="http://www.springframework.org/schema/beans" \
xmlns:task="http://www.springframework.org/schema/task" \
xsi:schemaLocation="http://www.springframework.org/schema/beans \
http://www.springframework.org/schema/beans/spring-beans.xsd \
https://www.springframework.org/schema/beans/spring-beans.xsd \
http://www.springframework.org/schema/task \
http://www.springframework.org/schema/task/spring-task.xsd \
https://www.springframework.org/schema/task/spring-task.xsd \
http://www.springframework.org/schema/integration \
http://www.springframework.org/schema/integration/spring-integration.xsd"> \
https://www.springframework.org/schema/integration/spring-integration.xsd"> \
<channel id="inChannel"> \
<queue capacity="2" /> \
</channel> \
@@ -67,9 +67,9 @@ splitter-ref-success=\
<beans:beans xmlns="http://www.springframework.org/schema/integration" \
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" \
xsi:schemaLocation="http://www.springframework.org/schema/beans \
http://www.springframework.org/schema/beans/spring-beans.xsd \
https://www.springframework.org/schema/beans/spring-beans.xsd \
http://www.springframework.org/schema/integration \
http://www.springframework.org/schema/integration/spring-integration.xsd"> \
https://www.springframework.org/schema/integration/spring-integration.xsd"> \
<channel id="inChannel"/> \
<channel id="outChannel"> \
<queue capacity="2" /> \
@@ -82,9 +82,9 @@ splitter-failure-refAndBean=\
<beans:beans xmlns="http://www.springframework.org/schema/integration" \
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" \
xsi:schemaLocation="http://www.springframework.org/schema/beans \
http://www.springframework.org/schema/beans/spring-beans.xsd \
https://www.springframework.org/schema/beans/spring-beans.xsd \
http://www.springframework.org/schema/integration \
http://www.springframework.org/schema/integration/spring-integration.xsd"> \
https://www.springframework.org/schema/integration/spring-integration.xsd"> \
<channel id="inChannel"/> \
<channel id="outChannel"> \
<queue capacity="2" /> \
@@ -99,9 +99,9 @@ transformer-inner-success=\
<beans:beans xmlns="http://www.springframework.org/schema/integration" \
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" \
xsi:schemaLocation="http://www.springframework.org/schema/beans \
http://www.springframework.org/schema/beans/spring-beans.xsd \
https://www.springframework.org/schema/beans/spring-beans.xsd \
http://www.springframework.org/schema/integration \
http://www.springframework.org/schema/integration/spring-integration.xsd"> \
https://www.springframework.org/schema/integration/spring-integration.xsd"> \
<channel id="inChannel"/> \
<channel id="outChannel"> \
<queue capacity="1" /> \
@@ -115,9 +115,9 @@ transformer-ref-success=\
<beans:beans xmlns="http://www.springframework.org/schema/integration" \
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" \
xsi:schemaLocation="http://www.springframework.org/schema/beans \
http://www.springframework.org/schema/beans/spring-beans.xsd \
https://www.springframework.org/schema/beans/spring-beans.xsd \
http://www.springframework.org/schema/integration \
http://www.springframework.org/schema/integration/spring-integration.xsd"> \
https://www.springframework.org/schema/integration/spring-integration.xsd"> \
<channel id="inChannel"/> \
<channel id="outChannel"> \
<queue capacity="1" /> \
@@ -130,9 +130,9 @@ transformer-failure-refAndBean=\
<beans:beans xmlns="http://www.springframework.org/schema/integration" \
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" \
xsi:schemaLocation="http://www.springframework.org/schema/beans \
http://www.springframework.org/schema/beans/spring-beans.xsd \
https://www.springframework.org/schema/beans/spring-beans.xsd \
http://www.springframework.org/schema/integration \
http://www.springframework.org/schema/integration/spring-integration.xsd"> \
https://www.springframework.org/schema/integration/spring-integration.xsd"> \
<channel id="inChannel"/> \
<channel id="outChannel"> \
<queue capacity="1" /> \
@@ -147,9 +147,9 @@ router-inner-success=\
<beans:beans xmlns="http://www.springframework.org/schema/integration" \
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" \
xsi:schemaLocation="http://www.springframework.org/schema/beans \
http://www.springframework.org/schema/beans/spring-beans.xsd \
https://www.springframework.org/schema/beans/spring-beans.xsd \
http://www.springframework.org/schema/integration \
http://www.springframework.org/schema/integration/spring-integration.xsd"> \
https://www.springframework.org/schema/integration/spring-integration.xsd"> \
<channel id="inChannel"/> \
<channel id="channel1"> \
<queue capacity="1" /> \
@@ -166,9 +166,9 @@ router-ref-success=\
<beans:beans xmlns="http://www.springframework.org/schema/integration" \
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" \
xsi:schemaLocation="http://www.springframework.org/schema/beans \
http://www.springframework.org/schema/beans/spring-beans.xsd \
https://www.springframework.org/schema/beans/spring-beans.xsd \
http://www.springframework.org/schema/integration \
http://www.springframework.org/schema/integration/spring-integration.xsd"> \
https://www.springframework.org/schema/integration/spring-integration.xsd"> \
<channel id="inChannel"/> \
<channel id="channel1"> \
<queue capacity="1" /> \
@@ -184,9 +184,9 @@ router-failure-refAndBean=\
<beans:beans xmlns="http://www.springframework.org/schema/integration" \
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" \
xsi:schemaLocation="http://www.springframework.org/schema/beans \
http://www.springframework.org/schema/beans/spring-beans.xsd \
https://www.springframework.org/schema/beans/spring-beans.xsd \
http://www.springframework.org/schema/integration \
http://www.springframework.org/schema/integration/spring-integration.xsd"> \
https://www.springframework.org/schema/integration/spring-integration.xsd"> \
<channel id="inChannel"/> \
<router id="testRouter" ref="testRouterBean" input-channel="inChannel" method="route"> \
<beans:bean class="org.springframework.integration.config.xml.InnerDefinitionHandlerAwareEndpointParserTests$TestRouter" /> \
@@ -198,9 +198,9 @@ sa-inner-success=\
<beans:beans xmlns="http://www.springframework.org/schema/integration" \
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" \
xsi:schemaLocation="http://www.springframework.org/schema/beans \
http://www.springframework.org/schema/beans/spring-beans.xsd \
https://www.springframework.org/schema/beans/spring-beans.xsd \
http://www.springframework.org/schema/integration \
http://www.springframework.org/schema/integration/spring-integration.xsd"> \
https://www.springframework.org/schema/integration/spring-integration.xsd"> \
<channel id="inChannel"/> \
<channel id="outChannel"> \
<queue capacity="1" /> \
@@ -214,9 +214,9 @@ sa-ref-success=\
<beans:beans xmlns="http://www.springframework.org/schema/integration" \
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" \
xsi:schemaLocation="http://www.springframework.org/schema/beans \
http://www.springframework.org/schema/beans/spring-beans.xsd \
https://www.springframework.org/schema/beans/spring-beans.xsd \
http://www.springframework.org/schema/integration \
http://www.springframework.org/schema/integration/spring-integration.xsd"> \
https://www.springframework.org/schema/integration/spring-integration.xsd"> \
<channel id="inChannel"/> \
<channel id="outChannel"> \
<queue capacity="1" /> \
@@ -229,9 +229,9 @@ sa-failure-refAndBean=\
<beans:beans xmlns="http://www.springframework.org/schema/integration" \
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" \
xsi:schemaLocation="http://www.springframework.org/schema/beans \
http://www.springframework.org/schema/beans/spring-beans.xsd \
https://www.springframework.org/schema/beans/spring-beans.xsd \
http://www.springframework.org/schema/integration \
http://www.springframework.org/schema/integration/spring-integration.xsd"> \
https://www.springframework.org/schema/integration/spring-integration.xsd"> \
<channel id="inChannel"/> \
<channel id="outChannel"> \
<queue capacity="1" /> \
@@ -246,9 +246,9 @@ aggregator-inner-success=\
<beans:beans xmlns="http://www.springframework.org/schema/integration" \
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" \
xsi:schemaLocation="http://www.springframework.org/schema/beans \
http://www.springframework.org/schema/beans/spring-beans.xsd \
https://www.springframework.org/schema/beans/spring-beans.xsd \
http://www.springframework.org/schema/integration \
http://www.springframework.org/schema/integration/spring-integration.xsd"> \
https://www.springframework.org/schema/integration/spring-integration.xsd"> \
<channel id="inChannel"/> \
<channel id="outChannel"> \
<queue capacity="5" /> \
@@ -262,9 +262,9 @@ aggregator-ref-success=\
<beans:beans xmlns="http://www.springframework.org/schema/integration" \
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" \
xsi:schemaLocation="http://www.springframework.org/schema/beans \
http://www.springframework.org/schema/beans/spring-beans.xsd \
https://www.springframework.org/schema/beans/spring-beans.xsd \
http://www.springframework.org/schema/integration \
http://www.springframework.org/schema/integration/spring-integration.xsd"> \
https://www.springframework.org/schema/integration/spring-integration.xsd"> \
<channel id="inChannel"> \
</channel> \
<channel id="outChannel"> \
@@ -280,11 +280,11 @@ aggregator-inner-concurrent-success=\
xmlns:beans="http://www.springframework.org/schema/beans" \
xmlns:task="http://www.springframework.org/schema/task" \
xsi:schemaLocation="http://www.springframework.org/schema/beans \
http://www.springframework.org/schema/beans/spring-beans.xsd \
https://www.springframework.org/schema/beans/spring-beans.xsd \
http://www.springframework.org/schema/task \
http://www.springframework.org/schema/task/spring-task.xsd \
https://www.springframework.org/schema/task/spring-task.xsd \
http://www.springframework.org/schema/integration \
http://www.springframework.org/schema/integration/spring-integration.xsd"> \
https://www.springframework.org/schema/integration/spring-integration.xsd"> \
<channel id="inChannel"> \
<queue capacity="5" /> \
</channel> \
@@ -304,11 +304,11 @@ aggregator-inner-concurrent-success-reorder-bean-poller=\
xmlns:beans="http://www.springframework.org/schema/beans" \
xmlns:task="http://www.springframework.org/schema/task" \
xsi:schemaLocation="http://www.springframework.org/schema/beans \
http://www.springframework.org/schema/beans/spring-beans.xsd \
https://www.springframework.org/schema/beans/spring-beans.xsd \
http://www.springframework.org/schema/task \
http://www.springframework.org/schema/task/spring-task.xsd \
https://www.springframework.org/schema/task/spring-task.xsd \
http://www.springframework.org/schema/integration \
http://www.springframework.org/schema/integration/spring-integration.xsd"> \
https://www.springframework.org/schema/integration/spring-integration.xsd"> \
<channel id="inChannel"> \
<queue capacity="5" /> \
</channel> \
@@ -326,9 +326,9 @@ aggregator-failure-refAndBean=\
<beans:beans xmlns="http://www.springframework.org/schema/integration" \
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" \
xsi:schemaLocation="http://www.springframework.org/schema/beans \
http://www.springframework.org/schema/beans/spring-beans.xsd \
https://www.springframework.org/schema/beans/spring-beans.xsd \
http://www.springframework.org/schema/integration \
http://www.springframework.org/schema/integration/spring-integration.xsd"> \
https://www.springframework.org/schema/integration/spring-integration.xsd"> \
<channel id="inChannel"/> \
<channel id="outChannel"> \
<queue capacity="5" /> \
@@ -343,9 +343,9 @@ filter-inner-success=\
<beans:beans xmlns="http://www.springframework.org/schema/integration" \
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" \
xsi:schemaLocation="http://www.springframework.org/schema/beans \
http://www.springframework.org/schema/beans/spring-beans.xsd \
https://www.springframework.org/schema/beans/spring-beans.xsd \
http://www.springframework.org/schema/integration \
http://www.springframework.org/schema/integration/spring-integration.xsd"> \
https://www.springframework.org/schema/integration/spring-integration.xsd"> \
<channel id="inChannel"/> \
<channel id="outChannel"> \
<queue capacity="1" /> \
@@ -359,9 +359,9 @@ filter-ref-success=\
<beans:beans xmlns="http://www.springframework.org/schema/integration" \
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" \
xsi:schemaLocation="http://www.springframework.org/schema/beans \
http://www.springframework.org/schema/beans/spring-beans.xsd \
https://www.springframework.org/schema/beans/spring-beans.xsd \
http://www.springframework.org/schema/integration \
http://www.springframework.org/schema/integration/spring-integration.xsd"> \
https://www.springframework.org/schema/integration/spring-integration.xsd"> \
<channel id="inChannel"/> \
<channel id="outChannel"> \
<queue capacity="1"/> \
@@ -374,9 +374,9 @@ filter-failure-refAndBean=\
<beans:beans xmlns="http://www.springframework.org/schema/integration" \
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" \
xsi:schemaLocation="http://www.springframework.org/schema/beans \
http://www.springframework.org/schema/beans/spring-beans.xsd \
https://www.springframework.org/schema/beans/spring-beans.xsd \
http://www.springframework.org/schema/integration \
http://www.springframework.org/schema/integration/spring-integration.xsd"> \
https://www.springframework.org/schema/integration/spring-integration.xsd"> \
<channel id="inChannel"/> \
<channel id="outChannel"> \
<queue capacity="1"/> \

View File

@@ -84,9 +84,9 @@ public class PayloadTypeRouterParserTests {
"<beans:beans xmlns=\"http://www.springframework.org/schema/integration\"" +
" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:beans=\"http://www.springframework.org/schema/beans\"" +
" xsi:schemaLocation=\"http://www.springframework.org/schema/beans" +
" http://www.springframework.org/schema/beans/spring-beans.xsd" +
" https://www.springframework.org/schema/beans/spring-beans.xsd" +
" http://www.springframework.org/schema/integration" +
" http://www.springframework.org/schema/integration/spring-integration.xsd\">" +
" https://www.springframework.org/schema/integration/spring-integration.xsd\">" +
" <channel id=\"routingChannel\" />" +
" <payload-type-router input-channel=\"routingChannel\">" +
" <mapping type=\"FAKE_TYPE\" channel=\"channel1\" />" +
@@ -98,9 +98,9 @@ public class PayloadTypeRouterParserTests {
"<beans:beans xmlns=\"http://www.springframework.org/schema/integration\"" +
" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:beans=\"http://www.springframework.org/schema/beans\"" +
" xsi:schemaLocation=\"http://www.springframework.org/schema/beans" +
" http://www.springframework.org/schema/beans/spring-beans.xsd" +
" https://www.springframework.org/schema/beans/spring-beans.xsd" +
" http://www.springframework.org/schema/integration" +
" http://www.springframework.org/schema/integration/spring-integration.xsd\">" +
" https://www.springframework.org/schema/integration/spring-integration.xsd\">" +
" <channel id=\"routingChannel\" />" +
" <payload-type-router input-channel=\"routingChannel\"/>" +
"</beans:beans>";

View File

@@ -8,7 +8,7 @@
<xsd:import namespace="http://www.springframework.org/schema/beans" />
<xsd:import namespace="http://www.springframework.org/schema/integration"
schemaLocation="http://www.springframework.org/schema/integration/spring-integration-5.2.xsd" />
schemaLocation="https://www.springframework.org/schema/integration/spring-integration-5.2.xsd" />
<xsd:annotation>
<xsd:documentation><![CDATA[

View File

@@ -9,7 +9,7 @@
<xsd:import namespace="http://www.springframework.org/schema/beans" />
<xsd:import namespace="http://www.springframework.org/schema/integration"
schemaLocation="http://www.springframework.org/schema/integration/spring-integration-5.2.xsd" />
schemaLocation="https://www.springframework.org/schema/integration/spring-integration-5.2.xsd" />
<xsd:element name="inbound-channel-adapter">
<xsd:annotation>

View File

@@ -1,7 +1,7 @@
<rss version="2.0">
<channel>
<title>Spring Integration</title>
<link>http://www.springsource.org/spring-integration</link>
<link>https://www.springsource.org/spring-integration</link>
<description>
Spring Integration is a really cool framework
</description>
@@ -11,9 +11,9 @@ All Rights Reserved.</copyright>
<lastBuildDate>Tue, 12 Apr 2010 18:21:32 EST</lastBuildDate>
<ttl>240</ttl>
<image>
<url>http://www.springsource.org/sites/all/themes/dotorg09/images/dotorg09_logo.png</url>
<url>https://www.springsource.org/sites/all/themes/dotorg09/images/dotorg09_logo.png</url>
<title>Spring Integration</title>
<link>http://www.springsource.org/spring-integration</link>
<link>https://www.springsource.org/spring-integration</link>
</image>
</channel>

View File

@@ -1,7 +1,7 @@
<rss version="2.0">
<channel>
<title>Spring Integration</title>
<link>http://www.springsource.org/spring-integration</link>
<link>https://www.springsource.org/spring-integration</link>
<description>
Spring Integration is a really cool framework
</description>
@@ -11,16 +11,16 @@ All Rights Reserved.</copyright>
<lastBuildDate>Tue, 12 Apr 2010 18:21:32 EST</lastBuildDate>
<ttl>240</ttl>
<image>
<url>http://www.springsource.org/sites/all/themes/dotorg09/images/dotorg09_logo.png</url>
<url>https://www.springsource.org/sites/all/themes/dotorg09/images/dotorg09_logo.png</url>
<title>Spring Integration</title>
<link>http://www.springsource.org/spring-integration</link>
<link>https://www.springsource.org/spring-integration</link>
</image>
<item>
<title>
Spring Integration adapters
</title>
<link>http://www.springsource.org/extensions/se-sia</link>
<link>https://www.springsource.org/extensions/se-sia</link>
<description>
Spring Integration adapters are really cool
</description>
@@ -31,7 +31,7 @@ Spring Integration adapters are really cool
<title>
Spring Integration download
</title>
<link>http://www.springsource.com/products/spring-community-download</link>
<link>https://www.springsource.com/products/spring-community-download</link>
<description>
Download Spring Integration
</description>
@@ -42,7 +42,7 @@ Download Spring Integration
<title>
Check out Spring Integration forums
</title>
<link>http://forum.springsource.org/forumdisplay.php?f=42</link>
<link>https://forum.spring.io/forumdisplay.php?f=42</link>
<description>
Spring Integration forums are awesome
</description>

View File

@@ -10,7 +10,7 @@
<xsd:import namespace="http://www.springframework.org/schema/beans"/>
<xsd:import namespace="http://www.springframework.org/schema/integration"
schemaLocation="http://www.springframework.org/schema/integration/spring-integration-5.2.xsd"/>
schemaLocation="https://www.springframework.org/schema/integration/spring-integration-5.2.xsd"/>
<xsd:annotation>
<xsd:documentation><![CDATA[

View File

@@ -4,9 +4,9 @@ xmlheaders=\
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" \
xmlns:int="http://www.springframework.org/schema/integration" \
xmlns:int-file="http://www.springframework.org/schema/integration/file" \
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd \
http://www.springframework.org/schema/integration/file http://www.springframework.org/schema/integration/file/spring-integration-file.xsd \
http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd">
xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd \
http://www.springframework.org/schema/integration/file https://www.springframework.org/schema/integration/file/spring-integration-file.xsd \
http://www.springframework.org/schema/integration https://www.springframework.org/schema/integration/spring-integration.xsd">
xmlfooter= </beans>
file-outbound-gateway=<int:chain input-channel="fileOutboundGatewayInsideChain" output-channel="nullChannel">\

View File

@@ -10,9 +10,9 @@
<xsd:import namespace="http://www.springframework.org/schema/beans" />
<xsd:import namespace="http://www.springframework.org/schema/tool" />
<xsd:import namespace="http://www.springframework.org/schema/integration"
schemaLocation="http://www.springframework.org/schema/integration/spring-integration-5.2.xsd" />
schemaLocation="https://www.springframework.org/schema/integration/spring-integration-5.2.xsd" />
<xsd:import namespace="http://www.springframework.org/schema/integration/file"
schemaLocation="http://www.springframework.org/schema/integration/file/spring-integration-file-5.2.xsd" />
schemaLocation="https://www.springframework.org/schema/integration/file/spring-integration-file-5.2.xsd" />
<xsd:element name="outbound-channel-adapter">
<xsd:annotation>

View File

@@ -7,10 +7,10 @@
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xsd:import namespace="http://www.springframework.org/schema/beans"
schemaLocation="http://www.springframework.org/schema/beans/spring-beans.xsd"/>
schemaLocation="https://www.springframework.org/schema/beans/spring-beans.xsd"/>
<xsd:import namespace="http://www.springframework.org/schema/tool"/>
<xsd:import namespace="http://www.springframework.org/schema/integration"
schemaLocation="http://www.springframework.org/schema/integration/spring-integration-5.2.xsd"/>
schemaLocation="https://www.springframework.org/schema/integration/spring-integration-5.2.xsd"/>
<xsd:annotation>
<xsd:documentation><![CDATA[
Defines the core configuration elements for Spring Integration GemFire Support.

View File

@@ -7,11 +7,11 @@
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xsd:include
schemaLocation="http://www.springframework.org/schema/integration/scripting/spring-integration-scripting-core-5.2.xsd"
schemaLocation="https://www.springframework.org/schema/integration/scripting/spring-integration-scripting-core-5.2.xsd"
/>
<xsd:import namespace="http://www.springframework.org/schema/integration"
schemaLocation="http://www.springframework.org/schema/integration/spring-integration-5.2.xsd" />
schemaLocation="https://www.springframework.org/schema/integration/spring-integration-5.2.xsd" />
<xsd:element name="script" type="GroovyScript">
<xsd:annotation>

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2017-2018 the original author or authors.
* Copyright 2017-2019 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -364,7 +364,7 @@ public abstract class HttpInboundEndpointSupportSpec<S extends HttpInboundEndpoi
}
/**
* List of allowed origins, e.g. {@code "http://domain1.com"}.
* List of allowed origins, e.g. {@code "https://domain1.com"}.
* <p>These values are placed in the {@code Access-Control-Allow-Origin}
* header of both the pre-flight response and the actual response.
* {@code "*"} means that all origins are allowed.

View File

@@ -8,7 +8,7 @@
<xsd:import namespace="http://www.springframework.org/schema/beans" />
<xsd:import namespace="http://www.springframework.org/schema/tool" />
<xsd:import namespace="http://www.springframework.org/schema/integration"
schemaLocation="http://www.springframework.org/schema/integration/spring-integration-5.2.xsd" />
schemaLocation="https://www.springframework.org/schema/integration/spring-integration-5.2.xsd" />
<xsd:annotation>
<xsd:documentation><![CDATA[

View File

@@ -4,12 +4,12 @@ xmlheaders=\
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" \
xmlns:int="http://www.springframework.org/schema/integration" \
xmlns:int-http="http://www.springframework.org/schema/integration/http" \
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd \
http://www.springframework.org/schema/integration/http http://www.springframework.org/schema/integration/http/spring-integration-http.xsd \
http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd">
xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd \
http://www.springframework.org/schema/integration/http https://www.springframework.org/schema/integration/http/spring-integration-http.xsd \
http://www.springframework.org/schema/integration https://www.springframework.org/schema/integration/spring-integration.xsd">
xmlfooter= </beans>
http-outbound-gateway=<int:chain id="httpChain" input-channel="httpOutboundGatewayInsideChain" output-channel="nullChannel">\
<int-http:outbound-gateway request-channel="requestChannel" url="http://google.com/" http-method="POST"/>\
<int-http:outbound-gateway request-channel="requestChannel" url="https://google.com/" http-method="POST"/>\
</int:chain>

View File

@@ -85,7 +85,7 @@ public class HttpRequestExecutingMessageHandlerTests {
@Test
public void simpleStringKeyStringValueFormData() throws Exception {
HttpRequestExecutingMessageHandler handler = new HttpRequestExecutingMessageHandler(
"http://www.springsource.org/spring-integration");
"https://www.springsource.org/spring-integration");
MockRestTemplate template = new MockRestTemplate();
new DirectFieldAccessor(handler).setPropertyValue("restTemplate", template);
handler.setHttpMethod(HttpMethod.POST);
@@ -120,7 +120,7 @@ public class HttpRequestExecutingMessageHandlerTests {
@Test
public void simpleStringKeyObjectValueFormData() throws Exception {
HttpRequestExecutingMessageHandler handler = new HttpRequestExecutingMessageHandler(
"http://www.springsource.org/spring-integration");
"https://www.springsource.org/spring-integration");
MockRestTemplate template = new MockRestTemplate();
new DirectFieldAccessor(handler).setPropertyValue("restTemplate", template);
handler.setHttpMethod(HttpMethod.POST);
@@ -154,7 +154,7 @@ public class HttpRequestExecutingMessageHandlerTests {
@Test
public void simpleObjectKeyObjectValueFormData() throws Exception {
HttpRequestExecutingMessageHandler handler = new HttpRequestExecutingMessageHandler(
"http://www.springsource.org/spring-integration");
"https://www.springsource.org/spring-integration");
MockRestTemplate template = new MockRestTemplate();
new DirectFieldAccessor(handler).setPropertyValue("restTemplate", template);
handler.setHttpMethod(HttpMethod.POST);
@@ -189,7 +189,7 @@ public class HttpRequestExecutingMessageHandlerTests {
@Test
public void stringKeyStringArrayValueFormData() throws Exception {
HttpRequestExecutingMessageHandler handler = new HttpRequestExecutingMessageHandler(
"http://www.springsource.org/spring-integration");
"https://www.springsource.org/spring-integration");
MockRestTemplate template = new MockRestTemplate();
new DirectFieldAccessor(handler).setPropertyValue("restTemplate", template);
handler.setHttpMethod(HttpMethod.POST);
@@ -237,7 +237,7 @@ public class HttpRequestExecutingMessageHandlerTests {
@Test
public void stringKeyPrimitiveArrayValueMixedFormData() throws Exception {
HttpRequestExecutingMessageHandler handler = new HttpRequestExecutingMessageHandler(
"http://www.springsource.org/spring-integration");
"https://www.springsource.org/spring-integration");
MockRestTemplate template = new MockRestTemplate();
new DirectFieldAccessor(handler).setPropertyValue("restTemplate", template);
handler.setHttpMethod(HttpMethod.POST);
@@ -288,7 +288,7 @@ public class HttpRequestExecutingMessageHandlerTests {
@Test
public void stringKeyNullArrayValueMixedFormData() throws Exception {
HttpRequestExecutingMessageHandler handler = new HttpRequestExecutingMessageHandler(
"http://www.springsource.org/spring-integration");
"https://www.springsource.org/spring-integration");
MockRestTemplate template = new MockRestTemplate();
new DirectFieldAccessor(handler).setPropertyValue("restTemplate", template);
handler.setHttpMethod(HttpMethod.POST);
@@ -332,7 +332,7 @@ public class HttpRequestExecutingMessageHandlerTests {
@Test
public void stringKeyNullCollectionValueMixedFormDataString() throws Exception {
HttpRequestExecutingMessageHandler handler = new HttpRequestExecutingMessageHandler(
"http://www.springsource.org/spring-integration");
"https://www.springsource.org/spring-integration");
MockRestTemplate template = new MockRestTemplate();
new DirectFieldAccessor(handler).setPropertyValue("restTemplate", template);
handler.setHttpMethod(HttpMethod.POST);
@@ -379,7 +379,7 @@ public class HttpRequestExecutingMessageHandlerTests {
@Test
public void stringKeyNullCollectionValueMixedFormDataObject() throws Exception {
HttpRequestExecutingMessageHandler handler = new HttpRequestExecutingMessageHandler(
"http://www.springsource.org/spring-integration");
"https://www.springsource.org/spring-integration");
MockRestTemplate template = new MockRestTemplate();
new DirectFieldAccessor(handler).setPropertyValue("restTemplate", template);
handler.setHttpMethod(HttpMethod.POST);
@@ -422,7 +422,7 @@ public class HttpRequestExecutingMessageHandlerTests {
@Test
public void stringKeyStringCollectionValueFormData() throws Exception {
HttpRequestExecutingMessageHandler handler = new HttpRequestExecutingMessageHandler(
"http://www.springsource.org/spring-integration");
"https://www.springsource.org/spring-integration");
MockRestTemplate template = new MockRestTemplate();
new DirectFieldAccessor(handler).setPropertyValue("restTemplate", template);
handler.setHttpMethod(HttpMethod.POST);
@@ -467,7 +467,7 @@ public class HttpRequestExecutingMessageHandlerTests {
@Test
public void stringKeyObjectCollectionValueFormData() throws Exception {
HttpRequestExecutingMessageHandler handler = new HttpRequestExecutingMessageHandler(
"http://www.springsource.org/spring-integration");
"https://www.springsource.org/spring-integration");
MockRestTemplate template = new MockRestTemplate();
new DirectFieldAccessor(handler).setPropertyValue("restTemplate", template);
handler.setHttpMethod(HttpMethod.POST);
@@ -512,7 +512,7 @@ public class HttpRequestExecutingMessageHandlerTests {
@Test
public void nameOnlyWithNullValues() throws Exception {
HttpRequestExecutingMessageHandler handler = new HttpRequestExecutingMessageHandler(
"http://www.springsource.org/spring-integration");
"https://www.springsource.org/spring-integration");
MockRestTemplate template = new MockRestTemplate();
new DirectFieldAccessor(handler).setPropertyValue("restTemplate", template);
handler.setHttpMethod(HttpMethod.POST);
@@ -550,7 +550,7 @@ public class HttpRequestExecutingMessageHandlerTests {
@Test
public void contentAsByteArray() throws Exception {
HttpRequestExecutingMessageHandler handler = new HttpRequestExecutingMessageHandler(
"http://www.springsource.org/spring-integration");
"https://www.springsource.org/spring-integration");
MockRestTemplate template = new MockRestTemplate();
new DirectFieldAccessor(handler).setPropertyValue("restTemplate", template);
handler.setHttpMethod(HttpMethod.POST);
@@ -577,7 +577,7 @@ public class HttpRequestExecutingMessageHandlerTests {
@Test
public void contentAsXmlSource() throws Exception {
HttpRequestExecutingMessageHandler handler = new HttpRequestExecutingMessageHandler(
"http://www.springsource.org/spring-integration");
"https://www.springsource.org/spring-integration");
MockRestTemplate template = new MockRestTemplate();
new DirectFieldAccessor(handler).setPropertyValue("restTemplate", template);
handler.setHttpMethod(HttpMethod.POST);
@@ -604,7 +604,7 @@ public class HttpRequestExecutingMessageHandlerTests {
// should see a warn message
HttpRequestExecutingMessageHandler handler = new HttpRequestExecutingMessageHandler(
"http://www.springsource.org/spring-integration");
"https://www.springsource.org/spring-integration");
MockRestTemplate template = new MockRestTemplate();
new DirectFieldAccessor(handler).setPropertyValue("restTemplate", template);
handler.setHttpMethod(HttpMethod.GET);
@@ -614,7 +614,7 @@ public class HttpRequestExecutingMessageHandlerTests {
// should not see a warn message since 'setExtractPayload' is not set explicitly
handler = new HttpRequestExecutingMessageHandler("http://www.springsource.org/spring-integration");
handler = new HttpRequestExecutingMessageHandler("https://www.springsource.org/spring-integration");
template = new MockRestTemplate();
new DirectFieldAccessor(handler).setPropertyValue("restTemplate", template);
handler.setHttpMethod(HttpMethod.GET);
@@ -623,7 +623,7 @@ public class HttpRequestExecutingMessageHandlerTests {
// should not see a warn message since HTTP method is not GET
handler = new HttpRequestExecutingMessageHandler("http://www.springsource.org/spring-integration");
handler = new HttpRequestExecutingMessageHandler("https://www.springsource.org/spring-integration");
template = new MockRestTemplate();
new DirectFieldAccessor(handler).setPropertyValue("restTemplate", template);
handler.setHttpMethod(HttpMethod.POST);
@@ -636,7 +636,7 @@ public class HttpRequestExecutingMessageHandlerTests {
public void contentTypeIsNotSetForGetAndHeadRequest() throws Exception {
// GET
HttpRequestExecutingMessageHandler handler =
new HttpRequestExecutingMessageHandler("http://www.springsource.org/spring-integration");
new HttpRequestExecutingMessageHandler("https://www.springsource.org/spring-integration");
MockRestTemplate template = new MockRestTemplate();
new DirectFieldAccessor(handler).setPropertyValue("restTemplate", template);
handler.setHttpMethod(HttpMethod.GET);
@@ -736,7 +736,7 @@ public class HttpRequestExecutingMessageHandlerTests {
new SpelExpressionParser().parseExpression("headers['foo']"), restTemplate);
setBeanFactory(handler);
handler.afterPropertiesSet();
String theURL = "http://bar/baz?foo#bar";
String theURL = "https://bar/baz?foo#bar";
Message<?> message = MessageBuilder.withPayload("").setHeader("foo", theURL).build();
try {
handler.handleRequestMessage(message);
@@ -750,7 +750,7 @@ public class HttpRequestExecutingMessageHandlerTests {
public void testInt2455UriNotEncoded() {
MockRestTemplate restTemplate = new MockRestTemplate();
HttpRequestExecutingMessageHandler handler = new HttpRequestExecutingMessageHandler(
new SpelExpressionParser().parseExpression("'http://my.RabbitMQ.com/api/' + payload"), restTemplate);
new SpelExpressionParser().parseExpression("'https://my.RabbitMQ.com/api/' + payload"), restTemplate);
handler.setEncodeUri(false);
setBeanFactory(handler);
handler.afterPropertiesSet();
@@ -761,13 +761,13 @@ public class HttpRequestExecutingMessageHandlerTests {
catch (Exception e) {
}
assertThat(restTemplate.actualUrl.get())
.isEqualTo("http://my.RabbitMQ.com/api/queues/%2f/si.test.queue?foo#bar");
.isEqualTo("https://my.RabbitMQ.com/api/queues/%2f/si.test.queue?foo#bar");
}
@Test
public void acceptHeaderForSerializableResponse() throws Exception {
HttpRequestExecutingMessageHandler handler = new HttpRequestExecutingMessageHandler(
"http://www.springsource.org/spring-integration");
"https://www.springsource.org/spring-integration");
handler.setHttpMethod(HttpMethod.GET);
handler.setExpectedResponseType(Foo.class);
@@ -801,7 +801,7 @@ public class HttpRequestExecutingMessageHandlerTests {
@Test
public void acceptHeaderForSerializableResponseMessageExchange() throws Exception {
HttpRequestExecutingMessageHandler handler = new HttpRequestExecutingMessageHandler(
"http://www.springsource.org/spring-integration");
"https://www.springsource.org/spring-integration");
handler.setHttpMethod(HttpMethod.GET);
handler.setExtractPayload(false);

View File

@@ -17,8 +17,10 @@
package org.springframework.integration.http.support;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
import java.net.URI;
import java.net.URISyntaxException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
@@ -28,7 +30,8 @@ import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import org.junit.Test;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInstance;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.core.convert.ConversionService;
@@ -47,25 +50,27 @@ import org.springframework.util.CollectionUtils;
* @author Mark Fisher
* @author Gunnar Hillert
* @author Artem Bilan
*
* @since 2.0.1
*/
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class DefaultHttpHeaderMapperFromMessageInboundTests {
// Allow tests
@Test(expected = IllegalArgumentException.class)
@Test
public void validateAllowWithWrongMethodName() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Allow", "bar");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertThatIllegalArgumentException()
.isThrownBy(() -> mapper.fromHeaders(new MessageHeaders(messageHeaders), headers));
}
@Test
public void validateAllowAsString() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Allow", "GET");
HttpHeaders headers = new HttpHeaders();
@@ -77,7 +82,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
@Test
public void validateAllowAsStringCaseInsensitive() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("allow", "GET");
HttpHeaders headers = new HttpHeaders();
@@ -89,7 +94,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
@Test
public void validateAllowAsHttpMethod() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Allow", HttpMethod.GET);
HttpHeaders headers = new HttpHeaders();
@@ -101,7 +106,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
@Test
public void validateAllowAsDelimitedString() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Allow", "GET, POST");
HttpHeaders headers = new HttpHeaders();
@@ -114,7 +119,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
@Test
public void validateAllowAsStringArray() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Allow", new String[] { "GET", "POST" });
HttpHeaders headers = new HttpHeaders();
@@ -127,7 +132,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
@Test
public void validateAllowAsHttpMethodArray() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Allow", new HttpMethod[] { HttpMethod.GET, HttpMethod.POST });
HttpHeaders headers = new HttpHeaders();
@@ -140,7 +145,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
@Test
public void validateAllowAsCollectionOfString() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Allow", CollectionUtils.arrayToList(new String[] { "GET", "POST" }));
HttpHeaders headers = new HttpHeaders();
@@ -153,7 +158,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
@Test
public void validateAllowAsCollectionOfHttpMethods() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Allow", CollectionUtils.arrayToList(new HttpMethod[] { HttpMethod.GET, HttpMethod.POST }));
HttpHeaders headers = new HttpHeaders();
@@ -173,7 +178,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
@Test
public void validateETag() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("ETag", "\"1234\"");
HttpHeaders headers = new HttpHeaders();
@@ -186,7 +191,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
@Test
public void validateExpiresAsNumber() throws ParseException {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Expires", 12345678);
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
@@ -199,7 +204,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
@Test
public void validateExpiresAsString() throws ParseException {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Expires", "12345678");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
@@ -212,7 +217,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
@Test
public void validateExpiresAsDate() throws ParseException {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Expires", new Date(12345678));
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
@@ -227,7 +232,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
@Test
public void validateLastModifiedAsNumber() throws ParseException {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Last-Modified", 12345678);
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
@@ -241,7 +246,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
@Test
public void validateLastModifiedAsString() throws ParseException {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Last-Modified", "12345678");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
@@ -255,7 +260,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
@Test
public void validateLastModifiedAsDate() throws ParseException {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Last-Modified", new Date(12345678));
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
@@ -269,22 +274,22 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
// Location tests
@Test
public void validateLocation() throws Exception {
public void validateLocation() throws URISyntaxException {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Location", "http://foo.com");
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Location", "http://www.foo.com/");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertThat(headers.getLocation().toString()).isEqualTo(new URI("http://foo.com").toString());
assertThat(headers.getLocation().toString()).isEqualTo(new URI("http://www.foo.com/").toString());
}
// Transfer Encoding tests
@Test
public void validateTransferEncodingNotMappedFromMessageHeaders() throws Exception {
public void validateTransferEncodingNotMappedFromMessageHeaders() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Transfer-Encoding", "chunked");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
@@ -294,7 +299,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
}
@Test
public void validateTransferEncodingMappedFromHttpHeaders() throws Exception {
public void validateTransferEncodingMappedFromHttpHeaders() {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
mapper.setInboundHeaderNames(new String[] { "Transfer-Encoding" });
HttpHeaders headers = new HttpHeaders();
@@ -307,7 +312,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
}
@Test
public void validateTransferEncodingNotMappedFromHttpHeadersByDefault() throws Exception {
public void validateTransferEncodingNotMappedFromHttpHeadersByDefault() {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
HttpHeaders headers = new HttpHeaders();
@@ -322,10 +327,10 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
// Pragma tested as part of DefaultHttpHeaderMapperFromMessageOutboundTests
@Test
public void validateCustomHeaderNamesMappedToHttpHeaders() throws Exception {
public void validateCustomHeaderNamesMappedToHttpHeaders() {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
mapper.setOutboundHeaderNames(new String[] { "foo", "bar" });
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("foo", "abc");
messageHeaders.put("bar", "123");
HttpHeaders headers = new HttpHeaders();
@@ -338,10 +343,10 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
}
@Test
public void validateCustomHeaderNamePatternsMappedToHttpHeaders() throws Exception {
public void validateCustomHeaderNamePatternsMappedToHttpHeaders() {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
mapper.setOutboundHeaderNames(new String[] { "x*", "*z", "a*f" });
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("x1", "x1-value");
messageHeaders.put("1x", "1x-value");
messageHeaders.put("z1", "z1-value");
@@ -365,11 +370,11 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
}
@Test
public void validateCustomHeaderNamePatternsAndStandardResponseHeadersMappedToHttpHeaders() throws Exception {
public void validateCustomHeaderNamePatternsAndStandardResponseHeadersMappedToHttpHeaders() {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
mapper.setOutboundHeaderNames(new String[] { "foo*", "HTTP_RESPONSE_HEADERS" });
mapper.setUserDefinedHeaderPrefix("X-");
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("foobar", "abc");
messageHeaders.put("Accept", "text/html");
messageHeaders.put("Content-Type", "text/xml");
@@ -383,11 +388,11 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
}
@Test
public void validateCustomHeaderNamePatternsAndStandardResponseHeadersMappedToHttpHeadersWithCustomPrefix() throws Exception {
public void validateCustomHeaderNamePatternsAndStandardResponseHeadersMappedToHttpHeadersWithCustomPrefix() {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
mapper.setUserDefinedHeaderPrefix("Z-");
mapper.setOutboundHeaderNames(new String[] { "foo*", "HTTP_RESPONSE_HEADERS" });
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("foobar", "abc");
messageHeaders.put("Accept", "text/html");
messageHeaders.put("Content-Type", "text/xml");
@@ -401,11 +406,11 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
}
@Test
public void validateCustomHeaderNamePatternsAndStandardResponseHeadersMappedToHttpHeadersWithCustomPrefixEmptyString() throws Exception {
public void validateCustomHeaderNamePatternsAndStandardResponseHeadersMappedToHttpHeadersWithCustomPrefixEmptyString() {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
mapper.setUserDefinedHeaderPrefix("");
mapper.setOutboundHeaderNames(new String[] { "foo*", "HTTP_RESPONSE_HEADERS" });
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("foobar", "abc");
messageHeaders.put("Accept", "text/html");
messageHeaders.put("Content-Type", "text/xml");
@@ -419,11 +424,11 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
}
@Test
public void validateCustomHeaderNamePatternsAndStandardResponseHeadersMappedToHttpHeadersWithCustomPrefixNull() throws Exception {
public void validateCustomHeaderNamePatternsAndStandardResponseHeadersMappedToHttpHeadersWithCustomPrefixNull() {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
mapper.setUserDefinedHeaderPrefix(null);
mapper.setOutboundHeaderNames(new String[] { "foo*", "HTTP_RESPONSE_HEADERS" });
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("foobar", "abc");
messageHeaders.put("Accept", "text/html");
messageHeaders.put("Content-Type", "text/xml");
@@ -437,7 +442,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
}
@Test
public void validateCustomHeaderNamesMappedFromHttpHeaders() throws Exception {
public void validateCustomHeaderNamesMappedFromHttpHeaders() {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
mapper.setInboundHeaderNames(new String[] { "foo", "bar" });
HttpHeaders headers = new HttpHeaders();
@@ -450,7 +455,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
}
@Test
public void validateCustomHeaderNamePatternsMappedFromHttpHeaders() throws Exception {
public void validateCustomHeaderNamePatternsMappedFromHttpHeaders() {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
mapper.setInboundHeaderNames(new String[] { "x*", "*z", "a*f" });
HttpHeaders headers = new HttpHeaders();
@@ -473,13 +478,15 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
}
@Test
public void validateCustomHeaderNamePatternsAndStandardRequestHeadersMappedFromHttpHeaders() throws Exception {
public void validateCustomHeaderNamePatternsAndStandardRequestHeadersMappedFromHttpHeaders()
throws URISyntaxException {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
mapper.setInboundHeaderNames(new String[] { "foo*", "HTTP_REQUEST_HEADERS" });
HttpHeaders headers = new HttpHeaders();
headers.set("foobar", "abc");
headers.setAccept(Collections.singletonList(MediaType.TEXT_XML));
headers.setLocation(new URI("http://example.org"));
headers.setLocation(new URI("http://www.example.org"));
Map<String, ?> result = mapper.toHeaders(headers);
assertThat(result.size()).isEqualTo(2);
assertThat(result.get("Location")).isNull();
@@ -488,12 +495,12 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
}
@Test
public void validateCustomHeadersWithNonStringValuesAndNoConverter() throws Exception {
public void validateCustomHeadersWithNonStringValuesAndNoConverter() {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
mapper.setOutboundHeaderNames(new String[] { "customHeader*" });
HttpHeaders headers = new HttpHeaders();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("customHeaderA", 123);
messageHeaders.put("customHeaderB", new TestClass());
@@ -504,7 +511,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
@Test
public void validateCustomHeadersWithNonStringValuesAndDefaultConverterOnly() throws Exception {
public void validateCustomHeadersWithNonStringValuesAndDefaultConverterOnly() {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
mapper.setOutboundHeaderNames(new String[] { "customHeader*" });
ConversionService cs = new DefaultConversionService();
@@ -514,7 +521,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
mapper.afterPropertiesSet();
HttpHeaders headers = new HttpHeaders();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("customHeaderA", 123);
messageHeaders.put("customHeaderB", new TestClass());
@@ -525,7 +532,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
}
@Test
public void validateCustomHeadersWithNonStringValuesAndDefaultConverterWithCustomConverter() throws Exception {
public void validateCustomHeadersWithNonStringValuesAndDefaultConverterWithCustomConverter() {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
mapper.setOutboundHeaderNames(new String[] { "customHeader*" });
GenericConversionService cs = new DefaultConversionService();
@@ -536,7 +543,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
mapper.afterPropertiesSet();
HttpHeaders headers = new HttpHeaders();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("customHeaderA", 123);
messageHeaders.put("customHeaderB", new TestClass());
@@ -560,7 +567,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
}
@Test
public void testInt2995IfModifiedSince() throws Exception {
public void testInt2995IfModifiedSince() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Date ifModifiedSince = new Date();
long ifModifiedSinceTime = ifModifiedSince.getTime();
@@ -574,9 +581,9 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
}
@Test
public void testContentTypeHeader() throws Exception {
public void testContentTypeHeader() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Map<String, Object> map = new HashMap<String, Object>();
Map<String, Object> map = new HashMap<>();
map.put(MessageHeaders.CONTENT_TYPE, "text/plain");
MessageHeaders messageHeaders = new MessageHeaders(map);
HttpHeaders httpHeaders = new HttpHeaders();
@@ -585,7 +592,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
}
@Test
public void testContentTypeInboundHeader() throws Exception {
public void testContentTypeInboundHeader() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.CONTENT_TYPE.toLowerCase(), "text/plain");

View File

@@ -9,7 +9,7 @@
<xsd:import namespace="http://www.springframework.org/schema/beans" />
<xsd:import namespace="http://www.springframework.org/schema/tool" />
<xsd:import namespace="http://www.springframework.org/schema/integration"
schemaLocation="http://www.springframework.org/schema/integration/spring-integration-5.2.xsd" />
schemaLocation="https://www.springframework.org/schema/integration/spring-integration-5.2.xsd" />
<xsd:annotation>
<xsd:documentation><![CDATA[

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2018 the original author or authors.
* Copyright 2002-2019 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -42,7 +42,7 @@ import org.springframework.util.Assert;
* {@link StoredProcOutboundGateway}. As functions are typically used to look up
* values, only, the Stored Procedure message handler purposefully does not support
* SQL function calls. If you believe there are valid use-cases for that, please file a
* feature request at http://jira.springsource.org.
* feature request at https://jira.springsource.org.
*
* @author Gunnar Hillert
* @since 2.1

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2018 the original author or authors.
* Copyright 2002-2019 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -23,7 +23,7 @@ package org.springframework.integration.jdbc.store.channel;
* property is <code>1</code>.
* <p>
* Fore more details, please see:
* http://stackoverflow.com/questions/6117254/force-oracle-to-return-top-n-rows-with-skip-locked
* https://stackoverflow.com/questions/6117254/force-oracle-to-return-top-n-rows-with-skip-locked
*
* @author Gunnar Hillert
* @author Artem Bilan

View File

@@ -7,7 +7,7 @@
<xsd:import namespace="http://www.springframework.org/schema/beans" />
<xsd:import namespace="http://www.springframework.org/schema/tool" />
<xsd:import namespace="http://www.springframework.org/schema/integration"
schemaLocation="http://www.springframework.org/schema/integration/spring-integration-5.2.xsd" />
schemaLocation="https://www.springframework.org/schema/integration/spring-integration-5.2.xsd" />
<xsd:annotation>
<xsd:documentation><![CDATA[

View File

@@ -50,9 +50,9 @@ public class InnerPollerParserTests {
" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" +
" xmlns:int=\"http://www.springframework.org/schema/integration\"" +
" xmlns:int-jdbc=\"http://www.springframework.org/schema/integration/jdbc\"" +
" xsi:schemaLocation=\"http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd" +
" http://www.springframework.org/schema/integration/jdbc http://www.springframework.org/schema/integration/jdbc/spring-integration-jdbc.xsd" +
" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd\">" +
" xsi:schemaLocation=\"http://www.springframework.org/schema/integration https://www.springframework.org/schema/integration/spring-integration.xsd" +
" http://www.springframework.org/schema/integration/jdbc https://www.springframework.org/schema/integration/jdbc/spring-integration-jdbc.xsd" +
" http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd\">" +
"" +
" <int:poller id=\"outer\" fixed-rate=\"5000\"/>" +
"" +
@@ -90,9 +90,9 @@ public class InnerPollerParserTests {
" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" +
" xmlns:int=\"http://www.springframework.org/schema/integration\"" +
" xmlns:int-jdbc=\"http://www.springframework.org/schema/integration/jdbc\"" +
" xsi:schemaLocation=\"http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd" +
" http://www.springframework.org/schema/integration/jdbc http://www.springframework.org/schema/integration/jdbc/spring-integration-jdbc.xsd" +
" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd\">" +
" xsi:schemaLocation=\"http://www.springframework.org/schema/integration https://www.springframework.org/schema/integration/spring-integration.xsd" +
" http://www.springframework.org/schema/integration/jdbc https://www.springframework.org/schema/integration/jdbc/spring-integration-jdbc.xsd" +
" http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd\">" +
"" +
" <int:poller id=\"outer\" fixed-rate=\"5000\"/>" +
"" +
@@ -129,9 +129,9 @@ public class InnerPollerParserTests {
" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" +
" xmlns:int=\"http://www.springframework.org/schema/integration\"" +
" xmlns:int-jdbc=\"http://www.springframework.org/schema/integration/jdbc\"" +
" xsi:schemaLocation=\"http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd" +
" http://www.springframework.org/schema/integration/jdbc http://www.springframework.org/schema/integration/jdbc/spring-integration-jdbc.xsd" +
" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd\">" +
" xsi:schemaLocation=\"http://www.springframework.org/schema/integration https://www.springframework.org/schema/integration/spring-integration.xsd" +
" http://www.springframework.org/schema/integration/jdbc https://www.springframework.org/schema/integration/jdbc/spring-integration-jdbc.xsd" +
" http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd\">" +
"" +
" <int:poller id=\"outer\" fixed-rate=\"5000\"/>" +
"" +

View File

@@ -3,8 +3,8 @@ xmlheaders=\
<beans xmlns="http://www.springframework.org/schema/beans" \
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" \
xmlns:int-jdbc="http://www.springframework.org/schema/integration/jdbc" \
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd \
http://www.springframework.org/schema/integration/jdbc http://www.springframework.org/schema/integration/jdbc/spring-integration-jdbc.xsd">
xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd \
http://www.springframework.org/schema/integration/jdbc https://www.springframework.org/schema/integration/jdbc/spring-integration-jdbc.xsd">
xmlfooter= </beans>
nameAndExpressionExclusivity=<int-jdbc:stored-proc-outbound-gateway request-channel="requestChannel" data-source="dataSource" \

View File

@@ -64,7 +64,7 @@ import org.springframework.transaction.support.TransactionTemplate;
* This tests requires at least MySql 5.6.4 as it uses the fractional second support
* in that version. For more information, please see:
*
* http://dev.mysql.com/doc/refman/5.6/en/fractional-seconds.html
* https://dev.mysql.com/doc/refman/5.6/en/fractional-seconds.html
*
* Also, please make sure you are using the respective DDL scripts:
*

View File

@@ -11,7 +11,7 @@
<xsd:import namespace="http://www.springframework.org/schema/beans"/>
<xsd:import namespace="http://www.springframework.org/schema/tool"/>
<xsd:import namespace="http://www.springframework.org/schema/integration"
schemaLocation="http://www.springframework.org/schema/integration/spring-integration-5.2.xsd"/>
schemaLocation="https://www.springframework.org/schema/integration/spring-integration-5.2.xsd"/>
<xsd:annotation>
<xsd:documentation><![CDATA[

View File

@@ -8,7 +8,7 @@
<xsd:import namespace="http://www.springframework.org/schema/beans" />
<xsd:import namespace="http://www.springframework.org/schema/tool" />
<xsd:import namespace="http://www.springframework.org/schema/integration"
schemaLocation="http://www.springframework.org/schema/integration/spring-integration-5.2.xsd" />
schemaLocation="https://www.springframework.org/schema/integration/spring-integration-5.2.xsd" />
<xsd:annotation>
<xsd:documentation><![CDATA[

View File

@@ -9,7 +9,7 @@
<xsd:import namespace="http://www.springframework.org/schema/beans" />
<xsd:import namespace="http://www.springframework.org/schema/tool" />
<xsd:import namespace="http://www.springframework.org/schema/integration"
schemaLocation="http://www.springframework.org/schema/integration/spring-integration-5.2.xsd" />
schemaLocation="https://www.springframework.org/schema/integration/spring-integration-5.2.xsd" />
<xsd:annotation>
<xsd:documentation><![CDATA[

View File

@@ -11,7 +11,7 @@
<xsd:import namespace="http://www.springframework.org/schema/beans"/>
<xsd:import namespace="http://www.springframework.org/schema/tool"/>
<xsd:import namespace="http://www.springframework.org/schema/integration"
schemaLocation="http://www.springframework.org/schema/integration/spring-integration-5.2.xsd"/>
schemaLocation="https://www.springframework.org/schema/integration/spring-integration-5.2.xsd"/>
<xsd:annotation>
<xsd:documentation><![CDATA[

View File

@@ -30,10 +30,10 @@ var page={};var onCondition=function(D,C,A,B){D=D;A=A?Math.min(A,5):5;B=B||100;i
<meta content="NOODP" name="robots" />
<meta content="n" name="session-loggedin" />
<title id="page_title">Twitter</title>
<link href="http://a1.twimg.com/a/1295478501/images/twitter_57.png" rel="apple-touch-icon" />
<link href="/oexchange.xrd" rel="http://oexchange.org/spec/0.8/rel/related-target" type="application/xrd+xml" />
<link href="http://a1.twimg.com/a/1295478501/images/favicon.ico" rel="shortcut icon" type="image/x-icon" />
<link href="http://a1.twimg.com/a/1295478501/stylesheets/fronts.css?1295482593" media="screen" rel="stylesheet" type="text/css" />
<link href="https://a1.twimg.com/a/1295478501/images/twitter_57.png" rel="apple-touch-icon" />
<link href="/oexchange.xrd" rel="http://www.oexchange.org/spec/0.8/rel/related-target" type="application/xrd+xml" />
<link href="https://a1.twimg.com/a/1295478501/images/favicon.ico" rel="shortcut icon" type="image/x-icon" />
<link href="https://a1.twimg.com/a/1295478501/stylesheets/fronts.css?1295482593" media="screen" rel="stylesheet" type="text/css" />
</head>
@@ -48,7 +48,7 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
<div class="background">
<div class="inner">
<div id="logo-search">
<a href="/" id="logo"><img alt="Twitter" height="55" src="http://a0.twimg.com/a/1295478501/images/fronts/logo_withbird_home.png" width="224" /></a>
<a href="/" id="logo"><img alt="Twitter" height="55" src="https://a0.twimg.com/a/1295478501/images/fronts/logo_withbird_home.png" width="224" /></a>
<form action="/search" id="home_search" method="post"><div style="margin:0;padding:0"><input name="authenticity_token" type="hidden" value="4d30c2d23edb482994501b4f75b9fba98308a16d" /></div>
<p>
<input accesskey="/" class="round-left" id="searchform_q" name="q" size="30" tabindex="8" type="text" /><input class="submit round-right" id="searchform_submit" name="commit" tabindex="9" type="submit" value="Search" />
@@ -110,7 +110,7 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
<p id="signup-btn"><a href="/signup" id="signup_submit" tabindex="10"><span>Sign Up &rsaquo;</span></a></p>
<h2>A #NewTwitter</h2>
<p><a href="/newtwitter">Catch a glimpse</a> of the new Twitter.com.</p>
<p><a href="/newtwitter?autoplay=true" id="video-thumb"><img alt="Video-sample-ss" height="140" src="http://a0.twimg.com/a/1295478501/images/whatsnew/video-sample-ss.png" width="200" /></a></p>
<p><a href="/newtwitter?autoplay=true" id="video-thumb"><img alt="Video-sample-ss" height="140" src="https://a0.twimg.com/a/1295478501/images/whatsnew/video-sample-ss.png" width="200" /></a></p>
</div>
</div>
</div>
@@ -127,49 +127,49 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
<li class="trend-label">Trending topics</li>
<li>
<a href="http://twitter.com/search?q=Catwoman" class="search_link" name="Catwoman" rel="nofollow">Catwoman</a>
<a href="https://twitter.com/search?q=Catwoman" class="search_link" name="Catwoman" rel="nofollow">Catwoman</a>
<em class="description"></em>
</li>
<li>
<a href="http://twitter.com/search?q=Damn+Beliebers" class="search_link" name="Damn Beliebers" rel="nofollow">Damn Beliebers</a>
<a href="https://twitter.com/search?q=Damn+Beliebers" class="search_link" name="Damn Beliebers" rel="nofollow">Damn Beliebers</a>
<em class="description"></em>
</li>
<li>
<a href="http://twitter.com/search?q=Anne+Hathaway" class="search_link" name="Anne Hathaway" rel="nofollow">Anne Hathaway</a>
<a href="https://twitter.com/search?q=Anne+Hathaway" class="search_link" name="Anne Hathaway" rel="nofollow">Anne Hathaway</a>
<em class="description"></em>
</li>
<li>
<a href="http://twitter.com/search?q=Steven+Tyler" class="search_link" name="Steven Tyler" rel="nofollow">Steven Tyler</a>
<a href="https://twitter.com/search?q=Steven+Tyler" class="search_link" name="Steven Tyler" rel="nofollow">Steven Tyler</a>
<em class="description"></em>
</li>
<li>
<a href="http://twitter.com/search?q=Coachella" class="search_link" name="Coachella" rel="nofollow">Coachella</a>
<a href="https://twitter.com/search?q=Coachella" class="search_link" name="Coachella" rel="nofollow">Coachella</a>
<em class="description"></em>
</li>
<li>
<a href="http://twitter.com/search?q=Friday" class="search_link" name="Friday" rel="nofollow">Friday</a>
<a href="https://twitter.com/search?q=Friday" class="search_link" name="Friday" rel="nofollow">Friday</a>
<em class="description"></em>
</li>
<li>
<a href="http://twitter.com/search?q=Modern+Family" class="search_link" name="Modern Family" rel="nofollow">Modern Family</a>
<a href="https://twitter.com/search?q=Modern+Family" class="search_link" name="Modern Family" rel="nofollow">Modern Family</a>
<em class="description"></em>
</li>
@@ -178,49 +178,49 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
<li class="trend-label">Trending topics</li>
<li>
<a href="http://twitter.com/search?q=Obamacare" class="search_link" name="Obamacare" rel="nofollow">Obamacare</a>
<a href="https://twitter.com/search?q=Obamacare" class="search_link" name="Obamacare" rel="nofollow">Obamacare</a>
<em class="description"></em>
</li>
<li>
<a href="http://twitter.com/search?q=First+Class" class="search_link" name="First Class" rel="nofollow">First Class</a>
<a href="https://twitter.com/search?q=First+Class" class="search_link" name="First Class" rel="nofollow">First Class</a>
<em class="description"></em>
</li>
<li>
<a href="http://twitter.com/search?q=English" class="search_link" name="English" rel="nofollow">English</a>
<a href="https://twitter.com/search?q=English" class="search_link" name="English" rel="nofollow">English</a>
<em class="description"></em>
</li>
<li>
<a href="http://twitter.com/search?q=Rise+%26+Grind" class="search_link" name="Rise &amp; Grind" rel="nofollow">Rise &amp; Grind</a>
<a href="https://twitter.com/search?q=Rise+%26+Grind" class="search_link" name="Rise &amp; Grind" rel="nofollow">Rise &amp; Grind</a>
<em class="description"></em>
</li>
<li>
<a href="http://twitter.com/search?q=Rivaldo" class="search_link" name="Rivaldo" rel="nofollow">Rivaldo</a>
<a href="https://twitter.com/search?q=Rivaldo" class="search_link" name="Rivaldo" rel="nofollow">Rivaldo</a>
<em class="description"></em>
</li>
<li>
<a href="http://twitter.com/search?q=Seoul+Music+Awards" class="search_link" name="Seoul Music Awards" rel="nofollow">Seoul Music Awards</a>
<a href="https://twitter.com/search?q=Seoul+Music+Awards" class="search_link" name="Seoul Music Awards" rel="nofollow">Seoul Music Awards</a>
<em class="description"></em>
</li>
<li>
<a href="http://twitter.com/search?q=Passiva" class="search_link" name="Passiva" rel="nofollow">Passiva</a>
<a href="https://twitter.com/search?q=Passiva" class="search_link" name="Passiva" rel="nofollow">Passiva</a>
<em class="description"></em>
</li>
@@ -229,49 +229,49 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
<li class="trend-label">Trending topics</li>
<li>
<a href="http://twitter.com/search?q=JBisJonasBrothers" class="search_link" name="JBisJonasBrothers" rel="nofollow">JBisJonasBrothers</a>
<a href="https://twitter.com/search?q=JBisJonasBrothers" class="search_link" name="JBisJonasBrothers" rel="nofollow">JBisJonasBrothers</a>
<em class="description"></em>
</li>
<li>
<a href="http://twitter.com/search?q=Farmac%C3%AAutico" class="search_link" name="Farmacêutico" rel="nofollow">Farmacêutico</a>
<a href="https://twitter.com/search?q=Farmac%C3%AAutico" class="search_link" name="Farmacêutico" rel="nofollow">Farmacêutico</a>
<em class="description"></em>
</li>
<li>
<a href="http://twitter.com/search?q=Giuliano" class="search_link" name="Giuliano" rel="nofollow">Giuliano</a>
<a href="https://twitter.com/search?q=Giuliano" class="search_link" name="Giuliano" rel="nofollow">Giuliano</a>
<em class="description"></em>
</li>
<li>
<a href="http://twitter.com/search?q=Edgar+Allan+Poe" class="search_link" name="Edgar Allan Poe" rel="nofollow">Edgar Allan Poe</a>
<a href="https://twitter.com/search?q=Edgar+Allan+Poe" class="search_link" name="Edgar Allan Poe" rel="nofollow">Edgar Allan Poe</a>
<em class="description"></em>
</li>
<li>
<a href="http://twitter.com/search?q=Tom+Hardy" class="search_link" name="Tom Hardy" rel="nofollow">Tom Hardy</a>
<a href="https://twitter.com/search?q=Tom+Hardy" class="search_link" name="Tom Hardy" rel="nofollow">Tom Hardy</a>
<em class="description"></em>
</li>
<li>
<a href="http://twitter.com/search?q=Janis+Joplin" class="search_link" name="Janis Joplin" rel="nofollow">Janis Joplin</a>
<a href="https://twitter.com/search?q=Janis+Joplin" class="search_link" name="Janis Joplin" rel="nofollow">Janis Joplin</a>
<em class="description"></em>
</li>
<li>
<a href="http://twitter.com/search?q=Bane" class="search_link" name="Bane" rel="nofollow">Bane</a>
<a href="https://twitter.com/search?q=Bane" class="search_link" name="Bane" rel="nofollow">Bane</a>
<em class="description"></em>
</li>
@@ -288,7 +288,7 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
<ul id="accessibility" class="offscreen">
<li><a href="#content" accesskey="0">Skip past navigation</a></li>
<li>On a mobile phone? Check out <a href="http://m.twitter.com/">m.twitter.com</a>!</li>
<li>On a mobile phone? Check out <a href="https://m.twitter.com/">m.twitter.com</a>!</li>
<li><a href="#footer" accesskey="2">Skip to navigation</a></li>
<li><a href="#signin">Skip to sign in form</a></li>
</ul>
@@ -314,25 +314,25 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
<h3>Top Trending Topics</h3>
<ul>
<li><a href="http://twitter.com/search?q=%23iloveyoubecause" class="search_link" name="#iloveyoubecause" rel="nofollow">#iloveyoubecause</a></li>
<li><a href="https://twitter.com/search?q=%23iloveyoubecause" class="search_link" name="#iloveyoubecause" rel="nofollow">#iloveyoubecause</a></li>
<li><a href="http://twitter.com/search?q=%23501pjmnotalone" class="search_link" name="#501pjmnotalone" rel="nofollow">#501pjmnotalone</a></li>
<li><a href="https://twitter.com/search?q=%23501pjmnotalone" class="search_link" name="#501pjmnotalone" rel="nofollow">#501pjmnotalone</a></li>
<li><a href="http://twitter.com/search?q=Catwoman" class="search_link" name="Catwoman" rel="nofollow">Catwoman</a></li>
<li><a href="https://twitter.com/search?q=Catwoman" class="search_link" name="Catwoman" rel="nofollow">Catwoman</a></li>
<li><a href="http://twitter.com/search?q=%23tweetumfilmecompassiva" class="search_link" name="#tweetumfilmecompassiva" rel="nofollow">#tweetumfilmecompassiva</a></li>
<li><a href="https://twitter.com/search?q=%23tweetumfilmecompassiva" class="search_link" name="#tweetumfilmecompassiva" rel="nofollow">#tweetumfilmecompassiva</a></li>
<li><a href="http://twitter.com/search?q=JBisJonasBrothers" class="search_link" name="JBisJonasBrothers" rel="nofollow">JBisJonasBrothers</a></li>
<li><a href="https://twitter.com/search?q=JBisJonasBrothers" class="search_link" name="JBisJonasBrothers" rel="nofollow">JBisJonasBrothers</a></li>
<li><a href="http://twitter.com/search?q=Damn+Beliebers" class="search_link" name="Damn Beliebers" rel="nofollow">Damn Beliebers</a></li>
<li><a href="https://twitter.com/search?q=Damn+Beliebers" class="search_link" name="Damn Beliebers" rel="nofollow">Damn Beliebers</a></li>
<li><a href="http://twitter.com/search?q=Rise+%26+Grind" class="search_link" name="Rise &amp; Grind" rel="nofollow">Rise &amp; Grind</a></li>
<li><a href="https://twitter.com/search?q=Rise+%26+Grind" class="search_link" name="Rise &amp; Grind" rel="nofollow">Rise &amp; Grind</a></li>
<li><a href="http://twitter.com/search?q=Seoul+Music+Awards" class="search_link" name="Seoul Music Awards" rel="nofollow">Seoul Music Awards</a></li>
<li><a href="https://twitter.com/search?q=Seoul+Music+Awards" class="search_link" name="Seoul Music Awards" rel="nofollow">Seoul Music Awards</a></li>
<li><a href="http://twitter.com/search?q=Arin+Ilejay" class="search_link" name="Arin Ilejay" rel="nofollow">Arin Ilejay</a></li>
<li><a href="https://twitter.com/search?q=Arin+Ilejay" class="search_link" name="Arin Ilejay" rel="nofollow">Arin Ilejay</a></li>
<li><a href="http://twitter.com/search?q=Animated+Series" class="search_link" name="Animated Series" rel="nofollow">Animated Series</a></li>
<li><a href="https://twitter.com/search?q=Animated+Series" class="search_link" name="Animated Series" rel="nofollow">Animated Series</a></li>
</ul>
</div>
@@ -349,11 +349,11 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
<h2>See who&rsquo;s here</h2>
<ul>
<li>
<a href="/nate_robinson" class="avatar-sm" hreflang="en" id="icon_nate_robinson" rel="nate_robinson" target="_blank"><img alt="" border="0" height="48" src="http://a3.twimg.com/profile_images/1220597165/nate_robinson_normal.jpg" style="vertical-align:middle" width="48" /></a>
<a href="/nate_robinson" class="avatar-sm" hreflang="en" id="icon_nate_robinson" rel="nate_robinson" target="_blank"><img alt="" border="0" height="48" src="https://a3.twimg.com/profile_images/1220597165/nate_robinson_normal.jpg" style="vertical-align:middle" width="48" /></a>
<div class="hc" id="hc_nate_robinson">
<div class="hc-profile">
<a href="/nate_robinson" class="avatar" hreflang="en" target="_blank"><img alt="nate_robinson" border="0" height="48" src="http://a3.twimg.com/profile_images/1220597165/nate_robinson_normal.jpg" style="vertical-align:middle" width="48" /></a>
<a href="/nate_robinson" class="avatar" hreflang="en" target="_blank"><img alt="nate_robinson" border="0" height="48" src="https://a3.twimg.com/profile_images/1220597165/nate_robinson_normal.jpg" style="vertical-align:middle" width="48" /></a>
<div class="hc-name"><strong>Nate Robinson</strong><span class="hc-verified">&nbsp;</span></div>
<span class="hc-username">@<a href="/nate_robinson">nate_robinson</a></span>
<span class="hc-location">Rain city ( word aapp ) | in Sports</span>
@@ -369,11 +369,11 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
</div>
</li>
<li>
<a href="/ev" class="avatar-sm" hreflang="en" id="icon_ev" rel="ev" target="_blank"><img alt="" border="0" height="48" src="http://a0.twimg.com/profile_images/1147019935/evedit0xr_2_normal.jpg" style="vertical-align:middle" width="48" /></a>
<a href="/ev" class="avatar-sm" hreflang="en" id="icon_ev" rel="ev" target="_blank"><img alt="" border="0" height="48" src="https://a0.twimg.com/profile_images/1147019935/evedit0xr_2_normal.jpg" style="vertical-align:middle" width="48" /></a>
<div class="hc" id="hc_ev">
<div class="hc-profile">
<a href="/ev" class="avatar" hreflang="en" target="_blank"><img alt="ev" border="0" height="48" src="http://a0.twimg.com/profile_images/1147019935/evedit0xr_2_normal.jpg" style="vertical-align:middle" width="48" /></a>
<a href="/ev" class="avatar" hreflang="en" target="_blank"><img alt="ev" border="0" height="48" src="https://a0.twimg.com/profile_images/1147019935/evedit0xr_2_normal.jpg" style="vertical-align:middle" width="48" /></a>
<div class="hc-name"><strong>Evan Williams</strong><span class="hc-verified">&nbsp;</span></div>
<span class="hc-username">@<a href="/ev">ev</a></span>
<span class="hc-location">San Francisco, CA, US | in Business</span>
@@ -389,11 +389,11 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
</div>
</li>
<li>
<a href="/nytimes" class="avatar-sm" hreflang="en" id="icon_nytimes" rel="nytimes" target="_blank"><img alt="" border="0" height="48" src="http://a2.twimg.com/profile_images/57465005/twitter_avatar.nyt_normal.jpg" style="vertical-align:middle" width="48" /></a>
<a href="/nytimes" class="avatar-sm" hreflang="en" id="icon_nytimes" rel="nytimes" target="_blank"><img alt="" border="0" height="48" src="https://a2.twimg.com/profile_images/57465005/twitter_avatar.nyt_normal.jpg" style="vertical-align:middle" width="48" /></a>
<div class="hc" id="hc_nytimes">
<div class="hc-profile">
<a href="/nytimes" class="avatar" hreflang="en" target="_blank"><img alt="nytimes" border="0" height="48" src="http://a2.twimg.com/profile_images/57465005/twitter_avatar.nyt_normal.jpg" style="vertical-align:middle" width="48" /></a>
<a href="/nytimes" class="avatar" hreflang="en" target="_blank"><img alt="nytimes" border="0" height="48" src="https://a2.twimg.com/profile_images/57465005/twitter_avatar.nyt_normal.jpg" style="vertical-align:middle" width="48" /></a>
<div class="hc-name"><strong>The New York Times</strong><span class="hc-verified">&nbsp;</span></div>
<span class="hc-username">@<a href="/nytimes">nytimes</a></span>
<span class="hc-location">New York, NY | in News</span>
@@ -401,7 +401,7 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
<div class="hc-tweet">
<div class="hc-label">Recently tweeted:</div>
<div class="hc-tweet-text">The Caucus: Chinese President May Get Earful From Lawmakers http://nyti.ms/gVqqut</div>
<div class="hc-tweet-text">The Caucus: Chinese President May Get Earful From Lawmakers https://nyti.ms/gVqqut</div>
<div class="hc-meta">20 minutes ago</div>
</div>
@@ -409,11 +409,11 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
</div>
</li>
<li>
<a href="/therealKDUB20" class="avatar-sm" hreflang="en" id="icon_therealKDUB20" rel="therealKDUB20" target="_blank"><img alt="" border="0" height="48" src="http://a3.twimg.com/profile_images/856198179/alg_kyle_wilson_normal.jpg" style="vertical-align:middle" width="48" /></a>
<a href="/therealKDUB20" class="avatar-sm" hreflang="en" id="icon_therealKDUB20" rel="therealKDUB20" target="_blank"><img alt="" border="0" height="48" src="https://a3.twimg.com/profile_images/856198179/alg_kyle_wilson_normal.jpg" style="vertical-align:middle" width="48" /></a>
<div class="hc" id="hc_therealKDUB20">
<div class="hc-profile">
<a href="/therealKDUB20" class="avatar" hreflang="en" target="_blank"><img alt="therealKDUB20" border="0" height="48" src="http://a3.twimg.com/profile_images/856198179/alg_kyle_wilson_normal.jpg" style="vertical-align:middle" width="48" /></a>
<a href="/therealKDUB20" class="avatar" hreflang="en" target="_blank"><img alt="therealKDUB20" border="0" height="48" src="https://a3.twimg.com/profile_images/856198179/alg_kyle_wilson_normal.jpg" style="vertical-align:middle" width="48" /></a>
<div class="hc-name"><strong>Kyle Wilson</strong><span class="hc-verified">&nbsp;</span></div>
<span class="hc-username">@<a href="/therealKDUB20">therealKDUB20</a></span>
<span class="hc-location">New York | in Staff Picks: NFL Playoffs</span>
@@ -429,11 +429,11 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
</div>
</li>
<li>
<a href="/Oxfam" class="avatar-sm" hreflang="en" id="icon_Oxfam" rel="Oxfam" target="_blank"><img alt="" border="0" height="48" src="http://a0.twimg.com/profile_images/52396555/logo_normal.jpg" style="vertical-align:middle" width="48" /></a>
<a href="/Oxfam" class="avatar-sm" hreflang="en" id="icon_Oxfam" rel="Oxfam" target="_blank"><img alt="" border="0" height="48" src="https://a0.twimg.com/profile_images/52396555/logo_normal.jpg" style="vertical-align:middle" width="48" /></a>
<div class="hc" id="hc_Oxfam">
<div class="hc-profile">
<a href="/Oxfam" class="avatar" hreflang="en" target="_blank"><img alt="Oxfam" border="0" height="48" src="http://a0.twimg.com/profile_images/52396555/logo_normal.jpg" style="vertical-align:middle" width="48" /></a>
<a href="/Oxfam" class="avatar" hreflang="en" target="_blank"><img alt="Oxfam" border="0" height="48" src="https://a0.twimg.com/profile_images/52396555/logo_normal.jpg" style="vertical-align:middle" width="48" /></a>
<div class="hc-name"><strong>Oxfam International</strong><span class="hc-verified">&nbsp;</span></div>
<span class="hc-username">@<a href="/Oxfam">Oxfam</a></span>
<span class="hc-location">in Charity</span>
@@ -441,7 +441,7 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
<div class="hc-tweet">
<div class="hc-label">Recently tweeted:</div>
<div class="hc-tweet-text">Oxfam calls on international donors to fund upcoming @UN $51mn appeal for #SriLanka #floods http://oxf.am/ZMm</div>
<div class="hc-tweet-text">Oxfam calls on international donors to fund upcoming @UN $51mn appeal for #SriLanka #floods https://oxf.am/ZMm</div>
<div class="hc-meta">about 2 hours ago</div>
</div>
@@ -449,11 +449,11 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
</div>
</li>
<li>
<a href="/grantimahara" class="avatar-sm" hreflang="en" id="icon_grantimahara" rel="grantimahara" target="_blank"><img alt="" border="0" height="48" src="http://a2.twimg.com/profile_images/1216137252/image_normal.jpg" style="vertical-align:middle" width="48" /></a>
<a href="/grantimahara" class="avatar-sm" hreflang="en" id="icon_grantimahara" rel="grantimahara" target="_blank"><img alt="" border="0" height="48" src="https://a2.twimg.com/profile_images/1216137252/image_normal.jpg" style="vertical-align:middle" width="48" /></a>
<div class="hc" id="hc_grantimahara">
<div class="hc-profile">
<a href="/grantimahara" class="avatar" hreflang="en" target="_blank"><img alt="grantimahara" border="0" height="48" src="http://a2.twimg.com/profile_images/1216137252/image_normal.jpg" style="vertical-align:middle" width="48" /></a>
<a href="/grantimahara" class="avatar" hreflang="en" target="_blank"><img alt="grantimahara" border="0" height="48" src="https://a2.twimg.com/profile_images/1216137252/image_normal.jpg" style="vertical-align:middle" width="48" /></a>
<div class="hc-name"><strong>Grant Imahara</strong><span class="hc-verified">&nbsp;</span></div>
<span class="hc-username">@<a href="/grantimahara">grantimahara</a></span>
<span class="hc-location">San Francisco, CA | in Science</span>
@@ -469,11 +469,11 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
</div>
</li>
<li>
<a href="/chelseahandler" class="avatar-sm" hreflang="en" id="icon_chelseahandler" rel="chelseahandler" target="_blank"><img alt="" border="0" height="48" src="http://a0.twimg.com/profile_images/1129952837/chelsea_normal.jpg" style="vertical-align:middle" width="48" /></a>
<a href="/chelseahandler" class="avatar-sm" hreflang="en" id="icon_chelseahandler" rel="chelseahandler" target="_blank"><img alt="" border="0" height="48" src="https://a0.twimg.com/profile_images/1129952837/chelsea_normal.jpg" style="vertical-align:middle" width="48" /></a>
<div class="hc" id="hc_chelseahandler">
<div class="hc-profile">
<a href="/chelseahandler" class="avatar" hreflang="en" target="_blank"><img alt="chelseahandler" border="0" height="48" src="http://a0.twimg.com/profile_images/1129952837/chelsea_normal.jpg" style="vertical-align:middle" width="48" /></a>
<a href="/chelseahandler" class="avatar" hreflang="en" target="_blank"><img alt="chelseahandler" border="0" height="48" src="https://a0.twimg.com/profile_images/1129952837/chelsea_normal.jpg" style="vertical-align:middle" width="48" /></a>
<div class="hc-name"><strong>Chelsea Handler</strong><span class="hc-verified">&nbsp;</span></div>
<span class="hc-username">@<a href="/chelseahandler">chelseahandler</a></span>
<span class="hc-location">Los Angeles, CA | in Entertainment</span>
@@ -489,11 +489,11 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
</div>
</li>
<li>
<a href="/kevin_nealon" class="avatar-sm" hreflang="en" id="icon_kevin_nealon" rel="kevin_nealon" target="_blank"><img alt="" border="0" height="48" src="http://a1.twimg.com/profile_images/557774500/IMG_1731_normal.JPG" style="vertical-align:middle" width="48" /></a>
<a href="/kevin_nealon" class="avatar-sm" hreflang="en" id="icon_kevin_nealon" rel="kevin_nealon" target="_blank"><img alt="" border="0" height="48" src="https://a1.twimg.com/profile_images/557774500/IMG_1731_normal.JPG" style="vertical-align:middle" width="48" /></a>
<div class="hc" id="hc_kevin_nealon">
<div class="hc-profile">
<a href="/kevin_nealon" class="avatar" hreflang="en" target="_blank"><img alt="kevin_nealon" border="0" height="48" src="http://a1.twimg.com/profile_images/557774500/IMG_1731_normal.JPG" style="vertical-align:middle" width="48" /></a>
<a href="/kevin_nealon" class="avatar" hreflang="en" target="_blank"><img alt="kevin_nealon" border="0" height="48" src="https://a1.twimg.com/profile_images/557774500/IMG_1731_normal.JPG" style="vertical-align:middle" width="48" /></a>
<div class="hc-name"><strong>Kevin Nealon</strong><span class="hc-verified">&nbsp;</span></div>
<span class="hc-username">@<a href="/kevin_nealon">kevin_nealon</a></span>
<span class="hc-location">Los Angeles, Ca. | in Funny</span>
@@ -509,11 +509,11 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
</div>
</li>
<li>
<a href="/healthfinder" class="avatar-sm" hreflang="en" id="icon_healthfinder" rel="healthfinder" target="_blank"><img alt="" border="0" height="48" src="http://a3.twimg.com/profile_images/111107619/tweet-2_normal.jpg" style="vertical-align:middle" width="48" /></a>
<a href="/healthfinder" class="avatar-sm" hreflang="en" id="icon_healthfinder" rel="healthfinder" target="_blank"><img alt="" border="0" height="48" src="https://a3.twimg.com/profile_images/111107619/tweet-2_normal.jpg" style="vertical-align:middle" width="48" /></a>
<div class="hc" id="hc_healthfinder">
<div class="hc-profile">
<a href="/healthfinder" class="avatar" hreflang="en" target="_blank"><img alt="healthfinder" border="0" height="48" src="http://a3.twimg.com/profile_images/111107619/tweet-2_normal.jpg" style="vertical-align:middle" width="48" /></a>
<a href="/healthfinder" class="avatar" hreflang="en" target="_blank"><img alt="healthfinder" border="0" height="48" src="https://a3.twimg.com/profile_images/111107619/tweet-2_normal.jpg" style="vertical-align:middle" width="48" /></a>
<div class="hc-name"><strong>healthfinder.gov</strong><span class="hc-verified">&nbsp;</span></div>
<span class="hc-username">@<a href="/healthfinder">healthfinder</a></span>
<span class="hc-location">Washington, DC | in Health</span>
@@ -521,7 +521,7 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
<div class="hc-tweet">
<div class="hc-label">Recently tweeted:</div>
<div class="hc-tweet-text">Fight the #flu. Stay away from people who are sick, wash your hands, and get enough sleep. More quick tips: http://bit.ly/dN812J.</div>
<div class="hc-tweet-text">Fight the #flu. Stay away from people who are sick, wash your hands, and get enough sleep. More quick tips: https://bit.ly/dN812J.</div>
<div class="hc-meta">about 17 hours ago</div>
</div>
@@ -529,11 +529,11 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
</div>
</li>
<li>
<a href="/kevinrose" class="avatar-sm" hreflang="en" id="icon_kevinrose" rel="kevinrose" target="_blank"><img alt="" border="0" height="48" src="http://a0.twimg.com/profile_images/1218603158/photo-1_normal.jpeg" style="vertical-align:middle" width="48" /></a>
<a href="/kevinrose" class="avatar-sm" hreflang="en" id="icon_kevinrose" rel="kevinrose" target="_blank"><img alt="" border="0" height="48" src="https://a0.twimg.com/profile_images/1218603158/photo-1_normal.jpeg" style="vertical-align:middle" width="48" /></a>
<div class="hc" id="hc_kevinrose">
<div class="hc-profile">
<a href="/kevinrose" class="avatar" hreflang="en" target="_blank"><img alt="kevinrose" border="0" height="48" src="http://a0.twimg.com/profile_images/1218603158/photo-1_normal.jpeg" style="vertical-align:middle" width="48" /></a>
<a href="/kevinrose" class="avatar" hreflang="en" target="_blank"><img alt="kevinrose" border="0" height="48" src="https://a0.twimg.com/profile_images/1218603158/photo-1_normal.jpeg" style="vertical-align:middle" width="48" /></a>
<div class="hc-name"><strong>Kevin Rose</strong><span class="hc-verified">&nbsp;</span></div>
<span class="hc-username">@<a href="/kevinrose">kevinrose</a></span>
<span class="hc-location">San Francisco, CA | in Technology</span>
@@ -549,11 +549,11 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
</div>
</li>
<li>
<a href="/azizansari" class="avatar-sm" hreflang="en" id="icon_azizansari" rel="azizansari" target="_blank"><img alt="" border="0" height="48" src="http://a1.twimg.com/profile_images/421377161/azizlittletwitter_normal.jpg" style="vertical-align:middle" width="48" /></a>
<a href="/azizansari" class="avatar-sm" hreflang="en" id="icon_azizansari" rel="azizansari" target="_blank"><img alt="" border="0" height="48" src="https://a1.twimg.com/profile_images/421377161/azizlittletwitter_normal.jpg" style="vertical-align:middle" width="48" /></a>
<div class="hc" id="hc_azizansari">
<div class="hc-profile">
<a href="/azizansari" class="avatar" hreflang="en" target="_blank"><img alt="azizansari" border="0" height="48" src="http://a1.twimg.com/profile_images/421377161/azizlittletwitter_normal.jpg" style="vertical-align:middle" width="48" /></a>
<a href="/azizansari" class="avatar" hreflang="en" target="_blank"><img alt="azizansari" border="0" height="48" src="https://a1.twimg.com/profile_images/421377161/azizlittletwitter_normal.jpg" style="vertical-align:middle" width="48" /></a>
<div class="hc-name"><strong>Aziz Ansari</strong><span class="hc-verified">&nbsp;</span></div>
<span class="hc-username">@<a href="/azizansari">azizansari</a></span>
<span class="hc-location">Los Angeles, CA | in Staff Picks</span>
@@ -569,11 +569,11 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
</div>
</li>
<li>
<a href="/SimpleMom" class="avatar-sm" hreflang="en" id="icon_SimpleMom" rel="SimpleMom" target="_blank"><img alt="" border="0" height="48" src="http://a0.twimg.com/profile_images/1147750206/avatar03_normal.jpg" style="vertical-align:middle" width="48" /></a>
<a href="/SimpleMom" class="avatar-sm" hreflang="en" id="icon_SimpleMom" rel="SimpleMom" target="_blank"><img alt="" border="0" height="48" src="https://a0.twimg.com/profile_images/1147750206/avatar03_normal.jpg" style="vertical-align:middle" width="48" /></a>
<div class="hc" id="hc_SimpleMom">
<div class="hc-profile">
<a href="/SimpleMom" class="avatar" hreflang="en" target="_blank"><img alt="SimpleMom" border="0" height="48" src="http://a0.twimg.com/profile_images/1147750206/avatar03_normal.jpg" style="vertical-align:middle" width="48" /></a>
<a href="/SimpleMom" class="avatar" hreflang="en" target="_blank"><img alt="SimpleMom" border="0" height="48" src="https://a0.twimg.com/profile_images/1147750206/avatar03_normal.jpg" style="vertical-align:middle" width="48" /></a>
<div class="hc-name"><strong>Tsh Oxenreider</strong><span class="hc-verified">&nbsp;</span></div>
<span class="hc-username">@<a href="/SimpleMom">SimpleMom</a></span>
<span class="hc-location">Austin | in Family</span>
@@ -589,11 +589,11 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
</div>
</li>
<li>
<a href="/BoltBus" class="avatar-sm" hreflang="en" id="icon_BoltBus" rel="BoltBus" target="_blank"><img alt="" border="0" height="48" src="http://a3.twimg.com/profile_images/323584581/Bolt_Bus_Photo_FINAL_-_01___2__normal.JPG" style="vertical-align:middle" width="48" /></a>
<a href="/BoltBus" class="avatar-sm" hreflang="en" id="icon_BoltBus" rel="BoltBus" target="_blank"><img alt="" border="0" height="48" src="https://a3.twimg.com/profile_images/323584581/Bolt_Bus_Photo_FINAL_-_01___2__normal.JPG" style="vertical-align:middle" width="48" /></a>
<div class="hc" id="hc_BoltBus">
<div class="hc-profile">
<a href="/BoltBus" class="avatar" hreflang="en" target="_blank"><img alt="BoltBus" border="0" height="48" src="http://a3.twimg.com/profile_images/323584581/Bolt_Bus_Photo_FINAL_-_01___2__normal.JPG" style="vertical-align:middle" width="48" /></a>
<a href="/BoltBus" class="avatar" hreflang="en" target="_blank"><img alt="BoltBus" border="0" height="48" src="https://a3.twimg.com/profile_images/323584581/Bolt_Bus_Photo_FINAL_-_01___2__normal.JPG" style="vertical-align:middle" width="48" /></a>
<div class="hc-name"><strong>BoltBus</strong><span class="hc-verified">&nbsp;</span></div>
<span class="hc-username">@<a href="/BoltBus">BoltBus</a></span>
<span class="hc-location">Northeast | in Travel</span>
@@ -609,11 +609,11 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
</div>
</li>
<li>
<a href="/ArchRecord" class="avatar-sm" hreflang="en" id="icon_ArchRecord" rel="ArchRecord" target="_blank"><img alt="" border="0" height="48" src="http://a3.twimg.com/profile_images/75078767/AR_73x73_normal.jpg" style="vertical-align:middle" width="48" /></a>
<a href="/ArchRecord" class="avatar-sm" hreflang="en" id="icon_ArchRecord" rel="ArchRecord" target="_blank"><img alt="" border="0" height="48" src="https://a3.twimg.com/profile_images/75078767/AR_73x73_normal.jpg" style="vertical-align:middle" width="48" /></a>
<div class="hc" id="hc_ArchRecord">
<div class="hc-profile">
<a href="/ArchRecord" class="avatar" hreflang="en" target="_blank"><img alt="ArchRecord" border="0" height="48" src="http://a3.twimg.com/profile_images/75078767/AR_73x73_normal.jpg" style="vertical-align:middle" width="48" /></a>
<a href="/ArchRecord" class="avatar" hreflang="en" target="_blank"><img alt="ArchRecord" border="0" height="48" src="https://a3.twimg.com/profile_images/75078767/AR_73x73_normal.jpg" style="vertical-align:middle" width="48" /></a>
<div class="hc-name"><strong>Architectural Record</strong><span class="hc-verified">&nbsp;</span></div>
<span class="hc-username">@<a href="/ArchRecord">ArchRecord</a></span>
<span class="hc-location">New York City | in Art & Design</span>
@@ -621,7 +621,7 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
<div class="hc-tweet">
<div class="hc-label">Recently tweeted:</div>
<div class="hc-tweet-text">Our latest Newsmaker Interview with #AIA Gold Medal Winner Fumihiko Maki http://ht.ly/3GzWs</div>
<div class="hc-tweet-text">Our latest Newsmaker Interview with #AIA Gold Medal Winner Fumihiko Maki https://www.architecturalrecord.com/news/newsmakers/1101fumihiko_maki.asp?WT.mc_id=twitter_archrecord?WT.mc_id=twitter_archrecord</div>
<div class="hc-meta">about 22 hours ago</div>
</div>
@@ -629,11 +629,11 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
</div>
</li>
<li>
<a href="/gtdguy" class="avatar-sm" hreflang="en" id="icon_gtdguy" rel="gtdguy" target="_blank"><img alt="" border="0" height="48" src="http://a2.twimg.com/profile_images/76339565/DA_Twitter_normal.jpg" style="vertical-align:middle" width="48" /></a>
<a href="/gtdguy" class="avatar-sm" hreflang="en" id="icon_gtdguy" rel="gtdguy" target="_blank"><img alt="" border="0" height="48" src="https://a2.twimg.com/profile_images/76339565/DA_Twitter_normal.jpg" style="vertical-align:middle" width="48" /></a>
<div class="hc" id="hc_gtdguy">
<div class="hc-profile">
<a href="/gtdguy" class="avatar" hreflang="en" target="_blank"><img alt="gtdguy" border="0" height="48" src="http://a2.twimg.com/profile_images/76339565/DA_Twitter_normal.jpg" style="vertical-align:middle" width="48" /></a>
<a href="/gtdguy" class="avatar" hreflang="en" target="_blank"><img alt="gtdguy" border="0" height="48" src="https://a2.twimg.com/profile_images/76339565/DA_Twitter_normal.jpg" style="vertical-align:middle" width="48" /></a>
<div class="hc-name"><strong>David Allen</strong><span class="hc-verified">&nbsp;</span></div>
<span class="hc-username">@<a href="/gtdguy">gtdguy</a></span>
<span class="hc-location">Ojai, California | in Books</span>
@@ -649,11 +649,11 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
</div>
</li>
<li>
<a href="/GaelGreene" class="avatar-sm" hreflang="en" id="icon_GaelGreene" rel="GaelGreene" target="_blank"><img alt="" border="0" height="48" src="http://a2.twimg.com/profile_images/276864980/Greene_blk_hat_wynn_normal.jpg" style="vertical-align:middle" width="48" /></a>
<a href="/GaelGreene" class="avatar-sm" hreflang="en" id="icon_GaelGreene" rel="GaelGreene" target="_blank"><img alt="" border="0" height="48" src="https://a2.twimg.com/profile_images/276864980/Greene_blk_hat_wynn_normal.jpg" style="vertical-align:middle" width="48" /></a>
<div class="hc" id="hc_GaelGreene">
<div class="hc-profile">
<a href="/GaelGreene" class="avatar" hreflang="en" target="_blank"><img alt="GaelGreene" border="0" height="48" src="http://a2.twimg.com/profile_images/276864980/Greene_blk_hat_wynn_normal.jpg" style="vertical-align:middle" width="48" /></a>
<a href="/GaelGreene" class="avatar" hreflang="en" target="_blank"><img alt="GaelGreene" border="0" height="48" src="https://a2.twimg.com/profile_images/276864980/Greene_blk_hat_wynn_normal.jpg" style="vertical-align:middle" width="48" /></a>
<div class="hc-name"><strong>Gael Greene</strong><span class="hc-verified">&nbsp;</span></div>
<span class="hc-username">@<a href="/GaelGreene">GaelGreene</a></span>
<span class="hc-location">New York City | in Food & Drink</span>
@@ -669,11 +669,11 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
</div>
</li>
<li>
<a href="/CoryBooker" class="avatar-sm" hreflang="en" id="icon_CoryBooker" rel="CoryBooker" target="_blank"><img alt="" border="0" height="48" src="http://a0.twimg.com/profile_images/66982165/Cory_Booker_Twitter_normal.jpg" style="vertical-align:middle" width="48" /></a>
<a href="/CoryBooker" class="avatar-sm" hreflang="en" id="icon_CoryBooker" rel="CoryBooker" target="_blank"><img alt="" border="0" height="48" src="https://a0.twimg.com/profile_images/66982165/Cory_Booker_Twitter_normal.jpg" style="vertical-align:middle" width="48" /></a>
<div class="hc" id="hc_CoryBooker">
<div class="hc-profile">
<a href="/CoryBooker" class="avatar" hreflang="en" target="_blank"><img alt="CoryBooker" border="0" height="48" src="http://a0.twimg.com/profile_images/66982165/Cory_Booker_Twitter_normal.jpg" style="vertical-align:middle" width="48" /></a>
<a href="/CoryBooker" class="avatar" hreflang="en" target="_blank"><img alt="CoryBooker" border="0" height="48" src="https://a0.twimg.com/profile_images/66982165/Cory_Booker_Twitter_normal.jpg" style="vertical-align:middle" width="48" /></a>
<div class="hc-name"><strong>Cory Booker</strong><span class="hc-verified">&nbsp;</span></div>
<span class="hc-username">@<a href="/CoryBooker">CoryBooker</a></span>
<span class="hc-location">Newark, NJ | in Politics</span>
@@ -689,11 +689,11 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
</div>
</li>
<li>
<a href="/amazondeals" class="avatar-sm" hreflang="en" id="icon_amazondeals" rel="amazondeals" target="_blank"><img alt="" border="0" height="48" src="http://a3.twimg.com/profile_images/68908343/Gold_Box_plain_normal.PNG" style="vertical-align:middle" width="48" /></a>
<a href="/amazondeals" class="avatar-sm" hreflang="en" id="icon_amazondeals" rel="amazondeals" target="_blank"><img alt="" border="0" height="48" src="https://a3.twimg.com/profile_images/68908343/Gold_Box_plain_normal.PNG" style="vertical-align:middle" width="48" /></a>
<div class="hc" id="hc_amazondeals">
<div class="hc-profile">
<a href="/amazondeals" class="avatar" hreflang="en" target="_blank"><img alt="amazondeals" border="0" height="48" src="http://a3.twimg.com/profile_images/68908343/Gold_Box_plain_normal.PNG" style="vertical-align:middle" width="48" /></a>
<a href="/amazondeals" class="avatar" hreflang="en" target="_blank"><img alt="amazondeals" border="0" height="48" src="https://a3.twimg.com/profile_images/68908343/Gold_Box_plain_normal.PNG" style="vertical-align:middle" width="48" /></a>
<div class="hc-name"><strong>Amazon.com Deals</strong><span class="hc-verified">&nbsp;</span></div>
<span class="hc-username">@<a href="/amazondeals">amazondeals</a></span>
<span class="hc-location">Seattle, Washington | in Deals</span>
@@ -701,7 +701,7 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
<div class="hc-tweet">
<div class="hc-label">Recently tweeted:</div>
<div class="hc-tweet-text">Lightning Deal! $109.99 - TomTom XXL 540T 5-Inch Widescreen Portable GPS Navigator (Lifetime Traffic Edition) http://amzn.to/GoldboxDeals</div>
<div class="hc-tweet-text">Lightning Deal! $109.99 - TomTom XXL 540T 5-Inch Widescreen Portable GPS Navigator (Lifetime Traffic Edition) https://amzn.to/GoldboxDeals</div>
<div class="hc-meta">about 1 hour ago</div>
</div>
@@ -709,11 +709,11 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
</div>
</li>
<li>
<a href="/Support" class="avatar-sm" hreflang="en" id="icon_Support" rel="Support" target="_blank"><img alt="" border="0" height="48" src="http://a2.twimg.com/profile_images/1164188883/support_normal.png" style="vertical-align:middle" width="48" /></a>
<a href="/Support" class="avatar-sm" hreflang="en" id="icon_Support" rel="Support" target="_blank"><img alt="" border="0" height="48" src="https://a2.twimg.com/profile_images/1164188883/support_normal.png" style="vertical-align:middle" width="48" /></a>
<div class="hc" id="hc_Support">
<div class="hc-profile">
<a href="/Support" class="avatar" hreflang="en" target="_blank"><img alt="Support" border="0" height="48" src="http://a2.twimg.com/profile_images/1164188883/support_normal.png" style="vertical-align:middle" width="48" /></a>
<a href="/Support" class="avatar" hreflang="en" target="_blank"><img alt="Support" border="0" height="48" src="https://a2.twimg.com/profile_images/1164188883/support_normal.png" style="vertical-align:middle" width="48" /></a>
<div class="hc-name"><strong>Support</strong><span class="hc-verified">&nbsp;</span></div>
<span class="hc-username">@<a href="/Support">Support</a></span>
<span class="hc-location">Twitter HQ | in Twitter</span>
@@ -729,11 +729,11 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
</div>
</li>
<li>
<a href="/_BoF_" class="avatar-sm" hreflang="en" id="icon__BoF_" rel="_BoF_" target="_blank"><img alt="" border="0" height="48" src="http://a0.twimg.com/profile_images/1193341281/BOF-Logo-Favicon-Twitter_normal.png" style="vertical-align:middle" width="48" /></a>
<a href="/_BoF_" class="avatar-sm" hreflang="en" id="icon__BoF_" rel="_BoF_" target="_blank"><img alt="" border="0" height="48" src="https://a0.twimg.com/profile_images/1193341281/BOF-Logo-Favicon-Twitter_normal.png" style="vertical-align:middle" width="48" /></a>
<div class="hc" id="hc__BoF_">
<div class="hc-profile">
<a href="/_BoF_" class="avatar" hreflang="en" target="_blank"><img alt="_BoF_" border="0" height="48" src="http://a0.twimg.com/profile_images/1193341281/BOF-Logo-Favicon-Twitter_normal.png" style="vertical-align:middle" width="48" /></a>
<a href="/_BoF_" class="avatar" hreflang="en" target="_blank"><img alt="_BoF_" border="0" height="48" src="https://a0.twimg.com/profile_images/1193341281/BOF-Logo-Favicon-Twitter_normal.png" style="vertical-align:middle" width="48" /></a>
<div class="hc-name"><strong>Business of Fashion</strong><span class="hc-verified">&nbsp;</span></div>
<span class="hc-username">@<a href="/_BoF_">_BoF_</a></span>
<span class="hc-location">London, New York, Tokyo, Paris | in Fashion</span>
@@ -760,7 +760,7 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
<div id="tweets" data="{timeout:8000}">
<h2>Top Tweets <a id="view_all_top_tweets" href="toptweets/favorites" tabindex="11">View all</a></h2>
<script src="http://a0.twimg.com/a/1295478501/javascripts/widgets/widget.js?1295482593" type="text/javascript"></script>
<script src="https://a0.twimg.com/a/1295478501/javascripts/widgets/widget.js?1295482593" type="text/javascript"></script>
<script type="text/javascript">
//height was 202 to match 5 lines of sources
new TWTR.Widget({
@@ -836,12 +836,12 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
<li class="first">&copy; 2011 Twitter</li>
<li><a href="/about">About Us</a></li>
<li><a href="/about/contact">Contact</a></li>
<li><a href="http://blog.twitter.com">Blog</a></li>
<li><a href="http://status.twitter.com">Status</a></li>
<li><a href="https://blog.twitter.com">Blog</a></li>
<li><a href="https://status.twitterstat.us/">Status</a></li>
<li><a href="/about/resources">Resources</a></li>
<li><a href="http://dev.twitter.com/">API</a></li>
<li><a href="http://twitter.com/business">Business</a></li>
<li><a href="http://support.twitter.com">Help</a></li>
<li><a href="https://dev.twitter.com/">API</a></li>
<li><a href="https://twitter.com/business">Business</a></li>
<li><a href="https://support.twitter.com">Help</a></li>
<li><a href="/jobs">Jobs</a></li>
<li><a href="/tos">Terms</a></li>
<li><a href="/privacy">Privacy</a></li>
@@ -871,11 +871,11 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js" type="text/javascript"></script>
<script src="http://a2.twimg.com/a/1295478501/javascripts/fronts.js" type="text/javascript"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js" type="text/javascript"></script>
<script src="https://a2.twimg.com/a/1295478501/javascripts/fronts.js" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
page.summizeSearchUrl = 'http://search.twitter.com/search';
page.summizeSearchUrl = 'https://search.twitter.com/search';
page.query = '';
page.prettyQuery = '';
page.locale = 'en';
@@ -914,7 +914,7 @@ if (window.top !== window.self) {document.write = "";window.top.location = windo
<!-- BEGIN google analytics -->
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "https://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2016-2018 the original author or authors.
* Copyright 2016-2019 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -33,7 +33,7 @@ import org.springframework.messaging.Message;
/**
* A {@link MessageHandlerSpec} extension for the MongoDb Outbound endpoint {@link MongoDbOutboundGateway}
*
* @author Xavier Padró
* @author Xavier Padr?
* @author Artem Bilan
*
* @since 5.0
@@ -66,7 +66,7 @@ public class MongoDbOutboundGatewaySpec
/**
* A {@code String} representation of a MongoDb {@link Query} (e.g., query("{'name' : 'Bob'}")).
* Please refer to MongoDb documentation for more query samples
* see <a href="http://www.mongodb.org/display/DOCS/Querying">MongoDB Docs</a>
* see <a href="https://www.mongodb.org/display/DOCS/Querying">MongoDB Docs</a>
* This property is mutually exclusive with 'queryExpression' property.
* @param query the MongoDb {@link Query} string representation to use.
* @return the spec

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2007-2018 the original author or authors.
* Copyright 2007-2019 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -86,7 +86,7 @@ public class MongoDbMessageSource extends AbstractMessageSource<Object> {
/**
* Creates an instance with the provided {@link MongoDbFactory} and SpEL expression
* which should resolve to a MongoDb 'query' string
* (see http://www.mongodb.org/display/DOCS/Querying).
* (see https://www.mongodb.org/display/DOCS/Querying).
* The 'queryExpression' will be evaluated on every call to the {@link #receive()} method.
* @param mongoDbFactory The mongodb factory.
* @param queryExpression The query expression.
@@ -102,7 +102,7 @@ public class MongoDbMessageSource extends AbstractMessageSource<Object> {
/**
* Creates an instance with the provided {@link MongoOperations} and SpEL expression
* which should resolve to a Mongo 'query' string
* (see http://www.mongodb.org/display/DOCS/Querying).
* (see https://www.mongodb.org/display/DOCS/Querying).
* It assumes that the {@link MongoOperations} is fully initialized and ready to be used.
* The 'queryExpression' will be evaluated on every call to the {@link #receive()} method.
* @param mongoTemplate The mongo template.

View File

@@ -8,7 +8,7 @@
<xsd:import namespace="http://www.springframework.org/schema/beans" />
<xsd:import namespace="http://www.springframework.org/schema/integration"
schemaLocation="http://www.springframework.org/schema/integration/spring-integration-5.2.xsd" />
schemaLocation="https://www.springframework.org/schema/integration/spring-integration-5.2.xsd" />
<xsd:annotation>
<xsd:documentation><![CDATA[
@@ -36,7 +36,7 @@
String representation of MongoDb Query (e.g.,
query="{'name' : 'Bob'}").
Please refer to MongoDb documentation for more query samples
http://www.mongodb.org/display/DOCS/Querying
https://www.mongodb.org/display/DOCS/Querying
This attribute is
mutually exclusive with 'query-expression' attribute.
</xsd:documentation>
@@ -210,7 +210,7 @@
String representation of a MongoDb Query (e.g.,
query="{'name' : 'Bob'}").
Please refer to MongoDb documentation for more query samples
http://www.mongodb.org/display/DOCS/Querying
https://www.mongodb.org/display/DOCS/Querying
This attribute is
mutually exclusive with 'query-expression' attribute.
</xsd:documentation>

View File

@@ -9,7 +9,7 @@
<xsd:import namespace="http://www.springframework.org/schema/beans" />
<xsd:import namespace="http://www.springframework.org/schema/tool" />
<xsd:import namespace="http://www.springframework.org/schema/integration"
schemaLocation="http://www.springframework.org/schema/integration/spring-integration-5.2.xsd" />
schemaLocation="https://www.springframework.org/schema/integration/spring-integration-5.2.xsd" />
<xsd:annotation>
<xsd:documentation><![CDATA[

View File

@@ -123,7 +123,7 @@ public class RedisQueueInboundGateway extends MessagingGatewaySupport implements
* can be retrieved from the queue or until the specified timeout passes.
* <p> A timeout of zero can be used to block indefinitely. If not set explicitly
* the timeout value will default to {@code 1000}
* <p> See also: http://redis.io/commands/brpop
* <p> See also: https://redis.io/commands/brpop
* @param receiveTimeout Must be non-negative. Specified in milliseconds.
*/
public void setReceiveTimeout(long receiveTimeout) {
@@ -329,7 +329,7 @@ public class RedisQueueInboundGateway extends MessagingGatewaySupport implements
/**
* Returns the size of the Queue specified by {@link #boundListOperations}. The queue is
* represented by a Redis list. If the queue does not exist <code>0</code>
* is returned. See also http://redis.io/commands/llen
* is returned. See also https://redis.io/commands/llen
* @return Size of the queue. Never negative.
*/
@ManagedMetric

View File

@@ -132,7 +132,7 @@ public class RedisQueueMessageDrivenEndpoint extends MessageProducerSupport impl
* can be retrieved from the queue or until the specified timeout passes.
* <p> A timeout of zero can be used to block indefinitely. If not set explicitly
* the timeout value will default to {@code 1000}
* <p> See also: http://redis.io/commands/brpop
* <p> See also: https://redis.io/commands/brpop
* @param receiveTimeout Must be non-negative. Specified in milliseconds.
*/
public void setReceiveTimeout(long receiveTimeout) {
@@ -313,7 +313,7 @@ public class RedisQueueMessageDrivenEndpoint extends MessageProducerSupport impl
/**
* Returns the size of the Queue specified by {@link #boundListOperations}. The queue is
* represented by a Redis list. If the queue does not exist <code>0</code>
* is returned. See also http://redis.io/commands/llen
* is returned. See also https://redis.io/commands/llen
* @return Size of the queue. Never negative.
*/
@ManagedMetric

View File

@@ -8,7 +8,7 @@
<xsd:import namespace="http://www.springframework.org/schema/beans" />
<xsd:import namespace="http://www.springframework.org/schema/integration"
schemaLocation="http://www.springframework.org/schema/integration/spring-integration-5.2.xsd" />
schemaLocation="https://www.springframework.org/schema/integration/spring-integration-5.2.xsd" />
<xsd:annotation>
<xsd:documentation><![CDATA[

View File

@@ -10,7 +10,7 @@
<xsd:import namespace="http://www.springframework.org/schema/beans"/>
<xsd:import namespace="http://www.springframework.org/schema/tool"/>
<xsd:import namespace="http://www.springframework.org/schema/integration"
schemaLocation="http://www.springframework.org/schema/integration/spring-integration-5.2.xsd"/>
schemaLocation="https://www.springframework.org/schema/integration/spring-integration-5.2.xsd"/>
<xsd:annotation>
<xsd:documentation><![CDATA[

View File

@@ -5,7 +5,7 @@
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xsd:include
schemaLocation="http://www.springframework.org/schema/integration/scripting/spring-integration-scripting-core-5.2.xsd" />
schemaLocation="https://www.springframework.org/schema/integration/scripting/spring-integration-scripting-core-5.2.xsd" />
<xsd:element name="script">
<xsd:annotation>

View File

@@ -8,7 +8,7 @@
<xsd:import namespace="http://www.springframework.org/schema/tool" />
<xsd:import namespace="http://www.springframework.org/schema/integration"
schemaLocation="http://www.springframework.org/schema/integration/spring-integration-5.2.xsd" />
schemaLocation="https://www.springframework.org/schema/integration/spring-integration-5.2.xsd" />
<xsd:complexType name="ScriptType" mixed="true" abstract="true">

View File

@@ -10,9 +10,9 @@
<xsd:import namespace="http://www.springframework.org/schema/beans" />
<xsd:import namespace="http://www.springframework.org/schema/tool" />
<xsd:import namespace="http://www.springframework.org/schema/integration"
schemaLocation="http://www.springframework.org/schema/integration/spring-integration-5.2.xsd" />
schemaLocation="https://www.springframework.org/schema/integration/spring-integration-5.2.xsd" />
<xsd:import namespace="http://www.springframework.org/schema/integration/file"
schemaLocation="http://www.springframework.org/schema/integration/file/spring-integration-file-5.2.xsd" />
schemaLocation="https://www.springframework.org/schema/integration/file/spring-integration-file-5.2.xsd" />
<xsd:element name="outbound-channel-adapter">
<xsd:annotation>

View File

@@ -10,7 +10,7 @@
<xsd:import namespace="http://www.springframework.org/schema/beans"/>
<xsd:import namespace="http://www.springframework.org/schema/tool"/>
<xsd:import namespace="http://www.springframework.org/schema/integration"
schemaLocation="http://www.springframework.org/schema/integration/spring-integration-5.2.xsd"/>
schemaLocation="https://www.springframework.org/schema/integration/spring-integration-5.2.xsd"/>
<xsd:annotation>
<xsd:documentation><![CDATA[

View File

@@ -270,7 +270,7 @@ public class StompInboundChannelAdapterWebSocketIntegrationTests {
webSocketStompSessionManager.setAutoReceipt(true);
webSocketStompSessionManager.setRecoveryInterval(1000);
WebSocketHttpHeaders handshakeHeaders = new WebSocketHttpHeaders();
handshakeHeaders.setOrigin("http://foo.com");
handshakeHeaders.setOrigin("http://www.foo.com/");
webSocketStompSessionManager.setHandshakeHeaders(handshakeHeaders);
StompHeaders stompHeaders = new StompHeaders();
stompHeaders.setHeartbeat(new long[] { 10000, 10000 });
@@ -327,7 +327,7 @@ public class StompInboundChannelAdapterWebSocketIntegrationTests {
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/ws")
.setHandshakeHandler(handshakeHandler())
.setAllowedOrigins("http://foo.com")
.setAllowedOrigins("http://www.foo.com/")
.addInterceptors(new HandshakeInterceptor() {
@Override

View File

@@ -11,7 +11,7 @@
<xsd:import namespace="http://www.springframework.org/schema/beans"/>
<xsd:import namespace="http://www.springframework.org/schema/tool"/>
<xsd:import namespace="http://www.springframework.org/schema/integration"
schemaLocation="http://www.springframework.org/schema/integration/spring-integration-5.2.xsd"/>
schemaLocation="https://www.springframework.org/schema/integration/spring-integration-5.2.xsd"/>
<xsd:annotation>
<xsd:documentation><![CDATA[

View File

@@ -10,9 +10,9 @@
<xsd:import namespace="http://www.springframework.org/schema/beans" />
<xsd:import namespace="http://www.springframework.org/schema/tool" />
<xsd:import namespace="http://www.springframework.org/schema/integration"
schemaLocation="http://www.springframework.org/schema/integration/spring-integration-5.2.xsd" />
schemaLocation="https://www.springframework.org/schema/integration/spring-integration-5.2.xsd" />
<xsd:import namespace="http://www.springframework.org/schema/integration/ip"
schemaLocation="http://www.springframework.org/schema/integration/ip/spring-integration-ip-5.2.xsd" />
schemaLocation="https://www.springframework.org/schema/integration/ip/spring-integration-ip-5.2.xsd" />
<xsd:annotation>
<xsd:documentation><![CDATA[

View File

@@ -10,9 +10,9 @@
<xsd:import namespace="http://www.springframework.org/schema/beans"/>
<xsd:import namespace="http://www.springframework.org/schema/tool"/>
<xsd:import namespace="http://www.springframework.org/schema/integration"
schemaLocation="http://www.springframework.org/schema/integration/spring-integration-5.2.xsd"/>
schemaLocation="https://www.springframework.org/schema/integration/spring-integration-5.2.xsd"/>
<xsd:import namespace="http://www.springframework.org/schema/integration/http"
schemaLocation="http://www.springframework.org/schema/integration/http/spring-integration-http-5.2.xsd"/>
schemaLocation="https://www.springframework.org/schema/integration/http/spring-integration-http-5.2.xsd"/>
<xsd:annotation>
<xsd:documentation><![CDATA[

View File

@@ -335,7 +335,7 @@ public class WebFluxDslTests {
@Bean
public IntegrationFlow webFluxFlowWithReplyPayloadToFlux() {
return f -> f
.handle(WebFlux.outboundGateway("http://www.springsource.org/spring-integration")
.handle(WebFlux.outboundGateway("https://www.springsource.org/spring-integration")
.httpMethod(HttpMethod.GET)
.replyPayloadToFlux(true)
.expectedResponseType(String.class),
@@ -348,7 +348,7 @@ public class WebFluxDslTests {
.from(Http.inboundGateway("/service2")
.requestMapping(r -> r.params("name")))
.handle(WebFlux.<MultiValueMap<String, String>>outboundGateway(m ->
UriComponentsBuilder.fromUriString("http://www.springsource.org/spring-integration")
UriComponentsBuilder.fromUriString("https://www.springsource.org/spring-integration")
.queryParams(m.getPayload())
.build()
.toUri())

View File

@@ -66,7 +66,7 @@ public class WebFluxRequestExecutingMessageHandlerTests {
.clientConnector(httpConnector)
.build();
String destinationUri = "http://www.springsource.org/spring-integration";
String destinationUri = "https://www.springsource.org/spring-integration";
WebFluxRequestExecutingMessageHandler reactiveHandler =
new WebFluxRequestExecutingMessageHandler(destinationUri, webClient);
@@ -96,7 +96,7 @@ public class WebFluxRequestExecutingMessageHandlerTests {
.clientConnector(httpConnector)
.build();
String destinationUri = "http://www.springsource.org/spring-integration";
String destinationUri = "https://www.springsource.org/spring-integration";
WebFluxRequestExecutingMessageHandler reactiveHandler =
new WebFluxRequestExecutingMessageHandler(destinationUri, webClient);
reactiveHandler.setExpectReply(false);
@@ -125,7 +125,7 @@ public class WebFluxRequestExecutingMessageHandlerTests {
.clientConnector(httpConnector)
.build();
String destinationUri = "http://www.springsource.org/spring-integration";
String destinationUri = "https://www.springsource.org/spring-integration";
WebFluxRequestExecutingMessageHandler reactiveHandler =
new WebFluxRequestExecutingMessageHandler(destinationUri, webClient);
reactiveHandler.setExpectReply(false);
@@ -155,7 +155,7 @@ public class WebFluxRequestExecutingMessageHandlerTests {
.clientConnector(httpConnector)
.build();
String destinationUri = "http://www.springsource.org/spring-integration";
String destinationUri = "https://www.springsource.org/spring-integration";
QueueChannel replyChannel = new QueueChannel();
QueueChannel errorChannel = new QueueChannel();
WebFluxRequestExecutingMessageHandler messageHandler =
@@ -202,7 +202,7 @@ public class WebFluxRequestExecutingMessageHandlerTests {
.clientConnector(httpConnector)
.build();
String destinationUri = "http://www.springsource.org/spring-integration";
String destinationUri = "https://www.springsource.org/spring-integration";
WebFluxRequestExecutingMessageHandler reactiveHandler =
new WebFluxRequestExecutingMessageHandler(destinationUri, webClient);
@@ -247,7 +247,7 @@ public class WebFluxRequestExecutingMessageHandlerTests {
.clientConnector(httpConnector)
.build();
String destinationUri = "http://www.springsource.org/spring-integration";
String destinationUri = "https://www.springsource.org/spring-integration";
WebFluxRequestExecutingMessageHandler reactiveHandler =
new WebFluxRequestExecutingMessageHandler(destinationUri, webClient);

View File

@@ -11,7 +11,7 @@
<xsd:import namespace="http://www.springframework.org/schema/beans"/>
<xsd:import namespace="http://www.springframework.org/schema/tool"/>
<xsd:import namespace="http://www.springframework.org/schema/integration"
schemaLocation="http://www.springframework.org/schema/integration/spring-integration-5.2.xsd"/>
schemaLocation="https://www.springframework.org/schema/integration/spring-integration-5.2.xsd"/>
<xsd:annotation>
<xsd:documentation><![CDATA[

View File

@@ -196,7 +196,7 @@ public class WebSocketServerTests {
public IntegrationWebSocketContainer clientWebSocketContainer() {
ClientWebSocketContainer clientWebSocketContainer =
new ClientWebSocketContainer(webSocketClient(), server().getWsBaseUrl() + "/ws");
clientWebSocketContainer.setOrigin("http://foo.com");
clientWebSocketContainer.setOrigin("http://www.foo.com/");
return clientWebSocketContainer;
}
@@ -271,7 +271,7 @@ public class WebSocketServerTests {
return new ServerWebSocketContainer("/ws")
.setHandshakeHandler(handshakeHandler())
.setDecoratorFactories(testWebSocketHandlerDecoratorFactory())
.setAllowedOrigins("http://foo.com")
.setAllowedOrigins("http://www.foo.com/")
.withSockJs();
}

View File

@@ -11,7 +11,7 @@
<xsd:import namespace="http://www.springframework.org/schema/beans"/>
<xsd:import namespace="http://www.springframework.org/schema/tool"/>
<xsd:import namespace="http://www.springframework.org/schema/integration"
schemaLocation="http://www.springframework.org/schema/integration/spring-integration-5.2.xsd"/>
schemaLocation="https://www.springframework.org/schema/integration/spring-integration-5.2.xsd"/>
<xsd:annotation>
<xsd:documentation><![CDATA[

View File

@@ -71,11 +71,11 @@ public class DefaultSoapHeaderMapperTests {
SoapHeader soapHeader = mock(SoapHeader.class);
@SuppressWarnings("unchecked")
Iterator<QName> attrIterator = mock(Iterator.class);
QName attribute = new QName("http://x", "attr", "x");
QName attribute = new QName("https://x", "attr", "x");
@SuppressWarnings("unchecked")
Iterator<SoapHeaderElement> elementIterator = mock(Iterator.class);
SoapHeaderElement soapHeaderElement = mock(SoapHeaderElement.class);
QName element = new QName("http://x", "elem", "x");
QName element = new QName("https://x", "elem", "x");
when(soapMessage.getSoapHeader()).thenReturn(soapHeader);
when(soapHeader.getAllAttributes()).thenReturn(attrIterator);

View File

@@ -89,7 +89,7 @@ public class SimpleWebServiceOutboundGatewayTests {
@Test // INT-1051
public void soapActionAndCustomCallback() {
String uri = "http://www.example.org";
String uri = "https://www.example.org";
SimpleWebServiceOutboundGateway gateway = new SimpleWebServiceOutboundGateway(new TestDestinationProvider(uri));
final AtomicReference<String> soapActionFromCallback = new AtomicReference<String>();
gateway.setRequestCallback(message -> {
@@ -137,7 +137,7 @@ public class SimpleWebServiceOutboundGatewayTests {
@Test
public void testAttachments() throws Exception {
String uri = "http://www.example.org";
String uri = "https://www.example.org";
SimpleWebServiceOutboundGateway gateway = new SimpleWebServiceOutboundGateway(uri);
gateway.setBeanFactory(mock(BeanFactory.class));
@@ -197,7 +197,7 @@ public class SimpleWebServiceOutboundGatewayTests {
@Test
public void testDomPoxMessageFactory() throws Exception {
String uri = "http://www.example.org";
String uri = "https://www.example.org";
SimpleWebServiceOutboundGateway gateway = new SimpleWebServiceOutboundGateway(uri);
gateway.setBeanFactory(mock(BeanFactory.class));

View File

@@ -10,7 +10,7 @@
<xsd:import namespace="http://www.springframework.org/schema/beans" />
<xsd:import namespace="http://www.springframework.org/schema/tool" />
<xsd:import namespace="http://www.springframework.org/schema/integration"
schemaLocation="http://www.springframework.org/schema/integration/spring-integration-5.2.xsd"/>
schemaLocation="https://www.springframework.org/schema/integration/spring-integration-5.2.xsd"/>
<xsd:annotation>
<xsd:documentation>

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2018 the original author or authors.
* Copyright 2002-2019 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -34,13 +34,13 @@ public class TestXmlApplicationContextHelper {
+ "xmlns:context='http://www.springframework.org/schema/context' "
+ "xsi:schemaLocation="
+ "'http://www.springframework.org/schema/beans "
+ "http://www.springframework.org/schema/beans/spring-beans.xsd "
+ "https://www.springframework.org/schema/beans/spring-beans.xsd "
+ "http://www.springframework.org/schema/integration "
+ "http://www.springframework.org/schema/integration/spring-integration.xsd "
+ "https://www.springframework.org/schema/integration/spring-integration.xsd "
+ "http://www.springframework.org/schema/integration/xml "
+ "http://www.springframework.org/schema/integration/xml/spring-integration-xml.xsd "
+ "http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd " +
"http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd' >" +
+ "https://www.springframework.org/schema/integration/xml/spring-integration-xml.xsd "
+ "http://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd " +
"http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd' >" +
"<context:annotation-config/>";
private static final String footer = "</beans>";

View File

@@ -4,9 +4,9 @@ xmlheaders=\
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" \
xmlns:int="http://www.springframework.org/schema/integration" \
xmlns:int-xml="http://www.springframework.org/schema/integration/xml" \
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd \
http://www.springframework.org/schema/integration/xml http://www.springframework.org/schema/integration/xml/spring-integration-xml.xsd \
http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd">
xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd \
http://www.springframework.org/schema/integration/xml https://www.springframework.org/schema/integration/xml/spring-integration-xml.xsd \
http://www.springframework.org/schema/integration https://www.springframework.org/schema/integration/spring-integration.xsd">
xmlfooter= </beans>
xpath-transformer=<int:chain input-channel="input">\

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.example.org/validationTestsSchema" xmlns:tns="http://www.example.org/validationTestsSchema" elementFormDefault="qualified">
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="https://www.example.org/validationTestsSchema" xmlns:tns="https://www.example.org/validationTestsSchema" elementFormDefault="qualified">
<xsd:element name="greeting" type="xsd:string"/>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.example.org/validationTestsSchema" xmlns:tns="http://www.example.org/validationTestsSchema" elementFormDefault="qualified">
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="https://www.example.org/validationTestsSchema" xmlns:tns="https://www.example.org/validationTestsSchema" elementFormDefault="qualified">
<xsd:element name="greeting" type="xsd:string"/>

View File

@@ -11,7 +11,7 @@
<xsd:import namespace="http://www.springframework.org/schema/beans"/>
<xsd:import namespace="http://www.springframework.org/schema/tool"/>
<xsd:import namespace="http://www.springframework.org/schema/integration"
schemaLocation="http://www.springframework.org/schema/integration/spring-integration-5.2.xsd"/>
schemaLocation="https://www.springframework.org/schema/integration/spring-integration-5.2.xsd"/>
<xsd:element name="xmpp-connection">
<xsd:annotation>

View File

@@ -9,7 +9,7 @@
<xsd:import namespace="http://www.springframework.org/schema/beans" />
<xsd:import namespace="http://www.springframework.org/schema/tool" />
<xsd:import namespace="http://www.springframework.org/schema/integration"
schemaLocation="http://www.springframework.org/schema/integration/spring-integration-5.2.xsd" />
schemaLocation="https://www.springframework.org/schema/integration/spring-integration-5.2.xsd" />
<xsd:annotation>
<xsd:documentation><![CDATA[

View File

@@ -5,7 +5,7 @@ This document is the API specification for Spring Integration
<div id="overviewBody">
<p>
For further API reference and developer documentation, see the
<a href="http://docs.spring.io/spring-integration/reference/" target="_top">Spring
<a href="https://docs.spring.io/spring-integration/reference/html/" target="_top">Spring
Integration reference documentation</a>.
That documentation contains more detailed, developer-targeted
descriptions, with conceptual overviews, definitions of terms,
@@ -13,10 +13,10 @@ This document is the API specification for Spring Integration
</p>
<p>
<a href="http://projects.spring.io/spring-integration/" target="_top">Spring
<a href="https://projects.spring.io/spring-integration/" target="_top">Spring
Integration main project page</a>
</p>
<p>
If you are interested in commercial training, consultancy, and
support for Spring Integration, please visit <a href="https://spring.io/" target="_top">

View File

@@ -18,88 +18,88 @@ Changes in version 2.1.0 Milestone 3 (Oct 26, 2011)
https://jira.springsource.org/secure/ReleaseNote.jspa?projectId=10121&version=12640
Changes in version 2.1.0 Milestone 2 (Oct 12, 2011)
http://jira.springsource.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=12200
https://jira.springsource.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=12200
Changes in version 2.1.0 Milestone 1 (Sept 2, 2011)
http://jira.springsource.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11668
https://jira.springsource.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11668
Changes in version 2.0.5 (July 18, 2011)
http://jira.springsource.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=12104
https://jira.springsource.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=12104
Changes in version 2.0.4 (May 18, 2011)
http://jira.springsource.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11828
https://jira.springsource.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11828
Changes in version 2.0.3 (Feb 09, 2011)
http://jira.springsource.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11815
https://jira.springsource.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11815
Changes in version 2.0.2 (Feb 08, 2011)
http://jira.springsource.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11787
https://jira.springsource.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11787
Changes in version 2.0.1 (Dec 17, 2010)
http://jira.springsource.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11696
https://jira.springsource.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11696
Changes in version 2.0.0 GA (Nov 22, 2010)
http://jira.springsource.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11537
https://jira.springsource.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11537
Changes in version 2.0.0 Release Candidate 2 (Nov 13, 2010)
http://jira.springsource.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11749
https://jira.springsource.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11749
Changes in version 2.0.0 Release Candidate 1 (Oct 28, 2010)
http://jira.springsource.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11656
https://jira.springsource.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11656
Changes in version 2.0.0 Milestone 7 (Sept 03, 2010)
http://jira.springsource.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11311
https://jira.springsource.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11311
Changes in version 2.0.0 Milestone 6 (July 28, 2010)
http://jira.springsource.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11536
https://jira.springsource.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11536
Changes in version 2.0.0 Milestone 5 (June 25, 2010)
http://jira.springsource.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11446
https://jira.springsource.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11446
Changes in version 2.0.0 Milestone 4 (May 8, 2010)
http://jira.springsource.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11389
https://jira.springsource.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11389
Changes in version 2.0.0 Milestone 3 (Mar 12, 2010)
http://jira.springsource.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11307
https://jira.springsource.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11307
Changes in version 2.0.0 Milestone 2 (Dec 24, 2009)
---------------------------------------------------
http://jira.springsource.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11306
https://jira.springsource.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11306
Changes in version 2.0.0 Milestone 1 (Oct 12, 2009)
---------------------------------------------------
http://jira.springframework.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11178
https://jira.springframework.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11178
Changes in version 1.0.3 (Jul 18, 2009)
---------------------------------------
http://jira.springframework.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11209
https://jira.springframework.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11209
Changes in version 1.0.2 (Mar 31, 2009)
---------------------------------------
http://jira.springframework.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11153
https://jira.springframework.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11153
Changes in version 1.0.1 (Dec 17, 2008)
---------------------------------------
For changes in this release, see:
http://jira.springframework.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11146
https://jira.springframework.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11146
Changes in version 1.0.0 (Nov 26, 2008)
---------------------------------------
For changes in this release, see:
http://jira.springframework.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=10791
https://jira.springframework.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=10791
Changes in version 1.0.0.RC2 (Nov 14, 2008)
-------------------------------------------
For changes in this release, see:
http://jira.springframework.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11102
https://jira.springframework.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11102
Changes in version 1.0.0.RC1 (Nov 03, 2008)
-------------------------------------------
For changes in this release, see:
http://jira.springframework.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11101
https://jira.springframework.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11101
*** GENERAL ***

2
src/dist/readme.txt vendored
View File

@@ -5,7 +5,7 @@ To find out what has changed since any earlier releases, see 'changelog.txt'.
Please consult the documentation located within the 'docs/reference' directory
of this release and also visit the official Spring Integration home at
http://www.springsource.org/spring-integration
https://www.springsource.org/spring-integration
There you will find links to the forum, issue tracker, and several other resources.

View File

@@ -594,7 +594,7 @@ NOTE: Wherever it makes sense to do so, the release strategy method, the correla
[[aggregator-spel]]
====== Aggregators and Spring Expression Language (SpEL)
Since Spring Integration 2.0, you can handle the various strategies (correlation, release, and aggregation) with http://docs.spring.io/spring/docs/current/spring-framework-reference/html/expressions.html[SpEL], which we recommend if the logic behind such a release strategy is relatively simple.
Since Spring Integration 2.0, you can handle the various strategies (correlation, release, and aggregation) with https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#expressions[SpEL], which we recommend if the logic behind such a release strategy is relatively simple.
Suppose you have a legacy component that was designed to receive an array of objects.
We know that the default release strategy assembles all aggregated messages in the `List`.
Now we have two problems.
@@ -627,7 +627,7 @@ The following example shows how to do so:
----
====
In the preceding configuration, we use a http://docs.spring.io/spring/docs/current/spring-framework-reference/html/expressions.html#expressions-collection-projection[collection projection] expression to assemble a new collection from the payloads of all the messages in the list and then transform it to an array, thus achieving the same result as the earlier Java code.
In the preceding configuration, we use a https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#expressions[collection projection] expression to assemble a new collection from the payloads of all the messages in the list and then transform it to an array, thus achieving the same result as the earlier Java code.
You can apply the same expression-based approach when dealing with custom release and correlation strategies.
@@ -792,7 +792,7 @@ public interface MessageGroupStore {
----
====
For more information, see the http://docs.spring.io/spring-integration/api/org/springframework/integration/store/MessageGroupStore.html[Javadoc].
For more information, see the https://docs.spring.io/spring-integration/api/org/springframework/integration/store/MessageGroupStore.html[Javadoc].
The `MessageGroupStore` accumulates state information in `MessageGroups` while waiting for a release strategy to be triggered, and that event might not ever happen.
So, to prevent stale messages from lingering, and for volatile stores to provide a hook for cleaning up when the application shuts down, the `MessageGroupStore` lets you register callbacks to apply to its `MessageGroups` when they expire.

View File

@@ -33,13 +33,13 @@ The following adapters are available:
Spring Integration also provides a point-to-point message channel and a publish-subscribe message channel backed by AMQP Exchanges and Queues.
To provide AMQP support, Spring Integration relies on (http://projects.spring.io/spring-amqp[Spring AMQP]), which applies core Spring concepts to the development of AMQP-based messaging solutions.
Spring AMQP provides similar semantics to (http://docs.spring.io/spring/docs/current/spring-framework-reference/html/jms.html[Spring JMS]).
To provide AMQP support, Spring Integration relies on (https://projects.spring.io/spring-amqp[Spring AMQP]), which applies core Spring concepts to the development of AMQP-based messaging solutions.
Spring AMQP provides similar semantics to (https://docs.spring.io/spring/docs/current/spring-framework-reference/integration.html#jms[Spring JMS]).
Whereas the provided AMQP Channel Adapters are intended for unidirectional messaging (send or receive) only, Spring Integration also provides inbound and outbound AMQP gateways for request-reply operations.
TIP:
You should familiarize yourself with the http://docs.spring.io/spring-amqp/reference/html/[reference documentation of the Spring AMQP project].
You should familiarize yourself with the https://docs.spring.io/spring-amqp/reference/html/[reference documentation of the Spring AMQP project].
It provides much more in-depth information about Spring's integration with AMQP in general and RabbitMQ in particular.
[[amqp-inbound-channel-adapter]]
@@ -159,7 +159,7 @@ The transaction manager works in conjunction with the `channel-transacted` attri
If there is already a transaction in progress when the framework is sending or receiving a message and the `channelTransacted` flag is `true`, the commit or rollback of the messaging transaction is deferred until the end of the current transaction.
If the `channelTransacted` flag is `false`, no transaction semantics apply to the messaging operation (it is auto-acked).
For further information, see
http://docs.spring.io/spring-amqp/reference/html/%5Freference.html#%5Ftransactions[Transactions with Spring AMQP].
https://docs.spring.io/spring-amqp/reference/html/%255Freference.html#%5Ftransactions[Transactions with Spring AMQP].
Optional.
<25> Tells the `SimpleMessageListenerContainer` how many messages to process in a single transaction (if the channel is transactional).
For best results, it should be less than or equal to the value set in `prefetch-count`.
@@ -1178,12 +1178,12 @@ Note that RabbitMQ https://www.rabbitmq.com/validated-user-id.html[validates tha
To configure a default user ID for outbound messages, configure it on a `RabbitTemplate` and configure the outbound adapter or gateway to use that template.
Similarly, to set the user ID property on replies, inject an appropriately configured template into the inbound gateway.
See the http://docs.spring.io/spring-amqp/reference/html/_reference.html#template-user-id[Spring AMQP documentation] for more information.
See the https://docs.spring.io/spring-amqp/reference/html/_reference.html#template-user-id[Spring AMQP documentation] for more information.
[[amqp-delay]]
=== Delayed Message Exchange
Spring AMQP supports the http://docs.spring.io/spring-amqp/reference/html/_reference.html#delayed-message-exchange[RabbitMQ Delayed Message Exchange Plugin].
Spring AMQP supports the https://docs.spring.io/spring-amqp/reference/html/#delayed-message-exchange[RabbitMQ Delayed Message Exchange Plugin].
For inbound messages, the `x-delay` header is mapped to the `AmqpHeaders.RECEIVED_DELAY` header.
Setting the `AMQPHeaders.DELAY` header causes the corresponding `x-delay` header to be set in outbound messages.
You can also specify the `delay` and `delayExpression` properties on outbound endpoints (`delay-expression` when using XML configuration).
@@ -1341,11 +1341,11 @@ public IntegrationFlow pubSubInFlow(ConnectionFactory connectionFactory) {
The Spring Integration AMQP Adapters automatically map all AMQP properties and headers.
(This is a change from 4.3 - previously, only standard headers were mapped).
By default, these properties are copied to and from Spring Integration `MessageHeaders` by using the
http://docs.spring.io/spring-integration/api/org/springframework/integration/amqp/support/DefaultAmqpHeaderMapper.html[`DefaultAmqpHeaderMapper`].
https://docs.spring.io/spring-integration/api/org/springframework/integration/amqp/support/DefaultAmqpHeaderMapper.html[`DefaultAmqpHeaderMapper`].
You can pass in your own implementation of AMQP-specific header mappers, as the adapters have properties to support doing so.
Any user-defined headers within the AMQP http://docs.spring.io/spring-amqp/api/org/springframework/amqp/core/MessageProperties.html[`MessageProperties`] are copied to or from an AMQP message, unless explicitly negated by the `requestHeaderNames` or `replyHeaderNames` properties of the `DefaultAmqpHeaderMapper`.
Any user-defined headers within the AMQP https://docs.spring.io/spring-amqp/api/org/springframework/amqp/core/MessageProperties.html[`MessageProperties`] are copied to or from an AMQP message, unless explicitly negated by the `requestHeaderNames` or `replyHeaderNames` properties of the `DefaultAmqpHeaderMapper`.
By default, for an outbound mapper, no `x-*` headers are mapped.
See the <<header-copy-caution,caution>> that appears later in this section for why.
@@ -1496,11 +1496,11 @@ IMPORTANT: There must be no thread handoffs in the downstream flow (`QueueChanne
To experiment with the AMQP adapters, check out the samples available in the Spring Integration samples git repository at https://github.com/spring-projects/spring-integration-samples[https://github.com/SpringSource/spring-integration-samples]
Currently, one sample demonstrates the basic functionality of the Spring Integration AMQP adapter by using an outbound channel adapter and an inbound channel adapter.
As AMQP broker implementation in the sample uses http://www.rabbitmq.com/[RabbitMQ].
As AMQP broker implementation in the sample uses https://www.rabbitmq.com/[RabbitMQ].
NOTE: In order to run the example, you need a running instance of RabbitMQ.
A local installation with just the basic defaults suffices.
For detailed RabbitMQ installation procedures, see http://www.rabbitmq.com/install.html[http://www.rabbitmq.com/install.html]
For detailed RabbitMQ installation procedures, see https://www.rabbitmq.com/install.html[https://www.rabbitmq.com/install.html]
Once the sample application is started, enter some text on the command prompt and a message containing that entered text is dispatched to the AMQP queue.
In return, that message is retrieved by Spring Integration and printed to the console.

View File

@@ -4,7 +4,7 @@
The `MessageHandlerChain` is an implementation of `MessageHandler` that can be configured as a single message endpoint while actually delegating to a chain of other handlers, such as filters, transformers, splitters, and so on.
When several handlers need to be connected in a fixed, linear progression, this can lead to a much simpler configuration.
For example, it is fairly common to provide a transformer before other components.
Similarly, when you provide a filter before some other component in a chain, you essentially create a http://www.eaipatterns.com/MessageSelector.html[selective consumer].
Similarly, when you provide a filter before some other component in a chain, you essentially create a https://www.enterpriseintegrationpatterns.com/MessageSelector.html[selective consumer].
In either case, the chain requires only a single `input-channel` and a single `output-channel`, eliminating the need to define channels for each individual component.
TIP: Spring Integration's `Filter` provides a boolean property: `throwExceptionOnRejection`.

View File

@@ -17,7 +17,7 @@ This guide includes many samples.
[[conversion-support]]
===== 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 http://www.eaipatterns.com/DatatypeChannel.html[Datatype channel].
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 <<channel-implementations>> and <<service-activator-introduction>>.
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.
@@ -42,18 +42,18 @@ See <<http-outbound>> for more details.
[[new-eip]]
==== Enterprise Integration Pattern Additions
Also in 2.0, we have added support for even more of the patterns described in Hohpe and Woolf's http://www.eaipatterns.com/[Enterprise Integration Patterns] book.
Also in 2.0, we have added support for even more of the patterns described in Hohpe and Woolf's https://www.enterpriseintegrationpatterns.com/[Enterprise Integration Patterns] book.
[[new-message-history]]
===== Message History
We now provide support for the http://www.eaipatterns.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.
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 <<message-history>> for more details.
[[new-message-store]]
===== Message Store
We now provide support for the http://www.eaipatterns.com/MessageStore.html[message store] pattern.
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 <<message-store>>, <<claim-check>>, <<channel>>, <<aggregator>>, <<jdbc>>`", and <<resequencer>> for more details.
@@ -61,7 +61,7 @@ See <<message-store>>, <<claim-check>>, <<channel>>, <<aggregator>>, <<jdbc>>`",
[[new-claim-check]]
===== Claim Check
We have added an implementation of the http://www.eaipatterns.com/StoreInLibrary.html[claim check] pattern.
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 <<claim-check>> for more details.
@@ -69,7 +69,7 @@ See <<claim-check>> for more details.
[[new-control-bus]]
===== Control Bus
We have provided implementations of the http://www.eaipatterns.com/ControlBus.html[control bus] pattern, which lets you use messaging to manage and monitor endpoints and channels.
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 <<control-bus>> and <<groovy-control-bus>> for more details.
@@ -83,7 +83,7 @@ We have added several new channel adapters and messaging gateways in Spring Inte
We have added channel adapters for receiving and sending messages over the TCP and UDP internet protocols.
See <<ip>> for more details.
See also the following blog: http://blog.springsource.com/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`"].
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]]
===== Twitter Adapters
@@ -159,18 +159,18 @@ We restructured some packaging to provide the flexibility we needed for extendin
==== New Source Control Management and Build Infrastructure
With Spring Integration 2.0, we switched our build environment to use Git for source control.
To access our repository, visit http://git.springsource.org/spring-integration.
We have also switched our build system to http://gradle.org/[Gradle].
To access our repository, visit https://git.springsource.org/spring-integration.
We have also switched our build system to https://gradle.org/[Gradle].
[[new-samples]]
==== New Spring Integration Samples
With Spring Integration 2.0, we have decoupled the samples from our main release distribution.
Please read the following blog to get more information: http://blog.springsource.com/2010/09/29/new-spring-integration-samples/[New Spring Integration Samples].
Please read the following blog to get more information: https://spring.io/blog/2010/09/29/new-spring-integration-samples/[New Spring Integration Samples].
We have also created many new samples, including samples for every new adapter.
[[new-sts]]
==== Spring Tool Suite Visual Editor for Spring Integration
There is an amazing new visual editor for Spring Integration included within the latest version of SpringSource Tool Suite.
If you are not already using STS, you can download it athttps://spring.io/tools/sts[Spring Tool Suite].
If you are not already using STS, you can download it at https://spring.io/tools/sts[Spring Tool Suite].

View File

@@ -11,8 +11,8 @@ Version 2.1 added a number of new components.
[[x2.1-new-scripting-support]]
===== JSR-223 Scripting Support
In Spring Integration 2.0, we added support for http://groovy.codehaus.org/[Groovy].
With Spring Integration 2.1, we expanded support for additional languages substantially by implementing support for http://www.jcp.org/en/jsr/detail?id=223[JSR-223] ("`Scripting for the Java™ Platform`").
In Spring Integration 2.0, we added support for https://groovy.codehaus.org/[Groovy].
With Spring Integration 2.1, we expanded support for additional languages substantially by implementing support for https://www.jcp.org/en/jsr/detail?id=223[JSR-223] ("`Scripting for the Java™ Platform`").
Now you have the ability to use any scripting language that supports JSR-223 including:
* Javascript
@@ -25,15 +25,15 @@ For further details, see <<scripting>>.
[[x2.1-new-gemfire-support]]
===== GemFire Support
Spring Integration provides support for http://www.vmware.com/products/application-platform/vfabric-gemfire/overview.html[GemFire] by providing inbound adapters for entry and continuous query events, an outbound adapter to write entries to the cache, and http://static.springsource.org/spring-integration/api/org/springframework/integration/store/MessageStore.html[`MessageStore`] and http://static.springsource.org/spring-integration/api/org/springframework/integration/store/MessageGroupStore.html[`MessageGroupStore`] implementations.
Spring integration leverages the http://www.springsource.org/spring-gemfire[Spring Gemfire] project, providing a thin wrapper over its components.
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 <<gemfire>>.
[[x2.1-new-amqp-support]]
===== AMQP Support
Spring Integration 2.1 added several channel adapters for receiving and sending messages by using the http://www.amqp.org/[Advanced Message Queuing Protocol] (AMQP).
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 <<amqp>>.
@@ -41,14 +41,14 @@ For further details, see <<amqp>>.
[[x2.1-new-mongodb-support]]
===== MongoDB Support
As of version 2.1, Spring Integration provides support for http://www.mongodb.org/[MongoDB] by providing a MongoDB-based `MessageStore`.
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 <<mongodb>>.
[[x2.1-new-redis-support]]
===== Redis Support
As of version 2.1, Spring Integration supports http://redis.io/[Redis], an advanced key-value store, by providing a Redis-based `MessageStore` as well as publish-subscribe messaging adapters.
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 <<redis>>.
@@ -64,7 +64,7 @@ For further details, see <<resource-inbound-channel-adapter>>.
===== Stored Procedure Components
With Spring Integration 2.1, the `JDBC` Module also provides stored procedure support by adding several new components, including inbound and outbound channel adapters and an outbound gateway.
The stored procedure support leverages Spring's http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/jdbc/core/simple/SimpleJdbcCall.html[`SimpleJdbcCall`] class and consequently supports stored procedures for:
The stored procedure support leverages Spring's https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/jdbc/core/simple/SimpleJdbcCall.html[`SimpleJdbcCall`] class and consequently supports stored procedures for:
* Apache Derby
* DB2
@@ -97,7 +97,7 @@ For more details, see <<xml-xpath-filter>> and <<xml-validating-filter>>.
===== Payload Enricher
Since Spring Integration 2.1, we added the payload enricher.
A payload enricher defines an endpoint that typically passes a http://static.springsource.org/spring-integration/api/org/springframework/integration/Message.html[`Message`] to the exposed request channel and then expects a reply message.
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 <<payload-enricher>>.
@@ -164,9 +164,9 @@ The following example declares a version-less Spring Integration namespace:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:int="http://www.springframework.org/schema/integration"
xsi:schemaLocation="http://www.springframework.org/schema/integration
http://www.springframework.org/schema/integration/spring-integration.xsd
https://www.springframework.org/schema/integration/spring-integration.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
https://www.springframework.org/schema/beans/spring-beans.xsd">
...
</beans>
----
@@ -182,9 +182,9 @@ The following example declares a Spring Integration namespace with an explicit v
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:int="http://www.springframework.org/schema/integration"
xsi:schemaLocation="http://www.springframework.org/schema/integration
http://www.springframework.org/schema/integration/spring-integration-2.2.xsd
https://www.springframework.org/schema/integration/spring-integration-2.2.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
https://www.springframework.org/schema/beans/spring-beans.xsd">
...
</beans>
----
@@ -202,8 +202,8 @@ This section covers those changes.
[[x2.1-move-to-github]]
===== Source Code Now Hosted on Github
Since version 2.0, the Spring Integration project uses http://git-scm.com/[Git] for version control.
To increase community visibility even further, the project was moved from SpringSource hosted Git repositories to http://www.github.com/[Github].
Since version 2.0, the Spring Integration project uses https://git-scm.com/[Git] for version control.
To increase community visibility even further, the project was moved from SpringSource hosted Git repositories to https://www.github.com/[Github].
The Spring Integration Git repository is located at: https://github.com/spring-projects/spring-integration[spring-integration].
For the project, we also improved the process of providing code contributions.
@@ -214,7 +214,7 @@ For more details, see https://github.com/spring-projects/spring-integration/blob
[[x2.1-sonar]]
===== Improved Source Code Visibility with Sonar
In an effort to provide better source code visibility and consequently to monitor the quality of Spring Integration's source code, we set up an instance of http://www.sonarsource.org/[Sonar].
In an effort to provide better source code visibility and consequently to monitor the quality of Spring Integration's source code, we set up an instance of https://www.sonarqube.org/[Sonar].
We gather metrics nightly and make them available at https://sonar.spring.io/dashboard?id=org.springframework.integration%3Aspring-integration%3Amaster[sonar.spring.io].
[[x2.1-new-samples]]

View File

@@ -42,7 +42,7 @@ For more information, see <<spel-property-accessors>>.
[[x3.0-redis-new-components]]
===== Redis: New Components
We added a new Redis-based http://docs.spring.io/spring-integration/docs/latest-ga/api/org/springframework/integration/store/MetadataStore.html[`MetadataStore`] implementation.
We added a new Redis-based https://docs.spring.io/spring-integration/api/org/springframework/integration/metadata/MetadataStore.html[`MetadataStore`] implementation.
You can use the `RedisMetadataStore` to maintain the state of a `MetadataStore` across application restarts.
This new `MetadataStore` implementation can be used with adapters, such as:
@@ -361,7 +361,7 @@ For more information, see <<transformer>>.
[[x3.0-jpa-changes]]
===== JPA Support Changes
Payloads to persist or merge can now be of type `http://docs.oracle.com/javase/7/docs/api/java/lang/Iterable.html[java.lang.Iterable]`.
Payloads to persist or merge can now be of type `https://docs.oracle.com/javase/7/docs/api/java/lang/Iterable.html[java.lang.Iterable]`.
In that case, each object returned by the `Iterable` is treated as an entity and persisted or merged by using the underlying `EntityManager`.
Null values returned by the iterator are ignored.

View File

@@ -46,7 +46,7 @@ For more information, see <<messaging-gateway-annotation>>.
===== Spring Boot `@EnableAutoConfiguration`
As well as the `@EnableIntegration` annotation mentioned earlier, we introduced a hook to allow the Spring Integration infrastructure beans to be configured with Spring Boot's `@EnableAutoConfiguration` annotation.
For more information, see http://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-auto-configuration.html["`Auto-configuration`"] in the Spring Boot Reference Guide.
For more information, see https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-auto-configuration.html["`Auto-configuration`"] in the Spring Boot Reference Guide.
[[x4.0-global-channel-interceptor]]
===== `@GlobalChannelInterceptor`

View File

@@ -287,12 +287,12 @@ See <<jdbc>> for more information.
==== Metrics Changes
http://micrometer.io/[Micrometer] application monitoring is now supported (since version 5.0.2).
https://micrometer.io/[Micrometer] application monitoring is now supported (since version 5.0.2).
See <<micrometer-integration>> for more information.
IMPORTANT: Changes were made to the Micrometer `Meters` in version 5.0.3 to make them more suitable for use in dimensional systems.
Further changes were made in 5.0.4.
If you usie Micrometer, we recommend a minimum of version 5.0.4.
If you use Micrometer, we recommend a minimum of version 5.0.4.
==== `@EndpointId` Annotations

View File

@@ -279,7 +279,7 @@ The reason for this is that when a `Message` is sent to a `SubscribableChannel`,
a `PublishSubscribeChannel` sends to all of its subscribers).
Therefore, the `preReceive(...)`, `postReceive(...)`, and `afterReceiveCompletion(...)` interceptor methods are invoked only when the interceptor is applied to a `PollableChannel`.
Spring Integration also provides an implementation of the http://eaipatterns.com/WireTap.html[Wire Tap] pattern.
Spring Integration also provides an implementation of the https://www.enterpriseintegrationpatterns.com/WireTap.html[Wire Tap] pattern.
It is a simple interceptor that sends the `Message` to another channel without otherwise altering the existing flow.
It can be very useful for debugging and monitoring.
An example is shown in <<channel-wiretap>>.
@@ -408,7 +408,7 @@ Sometimes, a consumer can process only a particular type of payload, forcing you
The first thing that comes to mind may be to use a message filter.
However, all that message filter can do is filter out messages that are not compliant with the requirements of the consumer.
Another way would be to use a content-based router and route messages with non-compliant data-types to specific transformers to enforce transformation and conversion to the required data type.
This would work, but a simpler way to accomplish the same thing is to apply the http://www.eaipatterns.com/DatatypeChannel.html[Datatype Channel] pattern.
This would work, but a simpler way to accomplish the same thing is to apply the https://www.enterpriseintegrationpatterns.com/DatatypeChannel.html[Datatype Channel] pattern.
You can use separate datatype channels for each specific payload data type.
To create a datatype channel that accepts only messages that contain a certain payload type, provide the data type's fully-qualified class name in the channel element's `datatype` attribute, as the following example shows:
@@ -429,7 +429,7 @@ Multiple types can be provided as a comma-delimited list, as the following examp
====
So the 'numberChannel' in the preceding example accepts only messages with a data type of `java.lang.Number`.
But what happens if the payload of the message is not of the required type? It depends on whether you have defined a bean named `integrationConversionService` that is an instance of Spring's http://static.springsource.org/spring/docs/current/spring-framework-reference/html/validation.html#core-convert-ConversionService-API[Conversion Service].
But what happens if the payload of the message is not of the required type? It depends on whether you have defined a bean named `integrationConversionService` that is an instance of Spring's https://docs.spring.io/spring/docs/current/spring-framework-reference/html/validation.html#core-convert-ConversionService-API[Conversion Service].
If not, then an `Exception` would be thrown immediately.
However, if you have defined an `integrationConversionService` bean, it is used in an attempt to convert the message's payload to the acceptable type.

View File

@@ -7,7 +7,7 @@ However, there are times when we want to hide data temporarily.
For example, in a distributed system, we may receive a message with a very large payload.
Some intermittent message processing steps may not need access to this payload and some may only need to access certain headers, so carrying the large message payload through each processing step may cause performance degradation, may produce a security risk, and may make debugging more difficult.
The http://www.eaipatterns.com/StoreInLibrary.html[store in library] (or claim check) pattern describes a mechanism that lets you store data in a well known place while maintaining only a pointer (a claim check) to where that data is located.
The https://www.enterpriseintegrationpatterns.com/StoreInLibrary.html[store in library] (or claim check) pattern describes a mechanism that lets you store data in a well known place while maintaining only a pointer (a claim check) to where that data is located.
You can pass that pointer around as the payload of a new message, thereby letting any component within the message flow get the actual data as soon as it needs it.
This approach is very similar to the certified mail process, where you get a claim check in your mailbox and then have to go to the post office to claim your actual package.
It is also the same idea as baggage claim after a flight or in a hotel.

View File

@@ -13,7 +13,7 @@ You can also use the API directly, but we expect most developers to choose one o
=== Namespace Support
You can configure Spring Integration components with XML elements that map directly to the terminology and concepts of enterprise integration.
In many cases, the element names match those of the http://www.eaipatterns.com[_Enterprise Integration Patterns_] book.
In many cases, the element names match those of the https://www.enterpriseintegrationpatterns.com/[_Enterprise Integration Patterns_] book.
To enable Spring Integration's core namespace support within your Spring configuration files, add the following namespace reference and schema mapping in your top-level 'beans' element:
@@ -25,9 +25,9 @@ To enable Spring Integration's core namespace support within your Spring configu
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
*xmlns:int="http://www.springframework.org/schema/integration"*
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
https://www.springframework.org/schema/beans/spring-beans.xsd
*http://www.springframework.org/schema/integration*
*http://www.springframework.org/schema/integration/spring-integration.xsd*">
*https://www.springframework.org/schema/integration/spring-integration.xsd*">
----
====
@@ -46,9 +46,9 @@ Alternatively, you can create configuration files that use the Spring Integratio
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
https://www.springframework.org/schema/beans/spring-beans.xsd
*http://www.springframework.org/schema/integration*
*http://www.springframework.org/schema/integration/spring-integration.xsd*">
*https://www.springframework.org/schema/integration/spring-integration.xsd*">
----
====
@@ -77,19 +77,19 @@ For example, the following root element shows several of these namespace declara
xmlns:int-rmi="http://www.springframework.org/schema/integration/rmi"
xmlns:int-ws="http://www.springframework.org/schema/integration/ws"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/integration
http://www.springframework.org/schema/integration/spring-integration.xsd
https://www.springframework.org/schema/integration/spring-integration.xsd
http://www.springframework.org/schema/integration/file
http://www.springframework.org/schema/integration/file/spring-integration-file.xsd
https://www.springframework.org/schema/integration/file/spring-integration-file.xsd
http://www.springframework.org/schema/integration/jms
http://www.springframework.org/schema/integration/jms/spring-integration-jms.xsd
https://www.springframework.org/schema/integration/jms/spring-integration-jms.xsd
http://www.springframework.org/schema/integration/mail
http://www.springframework.org/schema/integration/mail/spring-integration-mail.xsd
https://www.springframework.org/schema/integration/mail/spring-integration-mail.xsd
http://www.springframework.org/schema/integration/rmi
http://www.springframework.org/schema/integration/rmi/spring-integration-rmi.xsd
https://www.springframework.org/schema/integration/rmi/spring-integration-rmi.xsd
http://www.springframework.org/schema/integration/ws
http://www.springframework.org/schema/integration/ws/spring-integration-ws.xsd">
https://www.springframework.org/schema/integration/ws/spring-integration-ws.xsd">
...
</beans>
----
@@ -113,7 +113,7 @@ IntegrationContextUtils.TASK_SCHEDULER_BEAN_NAME
----
====
By default, Spring Integration relies on an instance of `ThreadPoolTaskScheduler`, as described in the http://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html[Task Execution and Scheduling] section of the Spring Framework reference manual.
By default, Spring Integration relies on an instance of `ThreadPoolTaskScheduler`, as described in the https://docs.spring.io/spring/docs/current/spring-framework-reference/integration.html#scheduling[Task Execution and Scheduling] section of the Spring Framework reference manual.
That default `TaskScheduler` starts up automatically with a pool of ten threads, but see <<global-properties>>.
If you provide your own `TaskScheduler` instance instead, you can set the 'autoStartup' property to `false` or provide your own pool size value.
@@ -133,7 +133,7 @@ Such endpoints have no poller configuration, since their handlers are invoked di
[IMPORTANT]
=====
When running in a JEE container, you may need to use Spring's `TimerManagerTaskScheduler`, as described http://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html#scheduling-task-scheduler-implementations[here], instead of the default `taskScheduler`.
When running in a JEE container, you may need to use Spring's `TimerManagerTaskScheduler`, as described https://docs.spring.io/spring/docs/current/spring-framework-reference/integration.html#scheduling-task-scheduler-implementations[here], instead of the default `taskScheduler`.
To do so, define a bean with the appropriate JNDI name for your environment, as the following example shows:
====
@@ -392,7 +392,7 @@ This is consistent across both configuration options (namespace and annotations)
TIP: The combination of output channels on endpoints and the reply channel message header enables a pipeline approach, where multiple components have an output channel and the final component allows the reply message to be forwarded to the reply channel (as specified in the original request message).
In other words, the final component depends on the information provided by the original sender and can dynamically support any number of clients as a result.
This is an example of the http://eaipatterns.com/ReturnAddress.html[return address] pattern.
This is an example of the https://www.enterpriseintegrationpatterns.com/ReturnAddress.html[return address] pattern.
In addition to the examples shown here, these annotations also support the `inputChannel` and `outputChannel` properties, as the following example shows:
@@ -624,7 +624,7 @@ public class MyFlowConfiguration {
@Bean
@ServiceActivator(inputChannel = "httpChannel")
public MessageHandler httpHandler() {
HttpRequestExecutingMessageHandler handler = new HttpRequestExecutingMessageHandler("http://foo/service");
HttpRequestExecutingMessageHandler handler = new HttpRequestExecutingMessageHandler("https://foo/service");
handler.setExpectedResponseType(String.class);
handler.setOutputChannelName("outputChannel");
return handler;

View File

@@ -2,7 +2,7 @@
=== Content Enricher
At times, you may have a requirement to enhance a request with more information than was provided by the target system.
The http://www.eaipatterns.com/DataEnricher.html[data enricher] pattern describes various scenarios as well as the component (Enricher) that lets you address such requirements.
The https://www.enterpriseintegrationpatterns.com/DataEnricher.html[data enricher] pattern describes various scenarios as well as the component (Enricher) that lets you address such requirements.
The Spring Integration `Core` module includes two enrichers:
@@ -112,7 +112,7 @@ You can similarly point to a Groovy script, as the following example shows:
===== SpEL Support
In Spring Integration 2.0, we introduced the convenience of the http://docs.spring.io/spring/docs/current/spring-framework-reference/html/expressions.html[Spring Expression Language (SpEL)] to help configure many different components.
In Spring Integration 2.0, we introduced the convenience of the https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#expressions[Spring Expression Language (SpEL)] to help configure many different components.
The header enricher is one of them.
Look again at the POJO example shown earlier.
You can see that the computation logic to determine the header value is pretty simple.

View File

@@ -1,7 +1,7 @@
[[control-bus]]
=== Control Bus
As described in the http://www.eaipatterns.com[_Enterprise Integration Patterns_] (EIP) book, the idea behind the control bus is that the same messaging system can be used for monitoring and managing the components within the framework as is used for "`application-level`" messaging.
As described in the https://www.enterpriseintegrationpatterns.com/[_Enterprise Integration Patterns_] (EIP) book, the idea behind the control bus is that the same messaging system can be used for monitoring and managing the components within the framework as is used for "`application-level`" messaging.
In Spring Integration, we build upon the adapters described above so that you can send messages as a means of invoking exposed operations.
The following example shows how to configure a control bus with XML:

View File

@@ -57,7 +57,7 @@ You need not replace all of your existing XML configuration to use Java configur
=== DSL Basics
The `org.springframework.integration.dsl` package contains the `IntegrationFlowBuilder` API mentioned earlier and a number of `IntegrationComponentSpec` implementations, which are also builders and provide the fluent API to configure concrete endpoints.
The `IntegrationFlowBuilder` infrastructure provides common http://www.eaipatterns.com[enterprise integration patterns] (EIP) for message-based applications, such as channels, endpoints, pollers, and channel interceptors.
The `IntegrationFlowBuilder` infrastructure provides common https://www.enterpriseintegrationpatterns.com/[enterprise integration patterns] (EIP) for message-based applications, such as channels, endpoints, pollers, and channel interceptors.
Endpoints are expressed as verbs in the DSL to improve readability.
The following list includes the common DSL method names and the associated EIP endpoint:

View File

@@ -11,7 +11,7 @@ Some of these are also capable of sending reply messages.
Sending messages is quite straightforward.
As shown earlier in <<channel>>, you can send a message to a message channel.
However, receiving is a bit more complicated.
The main reason is that there are two types of consumers: http://www.eaipatterns.com/PollingConsumer.html[polling consumers] and http://www.eaipatterns.com/EventDrivenConsumer.html[event-driven consumers].
The main reason is that there are two types of consumers: https://www.enterpriseintegrationpatterns.com/PollingConsumer.html[polling consumers] and https://www.enterpriseintegrationpatterns.com/EventDrivenConsumer.html[event-driven consumers].
Of the two, event-driven consumers are much simpler.
Without any need to manage and schedule a separate poller thread, they are essentially listeners with a callback method.
@@ -449,8 +449,8 @@ You can now obtain a reference to the trigger bean and change the polling interv
For an example, see the https://github.com/SpringSource/spring-integration-samples/tree/master/intermediate[Spring Integration Samples] project.
It contains a sample called `dynamic-poller`, which uses a custom trigger and demonstrates the ability to change the polling interval at runtime.
The sample provides a custom trigger that implements the http://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/scheduling/Trigger.html[`org.springframework.scheduling.Trigger`] interface.
The sample's trigger is based on Spring's http://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/scheduling/support/PeriodicTrigger.html[`PeriodicTrigger`] implementation.
The sample provides a custom trigger that implements the https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/scheduling/Trigger.html[`org.springframework.scheduling.Trigger`] interface.
The sample's trigger is based on Spring's https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/scheduling/support/PeriodicTrigger.html[`PeriodicTrigger`] implementation.
However, the fields of the custom trigger are not final, and the properties have explicit getters and setters, letting you dynamically change the polling period at runtime.
NOTE: It is important to note, though, that because the Trigger method is `nextExecutionTime()`, any changes to a dynamic trigger do not take effect until the next poll, based on the existing configuration.
@@ -534,7 +534,7 @@ public class ContextConfiguration {
[IMPORTANT]
=====
When configuring an application context, the Spring Framework lets you add a `conversionService` bean (see http://static.springsource.org/spring/docs/current/spring-framework-reference/html/validation.html#core-convert-Spring-config[Configuring a ConversionService] chapter).
When configuring an application context, the Spring Framework lets you add a `conversionService` bean (see https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#core-convert-Spring-config[Configuring a ConversionService] chapter).
This service is used, when needed, to perform appropriate conversions during bean creation and configuration.
In contrast, the `integrationConversionService` is used for runtime conversions.
@@ -628,7 +628,7 @@ One of the ways to handle this is to set the `queue-capacity` attribute of the t
Even 0 is a reasonable value.
You can also manage it by specifying what to do with messages that can not be queued by setting the `rejection-policy` attribute of the Task Executor (for example, to `DISCARD`).
In other words, there are certain details you must understand when configuring `TaskExecutor`.
See http://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html["`Task Execution and Scheduling`"] in the Spring reference manual for more detail on the subject.
See https://docs.spring.io/spring/docs/current/spring-framework-reference/integration.html#scheduling["`Task Execution and Scheduling`"] in the Spring reference manual for more detail on the subject.
[[endpoint-inner]]
==== Endpoint Inner Beans
@@ -657,7 +657,7 @@ You can instead use an inner bean definition, as the following example shows:
The bean is treated like any inner bean declared and is not registered with the application context.
If you wish to access this bean in some other manner, declare it at the top level with an `id` and use the `ref` attribute instead.
See the http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/beans.html#beans-inner-beans[Spring Documentation] for more information.
See the https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#beans-inner-beans[Spring Documentation] for more information.
[[endpoint-roles]]
=== Endpoint Roles

View File

@@ -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 http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.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/docs/current/spring-framework-reference/core.html#context-functionality-events[Spring Reference Manual].
You need to include this dependency into your project:

View File

@@ -34,7 +34,7 @@ To configure the 'feed' namespace, include the following elements within the hea
----
xmlns:int-feed="http://www.springframework.org/schema/integration/feed"
xsi:schemaLocation="http://www.springframework.org/schema/integration/feed
http://www.springframework.org/schema/integration/feed/spring-integration-feed.xsd"
https://www.springframework.org/schema/integration/feed/spring-integration-feed.xsd"
----
====
@@ -50,7 +50,7 @@ The following example shows a possible configuration:
----
<int-feed:inbound-channel-adapter id="feedAdapter"
channel="feedChannel"
url="http://feeds.bbci.co.uk/news/rss.xml">
url="https://feeds.bbci.co.uk/news/rss.xml">
<int:poller fixed-rate="10000" max-messages-per-poll="100" />
</int-feed:inbound-channel-adapter>
----

View File

@@ -224,11 +224,11 @@ To do so, use the following template:
xmlns:int="http://www.springframework.org/schema/integration"
xmlns:int-file="http://www.springframework.org/schema/integration/file"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/integration
http://www.springframework.org/schema/integration/spring-integration.xsd
https://www.springframework.org/schema/integration/spring-integration.xsd
http://www.springframework.org/schema/integration/file
http://www.springframework.org/schema/integration/file/spring-integration-file.xsd">
https://www.springframework.org/schema/integration/file/spring-integration-file.xsd">
</beans>
----
====
@@ -615,7 +615,7 @@ See the https://docs.spring.io/spring-integration/api/org/springframework/integr
[[file-writing]]
=== Writing files
To write messages to the file system, you can use a http://docs.spring.io/spring-integration/api/org/springframework/integration/file/FileWritingMessageHandler.html[`FileWritingMessageHandler`].
To write messages to the file system, you can use a https://docs.spring.io/spring-integration/api/org/springframework/integration/file/FileWritingMessageHandler.html[`FileWritingMessageHandler`].
This class can deal with the following payload types:
* `File`
@@ -637,8 +637,8 @@ This callback could be used to write a CSV header defined in the message header,
==== Generating File Names
In its simplest form, the `FileWritingMessageHandler` requires only a destination directory for writing the files.
The name of the file to be written is determined by the handler's http://docs.spring.io/spring-integration/api/org/springframework/integration/file/FileNameGenerator.html[`FileNameGenerator`].
The http://docs.spring.io/spring-integration/api/org/springframework/integration/file/DefaultFileNameGenerator.html[default implementation] looks for a message header whose key matches the constant defined as http://docs.spring.io/spring-integration/api/constant-values.html#org.springframework.integration.file.FileHeaders.FILENAME[`FileHeaders.FILENAME`].
The name of the file to be written is determined by the handler's https://docs.spring.io/spring-integration/api/org/springframework/integration/file/FileNameGenerator.html[`FileNameGenerator`].
The https://docs.spring.io/spring-integration/api/org/springframework/integration/file/DefaultFileNameGenerator.html[default implementation] looks for a message header whose key matches the constant defined as https://docs.spring.io/spring-integration/api/constant-values.html#org.springframework.integration.file.FileHeaders.FILENAME[`FileHeaders.FILENAME`].
Alternatively, you can specify an expression to be evaluated against the message to generate a file name -- for example, `headers['myCustomHeader'] + '.something'`.
The expression must evaluate to a `String`.
@@ -740,7 +740,7 @@ This option has the same semantics as `APPEND`, but the data is not flushed and
This can provide a significant performance at the risk of data loss in the event of a failure.
See <<file-flushing>> for more information.
`FAIL`::
If the target file exists, a http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/messaging/MessageHandlingException.html[`MessageHandlingException`] is thrown.
If the target file exists, a https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/messaging/MessageHandlingException.html[`MessageHandlingException`] is thrown.
`IGNORE`::
If the target file exists, the message payload is silently ignored.
@@ -853,7 +853,7 @@ Generally, when using the file outbound gateway, the result file is returned as
This also applies when specifying the `IGNORE` mode.
In that case the pre-existing destination file is returned.
If the payload of the request message was a file, you still have access to that original file through the message header.
See http://docs.spring.io/spring-integration/api/org/springframework/integration/file/FileHeaders.html[FileHeaders.ORIGINAL_FILE].
See https://docs.spring.io/spring-integration/api/org/springframework/integration/file/FileHeaders.html[FileHeaders.ORIGINAL_FILE].
NOTE: The 'outbound-gateway' works well in cases where you want to first move a file and then send it through a processing pipeline.
In such cases, you may connect the file namespace's `inbound-channel-adapter` element to the `outbound-gateway` and then connect that gateway's `reply-channel` to the beginning of the pipeline.

View File

@@ -124,7 +124,7 @@ It can be used to avoid Java entirely for simple filters, as the following examp
====
The string passed as the value of the expression attribute is evaluated as a SpEL expression with the message available in the evaluation context.
If you must include the result of an expression in the scope of the application context, you can use the `#{}` notation, as defined in the http://docs.spring.io/spring/docs/current/spring-framework-reference/html/expressions.html#expressions-beandef[SpEL reference documentation], as the following example shows:
If you must include the result of an expression in the scope of the application context, you can use the `#{}` notation, as defined in the https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#expressions-beandef[SpEL reference documentation], as the following example shows:
====
[source,xml]

View File

@@ -40,7 +40,7 @@ To use the FTP namespace, add the following to the header of your XML file:
----
xmlns:int-ftp="http://www.springframework.org/schema/integration/ftp"
xsi:schemaLocation="http://www.springframework.org/schema/integration/ftp
http://www.springframework.org/schema/integration/ftp/spring-integration-ftp.xsd"
https://www.springframework.org/schema/integration/ftp/spring-integration-ftp.xsd"
----
====
@@ -110,11 +110,11 @@ NOTE: If you experience connectivity problems and would like to trace session cr
Now you need only inject these session factories into your adapters.
The protocol (FTP or FTPS) that an adapter uses depends on the type of session factory that has been injected into the adapter.
NOTE: A more practical way to provide values for FTP or FTPS session factories is to use Spring's property placeholder support (See http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html#beans-factory-placeholderconfigurer).
NOTE: A more practical way to provide values for FTP or FTPS session factories is to use Spring's property placeholder support (See https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#beans-factory-placeholderconfigurer).
=== Advanced Configuration
`DefaultFtpSessionFactory` provides an abstraction over the underlying client API, which (since Spring Integration 2.0) is http://commons.apache.org/net/[Apache Commons Net].
`DefaultFtpSessionFactory` provides an abstraction over the underlying client API, which (since Spring Integration 2.0) is https://commons.apache.org/net/[Apache Commons Net].
This spares you from the low-level configuration details of the `org.apache.commons.net.ftp.FTPClient`.
Several common properties are exposed on the session factory (since version 4.0, this now includes `connectTimeout`, `defaultTimeout`, and `dataTimeout`).
However, you sometimes need access to lower level `FTPClient` configuration to achieve more advanced configuration (such as setting the port range for active mode).
@@ -163,7 +163,7 @@ See https://scarybeastsecurity.blogspot.cz/2009/02/vsftpd-210-released.html for
Currently, the Apache FTPSClient does not support this feature.
See https://issues.apache.org/jira/browse/NET-408[NET-408].
The following solution, courtesy of http://stackoverflow.com/questions/32398754/how-to-connect-to-ftps-server-with-data-connection-using-same-tls-session[Stack Overflow], uses reflection on the `sun.security.ssl.SSLSessionContextImpl`, so it may not work on other JVMs.
The following solution, courtesy of https://stackoverflow.com/questions/32398754/how-to-connect-to-ftps-server-with-data-connection-using-same-tls-session[Stack Overflow], uses reflection on the `sun.security.ssl.SSLSessionContextImpl`, so it may not work on other JVMs.
The stack overflow answer was submitted in 2015, and the solution has been tested by the Spring Integration team recently on JDK 1.8.0_112.
The following example shows how to create an FTPS session:
@@ -850,7 +850,7 @@ NOTE: By default, if no file name generator is specified, Spring Integration us
`DefaultFileNameGenerator` determines the file name based on the value of the `file_name` header (if it exists) in the `MessageHeaders`, or, if the payload of the Message is already a `java.io.File`, it uses the original name of that file.
IMPORTANT: Defining certain values (such as `remote-directory`) might be platform- or FTP server-dependent.
For example, as was reported on http://forum.springsource.org/showthread.php?p=333478&posted=1#post333478, on some platforms, you must add a slash to the end of the directory definition (for example, `remote-directory="/thing1/thing2/"` instead of `remote-directory="/thing1/thing2"`).
For example, as was reported on https://forum.spring.io/showthread.php?p=333478&posted=1#post333478, on some platforms, you must add a slash to the end of the directory definition (for example, `remote-directory="/thing1/thing2/"` instead of `remote-directory="/thing1/thing2"`).
Starting with version 4.1, you can specify the `mode` when transferring the file.
By default, an existing file is overwritten.
@@ -1451,7 +1451,7 @@ The template provides methods to send, retrieve (as an `InputStream`), remove, a
In addition an `execute` method is provided allowing the caller to execute multiple operations on the session.
In all cases, the template takes care of reliably closing the session.
For more information, see the
http://docs.spring.io/spring-integration/api/org/springframework/integration/file/remote/RemoteFileTemplate.html[Javadoc for `RemoteFileTemplate`].
https://docs.spring.io/spring-integration/api/org/springframework/integration/file/remote/RemoteFileTemplate.html[Javadoc for `RemoteFileTemplate`].
There is a subclass for FTP: `FtpRemoteFileTemplate`.
Version 4.1 added added additional methods, including `getClientInstance()`, which provides access to the underlying `FTPClient` and thus gives you access to low-level APIs.

View File

@@ -24,10 +24,10 @@ compile "org.springframework.integration:spring-integration-gemfire:{project-ver
====
GemFire is a distributed data management platform that provides a key-value data grid along with advanced distributed system features, such as event processing, continuous querying, and remote function execution.
This guide assumes some familiarity with the commercial https://pivotal.io/pivotal-gemfire[Pivotal GemFire] or Open Source http://geode.apache.org[Apache Geode].
This guide assumes some familiarity with the commercial https://pivotal.io/pivotal-gemfire[Pivotal GemFire] or Open Source https://geode.apache.org[Apache Geode].
Spring integration provides support for GemFire by implementing inbound adapters for entry and continuous query events, an outbound adapter to write entries to the cache, and message and metadata stores and `GemfireLockRegistry` implementations.
Spring integration leverages the http://projects.spring.io/spring-data-gemfire[Spring Data for Pivotal GemFire] project, providing a thin wrapper over its components.
Spring integration leverages the https://projects.spring.io/spring-data-gemfire[Spring Data for Pivotal GemFire] project, providing a thin wrapper over its components.
Starting with version 5.1, the Spring Integration GemFire module uses the https://github.com/spring-projects/spring-data-geode[Spring Data for Apache Geode] transitive dependency by default.
To switch to the commercial Pivotal GemFire-based Spring Data for Pivotal GemFire, exclude `spring-data-geode` from dependencies and add `spring-data-gemfire`, as the following Maven snippet shows:
@@ -60,7 +60,7 @@ To configure the 'int-gfe' namespace, include the following elements within the
----
xmlns:int-gfe="http://www.springframework.org/schema/integration/gemfire"
xsi:schemaLocation="http://www.springframework.org/schema/integration/gemfire
http://www.springframework.org/schema/integration/gemfire/spring-integration-gemfire.xsd"
https://www.springframework.org/schema/integration/gemfire/spring-integration-gemfire.xsd"
----
====
@@ -114,7 +114,7 @@ The continuous query acts as an event source that fires whenever its result set
NOTE: GemFire queries are written in OQL and are scoped to the entire cache (not just one region).
Additionally, continuous queries require a remote (that is, running in a separate process or remote host) cache server.
See the http://gemfire82.docs.pivotal.io/docs-gemfire/gemfire_nativeclient/continuous-querying/continuous-querying.html[GemFire documentation] for more information on implementing continuous queries.
See the https://gemfire82.docs.pivotal.io/docs-gemfire/gemfire_nativeclient/continuous-querying/continuous-querying.html[GemFire documentation] for more information on implementing continuous queries.
The following configuration creates a GemFire client cache (recall that a remote cache server is required for this implementation and its address is configured as a child element of the pool), a client region, and a `ContinuousQueryListenerContainer` that uses Spring Data:
@@ -188,9 +188,9 @@ This adapter also supports the `order` attribute, which may be useful if it is b
[[gemfire-message-store]]
=== Gemfire Message Store
As described in EIP, a http://www.eaipatterns.com/MessageStore.html[message store] lets you persist messages.
As described in EIP, a https://www.enterpriseintegrationpatterns.com/MessageStore.html[message store] lets you persist messages.
This can be useful when dealing with components that have a capability to buffer messages (`QueueChannel`, `Aggregator`, `Resequencer`, and others) if reliability is a concern.
In Spring Integration, the `MessageStore` strategy interface also provides the foundation for the http://www.eaipatterns.com/StoreInLibrary.html[claim check] pattern, which is described in EIP as well.
In Spring Integration, the `MessageStore` strategy interface also provides the foundation for the https://www.enterpriseintegrationpatterns.com/StoreInLibrary.html[claim check] pattern, which is described in EIP as well.
Spring Integration's Gemfire module provides `GemfireMessageStore`, which is an implementation of both the the `MessageStore` strategy (mainly used by the `QueueChannel` and `ClaimCheck` patterns) and the `MessageGroupStore` strategy (mainly used by the `Aggregator` and `Resequencer` patterns).

View File

@@ -2,7 +2,7 @@
=== Groovy support
In Spring Integration 2.0, we added Groovy support, letting you use the Groovy scripting language to provide the logic for various integration components -- similar to the way the Spring Expression Language (SpEL) is supported for routing, transformation, and other integration concerns.
For more information about Groovy, see the Groovy documentation, which you can find on the http://www.groovy-lang.org/[project website].
For more information about Groovy, see the Groovy documentation, which you can find on the https://groovy-lang.org/[project website].
You need to include this dependency into your project:
@@ -95,7 +95,7 @@ For more information regarding the `<variable>` element, the `variables` attribu
The `@CompileStatic` hint is the most popular Groovy compiler customization option.
It can be used on the class or method level.
For more information, see the Groovy http://docs.groovy-lang.org/latest/html/documentation/index.html#_static_compilation[Reference Manual] and, specifically, http://docs.groovy-lang.org/latest/html/documentation/index.html#compilestatic-annotation[@CompileStatic].
For more information, see the Groovy https://groovy-lang.org/metaprogramming.html#section-typechecked[Reference Manual] and, specifically, https://groovy-lang.org/metaprogramming.html#xform-CompileStatic[@CompileStatic].
To utilize this feature for short scripts (in integration scenarios), we are forced to change simple scripts to more Java-like code.
Consider the following `<filter>` script:
@@ -139,7 +139,7 @@ You must access the `headers` and `payload` (or any other) variables through the
In addition, we introduced the `compiler-configuration` bean reference.
With this attribute, you can provide any other required Groovy compiler customizations, such as `ImportCustomizer`.
For more information about this feature, see the Groovy Documentation for http://groovy.jmiguel.eu/groovy.codehaus.org/Advanced+compiler+configuration.html[advanced compiler configuration].
For more information about this feature, see the Groovy Documentation for https://melix.github.io/blog/2011/05/12/customizing_groovy_compilation_process.html[advanced compiler configuration].
NOTE: Using `compilerConfiguration` does not automatically add an `ASTTransformationCustomizer` for the `@CompileStatic` annotation, and it overrides the `compileStatic` option.
If you still need `CompileStatic`, you should manually add a `new ASTTransformationCustomizer(CompileStatic.class)` into the `CompilationCustomizers` of that custom `compilerConfiguration`.
@@ -149,7 +149,7 @@ NOTE: The Groovy compiler customization does not have any effect on the `refresh
[[groovy-control-bus]]
==== Control Bus
As described in (http://www.eaipatterns.com/ControlBus.html[Enterprise Integration Patterns]), the idea behind the control bus is that you can use the same messaging system for monitoring and managing the components within the framework as is used for "`application-level`" messaging.
As described in (https://www.enterpriseintegrationpatterns.com/ControlBus.html[Enterprise Integration Patterns]), the idea behind the control bus is that you can use the same messaging system for monitoring and managing the components within the framework as is used for "`application-level`" messaging.
In Spring Integration, we build upon the adapters described earlier so that you can send Messages as a means of invoking exposed operations.
One option for those operations is Groovy scripts.
The following example configures a Groovy script for the control bus:

View File

@@ -71,7 +71,7 @@ Stateful retry is the case where the retry state is managed within the advice bu
An example for stateful retry is when we want the message originator (for example,JMS) to be responsible for resubmitting, rather than performing it on the current thread.
Stateful retry needs some mechanism to detect a retried submission.
For more information on `spring-retry`, see https://docs.spring.io/spring-integration/api/[the project's Javadoc] and the reference documentation for http://docs.spring.io/spring-batch/reference/html/retry.html[Spring Batch], where `spring-retry` originated.
For more information on `spring-retry`, see https://docs.spring.io/spring-integration/api/[the project's Javadoc] and the reference documentation for https://docs.spring.io/spring-batch/reference/html/retry.html[Spring Batch], where `spring-retry` originated.
WARNING: The default back off behavior is to not back off.
Retries are attempted immediately.
@@ -562,7 +562,7 @@ This method must be used in cases where the invocation might be called multiple
This is required because the Spring AOP `org.springframework.aop.framework.ReflectiveMethodInvocation` object maintains state by keeping track of which advice in a chain was last invoked.
This state must be reset for each call.
For more information, see the http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/aop/framework/ReflectiveMethodInvocation.html[ReflectiveMethodInvocation] Javadoc.
For more information, see the https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/aop/framework/ReflectiveMethodInvocation.html[ReflectiveMethodInvocation] Javadoc.
=====
[[other-advice]]
@@ -605,7 +605,7 @@ Consider the following configuration:
In the preceding example, the `<tx:advice>` is applied to the `AbstractReplyProducingMessageHandler.handleRequestMessage()`.
However, `myHandleMessageAdvice` is applied for to `MessageHandler.handleMessage()`.
Therefore, it is invoked *before* the `<tx:advice>`.
To retain the order, you should follow the standard http://docs.spring.io/spring/docs/current/spring-framework-reference/html/aop-api.html[Spring AOP] configuration approach and use an endpoint `id` together with the `.handler` suffix to obtain the target `MessageHandler` bean.
To retain the order, you should follow the standard https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#aop-api[Spring AOP] configuration approach and use an endpoint `id` together with the `.handler` suffix to obtain the target `MessageHandler` bean.
Note that, in that case, the entire downstream flow is within the transaction scope.
In the case of a `MessageHandler` that does not return a response, the advice chain order is retained.
@@ -775,7 +775,7 @@ String componentName = handler.getComponentName();
[[idempotent-receiver]]
==== Idempotent Receiver Enterprise Integration Pattern
Starting with version 4.1, Spring Integration provides an implementation of the http://www.eaipatterns.com/IdempotentReceiver.html[Idempotent Receiver] Enterprise Integration Pattern.
Starting with version 4.1, Spring Integration provides an implementation of the https://www.enterpriseintegrationpatterns.com/IdempotentReceiver.html[Idempotent Receiver] Enterprise Integration Pattern.
It is a functional pattern and the whole idempotency logic should be implemented in the application.
However, to simplify the decision-making, the `IdempotentReceiverInterceptor` component is provided.
This is an AOP `Advice` that is applied to the `MessageHandler.handleMessage()` method and that can `filter` a request message or mark it as a `duplicate`, according to its configuration.

View File

@@ -31,9 +31,9 @@ The `javax.servlet:javax.servlet-api` dependency must be provided on the target
=== Http Inbound Components
To receive messages over HTTP, you need to use an HTTP inbound channel adapter or an HTTP inbound gateway.
To support the HTTP inbound adapters, they need to be deployed within a servlet container such as http://tomcat.apache.org/[Apache Tomcat] or http://www.eclipse.org/jetty/[Jetty].
To support the HTTP inbound adapters, they need to be deployed within a servlet container such as https://tomcat.apache.org/[Apache Tomcat] or https://www.eclipse.org/jetty/[Jetty].
The easiest way to do this is to use Spring's
http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/context/support/HttpRequestHandlerServlet.html[`HttpRequestHandlerServlet`], by providing the following servlet definition in the `web.xml` file:
https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/context/support/HttpRequestHandlerServlet.html[`HttpRequestHandlerServlet`], by providing the following servlet definition in the `web.xml` file:
====
[source,xml]
@@ -47,13 +47,13 @@ http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/co
Notice that the servlet name matches the bean name.
For more information on using the `HttpRequestHandlerServlet`, see
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/remoting.html[Remoting and web services using Spring],
https://docs.spring.io/spring/docs/current/spring-framework-reference/html/remoting.html[Remoting and web services using Spring],
which is part of the Spring Framework Reference documentation.
If you are running within a Spring MVC application, then the aforementioned explicit servlet definition is not necessary.
In that case, the bean name for your gateway can be matched against the URL path as you would for a Spring MVC Controller bean.
For more information, see
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html[Web MVC framework], which is part of the Spring Framework Reference documentation.
https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc[Web MVC framework], which is part of the Spring Framework Reference documentation.
TIP: For a sample application and the corresponding configuration, see the https://github.com/spring-projects/spring-integration-samples[Spring Integration Samples] repository.
It contains the https://github.com/spring-projects/spring-integration-samples/tree/master/basic/http[HTTP sample] application, which demonstrates Spring Integration's HTTP support.
@@ -89,7 +89,7 @@ If the request has been wrapped as a `MultipartHttpServletRequest`, when you use
NOTE: The HTTP inbound endpoint locates a `MultipartResolver` in the context if one has a bean name of `multipartResolver` (the same name expected by Spring's `DispatcherServlet`).
If it does locate that bean, the support for multipart files is enabled on the inbound request mapper.
Otherwise, it fails when it tries to map a multipart file request to a Spring Integration `Message`.
For more on Spring's support for `MultipartResolver`, see the http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-multipart[Spring Reference Manual].
For more on Spring's support for `MultipartResolver`, see the https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-multipart[Spring Reference Manual].
[NOTE]
====
@@ -205,7 +205,7 @@ If `transfer-cookies` is `false`, any `Set-Cookie` header received remains as `S
HTTP is a request-response protocol.
However, the response may not have a body, only headers.
In this case, the `HttpRequestExecutingMessageHandler` produces a reply `Message` with the payload being an `org.springframework.http.ResponseEntity`, regardless of any provided `expected-response-type`.
According to the http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html[HTTP RFC Status Code Definitions], there are many statuses that mandate that a response must not contain a message-body (for example,
According to the https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html[HTTP RFC Status Code Definitions], there are many statuses that mandate that a response must not contain a message-body (for example,
`204 No Content`).
There are also cases where calls to the same URL might or might not return a response body.
For example, the first request to an HTTP resource returns content, but the second does not (returning a `304 Not Modified`).
@@ -237,11 +237,11 @@ To include it in your configuration, provide the following namespace declaration
xmlns:int-http="http://www.springframework.org/schema/integration/http"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/integration
http://www.springframework.org/schema/integration/spring-integration.xsd
https://www.springframework.org/schema/integration/spring-integration.xsd
http://www.springframework.org/schema/integration/http
http://www.springframework.org/schema/integration/http/spring-integration-http.xsd">
https://www.springframework.org/schema/integration/http/spring-integration-http.xsd">
...
</beans>
----
@@ -276,14 +276,14 @@ The following example shows how to configure one:
[[http-request-mapping]]
==== Request Mapping Support
NOTE: Spring Integration 3.0 improved the REST support by introducing the http://static.springsource.org/spring-integration/api/org/springframework/integration/http/inbound/IntegrationRequestMappingHandlerMapping.html[`IntegrationRequestMappingHandlerMapping`].
NOTE: Spring Integration 3.0 improved the REST support by introducing the https://docs.spring.io/spring-integration/api/org/springframework/integration/http/inbound/IntegrationRequestMappingHandlerMapping.html[`IntegrationRequestMappingHandlerMapping`].
The implementation relies on the enhanced REST support provided by Spring Framework 3.1 or higher.
The parsing of the HTTP inbound gateway or the HTTP inbound channel adapter registers an `integrationRequestMappingHandlerMapping` bean of type http://static.springsource.org/spring-integration/api/org/springframework/integration/http/inbound/IntegrationRequestMappingHandlerMapping.html[`IntegrationRequestMappingHandlerMapping`], in case one is not yet registered.
This particular implementation of the http://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/web/servlet/HandlerMapping.html[`HandlerMapping`] delegates its logic to http://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/web/servlet/mvc/method/RequestMappingInfoHandlerMapping.html[`RequestMappingInfoHandlerMapping`].
The implementation provides functionality similar to the http://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/RequestMapping.html[`org.springframework.web.bind.annotation.RequestMapping`] annotation in Spring MVC.
The parsing of the HTTP inbound gateway or the HTTP inbound channel adapter registers an `integrationRequestMappingHandlerMapping` bean of type https://docs.spring.io/spring-integration/api/org/springframework/integration/http/inbound/IntegrationRequestMappingHandlerMapping.html[`IntegrationRequestMappingHandlerMapping`], in case one is not yet registered.
This particular implementation of the https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/HandlerMapping.html[`HandlerMapping`] delegates its logic to https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/mvc/method/RequestMappingInfoHandlerMapping.html[`RequestMappingInfoHandlerMapping`].
The implementation provides functionality similar to the https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/RequestMapping.html[`org.springframework.web.bind.annotation.RequestMapping`] annotation in Spring MVC.
NOTE: For more information, see http://static.springsource.org/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-ann-requestmapping[Mapping Requests With `@RequestMapping`].
NOTE: For more information, see https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-ann-requestmapping[Mapping Requests With `@RequestMapping`].
For this purpose, Spring Integration 3.0 introduces the `<request-mapping>` element.
You can add this optional element to `<http:inbound-channel-adapter>` and `<http:inbound-gateway>`.
@@ -308,8 +308,8 @@ The following example shows how to configure it on an inbound gateway:
----
====
Based on the preceding configuration, the namespace parser creates an instance of the `IntegrationRequestMappingHandlerMapping` (if none exists) and an `HttpRequestHandlingController` bean and associates with it an instance of http://static.springsource.org/spring-integration/api/org/springframework/integration/http/inbound/RequestMapping.html[`RequestMapping`].
This `RequestMapping` instance is, in turn, converted to the Spring MVC http://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/web/servlet/mvc/method/RequestMappingInfo.html[`RequestMappingInfo`].
Based on the preceding configuration, the namespace parser creates an instance of the `IntegrationRequestMappingHandlerMapping` (if none exists) and an `HttpRequestHandlingController` bean and associates with it an instance of https://docs.spring.io/spring-integration/api/org/springframework/integration/http/inbound/RequestMapping.html[`RequestMapping`].
This `RequestMapping` instance is, in turn, converted to the Spring MVC https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/mvc/method/RequestMappingInfo.html[`RequestMappingInfo`].
The `<request-mapping>` element provides the following attributes:
@@ -460,13 +460,13 @@ When you use the `payload-expression` attribute, the `{firstName}` URI template
----
====
For more information about URI template variables, see http://static.springsource.org/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-ann-requestmapping-uri-templates[uri template patterns] in the Spring Reference Manual.
For more information about URI template variables, see https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-ann-requestmapping-uri-templates[uri template patterns] in the Spring Reference Manual.
Since Spring Integration 3.0, in addition to the existing `#pathVariables` and `#requestParams` variables being available in payload and header expressions, we added other useful expression variables:
* `#requestParams`: The `MultiValueMap` from the `ServletRequest` `parameterMap`.
* `#pathVariables`: The `Map` from URI Template placeholders and their values.
* `#matrixVariables`: The `Map` of `MultiValueMap` according to the http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-ann-matrix-variables[Spring MVC Specification].
* `#matrixVariables`: The `Map` of `MultiValueMap` according to the https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-ann-matrix-variables[Spring MVC Specification].
Note that `#matrixVariables` requires Spring MVC 3.2 or higher.
* `#requestAttributes`: The `org.springframework.web.context.request.RequestAttributes` associated with the current request.
* `#requestHeaders`: The `org.springframework.http.HttpHeaders` object from the current request.
@@ -591,7 +591,7 @@ The following example maps the `zipCode` URI variable to an expression:
[source,xml]
----
<int-http:outbound-gateway id="trafficGateway"
url="http://local.yahooapis.com/trafficData?appid=YdnDemo&amp;zip={zipCode}"
url="https://local.yahooapis.com/trafficData?appid=YdnDemo&amp;zip={zipCode}"
request-channel="trafficChannel"
http-method="GET"
expected-response-type="java.lang.String">
@@ -614,7 +614,7 @@ The following example shows how to use the `uri-variables-expression` attribute:
[source,xml]
----
<int-http:outbound-gateway
url="http://foo.host/{foo}/bars/{bar}"
url="https://foo.host/{foo}/bars/{bar}"
request-channel="trafficChannel"
http-method="GET"
uri-variables-expression="@uriVariablesBean.populate(payload)"
@@ -666,7 +666,7 @@ The following example shows how to do so:
[source,xml]
----
url-expression="T(org.springframework.web.util.UriComponentsBuilder)
.fromHttpUrl('http://HOST:PORT/PATH')
.fromHttpUrl('https://HOST:PORT/PATH')
.queryParams(payload)
.build()
.toUri()"
@@ -707,7 +707,7 @@ List<NameValuePair> nameValuePairs =
==== Controlling URI Encoding
By default, the URL string is encoded (see http://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/web/util/UriComponentsBuilder.html[`UriComponentsBuilder`]) to the URI object before sending the request.
By default, the URL string is encoded (see https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/util/UriComponentsBuilder.html[`UriComponentsBuilder`]) to the URI object before sending the request.
In some scenarios with a non-standard URI (such as the RabbitMQ REST API), it is undesirable to perform the encoding.
The `<http:outbound-gateway/>` and `<http:outbound-channel-adapter/>` provide an `encode-uri` attribute.
To disable encoding the URL, set this attribute to `false` (by default, it is `true`).
@@ -716,7 +716,7 @@ If you wish to partially encode some of the URL, use an `expression` within a `<
====
[source,xml]
----
<http:outbound-gateway url="http://somehost/%2f/fooApps?bar={param}" encode-uri="false">
<http:outbound-gateway url="https://somehost/%2f/fooApps?bar={param}" encode-uri="false">
<http:uri-variable name="param"
expression="T(org.apache.commons.httpclient.util.URIUtil)
.encodeWithinQuery('Hello World!')"/>
@@ -831,13 +831,13 @@ image::images/http-outbound-gateway.png[align="center"]
You may want to configure the HTTP related timeout behavior, when making active HTTP requests by using the HTTP outbound gateway or the HTTP outbound channel adapter.
In those instances, these two components use Spring's
http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/client/RestTemplate.html[`RestTemplate`] support to execute HTTP requests.
https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/client/RestTemplate.html[`RestTemplate`] support to execute HTTP requests.
To configure timeouts for the HTTP outbound gateway and the HTTP outbound channel adapter, you can either reference a `RestTemplate` bean directly (by using the `rest-template` attribute) or you can provide a reference to a http://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/http/client/ClientHttpRequestFactory.html[`ClientHttpRequestFactory`] bean (by using the `request-factory` attribute).
To configure timeouts for the HTTP outbound gateway and the HTTP outbound channel adapter, you can either reference a `RestTemplate` bean directly (by using the `rest-template` attribute) or you can provide a reference to a https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/client/ClientHttpRequestFactory.html[`ClientHttpRequestFactory`] bean (by using the `request-factory` attribute).
Spring provides the following implementations of the `ClientHttpRequestFactory` interface:
* http://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/http/client/SimpleClientHttpRequestFactory.html[`SimpleClientHttpRequestFactory`]: Uses standard J2SE facilities for making HTTP Requests
* http://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/http/client/HttpComponentsClientHttpRequestFactory.html[`HttpComponentsClientHttpRequestFactory`]: Uses http://hc.apache.org/httpcomponents-client-ga/[Apache HttpComponents HttpClient] (since Spring 3.1)
* https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/client/SimpleClientHttpRequestFactory.html[`SimpleClientHttpRequestFactory`]: Uses standard J2SE facilities for making HTTP Requests
* https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/client/HttpComponentsClientHttpRequestFactory.html[`HttpComponentsClientHttpRequestFactory`]: Uses https://hc.apache.org/httpcomponents-client-ga/[Apache HttpComponents HttpClient] (since Spring 3.1)
If you do not explicitly configure the `request-factory` or `rest-template` attribute, a default `RestTemplate` (which uses a `SimpleClientHttpRequestFactory`) is instantiated.
@@ -852,19 +852,19 @@ Some non-standard implementation of this method may ignore the specified timeout
To see the connect timeout set, please call getConnectTimeout().
If you have specific needs, you should test your timeouts.
Consider using the `HttpComponentsClientHttpRequestFactory`, which, in turn, uses http://hc.apache.org/httpcomponents-client-ga/[Apache HttpComponents HttpClient] rather than relying on implementations provided by a JVM.
Consider using the `HttpComponentsClientHttpRequestFactory`, which, in turn, uses https://hc.apache.org/httpcomponents-client-ga/[Apache HttpComponents HttpClient] rather than relying on implementations provided by a JVM.
=====
IMPORTANT: When you use the Apache HttpComponents HttpClient with a pooling connection manager, you should be aware that, by default, the connection manager creates no more than two concurrent connections per given route and no more than 20 connections in total.
For many real-world applications, these limits may prove to be too constraining.
See the http://hc.apache.org/httpcomponents-client-ga/[Apache documentation] for information about configuring this important component.
See the https://hc.apache.org/httpcomponents-client-ga/[Apache documentation] for information about configuring this important component.
The following example configures an HTTP outbound gateway by using a `SimpleClientHttpRequestFactory` that is configured with connect and read timeouts of 5 seconds, respectively:
====
[source,xml]
----
<int-http:outbound-gateway url="http://www.google.com/ig/api?weather={city}"
<int-http:outbound-gateway url="https://samples.openweathermap.org/data/2.5/weather?q={city}"
http-method="GET"
expected-response-type="java.lang.String"
request-factory="requestFactory"
@@ -925,7 +925,7 @@ For HTTPS, the following properties are available:
* `https.proxyHost`: The host name of the proxy server.
* `https.proxyPort`: The port number, the default value being 80.
For more information, see http://download.oracle.com/javase/6/docs/technotes/guides/net/proxies.html
For more information, see https://docs.oracle.com/javase/8/docs/technotes/guides/net/proxies.html
==== Spring's `SimpleClientHttpRequestFactory`
@@ -958,7 +958,7 @@ If you need more explicit control over the proxy configuration, you can use Spri
Spring Integration provides support for HTTP header mapping for both HTTP Request and HTTP Responses.
By default, all standard http://en.wikipedia.org/wiki/List_of_HTTP_header_fields[HTTP headers] are mapped from the message to HTTP request or response headers without further configuration.
By default, all standard https://en.wikipedia.org/wiki/List_of_HTTP_header_fields[HTTP headers] are mapped from the message to HTTP request or response headers without further configuration.
However, if you do need further customization, you can provide additional configuration by taking advantage of the namespace support.
You can provide a comma-separated list of header names, and you can include simple patterns with the '*' character acting as a wildcard.
Provide such values overrides the default behavior.

View File

@@ -32,7 +32,7 @@ include::./whats-new.adoc[]
= Overview of Spring Integration Framework
[[spring-integration-intro]]
Spring Integration provides an extension of the Spring programming model to support the well known http://www.eaipatterns.com/[Enterprise Integration Patterns].
Spring Integration provides an extension of the Spring programming model to support the well known https://www.enterpriseintegrationpatterns.com/[Enterprise Integration Patterns].
It enables lightweight messaging within Spring-based applications and supports integration with external systems through declarative adapters.
Those adapters provide a higher level of abstraction over Spring's support for remoting, messaging, and scheduling.

View File

@@ -241,7 +241,7 @@ connect to the socket.
The `<int-ip:udp-outbound-channel-adapter>` (`UnicastSendingMessageHandler`) has `destination-expression` and `socket-expression` options.
You can use the `destination-expression` as a runtime alternative to the hardcoded `host`-`port` pair to determine the destination address for the outgoing datagram packet against a `requestMessage` (with the root object for the evaluation context).
The expression must evaluate to an `URI`, a `String` in the URI style (see http://www.ietf.org/rfc/rfc2396.txt[RFC-2396]), or a `SocketAddress`.
The expression must evaluate to an `URI`, a `String` in the URI style (see https://www.ietf.org/rfc/rfc2396.txt[RFC-2396]), or a `SocketAddress`.
You can also use the inbound `IpHeaders.PACKET_ADDRESS` header for this expression.
In the framework, the `DatagramPacketMessageMapper` populates this header when we receive datagrams in the `UnicastReceivingChannelAdapter` and convert them to messages.
The header value is exactly the result of `DatagramPacket.getSocketAddress()` of the incoming datagram.

View File

@@ -619,7 +619,7 @@ If you want to execute stored functions instead, the following databases are ful
=====
Even though your particular database may not be fully supported, chances are that you can use the stored procedure Spring Integration components quite successfully anyway, provided your RDBMS supports stored procedures or stored functions.
As a matter of fact, some of the provided integration tests use the http://www.h2database.com/[H2 database].
As a matter of fact, some of the provided integration tests use the https://www.h2database.com/[H2 database].
Nevertheless, it is very important to thoroughly test those usage scenarios.
=====

View File

@@ -32,14 +32,14 @@ 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 http://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/docs/current/spring-framework-reference/html/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.
It is also capable of sending a return value to the `reply-to` destination, as provided by the received message.
The outbound gateway sends a JMS message to a `request-destination` (or `request-destination-name` or `request-destination-expression`) and then receives a reply message.
You can explicitly configure the `reply-destination` reference (or `reply-destination-name` or `reply-destination-expression`).
Otherwise, the outbound gateway uses a JMS http://docs.oracle.com/javaee/6/api/javax/jms/TemporaryQueue.html[TemporaryQueue].
Otherwise, the outbound gateway uses a JMS https://docs.oracle.com/javaee/6/api/javax/jms/TemporaryQueue.html[TemporaryQueue].
Prior to Spring Integration 2.2, if necessary, a `TemporaryQueue` was created (and removed) for each request or reply.
Beginning with Spring Integration 2.2, you can configure the outbound gateway to use a `MessageListener` container to receive replies instead of directly using a new (or cached) `Consumer` to receive the reply for each request.
@@ -361,25 +361,21 @@ The following example shows a reply listener with default attributes:
The listener is very lightweight, and we anticipate that, in most cases, you need only a single consumer.
However, you can add attributes such as `concurrent-consumers`, `max-concurrent-consumers`, and others.
See the schema for a complete list of supported attributes, together with the http://docs.spring.io/spring/docs/current/spring-framework-reference/html/jms.html[Spring JMS documentation] for their meanings.
See the schema for a complete list of supported attributes, together with the https://docs.spring.io/spring/docs/current/spring-framework-reference/html/jms.html[Spring JMS documentation] for their meanings.
==== Idle Reply Listeners
Starting with version 4.2, you can start the reply listener as needed (and stop it after an idle time) instead
of running for the duration of the gateway's lifecycle.
Starting with version 4.2, you can start the reply listener as needed (and stop it after an idle time) instead of running for the duration of the gateway's lifecycle.
This can be useful if you have many gateways in the application context where they are mostly idle.
One such situation is a context with many (inactive) partitioned http://projects.spring.io/spring-batch/[Spring Batch]
jobs using Spring Integration and JMS for partition distribution.
One such situation is a context with many (inactive) partitioned https://spring.io/projects/spring-batch[Spring Batch] jobs using Spring Integration and JMS for partition distribution.
If all the reply listeners are active, the JMS broker has an active consumer for each gateway.
By enabling the idle timeout, each consumer exists only while the corresponding batch job is running (and
for a short time after it finishes).
By enabling the idle timeout, each consumer exists only while the corresponding batch job is running (and for a short time after it finishes).
See `idle-reply-listener-timeout` in <<jms-og-attributes>>.
==== Gateway Reply Correlation
This section describes the mechanisms used for reply correlation (ensuring the originating gateway receives replies
to only its requests), depending on how the gateway is configured.
This section describes the mechanisms used for reply correlation (ensuring the originating gateway receives replies to only its requests), depending on how the gateway is configured.
See <<jms-og-attributes>> for complete description of the attributes discussed here.
The following list describes the various scenarios (the numbers are for identification -- order does not matter):
@@ -486,13 +482,11 @@ The gateway does not initialize with this configuration.
[[jms-async-gateway]]
==== Async Gateway
Starting with version 4.3, you can now specify `async="true"` (or `setAsync(true)` in Java) when configuring the outbound
gateway.
Starting with version 4.3, you can now specify `async="true"` (or `setAsync(true)` in Java) when configuring the outbound gateway.
By default, when a request is sent to the gateway, the requesting thread is suspended until the reply is received.
The flow then continues on that thread.
If `async` is `true`, the requesting thread is released immediately after the send completes, and the reply is returned
(and the flow continues) on the listener container thread.
If `async` is `true`, the requesting thread is released immediately after the send completes, and the reply is returned (and the flow continues) on the listener container thread.
This can be useful when the gateway is invoked on a poller thread.
The thread is released and is available for other tasks within the framework.
@@ -630,8 +624,7 @@ IMPORTANT: Since version 4.0, the `JMSPriority` header is mapped to the standard
(previously, the `priority` header was only used for outbound messages).
To revert to the previous behavior (that is, to not map the inbound priority), set the `mapInboundPriority` property of `DefaultJmsHeaderMapper` to `false`.
IMPORTANT: Since version 4.3, the `DefaultJmsHeaderMapper` maps the standard `correlationId` header as a message
property by invoking its `toString()` method (`correlationId` is often a `UUID`, which is not supported by JMS).
IMPORTANT: Since version 4.3, the `DefaultJmsHeaderMapper` maps the standard `correlationId` header as a message property by invoking its `toString()` method (`correlationId` is often a `UUID`, which is not supported by JMS).
On the inbound side, it is mapped as a `String`.
This is independent of the `jms_correlationId` header, which is mapped to and from the `JMSCorrelationID` header.
The `JMSCorrelationID` is generally used to correlate requests and replies, whereas the `correlationId` is often used to combine related messages into a group (such as with an aggregator or a resequencer).
@@ -761,7 +754,7 @@ Use `subscription` to name the subscription.
[[jms-selectors]]
=== Using JMS Message Selectors
With JMS message selectors, you can filter http://docs.oracle.com/javaee/6/api/javax/jms/Message.html[JMS Messages] based on JMS headers as well as JMS properties.
With JMS message selectors, you can filter https://docs.oracle.com/javaee/6/api/javax/jms/Message.html[JMS Messages] based on JMS headers as well as JMS properties.
For example, if you want to listen to messages whose custom JMS header property, `myHeaderProperty`, equals `something`, you can specify the following expression:
====
@@ -771,7 +764,7 @@ myHeaderProperty = 'something'
----
====
Message selector expressions are a subset of the http://en.wikipedia.org/wiki/SQL-92[SQL-92] conditional expression syntax and are defined as part of the http://download.oracle.com/otn-pub/jcp/7195-jms-1.1-fr-spec-oth-JSpec/jms-1_1-fr-spec.pdf[Java Message Service] specification (Version 1.1, April 12, 2002).
Message selector expressions are a subset of the https://en.wikipedia.org/wiki/SQL-92[SQL-92] conditional expression syntax and are defined as part of the https://download.oracle.com/otn-pub/jcp/7195-jms-1.1-fr-spec-oth-JSpec/jms-1_1-fr-spec.pdf[Java Message Service] specification (Version 1.1, April 12, 2002).
Specifically, see chapter "3.8, Message Selection".
It contains a detailed explanation of the expressions syntax.
@@ -792,7 +785,7 @@ To experiment with these JMS adapters, check out the JMS samples available in th
That repository includes two samples.
One provides inbound and outbound channel adapters, and the other provides inbound and outbound gateways.
They are configured to run with an embedded http://activemq.apache.org/[ActiveMQ] process, but you can modify the https://github.com/SpringSource/spring-integration-samples/blob/master/basic/jms/src/main/resources/META-INF/spring/integration/common.xml[common.xml] Spring application context file of each sample to support either a different JMS provider or a standalone ActiveMQ process.
They are configured to run with an embedded https://activemq.apache.org/[ActiveMQ] process, but you can modify the https://github.com/SpringSource/spring-integration-samples/blob/master/basic/jms/src/main/resources/META-INF/spring/integration/common.xml[common.xml] Spring application context file of each sample to support either a different JMS provider or a standalone ActiveMQ process.
In other words, you can split the configuration so that the inbound and outbound adapters run in separate JVMs.
If you have ActiveMQ installed, modify the `brokerURL` property within the common.xml file to use `tcp://localhost:61616` (instead of `vm://localhost`).

View File

@@ -326,7 +326,7 @@ Fall back to the `toString()` method of the object being monitored (handler or s
You can append custom elements to the object name by providing a reference to a `Properties` object in the `object-name-static-properties` attribute.
Also, since Spring Integration 3.0, you can use a custom http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jmx/export/naming/ObjectNamingStrategy.html[`ObjectNamingStrategy`] by setting the `object-naming-strategy` attribute.
Also, since Spring Integration 3.0, you can use a custom https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jmx/export/naming/ObjectNamingStrategy.html[`ObjectNamingStrategy`] by setting the `object-naming-strategy` attribute.
Doing so permits greater control over the naming of the MBeans, such as grouping all integration MBeans under an 'Integration' type.
The following example shows one possible custom naming strategy implementation:
@@ -350,7 +350,7 @@ The `beanKey` argument is a `String` that contain the standard object name, begi
The preceding example moves the standard `type` part to `componentType` and sets the `type` to 'Integration', enabling selection of all Integration MBeans in one query:`"my.domain:type=Integration,*`.
Doing so also groups the beans under one tree entry under the domain in such tools as VisualVM.
NOTE: The default naming strategy is a http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jmx/export/naming/MetadataNamingStrategy.html[`MetadataNamingStrategy`].
NOTE: The default naming strategy is a https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jmx/export/naming/MetadataNamingStrategy.html[`MetadataNamingStrategy`].
The exporter propagates the `default-domain` to that object to let it generate a fallback object name if parsing of the bean key fails.
If your custom naming strategy is a `MetadataNamingStrategy` (or a subclass of it), the exporter does not propagate the `default-domain`.
You must configure it on your strategy bean.

Some files were not shown because too many files have changed in this diff Show More