Commit Graph

261 Commits

Author SHA1 Message Date
Gary Russell
bfebbbb848 GH-2884: RedisUtils improvements
Fixes https://github.com/spring-projects/spring-integration/issues/2884

- synchronize the map
- only call once per component

# Conflicts:
#	spring-integration-redis/src/test/java/org/springframework/integration/redis/util/RedisLockRegistryTests.java
2019-04-05 15:21:29 -04:00
Artem Bilan
659613c4c9 Fix RedisUtils.isUnlinkAvailable() for NPE
Fixes https://github.com/spring-projects/spring-integration/issues/2868

* Check if `redis_version` property is returned from the `info`
before parsing

**Cherry-pick to 5.1.x**
2019-03-29 14:59:44 -04:00
Spring Operator
6e9bb60a61 URL Cleanup
This commit updates URLs to prefer the https protocol. Redirects are not followed to avoid accidentally expanding intentionally shortened URLs (i.e. if using a URL shortener).

# HTTP URLs that Could Not Be Fixed
These URLs were unable to be fixed. Please review them to see if they can be manually resolved.

* [ ] http://foo.com (301) with 1 occurrences could not be migrated:
   ([https](https://foo.com) result SSLHandshakeException).
* [ ] http://diveintomark.org/ (302) with 1 occurrences could not be migrated:
   ([https](https://diveintomark.org/) result ConnectTimeoutException).

# Fixed URLs

## Fixed But Review Recommended
These URLs were fixed, but the https status was not OK. However, the https status was the same as the http request or http redirected to an https URL, so they were migrated. Your review is recommended.

* [ ] http://foo.bar.com (UnknownHostException) with 1 occurrences migrated to:
  https://foo.bar.com ([https](https://foo.bar.com) result UnknownHostException).
* [ ] http://site1.com,http://site2.com (UnknownHostException) with 1 occurrences migrated to:
  https://site1.com,http://site2.com ([https](https://site1.com,https://site2.com) result UnknownHostException).
* [ ] http://example.org/2005/04/02/atom (404) with 1 occurrences migrated to:
  https://example.org/2005/04/02/atom ([https](https://example.org/2005/04/02/atom) result 404).
* [ ] http://example.org/audio/ph34r_my_podcast.mp3 (404) with 1 occurrences migrated to:
  https://example.org/audio/ph34r_my_podcast.mp3 ([https](https://example.org/audio/ph34r_my_podcast.mp3) result 404).
* [ ] http://example.org/feed.atom (404) with 1 occurrences migrated to:
  https://example.org/feed.atom ([https](https://example.org/feed.atom) result 404).
* [ ] http://www.puppycrawl.com/dtds/configuration_1_2.dtd (404) with 1 occurrences migrated to:
  https://www.puppycrawl.com/dtds/configuration_1_2.dtd ([https](https://www.puppycrawl.com/dtds/configuration_1_2.dtd) result 404).
* [ ] http://www.puppycrawl.com/dtds/suppressions_1_1.dtd (404) with 1 occurrences migrated to:
  https://www.puppycrawl.com/dtds/suppressions_1_1.dtd ([https](https://www.puppycrawl.com/dtds/suppressions_1_1.dtd) result 404).
* [ ] http://www.springframework.org/schema/integration/jsr223/spring-integration-jsr223.xsd (404) with 1 occurrences migrated to:
  https://www.springframework.org/schema/integration/jsr223/spring-integration-jsr223.xsd ([https](https://www.springframework.org/schema/integration/jsr223/spring-integration-jsr223.xsd) result 404).
* [ ] http://www.springframework.org/schema/integration/spring-integration-ws.xsd (404) with 1 occurrences migrated to:
  https://www.springframework.org/schema/integration/spring-integration-ws.xsd ([https](https://www.springframework.org/schema/integration/spring-integration-ws.xsd) result 404).
* [ ] http://www.springframework.org/schema/integration/webflux/spring-integration-webflux.xsd (404) with 4 occurrences migrated to:
  https://www.springframework.org/schema/integration/webflux/spring-integration-webflux.xsd ([https](https://www.springframework.org/schema/integration/webflux/spring-integration-webflux.xsd) result 404).

## Fixed Success
These URLs were switched to an https URL with a 2xx status. While the status was successful, your review is still recommended.

* [ ] http://example.org with 22 occurrences migrated to:
  https://example.org ([https](https://example.org) result 200).
* [ ] http://example.org/ with 2 occurrences migrated to:
  https://example.org/ ([https](https://example.org/) result 200).
* [ ] http://feeds.bbci.co.uk/news/rss.xml with 1 occurrences migrated to:
  https://feeds.bbci.co.uk/news/rss.xml ([https](https://feeds.bbci.co.uk/news/rss.xml) result 200).
* [ ] http://www.example.com/ with 1 occurrences migrated to:
  https://www.example.com/ ([https](https://www.example.com/) result 200).
* [ ] http://www.springframework.org/schema/aop/spring-aop.xsd with 12 occurrences migrated to:
  https://www.springframework.org/schema/aop/spring-aop.xsd ([https](https://www.springframework.org/schema/aop/spring-aop.xsd) result 200).
* [ ] http://www.springframework.org/schema/beans/spring-beans.xsd with 815 occurrences migrated to:
  https://www.springframework.org/schema/beans/spring-beans.xsd ([https](https://www.springframework.org/schema/beans/spring-beans.xsd) result 200).
* [ ] http://www.springframework.org/schema/context/spring-context.xsd with 123 occurrences migrated to:
  https://www.springframework.org/schema/context/spring-context.xsd ([https](https://www.springframework.org/schema/context/spring-context.xsd) result 200).
* [ ] http://www.springframework.org/schema/data/jpa/spring-jpa.xsd with 2 occurrences migrated to:
  https://www.springframework.org/schema/data/jpa/spring-jpa.xsd ([https](https://www.springframework.org/schema/data/jpa/spring-jpa.xsd) result 200).
* [ ] http://www.springframework.org/schema/data/mongo/spring-mongo.xsd with 18 occurrences migrated to:
  https://www.springframework.org/schema/data/mongo/spring-mongo.xsd ([https](https://www.springframework.org/schema/data/mongo/spring-mongo.xsd) result 200).
* [ ] http://www.springframework.org/schema/geode/spring-geode.xsd with 4 occurrences migrated to:
  https://www.springframework.org/schema/geode/spring-geode.xsd ([https](https://www.springframework.org/schema/geode/spring-geode.xsd) result 200).
* [ ] http://www.springframework.org/schema/integration/amqp/spring-integration-amqp.xsd with 14 occurrences migrated to:
  https://www.springframework.org/schema/integration/amqp/spring-integration-amqp.xsd ([https](https://www.springframework.org/schema/integration/amqp/spring-integration-amqp.xsd) result 200).
* [ ] http://www.springframework.org/schema/integration/event/spring-integration-event.xsd with 4 occurrences migrated to:
  https://www.springframework.org/schema/integration/event/spring-integration-event.xsd ([https](https://www.springframework.org/schema/integration/event/spring-integration-event.xsd) result 200).
* [ ] http://www.springframework.org/schema/integration/feed/spring-integration-feed.xsd with 4 occurrences migrated to:
  https://www.springframework.org/schema/integration/feed/spring-integration-feed.xsd ([https](https://www.springframework.org/schema/integration/feed/spring-integration-feed.xsd) result 200).
* [ ] http://www.springframework.org/schema/integration/file/spring-integration-file.xsd with 27 occurrences migrated to:
  https://www.springframework.org/schema/integration/file/spring-integration-file.xsd ([https](https://www.springframework.org/schema/integration/file/spring-integration-file.xsd) result 200).
* [ ] http://www.springframework.org/schema/integration/ftp/spring-integration-ftp.xsd with 15 occurrences migrated to:
  https://www.springframework.org/schema/integration/ftp/spring-integration-ftp.xsd ([https](https://www.springframework.org/schema/integration/ftp/spring-integration-ftp.xsd) result 200).
* [ ] http://www.springframework.org/schema/integration/gemfire/spring-integration-gemfire.xsd with 6 occurrences migrated to:
  https://www.springframework.org/schema/integration/gemfire/spring-integration-gemfire.xsd ([https](https://www.springframework.org/schema/integration/gemfire/spring-integration-gemfire.xsd) result 200).
* [ ] http://www.springframework.org/schema/integration/groovy/spring-integration-groovy.xsd with 11 occurrences migrated to:
  https://www.springframework.org/schema/integration/groovy/spring-integration-groovy.xsd ([https](https://www.springframework.org/schema/integration/groovy/spring-integration-groovy.xsd) result 200).
* [ ] http://www.springframework.org/schema/integration/http/spring-integration-http.xsd with 18 occurrences migrated to:
  https://www.springframework.org/schema/integration/http/spring-integration-http.xsd ([https](https://www.springframework.org/schema/integration/http/spring-integration-http.xsd) result 200).
* [ ] http://www.springframework.org/schema/integration/ip/spring-integration-ip.xsd with 27 occurrences migrated to:
  https://www.springframework.org/schema/integration/ip/spring-integration-ip.xsd ([https](https://www.springframework.org/schema/integration/ip/spring-integration-ip.xsd) result 200).
* [ ] http://www.springframework.org/schema/integration/jdbc/spring-integration-jdbc.xsd with 48 occurrences migrated to:
  https://www.springframework.org/schema/integration/jdbc/spring-integration-jdbc.xsd ([https](https://www.springframework.org/schema/integration/jdbc/spring-integration-jdbc.xsd) result 200).
* [ ] http://www.springframework.org/schema/integration/jms/spring-integration-jms.xsd with 93 occurrences migrated to:
  https://www.springframework.org/schema/integration/jms/spring-integration-jms.xsd ([https](https://www.springframework.org/schema/integration/jms/spring-integration-jms.xsd) result 200).
* [ ] http://www.springframework.org/schema/integration/jmx/spring-integration-jmx.xsd with 32 occurrences migrated to:
  https://www.springframework.org/schema/integration/jmx/spring-integration-jmx.xsd ([https](https://www.springframework.org/schema/integration/jmx/spring-integration-jmx.xsd) result 200).
* [ ] http://www.springframework.org/schema/integration/jpa/spring-integration-jpa.xsd with 11 occurrences migrated to:
  https://www.springframework.org/schema/integration/jpa/spring-integration-jpa.xsd ([https](https://www.springframework.org/schema/integration/jpa/spring-integration-jpa.xsd) result 200).
* [ ] http://www.springframework.org/schema/integration/mail/spring-integration-mail.xsd with 18 occurrences migrated to:
  https://www.springframework.org/schema/integration/mail/spring-integration-mail.xsd ([https](https://www.springframework.org/schema/integration/mail/spring-integration-mail.xsd) result 200).
* [ ] http://www.springframework.org/schema/integration/mongodb/spring-integration-mongodb.xsd with 17 occurrences migrated to:
  https://www.springframework.org/schema/integration/mongodb/spring-integration-mongodb.xsd ([https](https://www.springframework.org/schema/integration/mongodb/spring-integration-mongodb.xsd) result 200).
* [ ] http://www.springframework.org/schema/integration/mqtt/spring-integration-mqtt.xsd with 4 occurrences migrated to:
  https://www.springframework.org/schema/integration/mqtt/spring-integration-mqtt.xsd ([https](https://www.springframework.org/schema/integration/mqtt/spring-integration-mqtt.xsd) result 200).
* [ ] http://www.springframework.org/schema/integration/redis/spring-integration-redis.xsd with 17 occurrences migrated to:
  https://www.springframework.org/schema/integration/redis/spring-integration-redis.xsd ([https](https://www.springframework.org/schema/integration/redis/spring-integration-redis.xsd) result 200).
* [ ] http://www.springframework.org/schema/integration/rmi/spring-integration-rmi.xsd with 4 occurrences migrated to:
  https://www.springframework.org/schema/integration/rmi/spring-integration-rmi.xsd ([https](https://www.springframework.org/schema/integration/rmi/spring-integration-rmi.xsd) result 200).
* [ ] http://www.springframework.org/schema/integration/scripting/spring-integration-scripting.xsd with 14 occurrences migrated to:
  https://www.springframework.org/schema/integration/scripting/spring-integration-scripting.xsd ([https](https://www.springframework.org/schema/integration/scripting/spring-integration-scripting.xsd) result 200).
* [ ] http://www.springframework.org/schema/integration/security/spring-integration-security.xsd with 3 occurrences migrated to:
  https://www.springframework.org/schema/integration/security/spring-integration-security.xsd ([https](https://www.springframework.org/schema/integration/security/spring-integration-security.xsd) result 200).
* [ ] http://www.springframework.org/schema/integration/sftp/spring-integration-sftp.xsd with 18 occurrences migrated to:
  https://www.springframework.org/schema/integration/sftp/spring-integration-sftp.xsd ([https](https://www.springframework.org/schema/integration/sftp/spring-integration-sftp.xsd) result 200).
* [ ] http://www.springframework.org/schema/integration/spring-integration.xsd with 732 occurrences migrated to:
  https://www.springframework.org/schema/integration/spring-integration.xsd ([https](https://www.springframework.org/schema/integration/spring-integration.xsd) result 200).
* [ ] http://www.springframework.org/schema/integration/stomp/spring-integration-stomp.xsd with 1 occurrences migrated to:
  https://www.springframework.org/schema/integration/stomp/spring-integration-stomp.xsd ([https](https://www.springframework.org/schema/integration/stomp/spring-integration-stomp.xsd) result 200).
* [ ] http://www.springframework.org/schema/integration/stream/spring-integration-stream.xsd with 17 occurrences migrated to:
  https://www.springframework.org/schema/integration/stream/spring-integration-stream.xsd ([https](https://www.springframework.org/schema/integration/stream/spring-integration-stream.xsd) result 200).
* [ ] http://www.springframework.org/schema/integration/syslog/spring-integration-syslog.xsd with 5 occurrences migrated to:
  https://www.springframework.org/schema/integration/syslog/spring-integration-syslog.xsd ([https](https://www.springframework.org/schema/integration/syslog/spring-integration-syslog.xsd) result 200).
* [ ] http://www.springframework.org/schema/integration/websocket/spring-integration-websocket.xsd with 1 occurrences migrated to:
  https://www.springframework.org/schema/integration/websocket/spring-integration-websocket.xsd ([https](https://www.springframework.org/schema/integration/websocket/spring-integration-websocket.xsd) result 200).
* [ ] http://www.springframework.org/schema/integration/ws/spring-integration-ws.xsd with 10 occurrences migrated to:
  https://www.springframework.org/schema/integration/ws/spring-integration-ws.xsd ([https](https://www.springframework.org/schema/integration/ws/spring-integration-ws.xsd) result 200).
* [ ] http://www.springframework.org/schema/integration/xml/spring-integration-xml.xsd with 12 occurrences migrated to:
  https://www.springframework.org/schema/integration/xml/spring-integration-xml.xsd ([https](https://www.springframework.org/schema/integration/xml/spring-integration-xml.xsd) result 200).
* [ ] http://www.springframework.org/schema/integration/xmpp/spring-integration-xmpp.xsd with 14 occurrences migrated to:
  https://www.springframework.org/schema/integration/xmpp/spring-integration-xmpp.xsd ([https](https://www.springframework.org/schema/integration/xmpp/spring-integration-xmpp.xsd) result 200).
* [ ] http://www.springframework.org/schema/integration/zookeeper/spring-integration-zookeeper.xsd with 1 occurrences migrated to:
  https://www.springframework.org/schema/integration/zookeeper/spring-integration-zookeeper.xsd ([https](https://www.springframework.org/schema/integration/zookeeper/spring-integration-zookeeper.xsd) result 200).
* [ ] http://www.springframework.org/schema/jdbc/spring-jdbc.xsd with 52 occurrences migrated to:
  https://www.springframework.org/schema/jdbc/spring-jdbc.xsd ([https](https://www.springframework.org/schema/jdbc/spring-jdbc.xsd) result 200).
* [ ] http://www.springframework.org/schema/jms/spring-jms.xsd with 7 occurrences migrated to:
  https://www.springframework.org/schema/jms/spring-jms.xsd ([https](https://www.springframework.org/schema/jms/spring-jms.xsd) result 200).
* [ ] http://www.springframework.org/schema/lang/spring-lang.xsd with 4 occurrences migrated to:
  https://www.springframework.org/schema/lang/spring-lang.xsd ([https](https://www.springframework.org/schema/lang/spring-lang.xsd) result 200).
* [ ] http://www.springframework.org/schema/mvc/spring-mvc.xsd with 1 occurrences migrated to:
  https://www.springframework.org/schema/mvc/spring-mvc.xsd ([https](https://www.springframework.org/schema/mvc/spring-mvc.xsd) result 200).
* [ ] http://www.springframework.org/schema/rabbit/spring-rabbit.xsd with 9 occurrences migrated to:
  https://www.springframework.org/schema/rabbit/spring-rabbit.xsd ([https](https://www.springframework.org/schema/rabbit/spring-rabbit.xsd) result 200).
* [ ] http://www.springframework.org/schema/security/spring-security.xsd with 2 occurrences migrated to:
  https://www.springframework.org/schema/security/spring-security.xsd ([https](https://www.springframework.org/schema/security/spring-security.xsd) result 200).
* [ ] http://www.springframework.org/schema/task/spring-task.xsd with 44 occurrences migrated to:
  https://www.springframework.org/schema/task/spring-task.xsd ([https](https://www.springframework.org/schema/task/spring-task.xsd) result 200).
* [ ] http://www.springframework.org/schema/tool/spring-tool.xsd with 4 occurrences migrated to:
  https://www.springframework.org/schema/tool/spring-tool.xsd ([https](https://www.springframework.org/schema/tool/spring-tool.xsd) result 200).
* [ ] http://www.springframework.org/schema/tx/spring-tx.xsd with 14 occurrences migrated to:
  https://www.springframework.org/schema/tx/spring-tx.xsd ([https](https://www.springframework.org/schema/tx/spring-tx.xsd) result 200).
* [ ] http://www.springframework.org/schema/util/spring-util.xsd with 92 occurrences migrated to:
  https://www.springframework.org/schema/util/spring-util.xsd ([https](https://www.springframework.org/schema/util/spring-util.xsd) result 200).
* [ ] http://www.springframework.org/schema/websocket/spring-websocket.xsd with 1 occurrences migrated to:
  https://www.springframework.org/schema/websocket/spring-websocket.xsd ([https](https://www.springframework.org/schema/websocket/spring-websocket.xsd) result 200).
* [ ] http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd with 1 occurrences migrated to:
  https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd ([https](https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd) result 200).
* [ ] http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd with 1 occurrences migrated to:
  https://java.sun.com/xml/ns/persistence/persistence_2_0.xsd ([https](https://java.sun.com/xml/ns/persistence/persistence_2_0.xsd) result 302).

# Ignored
These URLs were intentionally ignored.

* http://java.sun.com/xml/ns/persistence with 2 occurrences
* http://localhost with 1 occurrences
* http://localhost/ with 1 occurrences
* http://localhost/test1 with 25 occurrences
* http://localhost/test1/%2f with 1 occurrences
* http://localhost/test2 with 2 occurrences
* http://localhost/test2/ with 1 occurrences
* http://localhost:18080/it/ with 3 occurrences
* http://localhost:51235/%2f/testApps?param= with 1 occurrences
* http://test with 1 occurrences
* http://test.example.org with 1 occurrences
* http://test.org with 1 occurrences
* http://testServer/test with 1 occurrences
* http://testServer/testmp with 1 occurrences
* http://www.springframework.org/schema/aop with 25 occurrences
* http://www.springframework.org/schema/beans with 1637 occurrences
* http://www.springframework.org/schema/c with 1 occurrences
* http://www.springframework.org/schema/context with 246 occurrences
* http://www.springframework.org/schema/data/jpa with 3 occurrences
* http://www.springframework.org/schema/data/mongo with 36 occurrences
* http://www.springframework.org/schema/geode with 8 occurrences
* http://www.springframework.org/schema/integration with 1467 occurrences
* http://www.springframework.org/schema/integration/amqp with 28 occurrences
* http://www.springframework.org/schema/integration/event with 8 occurrences
* http://www.springframework.org/schema/integration/feed with 8 occurrences
* http://www.springframework.org/schema/integration/file with 54 occurrences
* http://www.springframework.org/schema/integration/ftp with 30 occurrences
* http://www.springframework.org/schema/integration/gemfire with 12 occurrences
* http://www.springframework.org/schema/integration/groovy with 27 occurrences
* http://www.springframework.org/schema/integration/http with 36 occurrences
* http://www.springframework.org/schema/integration/ip with 54 occurrences
* http://www.springframework.org/schema/integration/jdbc with 96 occurrences
* http://www.springframework.org/schema/integration/jms with 186 occurrences
* http://www.springframework.org/schema/integration/jmx with 64 occurrences
* http://www.springframework.org/schema/integration/jpa with 22 occurrences
* http://www.springframework.org/schema/integration/jsr223 with 2 occurrences
* http://www.springframework.org/schema/integration/mail with 36 occurrences
* http://www.springframework.org/schema/integration/mongodb with 34 occurrences
* http://www.springframework.org/schema/integration/mqtt with 8 occurrences
* http://www.springframework.org/schema/integration/redis with 34 occurrences
* http://www.springframework.org/schema/integration/rmi with 8 occurrences
* http://www.springframework.org/schema/integration/scripting with 28 occurrences
* http://www.springframework.org/schema/integration/security with 6 occurrences
* http://www.springframework.org/schema/integration/sftp with 36 occurrences
* http://www.springframework.org/schema/integration/stomp with 2 occurrences
* http://www.springframework.org/schema/integration/stream with 34 occurrences
* http://www.springframework.org/schema/integration/syslog with 10 occurrences
* http://www.springframework.org/schema/integration/webflux with 8 occurrences
* http://www.springframework.org/schema/integration/websocket with 2 occurrences
* http://www.springframework.org/schema/integration/ws with 22 occurrences
* http://www.springframework.org/schema/integration/xml with 24 occurrences
* http://www.springframework.org/schema/integration/xmpp with 28 occurrences
* http://www.springframework.org/schema/integration/zookeeper with 2 occurrences
* http://www.springframework.org/schema/jdbc with 104 occurrences
* http://www.springframework.org/schema/jms with 13 occurrences
* http://www.springframework.org/schema/lang with 8 occurrences
* http://www.springframework.org/schema/mvc with 2 occurrences
* http://www.springframework.org/schema/p with 19 occurrences
* http://www.springframework.org/schema/rabbit with 18 occurrences
* http://www.springframework.org/schema/security with 4 occurrences
* http://www.springframework.org/schema/task with 88 occurrences
* http://www.springframework.org/schema/tool with 8 occurrences
* http://www.springframework.org/schema/tx with 28 occurrences
* http://www.springframework.org/schema/util with 184 occurrences
* http://www.springframework.org/schema/websocket with 2 occurrences
* http://www.w3.org/1999/xhtml with 1 occurrences
* http://www.w3.org/1999/xlink with 1 occurrences
* http://www.w3.org/2000/svg with 1 occurrences
* http://www.w3.org/2001/XMLSchema with 1 occurrences
* http://www.w3.org/2001/XMLSchema-instance with 816 occurrences
* http://www.w3.org/2005/Atom with 1 occurrences
2019-03-26 14:14:41 -04:00
Artem Bilan
aa2334928e URL Cleanup
This commit updates URLs to prefer the https protocol. Redirects are not followed to avoid accidentally expanding intentionally shortened URLs (i.e. if using a URL shortener).

# HTTP URLs that Could Not Be Fixed
These URLs were unable to be fixed. Please review them to see if they can be manually resolved.

* [ ] http://docs.groovy-lang.org/latest/html/documentation/index.html (200) with 2 occurrences could not be migrated:
   ([https](https://docs.groovy-lang.org/latest/html/documentation/index.html) result SSLProtocolException).
* [ ] http://jibx.sourceforge.net/ (200) with 1 occurrences could not be migrated:
   ([https](https://jibx.sourceforge.net/) result AnnotatedConnectException).
* [ ] http://www.castor.org/ (200) with 1 occurrences could not be migrated:
   ([https](https://www.castor.org/) result AnnotatedConnectException).
* [ ] http://www.groovy-lang.org/ (200) with 2 occurrences could not be migrated:
   ([https](https://www.groovy-lang.org/) result SSLProtocolException).
* [ ] http://www.jcraft.com/jsch/ (200) with 2 occurrences could not be migrated:
   ([https](https://www.jcraft.com/jsch/) result AnnotatedConnectException).
* [ ] http://foo.com (301) with 7 occurrences could not be migrated:
   ([https](https://foo.com) result SSLHandshakeException).
* [ ] http://oexchange.org/spec/0.8/rel/related-target (301) with 1 occurrences could not be migrated:
   ([https](https://oexchange.org/spec/0.8/rel/related-target) result SSLHandshakeException).

# Fixed URLs

## Fixed But Review Recommended
These URLs were fixed, but the https status was not OK. However, the https status was the same as the http request or http redirected to an https URL, so they were migrated. Your review is recommended.

* [ ] http://status.twitter.com (301) with 1 occurrences migrated to:
  https://status.twitterstat.us/ ([https](https://status.twitter.com) result SSLProtocolException).
* [ ] http://jruby.org/ (301) with 1 occurrences migrated to:
  https://www.jruby.org ([https](https://jruby.org/) result SSLHandshakeException).
* [ ] http://site1.com (ConnectTimeoutException) with 1 occurrences migrated to:
  https://site1.com ([https](https://site1.com) result ConnectTimeoutException).
* [ ] http://a0.twimg.com/a/1295478501/images/fronts/logo_withbird_home.png (UnknownHostException) with 1 occurrences migrated to:
  https://a0.twimg.com/a/1295478501/images/fronts/logo_withbird_home.png ([https](https://a0.twimg.com/a/1295478501/images/fronts/logo_withbird_home.png) result UnknownHostException).
* [ ] http://a0.twimg.com/a/1295478501/images/whatsnew/video-sample-ss.png (UnknownHostException) with 1 occurrences migrated to:
  https://a0.twimg.com/a/1295478501/images/whatsnew/video-sample-ss.png ([https](https://a0.twimg.com/a/1295478501/images/whatsnew/video-sample-ss.png) result UnknownHostException).
* [ ] http://a0.twimg.com/a/1295478501/javascripts/widgets/widget.js?1295482593 (UnknownHostException) with 1 occurrences migrated to:
  https://a0.twimg.com/a/1295478501/javascripts/widgets/widget.js?1295482593 ([https](https://a0.twimg.com/a/1295478501/javascripts/widgets/widget.js?1295482593) result UnknownHostException).
* [ ] http://a0.twimg.com/profile_images/1129952837/chelsea_normal.jpg (UnknownHostException) with 2 occurrences migrated to:
  https://a0.twimg.com/profile_images/1129952837/chelsea_normal.jpg ([https](https://a0.twimg.com/profile_images/1129952837/chelsea_normal.jpg) result UnknownHostException).
* [ ] http://a0.twimg.com/profile_images/1147019935/evedit0xr_2_normal.jpg (UnknownHostException) with 2 occurrences migrated to:
  https://a0.twimg.com/profile_images/1147019935/evedit0xr_2_normal.jpg ([https](https://a0.twimg.com/profile_images/1147019935/evedit0xr_2_normal.jpg) result UnknownHostException).
* [ ] http://a0.twimg.com/profile_images/1147750206/avatar03_normal.jpg (UnknownHostException) with 2 occurrences migrated to:
  https://a0.twimg.com/profile_images/1147750206/avatar03_normal.jpg ([https](https://a0.twimg.com/profile_images/1147750206/avatar03_normal.jpg) result UnknownHostException).
* [ ] http://a0.twimg.com/profile_images/1193341281/BOF-Logo-Favicon-Twitter_normal.png (UnknownHostException) with 2 occurrences migrated to:
  https://a0.twimg.com/profile_images/1193341281/BOF-Logo-Favicon-Twitter_normal.png ([https](https://a0.twimg.com/profile_images/1193341281/BOF-Logo-Favicon-Twitter_normal.png) result UnknownHostException).
* [ ] http://a0.twimg.com/profile_images/1218603158/photo-1_normal.jpeg (UnknownHostException) with 2 occurrences migrated to:
  https://a0.twimg.com/profile_images/1218603158/photo-1_normal.jpeg ([https](https://a0.twimg.com/profile_images/1218603158/photo-1_normal.jpeg) result UnknownHostException).
* [ ] http://a0.twimg.com/profile_images/52396555/logo_normal.jpg (UnknownHostException) with 2 occurrences migrated to:
  https://a0.twimg.com/profile_images/52396555/logo_normal.jpg ([https](https://a0.twimg.com/profile_images/52396555/logo_normal.jpg) result UnknownHostException).
* [ ] http://a0.twimg.com/profile_images/66982165/Cory_Booker_Twitter_normal.jpg (UnknownHostException) with 2 occurrences migrated to:
  https://a0.twimg.com/profile_images/66982165/Cory_Booker_Twitter_normal.jpg ([https](https://a0.twimg.com/profile_images/66982165/Cory_Booker_Twitter_normal.jpg) result UnknownHostException).
* [ ] http://a1.twimg.com/a/1295478501/images/favicon.ico (UnknownHostException) with 1 occurrences migrated to:
  https://a1.twimg.com/a/1295478501/images/favicon.ico ([https](https://a1.twimg.com/a/1295478501/images/favicon.ico) result UnknownHostException).
* [ ] http://a1.twimg.com/a/1295478501/images/twitter_57.png (UnknownHostException) with 1 occurrences migrated to:
  https://a1.twimg.com/a/1295478501/images/twitter_57.png ([https](https://a1.twimg.com/a/1295478501/images/twitter_57.png) result UnknownHostException).
* [ ] http://a1.twimg.com/a/1295478501/stylesheets/fronts.css?1295482593 (UnknownHostException) with 1 occurrences migrated to:
  https://a1.twimg.com/a/1295478501/stylesheets/fronts.css?1295482593 ([https](https://a1.twimg.com/a/1295478501/stylesheets/fronts.css?1295482593) result UnknownHostException).
* [ ] http://a1.twimg.com/profile_images/421377161/azizlittletwitter_normal.jpg (UnknownHostException) with 2 occurrences migrated to:
  https://a1.twimg.com/profile_images/421377161/azizlittletwitter_normal.jpg ([https](https://a1.twimg.com/profile_images/421377161/azizlittletwitter_normal.jpg) result UnknownHostException).
* [ ] http://a1.twimg.com/profile_images/557774500/IMG_1731_normal.JPG (UnknownHostException) with 2 occurrences migrated to:
  https://a1.twimg.com/profile_images/557774500/IMG_1731_normal.JPG ([https](https://a1.twimg.com/profile_images/557774500/IMG_1731_normal.JPG) result UnknownHostException).
* [ ] http://a2.twimg.com/a/1295478501/javascripts/fronts.js (UnknownHostException) with 1 occurrences migrated to:
  https://a2.twimg.com/a/1295478501/javascripts/fronts.js ([https](https://a2.twimg.com/a/1295478501/javascripts/fronts.js) result UnknownHostException).
* [ ] http://a2.twimg.com/profile_images/1164188883/support_normal.png (UnknownHostException) with 2 occurrences migrated to:
  https://a2.twimg.com/profile_images/1164188883/support_normal.png ([https](https://a2.twimg.com/profile_images/1164188883/support_normal.png) result UnknownHostException).
* [ ] http://a2.twimg.com/profile_images/1216137252/image_normal.jpg (UnknownHostException) with 2 occurrences migrated to:
  https://a2.twimg.com/profile_images/1216137252/image_normal.jpg ([https](https://a2.twimg.com/profile_images/1216137252/image_normal.jpg) result UnknownHostException).
* [ ] http://a2.twimg.com/profile_images/276864980/Greene_blk_hat_wynn_normal.jpg (UnknownHostException) with 2 occurrences migrated to:
  https://a2.twimg.com/profile_images/276864980/Greene_blk_hat_wynn_normal.jpg ([https](https://a2.twimg.com/profile_images/276864980/Greene_blk_hat_wynn_normal.jpg) result UnknownHostException).
* [ ] http://a2.twimg.com/profile_images/57465005/twitter_avatar.nyt_normal.jpg (UnknownHostException) with 2 occurrences migrated to:
  https://a2.twimg.com/profile_images/57465005/twitter_avatar.nyt_normal.jpg ([https](https://a2.twimg.com/profile_images/57465005/twitter_avatar.nyt_normal.jpg) result UnknownHostException).
* [ ] http://a2.twimg.com/profile_images/76339565/DA_Twitter_normal.jpg (UnknownHostException) with 2 occurrences migrated to:
  https://a2.twimg.com/profile_images/76339565/DA_Twitter_normal.jpg ([https](https://a2.twimg.com/profile_images/76339565/DA_Twitter_normal.jpg) result UnknownHostException).
* [ ] http://a3.twimg.com/profile_images/111107619/tweet-2_normal.jpg (UnknownHostException) with 2 occurrences migrated to:
  https://a3.twimg.com/profile_images/111107619/tweet-2_normal.jpg ([https](https://a3.twimg.com/profile_images/111107619/tweet-2_normal.jpg) result UnknownHostException).
* [ ] http://a3.twimg.com/profile_images/1220597165/nate_robinson_normal.jpg (UnknownHostException) with 2 occurrences migrated to:
  https://a3.twimg.com/profile_images/1220597165/nate_robinson_normal.jpg ([https](https://a3.twimg.com/profile_images/1220597165/nate_robinson_normal.jpg) result UnknownHostException).
* [ ] http://a3.twimg.com/profile_images/323584581/Bolt_Bus_Photo_FINAL_-_01___2__normal.JPG (UnknownHostException) with 2 occurrences migrated to:
  https://a3.twimg.com/profile_images/323584581/Bolt_Bus_Photo_FINAL_-_01___2__normal.JPG ([https](https://a3.twimg.com/profile_images/323584581/Bolt_Bus_Photo_FINAL_-_01___2__normal.JPG) result UnknownHostException).
* [ ] http://a3.twimg.com/profile_images/68908343/Gold_Box_plain_normal.PNG (UnknownHostException) with 2 occurrences migrated to:
  https://a3.twimg.com/profile_images/68908343/Gold_Box_plain_normal.PNG ([https](https://a3.twimg.com/profile_images/68908343/Gold_Box_plain_normal.PNG) result UnknownHostException).
* [ ] http://a3.twimg.com/profile_images/75078767/AR_73x73_normal.jpg (UnknownHostException) with 2 occurrences migrated to:
  https://a3.twimg.com/profile_images/75078767/AR_73x73_normal.jpg ([https](https://a3.twimg.com/profile_images/75078767/AR_73x73_normal.jpg) result UnknownHostException).
* [ ] http://a3.twimg.com/profile_images/856198179/alg_kyle_wilson_normal.jpg (UnknownHostException) with 2 occurrences migrated to:
  https://a3.twimg.com/profile_images/856198179/alg_kyle_wilson_normal.jpg ([https](https://a3.twimg.com/profile_images/856198179/alg_kyle_wilson_normal.jpg) result UnknownHostException).
* [ ] http://domain1.com (UnknownHostException) with 1 occurrences migrated to:
  https://domain1.com ([https](https://domain1.com) result UnknownHostException).
* [ ] http://domain2.com (UnknownHostException) with 1 occurrences migrated to:
  https://domain2.com ([https](https://domain2.com) result UnknownHostException).
* [ ] http://foo.bar.com (UnknownHostException) with 3 occurrences migrated to:
  https://foo.bar.com ([https](https://foo.bar.com) result UnknownHostException).
* [ ] http://foo.host/ (UnknownHostException) with 1 occurrences migrated to:
  https://foo.host/ ([https](https://foo.host/) result UnknownHostException).
* [ ] http://git.springsource.org/spring-integration (UnknownHostException) with 1 occurrences migrated to:
  https://git.springsource.org/spring-integration ([https](https://git.springsource.org/spring-integration) result UnknownHostException).
* [ ] http://groovy.codehaus.org/ (UnknownHostException) with 1 occurrences migrated to:
  https://groovy.codehaus.org/ ([https](https://groovy.codehaus.org/) result UnknownHostException).
* [ ] http://groovy.jmiguel.eu/groovy.codehaus.org/Advanced+compiler+configuration.html (UnknownHostException) with 1 occurrences migrated to:
  https://groovy.jmiguel.eu/groovy.codehaus.org/Advanced+compiler+configuration.html ([https](https://groovy.jmiguel.eu/groovy.codehaus.org/Advanced+compiler+configuration.html) result UnknownHostException).
* [ ] http://jaxen.codehaus.org/faq.html (UnknownHostException) with 1 occurrences migrated to:
  https://jaxen.codehaus.org/faq.html ([https](https://jaxen.codehaus.org/faq.html) result UnknownHostException).
* [ ] http://local.yahooapis.com/trafficData?appid=YdnDemo&zip= (UnknownHostException) with 1 occurrences migrated to:
  https://local.yahooapis.com/trafficData?appid=YdnDemo&zip= ([https](https://local.yahooapis.com/trafficData?appid=YdnDemo&zip=) result UnknownHostException).
* [ ] http://my.RabbitMQ.com/api/ (UnknownHostException) with 1 occurrences migrated to:
  https://my.RabbitMQ.com/api/ ([https](https://my.RabbitMQ.com/api/) result UnknownHostException).
* [ ] http://my.RabbitMQ.com/api/queues/%2f/si.test.queue?foo (UnknownHostException) with 1 occurrences migrated to:
  https://my.RabbitMQ.com/api/queues/%2f/si.test.queue?foo ([https](https://my.RabbitMQ.com/api/queues/%2f/si.test.queue?foo) result UnknownHostException).
* [ ] http://docs.spring.io/spring-amqp/reference/html/%5Freference.html (301) with 1 occurrences migrated to:
  https://docs.spring.io/spring-amqp/reference/html/%255Freference.html ([https](https://docs.spring.io/spring-amqp/reference/html/%5Freference.html) result 404).
* [ ] http://docs.spring.io/spring-amqp/reference/html/_reference.html (301) with 2 occurrences migrated to:
  https://docs.spring.io/spring-amqp/reference/html/_reference.html ([https](https://docs.spring.io/spring-amqp/reference/html/_reference.html) result 404).
* [ ] http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/beans.html (301) with 1 occurrences migrated to:
  https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/beans.html ([https](https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/beans.html) result 404).
* [ ] http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/expressions.html (301) with 1 occurrences migrated to:
  https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/expressions.html ([https](https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/expressions.html) result 404).
* [ ] http://static.springsource.org/spring-framework/docs/current/spring-framework-reference/html/expressions.html (301) with 2 occurrences migrated to:
  https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/expressions.html ([https](https://static.springsource.org/spring-framework/docs/current/spring-framework-reference/html/expressions.html) result 404).
* [ ] http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/htmlsingle/ (301) with 1 occurrences migrated to:
  https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/htmlsingle/ ([https](https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/htmlsingle/) result 404).
* [ ] http://static.springsource.org/spring-integration/api/org/springframework/integration/Message.html (301) with 1 occurrences migrated to:
  https://docs.spring.io/spring-integration/api/org/springframework/integration/Message.html ([https](https://static.springsource.org/spring-integration/api/org/springframework/integration/Message.html) result 404).
* [ ] http://docs.spring.io/spring-integration/docs/latest-ga/api/org/springframework/integration/store/MetadataStore.html (301) with 1 occurrences migrated to:
  https://docs.spring.io/spring-integration/docs/latest-ga/api/org/springframework/integration/store/MetadataStore.html ([https](https://docs.spring.io/spring-integration/docs/latest-ga/api/org/springframework/integration/store/MetadataStore.html) result 404).
* [ ] http://docs.spring.io/spring-security/site/docs/current/reference/html/concurrency.html (301) with 1 occurrences migrated to:
  https://docs.spring.io/spring-security/site/docs/current/reference/html/concurrency.html ([https](https://docs.spring.io/spring-security/site/docs/current/reference/html/concurrency.html) result 404).
* [ ] http://docs.spring.io/spring-ws/docs/current/reference/html/client.html (301) with 2 occurrences migrated to:
  https://docs.spring.io/spring-ws/docs/current/reference/html/client.html ([https](https://docs.spring.io/spring-ws/docs/current/reference/html/client.html) result 404).
* [ ] http://docs.spring.io/spring-ws/docs/current/reference/html/common.html (301) with 1 occurrences migrated to:
  https://docs.spring.io/spring-ws/docs/current/reference/html/common.html ([https](https://docs.spring.io/spring-ws/docs/current/reference/html/common.html) result 404).
* [ ] http://docs.spring.io/spring-ws/docs/current/reference/html/server.html (301) with 2 occurrences migrated to:
  https://docs.spring.io/spring-ws/docs/current/reference/html/server.html ([https](https://docs.spring.io/spring-ws/docs/current/reference/html/server.html) result 404).
* [ ] http://git-scm.com/,Git (301) with 1 occurrences migrated to:
  https://git-scm.com/,Git ([https](https://git-scm.com/,Git) result 404).
* [ ] http://jcp.org/aboutJava/communityprocess/pr/jsr223/ (302) with 1 occurrences migrated to:
  https://jcp.org/aboutJava/communityprocess/pr/jsr223/ ([https](https://jcp.org/aboutJava/communityprocess/pr/jsr223/) result 404).
* [ ] http://www.example.org/prodcuts (404) with 2 occurrences migrated to:
  https://www.example.org/prodcuts ([https](https://www.example.org/prodcuts) result 404).
* [ ] http://www.example.org/validationTestsSchema (404) with 4 occurrences migrated to:
  https://www.example.org/validationTestsSchema ([https](https://www.example.org/validationTestsSchema) result 404).
* [ ] http://www.springframework.org/schema/integration/webflux/spring-integration-webflux.xsd (404) with 2 occurrences migrated to:
  https://www.springframework.org/schema/integration/webflux/spring-integration-webflux.xsd ([https](https://www.springframework.org/schema/integration/webflux/spring-integration-webflux.xsd) result 404).
* [ ] http://search.twitter.com/search (410) with 1 occurrences migrated to:
  https://search.twitter.com/search ([https](https://search.twitter.com/search) result 410).

## Fixed Success
These URLs were switched to an https URL with a 2xx status. While the status was successful, your review is still recommended.

* [ ] http://activemq.apache.org/ with 1 occurrences migrated to:
  https://activemq.apache.org/ ([https](https://activemq.apache.org/) result 200).
* [ ] http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js with 1 occurrences migrated to:
  https://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js ([https](https://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js) result 200).
* [ ] http://blog.twitter.com with 1 occurrences migrated to:
  https://blog.twitter.com ([https](https://blog.twitter.com) result 200).
* [ ] http://dev.mysql.com/doc/refman/5.6/en/fractional-seconds.html with 1 occurrences migrated to:
  https://dev.mysql.com/doc/refman/5.6/en/fractional-seconds.html ([https](https://dev.mysql.com/doc/refman/5.6/en/fractional-seconds.html) result 200).
* [ ] http://docs.oracle.com/javaee/6/api/javax/jms/Message.html with 1 occurrences migrated to:
  https://docs.oracle.com/javaee/6/api/javax/jms/Message.html ([https](https://docs.oracle.com/javaee/6/api/javax/jms/Message.html) result 200).
* [ ] http://docs.oracle.com/javaee/6/api/javax/jms/TemporaryQueue.html with 1 occurrences migrated to:
  https://docs.oracle.com/javaee/6/api/javax/jms/TemporaryQueue.html ([https](https://docs.oracle.com/javaee/6/api/javax/jms/TemporaryQueue.html) result 200).
* [ ] http://docs.oracle.com/javase/6/docs/api/javax/xml/transform/Result.html with 3 occurrences migrated to:
  https://docs.oracle.com/javase/6/docs/api/javax/xml/transform/Result.html ([https](https://docs.oracle.com/javase/6/docs/api/javax/xml/transform/Result.html) result 200).
* [ ] http://docs.oracle.com/javase/6/docs/api/javax/xml/transform/Source.html with 1 occurrences migrated to:
  https://docs.oracle.com/javase/6/docs/api/javax/xml/transform/Source.html ([https](https://docs.oracle.com/javase/6/docs/api/javax/xml/transform/Source.html) result 200).
* [ ] http://docs.oracle.com/javase/6/docs/api/javax/xml/transform/Templates.html with 2 occurrences migrated to:
  https://docs.oracle.com/javase/6/docs/api/javax/xml/transform/Templates.html ([https](https://docs.oracle.com/javase/6/docs/api/javax/xml/transform/Templates.html) result 200).
* [ ] http://docs.oracle.com/javase/6/docs/api/org/w3c/dom/Document.html with 2 occurrences migrated to:
  https://docs.oracle.com/javase/6/docs/api/org/w3c/dom/Document.html ([https](https://docs.oracle.com/javase/6/docs/api/org/w3c/dom/Document.html) result 200).
* [ ] http://docs.oracle.com/javase/7/docs/api/java/lang/Iterable.html with 3 occurrences migrated to:
  https://docs.oracle.com/javase/7/docs/api/java/lang/Iterable.html ([https](https://docs.oracle.com/javase/7/docs/api/java/lang/Iterable.html) result 200).
* [ ] http://docs.oracle.com/javase/7/docs/api/javax/xml/transform/Transformer.html with 1 occurrences migrated to:
  https://docs.oracle.com/javase/7/docs/api/javax/xml/transform/Transformer.html ([https](https://docs.oracle.com/javase/7/docs/api/javax/xml/transform/Transformer.html) result 200).
* [ ] http://docs.spring.io/spring-amqp/api/ with 1 occurrences migrated to:
  https://docs.spring.io/spring-amqp/api/ ([https](https://docs.spring.io/spring-amqp/api/) result 200).
* [ ] http://docs.spring.io/spring-amqp/api/org/springframework/amqp/core/MessageProperties.html with 1 occurrences migrated to:
  https://docs.spring.io/spring-amqp/api/org/springframework/amqp/core/MessageProperties.html ([https](https://docs.spring.io/spring-amqp/api/org/springframework/amqp/core/MessageProperties.html) result 200).
* [ ] http://docs.spring.io/spring-amqp/reference/html/ with 1 occurrences migrated to:
  https://docs.spring.io/spring-amqp/reference/html/ ([https](https://docs.spring.io/spring-amqp/reference/html/) result 200).
* [ ] http://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-auto-configuration.html with 1 occurrences migrated to:
  https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-auto-configuration.html ([https](https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-auto-configuration.html) result 200).
* [ ] http://docs.spring.io/spring-data/data-mongo/docs/current/reference/html/ with 1 occurrences migrated to:
  https://docs.spring.io/spring-data/data-mongo/docs/current/reference/html/ ([https](https://docs.spring.io/spring-data/data-mongo/docs/current/reference/html/) result 200).
* [ ] http://docs.spring.io/spring-data/data-redis/docs/current/api/org/springframework/data/redis/core/BoundHashOperations.html with 1 occurrences migrated to:
  https://docs.spring.io/spring-data/data-redis/docs/current/api/org/springframework/data/redis/core/BoundHashOperations.html ([https](https://docs.spring.io/spring-data/data-redis/docs/current/api/org/springframework/data/redis/core/BoundHashOperations.html) result 200).
* [ ] http://docs.spring.io/spring-data/data-redis/docs/current/api/org/springframework/data/redis/support/collections/RedisProperties.html with 1 occurrences migrated to:
  https://docs.spring.io/spring-data/data-redis/docs/current/api/org/springframework/data/redis/support/collections/RedisProperties.html ([https](https://docs.spring.io/spring-data/data-redis/docs/current/api/org/springframework/data/redis/support/collections/RedisProperties.html) result 200).
* [ ] http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/aop/framework/ReflectiveMethodInvocation.html with 1 occurrences migrated to:
  https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/aop/framework/ReflectiveMethodInvocation.html ([https](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/aop/framework/ReflectiveMethodInvocation.html) result 200).
* [ ] http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/transaction/support/TransactionSynchronization.html with 1 occurrences migrated to:
  https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/transaction/support/TransactionSynchronization.html ([https](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/transaction/support/TransactionSynchronization.html) result 200).
* [ ] http://docs.spring.io/spring-integration/api/constant-values.html with 1 occurrences migrated to:
  https://docs.spring.io/spring-integration/api/constant-values.html ([https](https://docs.spring.io/spring-integration/api/constant-values.html) result 200).
* [ ] http://docs.spring.io/spring-integration/api/org/springframework/integration/amqp/support/DefaultAmqpHeaderMapper.html with 1 occurrences migrated to:
  https://docs.spring.io/spring-integration/api/org/springframework/integration/amqp/support/DefaultAmqpHeaderMapper.html ([https](https://docs.spring.io/spring-integration/api/org/springframework/integration/amqp/support/DefaultAmqpHeaderMapper.html) result 200).
* [ ] http://static.springsource.org/spring-integration/api/org/springframework/integration/endpoint/EventDrivenConsumer.html (301) with 1 occurrences migrated to:
  https://docs.spring.io/spring-integration/api/org/springframework/integration/endpoint/EventDrivenConsumer.html ([https](https://static.springsource.org/spring-integration/api/org/springframework/integration/endpoint/EventDrivenConsumer.html) result 200).
* [ ] http://static.springsource.org/spring-integration/api/org/springframework/integration/endpoint/PollingConsumer.html (301) with 2 occurrences migrated to:
  https://docs.spring.io/spring-integration/api/org/springframework/integration/endpoint/PollingConsumer.html ([https](https://static.springsource.org/spring-integration/api/org/springframework/integration/endpoint/PollingConsumer.html) result 200).
* [ ] http://static.springsource.org/spring-integration/api/org/springframework/integration/endpoint/SourcePollingChannelAdapter.html (301) with 1 occurrences migrated to:
  https://docs.spring.io/spring-integration/api/org/springframework/integration/endpoint/SourcePollingChannelAdapter.html ([https](https://static.springsource.org/spring-integration/api/org/springframework/integration/endpoint/SourcePollingChannelAdapter.html) result 200).
* [ ] http://docs.spring.io/spring-integration/api/org/springframework/integration/file/DefaultFileNameGenerator.html with 1 occurrences migrated to:
  https://docs.spring.io/spring-integration/api/org/springframework/integration/file/DefaultFileNameGenerator.html ([https](https://docs.spring.io/spring-integration/api/org/springframework/integration/file/DefaultFileNameGenerator.html) result 200).
* [ ] http://docs.spring.io/spring-integration/api/org/springframework/integration/file/FileHeaders.html with 1 occurrences migrated to:
  https://docs.spring.io/spring-integration/api/org/springframework/integration/file/FileHeaders.html ([https](https://docs.spring.io/spring-integration/api/org/springframework/integration/file/FileHeaders.html) result 200).
* [ ] http://docs.spring.io/spring-integration/api/org/springframework/integration/file/FileNameGenerator.html with 1 occurrences migrated to:
  https://docs.spring.io/spring-integration/api/org/springframework/integration/file/FileNameGenerator.html ([https](https://docs.spring.io/spring-integration/api/org/springframework/integration/file/FileNameGenerator.html) result 200).
* [ ] http://docs.spring.io/spring-integration/api/org/springframework/integration/file/FileWritingMessageHandler.html with 1 occurrences migrated to:
  https://docs.spring.io/spring-integration/api/org/springframework/integration/file/FileWritingMessageHandler.html ([https](https://docs.spring.io/spring-integration/api/org/springframework/integration/file/FileWritingMessageHandler.html) result 200).
* [ ] http://docs.spring.io/spring-integration/api/org/springframework/integration/file/remote/RemoteFileTemplate.html with 2 occurrences migrated to:
  https://docs.spring.io/spring-integration/api/org/springframework/integration/file/remote/RemoteFileTemplate.html ([https](https://docs.spring.io/spring-integration/api/org/springframework/integration/file/remote/RemoteFileTemplate.html) result 200).
* [ ] http://static.springsource.org/spring-integration/api/org/springframework/integration/http/inbound/IntegrationRequestMappingHandlerMapping.html (301) with 2 occurrences migrated to:
  https://docs.spring.io/spring-integration/api/org/springframework/integration/http/inbound/IntegrationRequestMappingHandlerMapping.html ([https](https://static.springsource.org/spring-integration/api/org/springframework/integration/http/inbound/IntegrationRequestMappingHandlerMapping.html) result 200).
* [ ] http://static.springsource.org/spring-integration/api/org/springframework/integration/http/inbound/RequestMapping.html (301) with 1 occurrences migrated to:
  https://docs.spring.io/spring-integration/api/org/springframework/integration/http/inbound/RequestMapping.html ([https](https://static.springsource.org/spring-integration/api/org/springframework/integration/http/inbound/RequestMapping.html) result 200).
* [ ] http://static.springsource.org/spring-integration/api/org/springframework/integration/sftp/session/DefaultSftpSessionFactory.html (301) with 1 occurrences migrated to:
  https://docs.spring.io/spring-integration/api/org/springframework/integration/sftp/session/DefaultSftpSessionFactory.html ([https](https://static.springsource.org/spring-integration/api/org/springframework/integration/sftp/session/DefaultSftpSessionFactory.html) result 200).
* [ ] http://static.springsource.org/spring-integration/api/org/springframework/integration/store/MessageGroupStore.html (301) with 1 occurrences migrated to:
  https://docs.spring.io/spring-integration/api/org/springframework/integration/store/MessageGroupStore.html ([https](https://static.springsource.org/spring-integration/api/org/springframework/integration/store/MessageGroupStore.html) result 200).
* [ ] http://docs.spring.io/spring-integration/api/org/springframework/integration/store/MessageGroupStore.html with 1 occurrences migrated to:
  https://docs.spring.io/spring-integration/api/org/springframework/integration/store/MessageGroupStore.html ([https](https://docs.spring.io/spring-integration/api/org/springframework/integration/store/MessageGroupStore.html) result 200).
* [ ] http://static.springsource.org/spring-integration/api/org/springframework/integration/store/MessageStore.html (301) with 1 occurrences migrated to:
  https://docs.spring.io/spring-integration/api/org/springframework/integration/store/MessageStore.html ([https](https://static.springsource.org/spring-integration/api/org/springframework/integration/store/MessageStore.html) result 200).
* [ ] http://docs.spring.io/spring-integration/api/org/springframework/integration/transformer/AbstractPayloadTransformer.html with 1 occurrences migrated to:
  https://docs.spring.io/spring-integration/api/org/springframework/integration/transformer/AbstractPayloadTransformer.html ([https](https://docs.spring.io/spring-integration/api/org/springframework/integration/transformer/AbstractPayloadTransformer.html) result 200).
* [ ] http://docs.spring.io/spring-integration/api/org/springframework/integration/transformer/AbstractTransformer.html with 1 occurrences migrated to:
  https://docs.spring.io/spring-integration/api/org/springframework/integration/transformer/AbstractTransformer.html ([https](https://docs.spring.io/spring-integration/api/org/springframework/integration/transformer/AbstractTransformer.html) result 200).
* [ ] http://docs.spring.io/spring-integration/api/org/springframework/integration/transformer/MessageTransformingHandler.html with 1 occurrences migrated to:
  https://docs.spring.io/spring-integration/api/org/springframework/integration/transformer/MessageTransformingHandler.html ([https](https://docs.spring.io/spring-integration/api/org/springframework/integration/transformer/MessageTransformingHandler.html) result 200).
* [ ] http://docs.spring.io/spring-integration/api/org/springframework/integration/transformer/Transformer.html with 1 occurrences migrated to:
  https://docs.spring.io/spring-integration/api/org/springframework/integration/transformer/Transformer.html ([https](https://docs.spring.io/spring-integration/api/org/springframework/integration/transformer/Transformer.html) result 200).
* [ ] http://docs.spring.io/spring-integration/api/org/springframework/integration/ws/DefaultSoapHeaderMapper.html with 1 occurrences migrated to:
  https://docs.spring.io/spring-integration/api/org/springframework/integration/ws/DefaultSoapHeaderMapper.html ([https](https://docs.spring.io/spring-integration/api/org/springframework/integration/ws/DefaultSoapHeaderMapper.html) result 200).
* [ ] http://docs.spring.io/spring-integration/api/org/springframework/integration/xml/config/XsltPayloadTransformerParser.html with 1 occurrences migrated to:
  https://docs.spring.io/spring-integration/api/org/springframework/integration/xml/config/XsltPayloadTransformerParser.html ([https](https://docs.spring.io/spring-integration/api/org/springframework/integration/xml/config/XsltPayloadTransformerParser.html) result 200).
* [ ] http://docs.spring.io/spring-integration/api/org/springframework/integration/xml/result/DomResultFactory.html with 1 occurrences migrated to:
  https://docs.spring.io/spring-integration/api/org/springframework/integration/xml/result/DomResultFactory.html ([https](https://docs.spring.io/spring-integration/api/org/springframework/integration/xml/result/DomResultFactory.html) result 200).
* [ ] http://docs.spring.io/spring-integration/api/org/springframework/integration/xml/result/ResultFactory.html with 1 occurrences migrated to:
  https://docs.spring.io/spring-integration/api/org/springframework/integration/xml/result/ResultFactory.html ([https](https://docs.spring.io/spring-integration/api/org/springframework/integration/xml/result/ResultFactory.html) result 200).
* [ ] http://docs.spring.io/spring-integration/api/org/springframework/integration/xml/result/StringResultFactory.html with 1 occurrences migrated to:
  https://docs.spring.io/spring-integration/api/org/springframework/integration/xml/result/StringResultFactory.html ([https](https://docs.spring.io/spring-integration/api/org/springframework/integration/xml/result/StringResultFactory.html) result 200).
* [ ] http://docs.spring.io/spring-integration/api/org/springframework/integration/xml/source/DomSourceFactory.html with 3 occurrences migrated to:
  https://docs.spring.io/spring-integration/api/org/springframework/integration/xml/source/DomSourceFactory.html ([https](https://docs.spring.io/spring-integration/api/org/springframework/integration/xml/source/DomSourceFactory.html) result 200).
* [ ] http://docs.spring.io/spring-integration/api/org/springframework/integration/xml/source/SourceFactory.html with 3 occurrences migrated to:
  https://docs.spring.io/spring-integration/api/org/springframework/integration/xml/source/SourceFactory.html ([https](https://docs.spring.io/spring-integration/api/org/springframework/integration/xml/source/SourceFactory.html) result 200).
* [ ] http://docs.spring.io/spring-integration/api/org/springframework/integration/xml/transformer/MarshallingTransformer.html with 1 occurrences migrated to:
  https://docs.spring.io/spring-integration/api/org/springframework/integration/xml/transformer/MarshallingTransformer.html ([https](https://docs.spring.io/spring-integration/api/org/springframework/integration/xml/transformer/MarshallingTransformer.html) result 200).
* [ ] http://docs.spring.io/spring-integration/api/org/springframework/integration/xml/transformer/ResultToDocumentTransformer.html with 1 occurrences migrated to:
  https://docs.spring.io/spring-integration/api/org/springframework/integration/xml/transformer/ResultToDocumentTransformer.html ([https](https://docs.spring.io/spring-integration/api/org/springframework/integration/xml/transformer/ResultToDocumentTransformer.html) result 200).
* [ ] http://docs.spring.io/spring-integration/api/org/springframework/integration/xml/transformer/ResultToStringTransformer.html with 1 occurrences migrated to:
  https://docs.spring.io/spring-integration/api/org/springframework/integration/xml/transformer/ResultToStringTransformer.html ([https](https://docs.spring.io/spring-integration/api/org/springframework/integration/xml/transformer/ResultToStringTransformer.html) result 200).
* [ ] http://docs.spring.io/spring-integration/api/org/springframework/integration/xml/transformer/ResultTransformer.html with 2 occurrences migrated to:
  https://docs.spring.io/spring-integration/api/org/springframework/integration/xml/transformer/ResultTransformer.html ([https](https://docs.spring.io/spring-integration/api/org/springframework/integration/xml/transformer/ResultTransformer.html) result 200).
* [ ] http://docs.spring.io/spring-integration/api/org/springframework/integration/xml/transformer/UnmarshallingTransformer.html with 1 occurrences migrated to:
  https://docs.spring.io/spring-integration/api/org/springframework/integration/xml/transformer/UnmarshallingTransformer.html ([https](https://docs.spring.io/spring-integration/api/org/springframework/integration/xml/transformer/UnmarshallingTransformer.html) result 200).
* [ ] http://docs.spring.io/spring-integration/api/org/springframework/integration/xml/transformer/XsltPayloadTransformer.html with 3 occurrences migrated to:
  https://docs.spring.io/spring-integration/api/org/springframework/integration/xml/transformer/XsltPayloadTransformer.html ([https](https://docs.spring.io/spring-integration/api/org/springframework/integration/xml/transformer/XsltPayloadTransformer.html) result 200).
* [ ] http://docs.spring.io/spring-integration/api/org/springframework/integration/xmpp/support/DefaultXmppHeaderMapper.html with 1 occurrences migrated to:
  https://docs.spring.io/spring-integration/api/org/springframework/integration/xmpp/support/DefaultXmppHeaderMapper.html ([https](https://docs.spring.io/spring-integration/api/org/springframework/integration/xmpp/support/DefaultXmppHeaderMapper.html) result 200).
* [ ] http://docs.spring.io/spring-integration/docs/latest-ga/api/org/springframework/integration/config/EnableIntegration.html with 1 occurrences migrated to:
  https://docs.spring.io/spring-integration/docs/latest-ga/api/org/springframework/integration/config/EnableIntegration.html ([https](https://docs.spring.io/spring-integration/docs/latest-ga/api/org/springframework/integration/config/EnableIntegration.html) result 200).
* [ ] http://docs.spring.io/spring-integration/docs/latest-ga/api/org/springframework/integration/metadata/MetadataStore.html with 1 occurrences migrated to:
  https://docs.spring.io/spring-integration/docs/latest-ga/api/org/springframework/integration/metadata/MetadataStore.html ([https](https://docs.spring.io/spring-integration/docs/latest-ga/api/org/springframework/integration/metadata/MetadataStore.html) result 200).
* [ ] http://docs.spring.io/spring-integration/reference/ with 1 occurrences migrated to:
  https://docs.spring.io/spring-integration/reference/ ([https](https://docs.spring.io/spring-integration/reference/) result 200).
* [ ] http://docs.spring.io/spring-session/docs/current/reference/html5/ with 1 occurrences migrated to:
  https://docs.spring.io/spring-session/docs/current/reference/html5/ ([https](https://docs.spring.io/spring-session/docs/current/reference/html5/) result 200).
* [ ] http://docs.spring.io/spring-ws/docs/current/api/org/springframework/ws/client/support/destination/DestinationProvider.html with 1 occurrences migrated to:
  https://docs.spring.io/spring-ws/docs/current/api/org/springframework/ws/client/support/destination/DestinationProvider.html ([https](https://docs.spring.io/spring-ws/docs/current/api/org/springframework/ws/client/support/destination/DestinationProvider.html) result 200).
* [ ] http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/jdbc/core/simple/SimpleJdbcCall.html (301) with 1 occurrences migrated to:
  https://docs.spring.io/spring/docs/3.0.x/javadoc-api/org/springframework/jdbc/core/simple/SimpleJdbcCall.html ([https](https://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/jdbc/core/simple/SimpleJdbcCall.html) result 200).
* [ ] http://docs.spring.io/spring/docs/current/javadoc-api/index.html?org/springframework/messaging/PollableChannel.html with 1 occurrences migrated to:
  https://docs.spring.io/spring/docs/current/javadoc-api/index.html?org/springframework/messaging/PollableChannel.html ([https](https://docs.spring.io/spring/docs/current/javadoc-api/index.html?org/springframework/messaging/PollableChannel.html) result 200).
* [ ] http://docs.spring.io/spring/docs/current/javadoc-api/index.html?org/springframework/messaging/SubscribableChannel.html with 1 occurrences migrated to:
  https://docs.spring.io/spring/docs/current/javadoc-api/index.html?org/springframework/messaging/SubscribableChannel.html ([https](https://docs.spring.io/spring/docs/current/javadoc-api/index.html?org/springframework/messaging/SubscribableChannel.html) result 200).
* [ ] http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/core/io/Resource.html with 2 occurrences migrated to:
  https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/core/io/Resource.html ([https](https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/core/io/Resource.html) result 200).
* [ ] http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/expression/PropertyAccessor.html with 1 occurrences migrated to:
  https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/expression/PropertyAccessor.html ([https](https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/expression/PropertyAccessor.html) result 200).
* [ ] http://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/http/client/ClientHttpRequestFactory.html (301) with 1 occurrences migrated to:
  https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/client/ClientHttpRequestFactory.html ([https](https://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/http/client/ClientHttpRequestFactory.html) result 200).
* [ ] http://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/http/client/HttpComponentsClientHttpRequestFactory.html (301) with 1 occurrences migrated to:
  https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/client/HttpComponentsClientHttpRequestFactory.html ([https](https://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/http/client/HttpComponentsClientHttpRequestFactory.html) result 200).
* [ ] http://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/http/client/SimpleClientHttpRequestFactory.html (301) with 1 occurrences migrated to:
  https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/client/SimpleClientHttpRequestFactory.html ([https](https://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/http/client/SimpleClientHttpRequestFactory.html) result 200).
* [ ] http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jmx/export/naming/MetadataNamingStrategy.html with 1 occurrences migrated to:
  https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jmx/export/naming/MetadataNamingStrategy.html ([https](https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jmx/export/naming/MetadataNamingStrategy.html) result 200).
* [ ] http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jmx/export/naming/ObjectNamingStrategy.html with 1 occurrences migrated to:
  https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jmx/export/naming/ObjectNamingStrategy.html ([https](https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jmx/export/naming/ObjectNamingStrategy.html) result 200).
* [ ] http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/messaging/MessageHandlingException.html with 1 occurrences migrated to:
  https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/messaging/MessageHandlingException.html ([https](https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/messaging/MessageHandlingException.html) result 200).
* [ ] http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/orm/jpa/support/SharedEntityManagerBean.html with 1 occurrences migrated to:
  https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/orm/jpa/support/SharedEntityManagerBean.html ([https](https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/orm/jpa/support/SharedEntityManagerBean.html) result 200).
* [ ] http://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/scheduling/Trigger.html (301) with 1 occurrences migrated to:
  https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/scheduling/Trigger.html ([https](https://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/scheduling/Trigger.html) result 200).
* [ ] http://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/scheduling/support/PeriodicTrigger.html (301) with 1 occurrences migrated to:
  https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/scheduling/support/PeriodicTrigger.html ([https](https://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/scheduling/support/PeriodicTrigger.html) result 200).
* [ ] http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/util/PropertiesPersister.html with 1 occurrences migrated to:
  https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/util/PropertiesPersister.html ([https](https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/util/PropertiesPersister.html) result 200).
* [ ] http://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/RequestMapping.html (301) with 1 occurrences migrated to:
  https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/RequestMapping.html ([https](https://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/RequestMapping.html) result 200).
* [ ] http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/client/RestTemplate.html with 1 occurrences migrated to:
  https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/client/RestTemplate.html ([https](https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/client/RestTemplate.html) result 200).
* [ ] http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/context/support/HttpRequestHandlerServlet.html with 1 occurrences migrated to:
  https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/context/support/HttpRequestHandlerServlet.html ([https](https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/context/support/HttpRequestHandlerServlet.html) result 200).
* [ ] http://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/web/servlet/HandlerMapping.html (301) with 1 occurrences migrated to:
  https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/HandlerMapping.html ([https](https://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/web/servlet/HandlerMapping.html) result 200).
* [ ] http://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/web/servlet/mvc/method/RequestMappingInfo.html (301) with 1 occurrences migrated to:
  https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/mvc/method/RequestMappingInfo.html ([https](https://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/web/servlet/mvc/method/RequestMappingInfo.html) result 200).
* [ ] http://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/web/servlet/mvc/method/RequestMappingInfoHandlerMapping.html (301) with 1 occurrences migrated to:
  https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/mvc/method/RequestMappingInfoHandlerMapping.html ([https](https://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/web/servlet/mvc/method/RequestMappingInfoHandlerMapping.html) result 200).
* [ ] http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/util/UriComponentsBuilder.html with 1 occurrences migrated to:
  https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/util/UriComponentsBuilder.html ([https](https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/util/UriComponentsBuilder.html) result 200).
* [ ] http://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/web/util/UriComponentsBuilder.html (301) with 1 occurrences migrated to:
  https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/util/UriComponentsBuilder.html ([https](https://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/web/util/UriComponentsBuilder.html) result 200).
* [ ] http://download.igniterealtime.org/smack/docs/latest/javadoc/org/jivesoftware/smack/roster/Roster.html with 1 occurrences migrated to:
  https://download.igniterealtime.org/smack/docs/latest/javadoc/org/jivesoftware/smack/roster/Roster.html ([https](https://download.igniterealtime.org/smack/docs/latest/javadoc/org/jivesoftware/smack/roster/Roster.html) result 200).
* [ ] http://en.wikipedia.org/wiki/Java_Architecture_for_XML_Binding with 1 occurrences migrated to:
  https://en.wikipedia.org/wiki/Java_Architecture_for_XML_Binding ([https](https://en.wikipedia.org/wiki/Java_Architecture_for_XML_Binding) result 200).
* [ ] http://en.wikipedia.org/wiki/List_of_HTTP_header_fields with 1 occurrences migrated to:
  https://en.wikipedia.org/wiki/List_of_HTTP_header_fields ([https](https://en.wikipedia.org/wiki/List_of_HTTP_header_fields) result 200).
* [ ] http://en.wikipedia.org/wiki/SQL-92 with 1 occurrences migrated to:
  https://en.wikipedia.org/wiki/SQL-92 ([https](https://en.wikipedia.org/wiki/SQL-92) result 200).
* [ ] http://en.wikipedia.org/wiki/XSL_Transformations with 1 occurrences migrated to:
  https://en.wikipedia.org/wiki/XSL_Transformations ([https](https://en.wikipedia.org/wiki/XSL_Transformations) result 200).
* [ ] http://epaul.github.io/jsch-documentation/javadoc/com/jcraft/jsch/Session.html with 1 occurrences migrated to:
  https://epaul.github.io/jsch-documentation/javadoc/com/jcraft/jsch/Session.html ([https](https://epaul.github.io/jsch-documentation/javadoc/com/jcraft/jsch/Session.html) result 200).
* [ ] http://example.org with 3 occurrences migrated to:
  https://example.org ([https](https://example.org) result 200).
* [ ] http://feeds.bbci.co.uk/news/rss.xml with 1 occurrences migrated to:
  https://feeds.bbci.co.uk/news/rss.xml ([https](https://feeds.bbci.co.uk/news/rss.xml) result 200).
* [ ] http://gemfire82.docs.pivotal.io/docs-gemfire/gemfire_nativeclient/continuous-querying/continuous-querying.html with 1 occurrences migrated to:
  https://gemfire82.docs.pivotal.io/docs-gemfire/gemfire_nativeclient/continuous-querying/continuous-querying.html ([https](https://gemfire82.docs.pivotal.io/docs-gemfire/gemfire_nativeclient/continuous-querying/continuous-querying.html) result 200).
* [ ] http://geode.apache.org with 1 occurrences migrated to:
  https://geode.apache.org ([https](https://geode.apache.org) result 200).
* [ ] http://git-scm.com/ with 3 occurrences migrated to:
  https://git-scm.com/ ([https](https://git-scm.com/) result 200).
* [ ] http://gradle.org/ with 1 occurrences migrated to:
  https://gradle.org/ ([https](https://gradle.org/) result 200).
* [ ] http://hc.apache.org/httpcomponents-client-ga/ with 3 occurrences migrated to:
  https://hc.apache.org/httpcomponents-client-ga/ ([https](https://hc.apache.org/httpcomponents-client-ga/) result 200).
* [ ] http://jcp.org/en/jsr/detail?id=317 with 1 occurrences migrated to:
  https://jcp.org/en/jsr/detail?id=317 ([https](https://jcp.org/en/jsr/detail?id=317) result 200).
* [ ] http://micrometer.io with 1 occurrences migrated to:
  https://micrometer.io ([https](https://micrometer.io) result 200).
* [ ] http://micrometer.io/ with 1 occurrences migrated to:
  https://micrometer.io/ ([https](https://micrometer.io/) result 200).
* [ ] http://projects.spring.io/spring-batch/ with 1 occurrences migrated to:
  https://projects.spring.io/spring-batch/ ([https](https://projects.spring.io/spring-batch/) result 200).
* [ ] http://projects.spring.io/spring-data-mongodb/ with 1 occurrences migrated to:
  https://projects.spring.io/spring-data-mongodb/ ([https](https://projects.spring.io/spring-data-mongodb/) result 200).
* [ ] http://projects.spring.io/spring-integration/ with 3 occurrences migrated to:
  https://projects.spring.io/spring-integration/ ([https](https://projects.spring.io/spring-integration/) result 200).
* [ ] http://projects.spring.io/spring-security/ with 1 occurrences migrated to:
  https://projects.spring.io/spring-security/ ([https](https://projects.spring.io/spring-security/) result 200).
* [ ] http://projects.spring.io/spring-ws/ with 1 occurrences migrated to:
  https://projects.spring.io/spring-ws/ ([https](https://projects.spring.io/spring-ws/) result 200).
* [ ] http://redis.io/ with 2 occurrences migrated to:
  https://redis.io/ ([https](https://redis.io/) result 200).
* [ ] http://redis.io/commands with 1 occurrences migrated to:
  https://redis.io/commands ([https](https://redis.io/commands) result 200).
* [ ] http://redis.io/commands/brpop with 2 occurrences migrated to:
  https://redis.io/commands/brpop ([https](https://redis.io/commands/brpop) result 200).
* [ ] http://redis.io/commands/llen with 2 occurrences migrated to:
  https://redis.io/commands/llen ([https](https://redis.io/commands/llen) result 200).
* [ ] http://redis.io/download with 1 occurrences migrated to:
  https://redis.io/download ([https](https://redis.io/download) result 200).
* [ ] http://redis.io/topics/pubsub with 2 occurrences migrated to:
  https://redis.io/topics/pubsub ([https](https://redis.io/topics/pubsub) result 200).
* [ ] http://relaxng.org/ns/structure/1.0 with 1 occurrences migrated to:
  https://relaxng.org/ns/structure/1.0 ([https](https://relaxng.org/ns/structure/1.0) result 200).
* [ ] http://spring.io with 2 occurrences migrated to:
  https://spring.io ([https](https://spring.io) result 200).
* [ ] http://blog.springsource.com/2010/03/29/using-udp-and-tcp-adapters-in-spring-integration-2-0-m3/ (301) with 1 occurrences migrated to:
  https://spring.io/blog/2010/03/29/using-udp-and-tcp-adapters-in-spring-integration-2-0-m3/ ([https](https://blog.springsource.com/2010/03/29/using-udp-and-tcp-adapters-in-spring-integration-2-0-m3/) result 200).
* [ ] http://blog.springsource.com/2010/09/29/new-spring-integration-samples/ (301) with 1 occurrences migrated to:
  https://spring.io/blog/2010/09/29/new-spring-integration-samples/ ([https](https://blog.springsource.com/2010/09/29/new-spring-integration-samples/) result 200).
* [ ] http://stackoverflow.com/questions/32398754/how-to-connect-to-ftps-server-with-data-connection-using-same-tls-session with 1 occurrences migrated to:
  https://stackoverflow.com/questions/32398754/how-to-connect-to-ftps-server-with-data-connection-using-same-tls-session ([https](https://stackoverflow.com/questions/32398754/how-to-connect-to-ftps-server-with-data-connection-using-same-tls-session) result 200).
* [ ] http://stackoverflow.com/questions/6117254/force-oracle-to-return-top-n-rows-with-skip-locked with 1 occurrences migrated to:
  https://stackoverflow.com/questions/6117254/force-oracle-to-return-top-n-rows-with-skip-locked ([https](https://stackoverflow.com/questions/6117254/force-oracle-to-return-top-n-rows-with-skip-locked) result 200).
* [ ] http://tomcat.apache.org/ with 1 occurrences migrated to:
  https://tomcat.apache.org/ ([https](https://tomcat.apache.org/) result 200).
* [ ] http://twitter.com/business with 1 occurrences migrated to:
  https://twitter.com/business ([https](https://twitter.com/business) result 200).
* [ ] http://twitter.com/search?q=%23501pjmnotalone with 1 occurrences migrated to:
  https://twitter.com/search?q=%23501pjmnotalone ([https](https://twitter.com/search?q=%23501pjmnotalone) result 200).
* [ ] http://twitter.com/search?q=%23iloveyoubecause with 1 occurrences migrated to:
  https://twitter.com/search?q=%23iloveyoubecause ([https](https://twitter.com/search?q=%23iloveyoubecause) result 200).
* [ ] http://twitter.com/search?q=%23tweetumfilmecompassiva with 1 occurrences migrated to:
  https://twitter.com/search?q=%23tweetumfilmecompassiva ([https](https://twitter.com/search?q=%23tweetumfilmecompassiva) result 200).
* [ ] http://twitter.com/search?q=Animated+Series with 1 occurrences migrated to:
  https://twitter.com/search?q=Animated+Series ([https](https://twitter.com/search?q=Animated+Series) result 200).
* [ ] http://twitter.com/search?q=Anne+Hathaway with 1 occurrences migrated to:
  https://twitter.com/search?q=Anne+Hathaway ([https](https://twitter.com/search?q=Anne+Hathaway) result 200).
* [ ] http://twitter.com/search?q=Arin+Ilejay with 1 occurrences migrated to:
  https://twitter.com/search?q=Arin+Ilejay ([https](https://twitter.com/search?q=Arin+Ilejay) result 200).
* [ ] http://twitter.com/search?q=Bane with 1 occurrences migrated to:
  https://twitter.com/search?q=Bane ([https](https://twitter.com/search?q=Bane) result 200).
* [ ] http://twitter.com/search?q=Catwoman with 2 occurrences migrated to:
  https://twitter.com/search?q=Catwoman ([https](https://twitter.com/search?q=Catwoman) result 200).
* [ ] http://twitter.com/search?q=Coachella with 1 occurrences migrated to:
  https://twitter.com/search?q=Coachella ([https](https://twitter.com/search?q=Coachella) result 200).
* [ ] http://twitter.com/search?q=Damn+Beliebers with 2 occurrences migrated to:
  https://twitter.com/search?q=Damn+Beliebers ([https](https://twitter.com/search?q=Damn+Beliebers) result 200).
* [ ] http://twitter.com/search?q=Edgar+Allan+Poe with 1 occurrences migrated to:
  https://twitter.com/search?q=Edgar+Allan+Poe ([https](https://twitter.com/search?q=Edgar+Allan+Poe) result 200).
* [ ] http://twitter.com/search?q=English with 1 occurrences migrated to:
  https://twitter.com/search?q=English ([https](https://twitter.com/search?q=English) result 200).
* [ ] http://twitter.com/search?q=Farmac%C3%AAutico with 1 occurrences migrated to:
  https://twitter.com/search?q=Farmac%C3%AAutico ([https](https://twitter.com/search?q=Farmac%C3%AAutico) result 200).
* [ ] http://twitter.com/search?q=First+Class with 1 occurrences migrated to:
  https://twitter.com/search?q=First+Class ([https](https://twitter.com/search?q=First+Class) result 200).
* [ ] http://twitter.com/search?q=Friday with 1 occurrences migrated to:
  https://twitter.com/search?q=Friday ([https](https://twitter.com/search?q=Friday) result 200).
* [ ] http://twitter.com/search?q=Giuliano with 1 occurrences migrated to:
  https://twitter.com/search?q=Giuliano ([https](https://twitter.com/search?q=Giuliano) result 200).
* [ ] http://twitter.com/search?q=JBisJonasBrothers with 2 occurrences migrated to:
  https://twitter.com/search?q=JBisJonasBrothers ([https](https://twitter.com/search?q=JBisJonasBrothers) result 200).
* [ ] http://twitter.com/search?q=Janis+Joplin with 1 occurrences migrated to:
  https://twitter.com/search?q=Janis+Joplin ([https](https://twitter.com/search?q=Janis+Joplin) result 200).
* [ ] http://twitter.com/search?q=Modern+Family with 1 occurrences migrated to:
  https://twitter.com/search?q=Modern+Family ([https](https://twitter.com/search?q=Modern+Family) result 200).
* [ ] http://twitter.com/search?q=Obamacare with 1 occurrences migrated to:
  https://twitter.com/search?q=Obamacare ([https](https://twitter.com/search?q=Obamacare) result 200).
* [ ] http://twitter.com/search?q=Passiva with 1 occurrences migrated to:
  https://twitter.com/search?q=Passiva ([https](https://twitter.com/search?q=Passiva) result 200).
* [ ] http://twitter.com/search?q=Rise+%26+Grind with 2 occurrences migrated to:
  https://twitter.com/search?q=Rise+%26+Grind ([https](https://twitter.com/search?q=Rise+%26+Grind) result 200).
* [ ] http://twitter.com/search?q=Rivaldo with 1 occurrences migrated to:
  https://twitter.com/search?q=Rivaldo ([https](https://twitter.com/search?q=Rivaldo) result 200).
* [ ] http://twitter.com/search?q=Seoul+Music+Awards with 2 occurrences migrated to:
  https://twitter.com/search?q=Seoul+Music+Awards ([https](https://twitter.com/search?q=Seoul+Music+Awards) result 200).
* [ ] http://twitter.com/search?q=Steven+Tyler with 1 occurrences migrated to:
  https://twitter.com/search?q=Steven+Tyler ([https](https://twitter.com/search?q=Steven+Tyler) result 200).
* [ ] http://twitter.com/search?q=Tom+Hardy with 1 occurrences migrated to:
  https://twitter.com/search?q=Tom+Hardy ([https](https://twitter.com/search?q=Tom+Hardy) result 200).
* [ ] http://www.amqp.org/ with 1 occurrences migrated to:
  https://www.amqp.org/ ([https](https://www.amqp.org/) result 200).
* [ ] http://www.eclipse.org/jetty/ with 1 occurrences migrated to:
  https://www.eclipse.org/jetty/ ([https](https://www.eclipse.org/jetty/) result 200).
* [ ] http://www.eclipse.org/paho/ with 1 occurrences migrated to:
  https://www.eclipse.org/paho/ ([https](https://www.eclipse.org/paho/) result 200).
* [ ] http://www.ejabberd.im with 1 occurrences migrated to:
  https://www.ejabberd.im ([https](https://www.ejabberd.im) result 200).
* [ ] http://www.eaipatterns.com (302) with 8 occurrences migrated to:
  https://www.enterpriseintegrationpatterns.com/ ([https](https://www.eaipatterns.com) result 200).
* [ ] http://www.eaipatterns.com/ (302) with 2 occurrences migrated to:
  https://www.enterpriseintegrationpatterns.com/ ([https](https://www.eaipatterns.com/) result 200).
* [ ] http://www.enterpriseintegrationpatterns.com/docs/TestDrivenEAI.pdf with 1 occurrences migrated to:
  https://www.enterpriseintegrationpatterns.com/docs/TestDrivenEAI.pdf ([https](https://www.enterpriseintegrationpatterns.com/docs/TestDrivenEAI.pdf) result 200).
* [ ] http://www.enterpriseintegrationpatterns.com/patterns/messaging/CorrelationIdentifier.html with 1 occurrences migrated to:
  https://www.enterpriseintegrationpatterns.com/patterns/messaging/CorrelationIdentifier.html ([https](https://www.enterpriseintegrationpatterns.com/patterns/messaging/CorrelationIdentifier.html) result 200).
* [ ] http://www.eaipatterns.com/ramblings.html (302) with 1 occurrences migrated to:
  https://www.enterpriseintegrationpatterns.com/ramblings.html ([https](https://www.eaipatterns.com/ramblings.html) result 200).
* [ ] http://www.example.org with 3 occurrences migrated to:
  https://www.example.org ([https](https://www.example.org) result 200).
* [ ] http://www.h2database.com/ with 1 occurrences migrated to:
  https://www.h2database.com/ ([https](https://www.h2database.com/) result 200).
* [ ] http://www.ietf.org/rfc/rfc2396.txt with 1 occurrences migrated to:
  https://www.ietf.org/rfc/rfc2396.txt ([https](https://www.ietf.org/rfc/rfc2396.txt) result 200).
* [ ] http://www.igniterealtime.org/projects/openfire/ with 1 occurrences migrated to:
  https://www.igniterealtime.org/projects/openfire/ ([https](https://www.igniterealtime.org/projects/openfire/) result 200).
* [ ] http://www.igniterealtime.org/projects/smack/ with 1 occurrences migrated to:
  https://www.igniterealtime.org/projects/smack/ ([https](https://www.igniterealtime.org/projects/smack/) result 200).
* [ ] http://www.jcp.org/en/jsr/detail?id=223 with 1 occurrences migrated to:
  https://www.jcp.org/en/jsr/detail?id=223 ([https](https://www.jcp.org/en/jsr/detail?id=223) result 200).
* [ ] http://www.oracle.com/technetwork/java/javase/downloads/index.html with 1 occurrences migrated to:
  https://www.oracle.com/technetwork/java/javase/downloads/index.html ([https](https://www.oracle.com/technetwork/java/javase/downloads/index.html) result 200).
* [ ] http://www.rabbitmq.com/ with 1 occurrences migrated to:
  https://www.rabbitmq.com/ ([https](https://www.rabbitmq.com/) result 200).
* [ ] http://www.sonarsource.org/ (301) with 1 occurrences migrated to:
  https://www.sonarqube.org/ ([https](https://www.sonarsource.org/) result 200).
* [ ] http://www.springframework.org/schema/beans/spring-beans.xsd with 51 occurrences migrated to:
  https://www.springframework.org/schema/beans/spring-beans.xsd ([https](https://www.springframework.org/schema/beans/spring-beans.xsd) result 200).
* [ ] http://www.springframework.org/schema/context/spring-context.xsd with 1 occurrences migrated to:
2019-03-26 14:06:50 -04:00
Artem Bilan
afa8753239 URL Cleanup
This commit updates URLs to prefer the https protocol.
Redirects are not followed to avoid accidentally expanding intentionally
shortened URLs (i.e. if using a URL shortener).

# Fixed URLs

## Fixed Success
These URLs were switched to an https URL with a 2xx status.
While the status was successful, your review is still recommended.

* [ ] http://www.apache.org/licenses/ with 1 occurrences migrated to:
  https://www.apache.org/licenses/ ([https](https://www.apache.org/licenses/) result 200).
* [ ] http://www.apache.org/licenses/LICENSE-2.0 with 2638 occurrences migrated to:
  https://www.apache.org/licenses/LICENSE-2.0 ([https](https://www.apache.org/licenses/LICENSE-2.0) result 200).
2019-03-22 12:21:42 -04:00
Gary Russell
2766707547 Sonar fixes
- remaining hidden fields

* Fix copyright
2019-01-09 13:30:08 -05:00
Gary Russell
e8df546b04 Sonar Fixes - Javadoc-only imports 2019-01-02 12:26:22 -05:00
Gary Russell
113a371f2c Remove Exception from IOS.onInit() 2018-12-22 17:25:56 -05:00
Artem Bilan
93d7c58b64 Enable ModifierOrderCheck Checkstyle rule (#2673)
* Enable ModifierOrderCheck Checkstyle rule

* Fix violations for `static` and `abstract` modifier
* Remove redundant code in the `TcpNioConnection`
* Mark `connectionFactoryName` as `@Nullable` in the `TcpConnectionSupport`
ctor and its inheritors
* Fix some smells according IDEA suggestions in the affected classes
* This should fix some Sonar smells as well

* * Fix `HeaderMapperTests`

* * Polishing `TcpConnection` code style and fix Javdocs
2018-12-20 19:19:47 -05:00
Gary Russell
a01d09f0f1 Sonar Fixes
Final critical smells.
2018-12-20 11:58:32 -05:00
Gary Russell
e8bd31cc37 Sonar fixes
Critical smells `0.s.i.r*`

* Polishing - PR Comments.
2018-12-19 09:47:57 -05:00
Artem Bilan
89fdb938de Increase expire period for testExpireTwoRegistries
https://build.spring.io/browse/INT-MASTER-1313/

**Cherry-pick to 5.0.x**
2018-12-14 11:52:21 -05:00
Artem Bilan
c5f29fc6ef RedisLock: Throw exception from unlock on expire (#2661)
* RedisLock: Throw exception from unlock on expire

The lock might be expired in target Redis store in between `lock()` and
`unlock()`.
So, throw an `IllegalStateException` when lock is expired during
unlocking.
At the same time the lock lock is unlocked anyway.

**Cherry-pick to 5.0.x**

* * Create a new test for exception
* Add more info into the exception
2018-12-14 11:38:38 -05:00
Gary Russell
433ef4c4aa Address Sonar reports for recent commits 2018-11-08 13:08:53 -05:00
Artem Bilan
1e66b6b55d Redis Sonar fixes 2018-10-26 14:16:26 -04:00
Gary Russell
23a3462d8b Add @NonNullApi where appropriate
Packages with `@Nullable` annotations need to have `@NonNulApi` at the package level.

There may be classes in these packages that have nullable arguments/returns that are
not currently marked as `@Nullable`. These will be fixed over time.

Also suppress JSR305 warnings when compiling tests.

* Polishing - PR Comments
2018-08-01 16:53:42 -04:00
Artem Bilan
3ab037f1eb Fix RedisUtils to detect UNLINK per RedisOps
This might be a fact that application doesn't use a single
`RedisOperations`.
Also the same JVM may be shared between several applications with
different connections to different Redis servers

* change plain `Boolean unlinkAvailable` property to the
`Map<RedisOperations<?, ?>, Boolean>` and `computeIfAbsent()` per
provided `RedisOperations`
2018-07-26 14:36:33 -04:00
Artem Bilan
88c7646ed9 INT-4507: Use UNLINK in RedisMessageStore if any
JIRA: https://jira.spring.io/browse/INT-4507

* Add `RedisUtils` with the `isUnlinkAvailable()` to check the Redis
server version to be sure that `UNLINK` is available or not
* Use `RedisUtils.isUnlinkAvailable()` in the `RedisMessageStore` and
`RedisLockRegistry` when a removal functionality is performed
* Add `AbstractKeyValueMessageStore.doRemoveAll(Collection<Object> ids)`
for optimization
* Implement `doRemoveAll()` in the `RedisMessageStore` and
`GemfireMessageStore`

**Cherry-pick to 5.0.x**
2018-07-25 16:30:03 -04:00
Artem Bilan
0d0605be78 INT-4381: MessageSources refactoring (#2517)
* INT-4381: MessageSources refactoring

JIRA: https://jira.spring.io/browse/INT-4381

* Make all the out-of-the-box `MessageSource` implementations based
on the `AbstractMessageSource`
* Fix `JdbcPollingChannelAdapterIntegrationTests` for sporadic failure
because of `fixed-rate` for the poller

* Fix HeaderEnricherTests race condition

The `errorChannel()` expect an error in the `testErrorChannel` after
`1000` ms, but at the same time the `poller` in configured for the
`3000` ms.

* Increase all the timeouts for replies
* Decrease a `fixed-delay` on the `poller`
* Some other code style polishing for the `HeaderEnricherTests`
2018-07-25 13:01:22 -04:00
Artem Bilan
a1f016a94c INT-4498: StreamUtils -> FileCopyUtils
JIRA: https://jira.spring.io/browse/INT-4498

* Use `FileCopyUtils` instead of `StreamUtils` in test-cases when we deal
with `InputStream` s and files resources.
* Fix reflection-based tests with AOP to use an `ArrayList` access
instead of `LinkedList` since an optimization in SF:
6d6aa72e8f

**Cherry-pick to 5.0.x and 4.3.x**
2018-07-09 13:39:56 -04:00
Artem Bilan
5a362b62ff Destroy RmiInboundGateway.RmiServiceExporter (#2481)
* Destroy RmiInboundGateway.RmiServiceExporter

The internal instance `RmiServiceExporter` of the `RmiInboundGateway`
has to be destroyed together with the outer instance to unbind `service`
from the RMI registry

* Perform some polishing for the `RmiInboundGateway` and optimize
a `AbstractInboundGatewayParser` for late channels binding

* * Polishing some tests
* Expose getters for channels on the `MessagingGatewaySupport`
* Fix RMI tests to use random port
2018-06-15 08:40:11 -04:00
Artem Bilan
85bc183849 INT-4486: Properly implement stop(Runnable)
JIRA: https://jira.spring.io/browse/INT-4486

The `SmartLifecycle.stop(Runnable callback)` must always call the
`callback` in the end independently of the internal state

* Revise all the `SmartLifecycle` implementations for the proper
`callback` handling

**Cherry-pick to 5.0.x and 4.3.x**
2018-06-11 17:51:20 -04:00
Artem Bilan
c9faf3c8ce Fix LockRegLeaderIn for interrupted Thread.sleep (#2455)
* Fix LockRegLeaderIn for interrupted Thread.sleep

https://build.spring.io/browse/INT-FATS5IC-517

If current thread is interrupted, the `Thread.sleep()` interrupts
immediately.
In the catch block of the main loop in the `LockRegistryLeaderInitiator`
we have such a dangerous `sleep()` and don't restart election in this
candidate any more

* Move `Thread.sleep()` to else after checking the current thread for
interrupted state
* Remove `LongRunningIntegrationTest` rule from the
`RedisLockRegistryLeaderInitiatorTests` since it now works much faster
after proper `busy-wait` handling

**Cherry-pick to master**

* Ignore interruption on the sleep i catch and move on with loop
2018-05-30 15:23:26 -04:00
Artem Bilan
59d6c279a4 Fix RedisLockLeaderInitiatorTests timing barrier
https://build.spring.io/browse/INT-FATS5IC-509

Looks like `busyWait` period as `5 secs` is too aggressive and may be
two or more cycles pass until the election happens.
At this time the waiting for the `granted` latch in `10 secs`
may expire already, therefore we fail in the assertion

* Decrease `busyWait` to the `1 secs` to let the election cycle to pass
quickly
* Increase latch wait time to the `20 secs`

**Cherry-pick to 5.0.x**
2018-05-16 13:08:43 -04:00
Artem Bilan
081d0d160b Fix one more race condition in RedisLeaderTests
https://build.spring.io/browse/INT-SI50X-JOB1-56

We can't wait for the latch in the interruptable code flow;
we can't have a round-robing election guarantees.

* Add `Thread.sleep(LockRegistryLeaderInitiator.this.busyWaitMillis)`
to the `LockRegistryLeaderInitiator` when we restart the main task
* Remove latches waiting and thread shifting from the
`RedisLockRegistryLeaderInitiatorTests`
* Use long `busyWaitMillis` for yielding initiator to let the second
candidate to be elected

**Cherry-pick to 5.0.x**
2018-05-08 19:02:14 -04:00
Artem Bilan
51c49519dc Fix RedisLockRegLeaderInitTests race condition
https://build.spring.io/browse/INT-FATS5IC-501/

When we try to wait for the `Latch` in the interruptable code flow,
it is a fact that we step away from the waiting and end up with the
race condition downstream.

* Wrap `Latch` in the interruptable `publishOnRevoked()` code to the
`Executor.execute()`
* Remove `deleteTimeoutMillis` option from the `RedisLockRegistry`
since it doesn't make sense in the interruptable code.
* Add `RedisLockRegistry.setExecutor()` to allow to inject an external
`Executor`
* Add more debug logging into the `LockRegistryLeaderInitiator`

**Cherry-pick to 5.0.x**
2018-05-08 16:17:58 -04:00
Artem Bilan
b8d4e6b0de Use Lettuce Redis client; Redis module fixes (#2435)
* Use Lettuce Redis client; Redis module fixes

The Lettuce client is based on the Netty and more stable, than Jedis
therefore we get a performance improvement for tests
(it saves us at about 30 seconds).
Also this client doesn't fail for me on Windows sporadically (very often)
 with the `ConnectionClosedException`

* After switching to the Netty-based client, we expose the interrupted
Thread issue in the `LockRegistryLeaderInitiator`.
If we interrupted (expected behavior), we try to unlock calling
`RedisLockRegistry`, but Netty client reject our request because the
thread is interrupted, therefore we never delete the lock when we yield
our leadership.
Fix the issue with shifting a `RedisTemplate.delete()` operation to the
`ExecutorService` when the current thread is interrupted
* Allow to configure such an `ExecutorService` and timeout to wait for
the `submit()` result
* Refactor `RedisAvailableRule` and all the Redis tests do not expose
the target `RedisConnectionFactory` implementation.
* Make all the test-cases based on the `connectionFactory` created by
the `RedisAvailableTests.setupConnectionFactory()`
* Tweak some unnecessary timeouts and sleeps for better tests task
throughput

* Add a `Log4j2LevelAdjuster` into the `RedisLockRegistryLeaderInitiatorTests`
2018-05-04 14:13:51 -04:00
Artem Bilan
027021d6e4 Move XSDs to version 5.1
* Upgrade to Spring AMQP-2.1 and fix compatibility
2018-03-17 09:58:40 -04:00
Gary Russell
82f252dd00 INT-4390: Fix tangles
JIRA: https://jira.spring.io/browse/INT-4390

Phase I: flow context/registration cycle

- extract interfaces
- rename implementations to `Standard...`

Phase II - dsl<->dsl.channel tangles

Move the channel specs to dsl.

Fix missing refactorings

(Not related to DSL) - rename core `event` package to `events`

- avoid collision with event module package
- fix tangle caused by `MessageGroupExpiredEvent`.

Phase III - dsl<->config.dsl

- move classes from config.dsl to dsl

(Not related to DSL) - fix many tangles caused by graph being a sub-package of support.management
 - make `graph` a top-level package

(Not related to DSL) - move `IntegrationManagementConfigurer` from
`management` to `config` - tangle between core and management
* Polishing Copyrights, diamonds, some JavaDocs and What's New
2018-03-16 14:59:47 -04:00
Gary Russell
525eb004ec Update Master to 5.1.0.BUILD-SNAPSHOT
`JedisConnection.execute()` no longer accepts `null` arguments.

8adea79e67

* Spring Security 5.1; Reactor 3.2
2018-03-12 21:13:32 -04:00
Artem Bilan
e46fc9b738 INT-4407: Add merge option to Log4j2LevelAdjuster
JIRA: https://jira.spring.io/browse/INT-4407

To make a `Log4j2LevelAdjuster` more builder friendly, add a `merge`
option to the overloaded `classes()` and `categories()` methods.
This way the existing (or previously configured) `categories` and
`classes` are merged with the provided values and default
`org.springframework.integration` category can be reuse.

Note: this behavior can be reconsidered as default one in the `5.1`
2018-02-20 15:05:46 -05:00
Artem Bilan
23687e438c Clean Redis keys before testing
https://build.spring.io/browse/INT-FATS5IC-400

When we run several concurrent builds (e.g. CI) and use the same shared
Redis server we may end up with the case when one process reads data
populated by another because we use the same key (groupId in our case)

* Fix `RedisMessageGroupStoreTests` to use `UUID.randomUUID()`
for the `groupId`

**Cherry-pick to 4.3.x**
2018-01-30 10:33:56 -05:00
Artem Bilan
30450c48be INT-4376: Upgage to Log4J 2 (#2321)
* INT-4376: Upgage to Log4J 2

JIRA: https://jira.spring.io/browse/INT-4376

* Deprecate Log4J 1.x components in favor of newly added
a `Log4j2LevelAdjuster` JUnit `@Rule`
* Update all the logging configuration to Log4J 2

* Polishing after testing
2018-01-11 10:59:55 -05:00
Artem Bilan
7ca20e53f7 GH-2268: Add RedisHeaders.MESSAGE_SOURCE header
Resolves: /spring-projects/spring-integration#2268

* To indicate the source the Redis message in the `RedisInboundChannelAdapter`
populate the `RedisHeaders.MESSAGE_SOURCE` header to the messages to produce
* Fix the `SimpleMessageConverter` to populate the provided `MessageHeaders`
to the message to produce

* Add `toMessage(T object, @Nullable Map<String, Object> headers)`
to the `InboundMessageMapper` to propagate additional header
to the message to create
* Rework all the out-of-the-box `InboundMessageMapper` implementations
to properly propagate additional headers via `toMessage()`
from the `SimpleMessageConverter`
* Provide optimizations in the `InboundMessageMapper` implementations
do not re-create messages
* Refactor `MutableMessage.toString()` to align with the `GenericMessage`

* Add more `@Nullable` to method arguments
* Increase latch wait timeout in the `EndpointParserTests`
* Address `redis.adoc` PR comment
2017-11-15 11:06:18 -05:00
Artem Bilan
a61327766e GH-2207: Clarify RedisMetadataStore in cluster
Resolves: spring-projects/spring-integration#2207

* Since the `WATCH` command isn't supported on clustered connections,
the `RedisMetadataStore.replace()` operation can't be used there.
Document this limitation
2017-11-10 11:37:47 -05:00
Artem Bilan
bc4337ffa8 GH-2071: Upgrade to S-WS-3.0 and Smack-4.2.1
Fixes: spring-projects/spring-integration#2071

* Clean up `build.gradle` for redundant excludes
* Add `javax.mail` dependency to WS module to avoid WARN about missed providers
* Refactoring for the XMPP module according changes in the latest Smack
* Polishing for the `BackToBackAdapterTests` to avoid extra wait for `null`
on the channel and some race conditions when client is closed during by the
`stop()` during publishing

Polishing `UriVariableTests` according the latest S-WS B-S

Revert excludes removal
2017-10-16 16:25:01 -04:00
Artem Bilan
1f88e2de7b INT-4354: Add beanClassLoader support to RedisMS
JIRA: https://jira.spring.io/browse/INT-4354

It's hard to test different ClassLoader in unit tests, so the fix
comes without them

**Cherry-pick to 4.3.x**
2017-10-16 16:10:32 -04:00
Glenn Renfro
1979f91cf5 INT-4357: LeaderInit: Add failed to lock event
JIRA: https://jira.spring.io/browse/INT-4357

Updated based on code review.

Updated adocs

*Polishing code style, typos
* Add protection from NPE when `LockRegistryLeaderInitiator` isn't
supplied with the `leaderEventPublisher`
* Add `What's New` note
2017-10-13 13:15:12 -04:00
Venil Noronha
a65de25572 INT-4343: Add executor option to the RedisInChA
JIRA: https://jira.springsource.org/browse/INT-4343

* Add a `Executor` setter named `setTaskExecutor` in
`RedisInboundChannelAdapter` to set the container's task executor.

* Add a `task-executor` attribute to
`<int-redis:inbound-channel-adapter>`.

* Update RedisInboundChannelAdapterParser configuration validation
tests.

* Update redis.adoc and whats-new.adoc.

* Polishing according PR comments
* Improve `RedisQueueGatewayIntegrationTests` performance
2017-09-19 18:18:30 -04:00
Artem Bilan
5263ea6dff INT-4123: Add Prefix to the Key-Value MSs
Fixes spring-projects/spring-integration#2213
JIRA: https://jira.spring.io/browse/INT-4123

Fully different `MessageStore`s can be configured for the same shared
Key-Value data-base.
Since the retrieval logic is based on the keys, that may cause the
unexpected messages expiration via `MessageGroupStoreReaper`.

* To distinguish store instances on the shared store add `prefix`
option to the `AbstractKeyValueMessageStore`

* Deprecate the `GemfireMessageStore` `Cache`-based configuration - `setIgnoreJta()` and `afterPropertiesSet()`.
The `GemfireMessageStore` relies only on an externally configured `Region`.

**Cherry-pick to 4.3.x**

Doc Polishing
2017-09-11 14:24:33 -04:00
Matthias Jeschke
b9c8a8edf8 INT-4341: RedisQueueIn: support receiveTimeout=0
JIRA: https://jira.spring.io/browse/INT-4341
Fixes spring-projects/spring-integration#2228

Add to the `RedisQueueInboundGateway` and `RedisQueueMessageDrivenEndpoint`support
for the `receiveTimeout` of 0 and block indefinitely

Added some simple tests to check if the receive timeout can be set to 0

**Cherry-pick to 4.3.x**
2017-09-06 17:55:06 -04:00
Artem Bilan
2fe7289429 Redis DelayerHRescheduleIntTests: unique groupId
https://build.spring.io/browse/INT-AT42SIO-595/

To avoid clashes with other parallel builds on CI for different versions
on the same shared Redis make a testing `groupId` as unique using
`UUID.randomUUID()`

**Cherry-pick to 4.3.x & 4.2.x**
2017-08-07 12:21:20 -04:00
Artem Bilan
4663862ea6 Resolve deprecations since the latest SF 2017-07-11 11:52:11 -04:00
Artem Bilan
d766d233f5 Fix ReactiveStreamsConsumerTests and Checkstyle
Also increase timeouts in the `RedisAvailableRule`
2017-06-21 12:12:49 -04:00
Artem Bilan
99224f54c0 INT-4290: JacksonJsonUtils: Add Trusted Packages
JIRA: https://jira.spring.io/browse/INT-4290

See CVE-2017-4995

To disallow deserialization of unknown classes,
the `JacksonJsonUtils#messagingAwareMapper()` can now be supplied
with the `trustedPackages`.
The default list is:
```
java.util
java.lang
org.springframework.messaging.support
org.springframework.integration.support
org.springframework.integration.message
org.springframework.integration.store
```
Can be configured with `*` (asterisk) with meaning trust all

**Cherry-pick to 4.3.x**

Polishing according PR comments
2017-06-14 12:35:32 -04:00
Artem Bilan
9c7c6dccfc Adapt to the latest Spring Data Redis 2017-06-08 17:06:28 -04:00
Artem Bilan
94e5271a57 Increase timeouts for RedisQueueMDrEndpointTests
https://build.spring.io/browse/INT-MJATS41-999/

**Cherry-pick to 4.3.x**
2017-05-23 09:45:52 -04:00
Artem Bilan
7e919a4017 INT-4267: Add JSON (De)Serializers for Messaging
JIRA: https://jira.spring.io/browse/INT-4267
Fixes: spring-projects/spring-integration#2110

The documentation clearly point that we can simply use JSON (de)serialization
with the `RedisMessageStore`, but actually it isn't so easy

* Fix `MessageGroupMetadata`, `MessageHolder`, `MessageMetadata` for Jackson
deserialization compatibility
* Add `MessageHeaders`-based ctor to the `AdviceMessage`
* Add `MessageHeadersJacksonSerializer` to serialize `MessageHeaders`
to the `HashMap` for easier deserialization afterwards
* Add deserializer implementations for all `Message` types
* Add convenient `JsonObjectMapperProvider#jacksonMessageAwareMapper()`
factory method to build `ObjectMapper` supplied with mentioned above
(de)serializers

**Cherry-pick to 4.3.10 without `MessageHolder` and `MessageMetadata`**

Address PR comments and document the feature

Doc Polishing
2017-05-10 10:31:46 -04:00
Artem Bilan
47433754b8 INT-4258: Redis: Make ZADD INCR False by Default
JIRA: https://jira.spring.io/browse/INT-4258

Since Redis `ZADD` command doesn't perform incrementation by default,
it should be consistent in the `RedisStoreWritingMessageHandler` as well

* Make a default behavior of the `RedisStoreWritingMessageHandler`
regarding `INCR` option as `false`
* Provide some performance refactoring for the
`RedisStoreWritingMessageHandler`  moving the code to Java 8 style
and using `FunctionExpression`
* Fix tests according to the changed default behavior

* Add `setZsetIncrementExpression` and String-based setters for other
expressions on the `RedisStoreWritingMessageHandler`
* Add `zset-increment-expression` option for XML configuration
* Add `What's New` note on the matter

Polishing
2017-05-08 14:43:43 -04:00
Vedran Pavic
1dc3726e7d Make LockRegistry#obtain Java 8 based
This commit harmonizes `LockRegistry#obtain` logic in Zookeeper and JDBC
implementations with Redis implementation
by using Java 8 `ConcurrentMap#computeIfAbsent`

* Remove `synchronized (this.locks)` from the `expireUnusedOlderThan`
implementations because `iterator()` is thread-safe from `ConcurrentHashMap`
* Fix deprecation in the `IntegrationGraphControllerRegistrar`
* Revert Spring Security version to `4.2.2`, since `5.0 B-S` is broken
2017-04-21 20:00:34 -04:00