Sebastien Deleuze
d6e3394b81
Polishing
...
See gh-23219
2019-07-16 19:23:21 +02:00
Sam Brannen
b2b79ae1e6
Polish contribution
...
See gh-23219
2019-07-16 14:57:32 +02:00
Rossen Stoyanchev
1ff29b0f6b
Merge branch '5.1.x'
2019-07-15 11:34:35 +01:00
Rossen Stoyanchev
99c4a9eeba
Filtering for nested ERROR dispatch
...
OncePerRequestFilter now has a doFilter method that allows separate
processing of nested ERROR dispatches. This is useful for filters
that wrap the request and response.
Closes gh-23196
2019-07-15 11:23:12 +01:00
Rossen Stoyanchev
2eba010c1b
Merge branch '5.1.x'
2019-07-13 11:00:57 +01:00
Rossen Stoyanchev
235858e4e5
Exposes supported mime types in Jaxb2Decoder
...
Closes gh-23278
2019-07-13 11:00:43 +01:00
Rob Winch
fde92793b5
Fix http URLs
...
See gh-22839
2019-07-11 18:14:20 +02:00
Stephane Nicoll
4a5063f4c0
Merge branch '5.1.x'
2019-07-11 09:55:13 +02:00
桂坤
81eb911c09
Fix typo in UrlPathHelper
...
See gh-23274
2019-07-11 09:54:03 +02:00
Сергей Цыпанов
1728bf17fc
Avoid unnecessary boxing where primitives can be used
...
Closes gh-23267
2019-07-10 16:51:18 +02:00
Arjen Poutsma
2909de8829
Remove ServerWebExchange::getParts and ServerRequest::parts
...
Revert to state before DefaultMultipartMessageReader
2019-07-10 16:20:20 +02:00
Arjen Poutsma
77c24aac2f
Remove DefaultMultipartMessageReader
...
The DefaultMultipartMessageReader has been removed for 5.2 and will be
part of a future release. This commit switches back to the
SynchronossPartHttpMessageReader.
gh-21659
2019-07-10 16:00:11 +02:00
Rossen Stoyanchev
c199cb9054
@ConnectMapping for RSocket handling
...
The new annotation helps to differentiate the handling of connection
level frames (SETUP and METADATA_PUSH) from the 4 stream requests.
Closes gh-23177
2019-07-08 17:04:23 +01:00
Sebastien Deleuze
2b4d6ce354
Add body methods with Object parameter to WebFlux
...
The commit deprecates syncBody(Object) in favor of body(Object)
which has the same behavior in ServerResponse, WebClient and
WebTestClient. It also adds body(Object, Class) and
body(Object, ParameterizedTypeReference) methods in order to support
any reactive type that can be adapted to a Publisher via
ReactiveAdapterRegistry. Related BodyInserters#fromProducer
methods are provided as well.
Shadowed Kotlin body<T>() extensions are deprecated in favor of
bodyWithType<T>() ones, including dedicated Publisher<T> and
Flow<T> variants. Coroutines extensions are adapted as well, and
body(Object) can now be used with suspending functions.
Closes gh-23212
2019-07-07 22:27:57 +02:00
Sam Brannen
0fbc9bf461
Fix broken Javadoc links
2019-07-07 19:50:34 +02:00
Sam Brannen
575027af24
Polishing
2019-07-07 16:34:15 +02:00
Sam Brannen
fae75cb238
Polish contribution
...
See gh-23237
2019-07-07 16:29:03 +02:00
Johnny Lim
6dcf390fa2
Rename PathPatternRouteMatcherTest to PathPatternRouteMatcherTests
...
Closes gh-23239
2019-07-07 16:28:09 +02:00
Сергей Цыпанов
9f81ffa5ae
Use StringJoiner where possible to simplify String joining
...
Closes gh-23237
2019-07-07 16:19:01 +02:00
Sam Brannen
8f5b2b2231
Merge branch '5.1.x'
2019-07-07 14:49:34 +02:00
Sam Brannen
efab6eb55d
Ignore empty entries when parsing MediaTypes and MimeTypes
...
Prior to Spring Framework 5.1.3, MimeTypeUtils.parseMimeTypes() and
MediaType.parseMediaTypes() ignored empty entries, but 5.1.3 introduced
a regression in that an empty entry -- for example, due to a trailing
comma in the list of media types in an HTTP Accept header -- would result
in a "406 Not Acceptable" response status.
This commit fixes this by filtering out empty entries before parsing
them into MimeType and MediaType instances. Empty entries are therefore
effectively ignored.
Fixes gh-23241
2019-07-07 12:39:46 +02:00
Rossen Stoyanchev
fbb72eff2e
Polish
2019-07-05 09:02:24 +01:00
Dmytro Nosan
ea10ee5265
queryParam and replaceParam with List
...
See gh-23114
2019-07-05 09:02:24 +01:00
Phillip Webb
932f771380
Improve performance of FormContentFilter
...
Improve the performance of `FormContentFilter` by checking directly if
`contentType` is empty. This saves the need for an exception to thrown
then immediately caught.
Closes gh-23216
2019-06-29 22:31:11 -07:00
Sam Brannen
896496341a
Add explicit support for multipart/mixed in FormHttpMessageConverter
...
Commit 5008423408
added support for
multipart/* media types in FormHttpMessageConverter, but users still had
to manually register multipart/mixed as a supported media type in order
to POST multipart data with that content type.
This commit removes the need to manually register multipart/mixed as a
supported media type by registering it automatically in
FormHttpMessageConverter. In addition, this commit introduces
MULTIPART_MIXED and MULTIPART_MIXED_VALUE constants in MediaType.
Closes gh-23209
2019-06-29 11:41:15 +03:00
Sam Brannen
75d1428e24
Polishing
2019-06-29 11:41:15 +03:00
Sam Brannen
3e41f5e6b6
Cache the encoded credentials in BasicAuthenticationInterceptor
...
Prior to this commit, the Basic Authentication credentials were encoded
for each request.
This commit addresses this minor performance issue by caching the
encoded credentials in BasicAuthenticationInterceptor.
In addition, this commit introduces new encodeBasicAuth() and
setBasicAuth(String encodedCredentials) methods in HttpHeaders to
support this feature.
Closes gh-23204
2019-06-28 18:48:59 +03:00
Sam Brannen
5008423408
Support multipart/* MediaTypes in RestTemplate
...
Prior to this commit, RestTemplate posted multipart with Content-Type
"multipart/form-data" even if the FormHttpMessageConverter configured
in the RestTemplate had been configured to support additional multipart
subtypes. This made it impossible to POST form data using a content
type such as "multipart/mixed" or "multipart/related".
This commit addresses this issue by updating FormHttpMessageConverter
to support custom multipart subtypes for writing form data.
For example, the following use case is now supported.
MediaType multipartMixed = new MediaType("multipart", "mixed");
restTemplate.getMessageConverters().stream()
.filter(FormHttpMessageConverter.class::isInstance)
.map(FormHttpMessageConverter.class::cast)
.findFirst()
.orElseThrow(() ->
new IllegalStateException("Failed to find FormHttpMessageConverter"))
.addSupportedMediaTypes(multipartMixed);
MultiValueMap<String, Object> parts = new LinkedMultiValueMap<>();
parts.add("field 1", "value 1");
parts.add("file", new ClassPathResource("myFile.jpg"));
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setContentType(multipartMixed);
HttpEntity<MultiValueMap<String, Object>> requestEntity =
new HttpEntity<>(parts, requestHeaders);
restTemplate.postForLocation("https://example.com/myFileUpload ", requestEntity);
Closes gh-23159
2019-06-28 17:13:18 +03:00
Sam Brannen
7bc727c895
Convert addSupportedMediaType() to var-args in FormHttpMessageConverter
...
This commit changes the new addSupportedMediaType(MediaType) method
to addSupportedMediaTypes(MediaType...), in order to allow registration
of multiple supported media types simultaneously.
See gh-23203
2019-06-27 16:55:03 +03:00
Sam Brannen
1ef60f2d3b
Polishing
2019-06-27 16:05:38 +03:00
Sam Brannen
91ae711a54
Fix Javadoc for MediaType
2019-06-27 16:05:38 +03:00
Sam Brannen
4e7d8a8873
Introduce addSupportedMediaType() in FormHttpMessageConverter
...
Closes gh-23203
2019-06-27 16:05:38 +03:00
Sam Brannen
8e1cb9a059
Improve diagnostics for all server failures in RestTemplateIntegrationTests
2019-06-27 14:16:19 +03:00
Sam Brannen
d522e9835f
Polish AbstractMockWebServerTestCase
2019-06-27 13:45:32 +03:00
Sam Brannen
0b6239cecc
Improve diagnostics for failures in RestTemplateIntegrationTests
2019-06-26 15:16:54 +03:00
Sam Brannen
7d6be2e26e
Polishing
2019-06-26 15:12:32 +03:00
Sam Brannen
0f1d16bb05
Fix Checkstyle violation
2019-06-24 17:54:04 +03:00
Sam Brannen
d0231cb29a
Presort beans in ControllerAdviceBean.findAnnotatedBeans()
...
Prior to this commit, all clients of
ControllerAdviceBean.findAnnotatedBeans() sorted the returned list
manually. In addition, clients within the core Spring Framework
unnecessarily used AnnotationAwareOrderComparator instead of
OrderComparator to sort the list.
This commit presorts the ControllerAdviceBean list using OrderComparator
directly within ControllerAdviceBean.findAnnotatedBeans().
Closes gh-23188
2019-06-24 16:26:11 +03:00
Sam Brannen
d5a2bdee8d
Improve Javadoc for @ControllerAdvice regarding ordering
...
Closes gh-23163
2019-06-24 14:36:04 +03:00
Sam Brannen
9239ab1891
Support Ordered interface for @ControllerAdvice beans
...
Closes gh-23163
2019-06-23 19:31:35 +03:00
Sam Brannen
978adbdae7
Avoid duplicate lookups of @ControllerAdvice annotations
...
See gh-23163
2019-06-23 18:31:04 +03:00
Sam Brannen
7576d0d40c
Polishing
...
See gh-23163
2019-06-22 19:06:58 +03:00
Sam Brannen
4568edf6c4
Simplify ControllerAdviceBean constructors
...
See gh-23163
2019-06-22 19:02:49 +03:00
Sam Brannen
8f30639a0a
Test status quo for Ordered support for @ControllerAdvice beans
...
See gh-23163
2019-06-22 18:18:57 +03:00
Sam Brannen
21267e56b7
Cache resolved bean instance in ControllerAdviceBean
...
Prior to this commit, the resolveBean() method in ControllerAdviceBean
looked up the @ControllerAdvice bean instance in the ApplicationContext
by name for every web request that involved lookups for global methods
annotated with @ExceptionHandler, @InitBinder, and @ModelAttribute.
This commit avoids the need for such repeated lookups in the
ApplicationContext by caching the resolved @ControllerAdvice bean
instance within ControllerAdviceBean once it has been resolved.
2019-06-21 18:27:33 +03:00
Sam Brannen
59901592d2
Introduce regression tests for ControllerAdviceBean
...
This commit introduces unit tests for the status quo in
ControllerAdviceBeanTests to serve as regression tests for future
changes to ControllerAdviceBean.
2019-06-21 17:21:50 +03:00
Sam Brannen
52f1a3aef9
Polish ControllerAdviceBean
2019-06-21 17:11:12 +03:00
Rossen Stoyanchev
030caea9cf
Merge branch '5.1.x'
2019-06-21 14:15:26 +01:00
Rossen Stoyanchev
594c5806a6
Handle error in apply of writeFunction
...
Closes gh-23175
2019-06-21 14:15:14 +01:00
Sam Brannen
0e5a38591f
Cache beanType in ControllerAdviceBean
2019-06-21 14:09:05 +03:00
Sam Brannen
2759b4b909
Avoid use of Stream API in ControllerAdviceBean
2019-06-21 13:49:49 +03:00
Sam Brannen
d5554d5d8d
Polish @ControllerAdvice and @RestControllerAdvice
2019-06-21 13:26:30 +03:00
Sam Brannen
ad915f4a26
Document that Ordered is not supported for @ControllerAdvice beans
...
Closes gh-23172
2019-06-21 12:39:34 +03:00
Arjen Poutsma
11c7907a59
Add Flux<Part> ServerWebExchange.getParts()
...
This commit introduces ServerWebExchange.getParts(), as an alternative,
streaming way of accessing multipart data.
2019-06-21 10:59:12 +02:00
Brian Clozel
cc05608ae9
PathPattern does not use custom separator
...
Prior to this commit, `PathPattern::extractPathWithinMapping`
would always use the default path pattern separator `/` when extracting
the path within the pattern of a matched route.
This commit ensures that `PathPattern` uses the configured separator
when extracting the path within the matched mapping.
Fixes gh-23168
2019-06-20 20:27:22 +02:00
Brian Clozel
5787fc16fb
PathPatternRouteMatcher should use custom separator
...
Prior to this commit, the `PathPatternRouteMatcher` would always use the
default path pattern separator when parsing incoming route strings to
`RouteMatcher.Route` instances.
When the `PathPatternRouteMatcher` is configured with a
`PathPatternParser` that has a custom separator (e.g., `.`), then the
matching algorithm can't match routes against parsed patterns.
This commit ensures that the route matcher uses the configured separator
at all times.
Fixes gh-23167
2019-06-20 20:23:04 +02:00
Sam Brannen
f56c54dfc8
Polishing
2019-06-20 18:09:22 +03:00
Sam Brannen
d2e6d0269b
Preliminary tests for multipart/related & multipart/mixed in RestTemplate
...
See gh-23159
2019-06-20 11:35:18 +03:00
Sebastien Deleuze
341385acfc
Merge branch '5.1.x'
2019-06-19 13:59:59 +02:00
Sebastien Deleuze
bcad276adb
Fix Jackson documentation broken links
...
Closes gh-23153
2019-06-19 13:59:36 +02:00
Sam Brannen
4000b244ff
Forbid null converters in RestTemplate & HttpMessageConverterExtractor
...
Prior to this commit, RestTemplate and HttpMessageConverterExtractor did
not validate that the supplied HttpMessageConverter list contained no
null elements, which can lead to a NullPointerException when the
converters are accessed.
This commit improves the user experience by failing immediately if the
supplied HttpMessageConverter list contains a null element. This applies
to constructors for RestTemplate and HttpMessageConverterExtractor as
well as to RestTemplate#setMessageConverters().
Note, however, that RestTemplate#getMessageConverters() returns a mutable
list. Thus, if a user modifies that list so that it contains null values,
that will still lead to a NullPointerException when the converters are
accessed.
This commit also introduces noNullElements() variants for collections in
org.springframework.util.Assert.
Closes gh-23151
2019-06-18 16:13:20 +03:00
Sam Brannen
da903904c9
Fix Javadoc reference to MediaType#APPLICATION_CBOR_VALUE
...
{@value ...} cannot be used outside of the current type.
2019-06-18 13:00:00 +03:00
Sam Brannen
aa0a8d66a8
Polishing
2019-06-18 10:19:03 +03:00
Johnny Lim
7f67cecd10
Polish MappingMediaTypeFileExtensionResolver.addFileExtension()
...
Closes gh-23145
2019-06-18 10:10:30 +03:00
Arjen Poutsma
30af01fd4e
Use DataBufferUtils.write in DefaultFilePart.transferTo
...
This commit makes sure that in DefaultMultipartMessageReader's
DefaultFilePart, the file is not closed before all bytes are written,
by using DataBufferUtils.write (see c1b6885191d6a50347aeaa14da994f0db88f26fe).
The commit also improves on the logging of the
DefaultMultipartMessageReader.
Closes gh-23130
2019-06-14 14:13:18 +02:00
Sam Brannen
99d10a671c
Merge branch '5.1.x'
2019-06-14 14:51:08 +03:00
Sam Brannen
d18d4d865e
Update Javadoc for HtmlUtils regarding Apache Commons Text
...
Closes gh-23122
2019-06-14 14:48:24 +03:00
Johnny Lim
293506013d
Add since declarations for JettyClientHttpConnector constructor change
...
Closes gh-23128
2019-06-14 14:31:37 +03:00
Rossen Stoyanchev
14e2c6803e
Support for RSocket composite metadata
...
Closes gh-22798
2019-06-12 17:11:30 -04:00
Juergen Hoeller
0a77477d32
Merge branch '5.1.x'
2019-06-12 18:16:30 +02:00
Juergen Hoeller
fc46abf0b7
Polishing
2019-06-12 18:04:06 +02:00
Juergen Hoeller
42c0d8ec7f
Merge branch '5.1.x'
2019-06-12 14:14:40 +02:00
Juergen Hoeller
627d37f73b
Thread-safe removal of destruction callbacks in web scopes
...
Closes gh-23117
2019-06-12 14:11:13 +02:00
Juergen Hoeller
bd76a160bb
Merge branch '5.1.x'
2019-06-12 00:58:51 +02:00
Juergen Hoeller
4877736794
Polishing
2019-06-12 00:58:04 +02:00
Juergen Hoeller
a89bfffd8c
Merge branch '5.1.x'
2019-06-11 23:16:03 +02:00
Juergen Hoeller
7dc92aa05d
Polishing
2019-06-11 20:57:27 +02:00
Juergen Hoeller
1956cb1e57
Defensive concurrent access to shared file extension data structures
...
Closes gh-23064
2019-06-11 20:57:17 +02:00
Rossen Stoyanchev
1f05bd4ef3
Merge branch '5.1.x'
2019-06-07 16:08:29 -04:00
Rossen Stoyanchev
9f8148419f
Separate "filtered" attribute for ERROR dispatch
...
Closes gh-22989
2019-06-07 16:07:56 -04:00
Sam Brannen
61bf45c86f
Merge branch '5.1.x'
2019-06-06 17:40:51 +03:00
Ilya Lukyanovich
2ed81be831
Fix MockHttpServletRequest.setCookies to produce single cookie header
...
Prior to this commit, MockHttpServletRequest.setCookies() produced one
Cookie header per supplied cookie, resulting in multiple Cookie headers
which violates the specification.
This commit fixes this by ensuring that all cookie name-value pairs are
stored under a single Cookie header, separated by a semicolon.
Closes gh-23074
2019-06-06 17:13:21 +03:00
Sebastien Deleuze
098ac0bbb8
Annotate Object#equals parameter with @Nullable
...
Closes gh-23093
2019-06-06 14:18:30 +02:00
Brian Clozel
33becd8258
Allow separator configuration in PathPatternParser
...
This commit allows to configure a custom path separator when parsing and
matching path patterns with `PathPatternParser`, but also when parsing
incoming paths as `PathContainer` instances.
Closes gh-23092
2019-06-06 11:39:53 +02:00
Rossen Stoyanchev
ec91934730
Use correct file options for transferTo
...
Similar to fix applied to Synchronoss implementation in #cef98e.
2019-06-05 10:54:56 -04:00
Rossen Stoyanchev
1f35bb609b
Fix checkstyle warning
2019-06-04 17:38:30 -04:00
Rossen Stoyanchev
69eba32284
Improved Part support in MultipartBodyBuilder
...
1. Add contentType and filename options to PartBuilder.
2. Revert recently committed #44659f since asyncPart can't properly
support Publisher of Part (only Mono, can't support filename), and
replace that with support for Part in the regular part method.
Closes gh-23083
2019-06-04 17:21:39 -04:00
Rossen Stoyanchev
8781c01edf
Merge branch '5.1.x'
2019-06-04 16:42:13 -04:00
Rossen Stoyanchev
49e5c4dcf6
Polish MultipartBodyBuilder
...
Improve Javadoc
Consistently reject Publisher unless using asyncPart
Consistently set Content-Type when specified
2019-06-04 16:41:10 -04:00
Rossen Stoyanchev
e89fd5c3be
Merge branch '5.1.x'
2019-06-03 16:34:58 -04:00
Rossen Stoyanchev
4f05da7fed
Support escape character in ContentDisposition
...
Closes gh-23077
2019-06-03 16:03:35 -04:00
Sebastien Deleuze
5b04b04b69
Merge branch '5.1.x'
2019-05-29 11:54:40 +02:00
Sebastien Deleuze
4523d01a50
Fix Javadoc for HttpHeaders#setContentLanguage
...
Closes gh-23051
2019-05-29 11:53:38 +02:00
Johnny Lim
83078eb6fd
Add constants for application/cbor to MediaType
...
Closes gh-23042
2019-05-28 18:51:25 +02:00
Brian Clozel
1cfedb20b8
Add new constructor to JettyClientHttpConnector
...
This commit adds a new constructor to `JettyClientHttpConnector` and
deprecates another one. Jetty is not creating `HttpClient` instances
using a builder API, but rather setting immutable configuration at
constructor time and using setters for the rest.
This commit addresses that by deprecating the constructor variant
accepting a `Consumer` and just delegating to Spring's implementation
for setting the client resources as needed.
Closes gh-22977
2019-05-28 16:59:51 +02:00
Sam Brannen
141ef9082f
Clean up Mockito usage
...
This commit migrates to the MockitoJUnitRunner where sensible, which
will later allow for an easier migration to Mockito's extension for
JUnit Jupiter.
In addition, this commit deletes unnecessary stubbing for various mocks
and polishes test fixture setup in various test classes.
2019-05-28 13:59:43 +02:00
Sebastien Deleuze
bc205e0dbf
Remove charset parameter from Spring MVC JSON content type
...
This change is a follow-up to the ones done as part of gh-22788.
Closes gh-22954
2019-05-27 18:14:19 +02:00
Phillip Webb
9d74da006c
Migrate JUnit 4 assertions to AssertJ
...
Migrate all existing JUnit 4 `assert...` based assertions to AssertJ
and add a checkstyle rule to ensure they don't return.
See gh-23022
2019-05-23 15:52:49 -07:00
Phillip Webb
95a9d46a87
Migrate Hamcrest assertions to AssertJ
...
Migrate all existing `assertThat(..., Matcher)` assertions to AssertJ
and add checkstyle rules to ensure they don't return.
See gh-23022
2019-05-23 15:49:59 -07:00
Sam Brannen
f806594e60
Introduce getOrEmpty(String) convenience method in HttpHeaders
...
This commit introduces a getOrEmpty(String) method in HttpHeaders that
returns an immutable, empty list if no values are present for the
specified header name. This is provided as a convenience over the
existing get(String) method which returns null in such cases.
Closes gh-22949
2019-05-22 15:26:45 +02:00
Sam Brannen
9ca7354146
Polishing
2019-05-22 15:22:29 +02:00
Sam Brannen
819097a07a
Clean up warning in Gradle build
2019-05-22 14:48:40 +02:00
Juergen Hoeller
3645281c35
Polishing
2019-05-21 19:26:39 +02:00
Juergen Hoeller
c329bad42a
Merge branch '5.1.x'
2019-05-21 00:16:35 +02:00
Juergen Hoeller
8cd3daad0d
Polishing
2019-05-21 00:15:40 +02:00
Juergen Hoeller
171e8f56a3
Merge branch '5.1.x'
2019-05-20 22:27:37 +02:00
Juergen Hoeller
75d751d968
Polishing
2019-05-20 22:19:11 +02:00
Phillip Webb
02850f357f
Migrate exception checking tests to use AssertJ
...
Migrate tests that use `@Test(expectedException=...)` or
`try...fail...catch` to use AssertJ's `assertThatException`
instead.
2019-05-20 10:47:53 -07:00
Phillip Webb
fb26fc3f94
Polishing
2019-05-20 10:46:20 -07:00
Juergen Hoeller
a363fed209
Merge branch '5.1.x'
2019-05-20 17:21:07 +02:00
Juergen Hoeller
4c334de850
Use Map.values() iteration within isMultipart check
...
Closes gh-22982
2019-05-20 17:17:51 +02:00
Rossen Stoyanchev
ed2a3bd451
Take advantage of Encoder#encodeValue
...
EncoderHttpMessageWriter takes advantage of the Encoder#encodeValue
that's new in 5.2 in order to produce a Mono<DataBuffer> instead of
producing a Flux<DataBuffer> and then using flux.singleOrEmpty().
Closes gh-22952
2019-05-15 17:31:59 -04:00
Rossen Stoyanchev
013249757a
Merge branch '5.1.x'
2019-05-15 16:44:05 -04:00
Rossen Stoyanchev
ffd7cffa14
Fix typo in HttpHeaders
...
Closes gh-22976
2019-05-15 16:42:07 -04:00
Rossen Stoyanchev
0274752fe9
Use singleOrEmpty to avoid upstream cancel
...
Closes gh-22952
2019-05-15 16:02:28 -04:00
Rossen Stoyanchev
97c2de915a
Add RouteMatcher
...
Closes gh-22642
2019-05-14 21:44:39 -04:00
Rossen Stoyanchev
afc0ae3752
Add hasPatternSyntax method to PathPattern
2019-05-14 15:36:47 -04:00
Rossen Stoyanchev
ac6c96a391
Polish
2019-05-13 13:45:25 -04:00
Sam Brannen
73dbd06361
Enforces static imports for JUnit 4 assertions and assumptions
...
This commit configures Checkstyle to enforces static imports for JUnit 4
assertions and assumptions.
See gh-22932
2019-05-12 15:13:07 +02:00
Sam Brannen
deecab6311
Use assertThat from Hamcrest instead of JUnit 4
...
org.junit.Assert.assertThat() is deprecated as of JUnit 4.13.
See gh-22894
2019-05-12 14:46:55 +02:00
Sam Brannen
724c805211
Discontinue use of JUnit 3 APIs
...
This commit also ensures that the JSR-330 TCK is executed with the
normal build by adhering to naming conventions for test classes.
See gh-22894
2019-05-12 14:46:55 +02:00
Sam Brannen
9b61316c2e
Clean up warnings in spring-web
2019-05-10 17:31:23 +02:00
Sam Brannen
d8f1d56100
Fix broken test
2019-05-09 16:21:54 +02:00
Sebastien Deleuze
c601ecf169
Merge branch '5.1.x'
2019-05-09 15:00:53 +02:00
Sebastien Deleuze
c8d49ed284
Fix EncoderHttpMessageWriter.isStreamingMediaType()
...
Closes gh-22936
2019-05-09 14:57:15 +02:00
Sam Brannen
8e29eca1eb
Merge branch '5.1.x'
2019-05-09 13:25:21 +02:00
Sam Brannen
59fdce1116
Fix bug in EncoderHttpMessageWriter.isStreamingMediaType()
2019-05-09 13:24:27 +02:00
Sam Brannen
e465f51d56
Suppress deprecation warnings
2019-05-09 13:21:42 +02:00
Sam Brannen
dc1c110288
Delete dead code
2019-05-09 13:21:27 +02:00
Juergen Hoeller
8b08b6812a
Merge branch '5.1.x'
2019-05-09 02:26:23 +02:00
Juergen Hoeller
190b751147
Support any HttpEntity implementing ResolvableTypeProvider
...
Closes gh-22931
2019-05-09 02:09:31 +02:00
Phillip Webb
798b51f4a3
Migrate to BDD Mockito
...
Migrate all tests to consistently use BDD Mockito. Also add
checksyle rule to enforce going forwards.
2019-05-08 13:46:13 -07:00
Phillip Webb
816bbee8de
Remove '.*' imports from tests
...
Organize test imports to expand all '.*' static imports into
fully qualified imports.
This update will allow us to use additional checkstyle rules in
the future, and will also help if we migrate fully to AssertJ.
2019-05-08 09:55:09 -07:00
Juergen Hoeller
82d32f0875
Remove unused import
2019-05-08 17:51:54 +02:00
Rossen Stoyanchev
44659f4945
Unwrap Part content in asyncPart builder method
...
Closes gh-22876
2019-05-08 10:59:58 -04:00
Phil Webb
d7320de871
Migrate away from ExpectedException ( #22922 )
...
* Add limited checkstyles to test code
Add a limited set of checkstyle rules to the test codebase to improve
code consistency.
* Fix checksyle violations in test code
* Organize imports to fix checkstyle for test code
* Migrate to assertThatExceptionOfType
Migrate aware from ExpectedException rules to AssertJ exception
assertions. Also include a checkstyle rules to ensure that the
the ExpectedException is not accidentally used in the future.
See gh-22894
2019-05-08 16:25:52 +02:00
Rossen Stoyanchev
7e6e3d7027
Switch writeAcceptCharset to false by default
...
Closes gh-22506
2019-05-08 09:56:52 -04:00
Rossen Stoyanchev
a9f0eae4ab
Merge branch '5.1.x'
2019-05-08 09:41:10 -04:00
Rossen Stoyanchev
6e0dfd6999
Check if Accept-Charset is present before adding it
...
Closes gh-22506
2019-05-08 09:40:32 -04:00
Arjen Poutsma
dc01917dae
Javadoc
2019-05-08 12:21:00 +02:00
Arjen Poutsma
e7cca7792d
Add way to override default multipartReader
...
This commit introduces a way to override the default multipart reader,
for instance to the SynchronossPartHttpMessageReader.
2019-05-08 12:10:20 +02:00
Arjen Poutsma
32915d8bf5
Add logging to DefaultMultipartMessageReader
2019-05-08 12:10:20 +02:00
Arjen Poutsma
e625ace8c8
Add reference counting for UndertowDataBuffer
...
This commit adds proper reference counting to the UndertowDataBuffer.
2019-05-08 12:09:16 +02:00
Arjen Poutsma
cdd346222c
Add reference counting for UndertowDataBuffer
...
This commit adds proper reference counting to the UndertowDataBuffer.
2019-05-08 11:58:48 +02:00
Juergen Hoeller
cdf51c3d51
Nullability refinements and related polishing
2019-05-08 00:27:56 +02:00
Arjen Poutsma
fb642ce723
Introduce DefaultMultipartMessageReader
...
This commit introduces the DefaultMultipartMessageReader, a fully
reactive multipart parser that does have any third party dependencies.
Closes gh-21659
2019-05-07 12:14:45 +02:00
Juergen Hoeller
28c5d7b586
Merge branch '5.1.x'
2019-05-07 02:12:11 +02:00
Juergen Hoeller
053b95ceeb
Refer to non-deprecated Jackson 2.5+ addMixIn method in javadoc
2019-05-07 02:06:40 +02:00
Juergen Hoeller
f56c70d2f0
Merge branch '5.1.x'
2019-05-07 01:23:16 +02:00
Juergen Hoeller
c841b62bb0
Consistent parameter retrieval across InvocableHandlerMethod variants
...
See gh-22900
2019-05-07 01:20:05 +02:00
Juergen Hoeller
4b06d8e511
Merge branch '5.1.x'
2019-05-07 00:59:56 +02:00
Juergen Hoeller
3f85a7db1b
Consistent exception naming across InvocableHandlerMethod variants
...
See gh-22900
2019-05-07 00:48:27 +02:00
Sebastien Deleuze
2b3df1fa30
Merge branch '5.1.x'
2019-05-06 22:11:11 +02:00
Sebastien Deleuze
4b31feb243
Clarify Jackson2ObjectMapper.modules(ToInstall) semantics
...
Closes gh-22747
2019-05-06 22:09:56 +02:00
Sam Brannen
d616e10dca
Use assertThat from Hamcrest instead of JUnit 4
...
org.junit.Assert.assertThat() is deprecated as of JUnit 4.13.
See gh-22894
2019-05-05 19:26:04 +02:00
Johnny Lim
d489227874
Use HttpHeaders constants where possible
2019-05-04 11:14:08 +02:00
Juergen Hoeller
f0f6af2926
Merge branch '5.1.x'
2019-05-03 18:13:12 +02:00
Juergen Hoeller
ea4a174583
Polishing
2019-05-03 18:10:41 +02:00
Juergen Hoeller
a7949ac84a
Consistent use of StringUtils.hasLength(String) vs isEmpty(Object)
2019-05-03 17:29:14 +02:00
Juergen Hoeller
ec8689d1fc
Merge branch '5.1.x'
2019-05-03 14:23:59 +02:00
Juergen Hoeller
4e10735e8f
MockHttpServletRequest restores default locale for empty accept header
...
Closes gh-22877
2019-05-03 14:08:12 +02:00
Juergen Hoeller
eaa9a78d5d
Merge branch '5.1.x'
2019-05-03 00:23:57 +02:00
Juergen Hoeller
5b1b1bae37
Consistent use of try-with-resources for local resource closing
2019-05-03 00:11:47 +02:00
Juergen Hoeller
31c3b8a291
Avoid unguarded String concatenation for debug/trace logging
...
Closes gh-22874
2019-05-03 00:10:56 +02:00
Sebastien Deleuze
89454e69c3
Deprecate MediaType.APPLICATION_JSON_UTF8
...
This commit deprecates MediaType.APPLICATION_JSON_UTF8 and
MediaType.APPLICATION_PROBLEM_JSON_UTF8 in favor of
MediaType.APPLICATION_JSON and MediaType.APPLICATION_PROBLEM_JSON since
UTF-8 encoding is now handled correctly by most browsers
(related bug has been fixed in Chrome since September 2017).
MediaType.APPLICATION_JSON is now used as the default JSON content type.
Closes gh-22788
2019-04-30 16:11:50 +02:00
Sebastien Deleuze
5cd6763193
Add CBOR codec (single value only)
...
This commit adds CBOR reactive support for single value only in
order to allow CBOR usage in RSocket. Notice that no CBOR support
is configured on WebFlux, this will require gh-20513 to be resolved.
Closes gh-22767
2019-04-29 13:13:37 +02:00
Phillip Webb
55ac110f7b
Fix LinkedCaseInsensitiveMap collection methods
...
Ensure that results returned from keySet, entrySet & values are tracked
to remove case insensitive keys from the source map.
Closes gh-22821
2019-04-26 11:17:51 -07:00
Juergen Hoeller
55418b256d
Merge branch '5.1.x'
2019-04-26 16:56:04 +02:00
Juergen Hoeller
e5e2d2d661
Polishing (includes minor performance refinements from master)
2019-04-26 16:51:18 +02:00
Sam Brannen
e5d64e6680
Remove dead code in HttpHeadersTests
2019-04-21 15:33:53 +02:00
Sam Brannen
e187a42bfc
Introduce failing tests for HttpHeaders
...
See gh-22821
2019-04-21 15:20:24 +02:00
Rossen Stoyanchev
c09e711eb2
Unwrap Optional for @RequestParam reverse resolution
...
Closes gh-22656
2019-04-18 22:40:12 -04:00
Rossen Stoyanchev
86835e8e5a
Merge branch '5.1.x'
2019-04-17 14:23:44 -04:00
Rossen Stoyanchev
13c746ae9d
Follow-up fix for #5b711a
...
Not only do we need to preserve Mono in writeWith in the base class
but also in ReactorServerHttpResponse where buffers are mapped.
See gh-22800
2019-04-17 13:18:01 -04:00
Rossen Stoyanchev
de3238dbea
Merge branch '5.1.x'
2019-04-16 21:08:54 -04:00
Rossen Stoyanchev
5b711a964b
Pass Mono to Reactor Netty when feasible
...
Closes gh-22800
2019-04-16 20:52:19 -04:00
Rossen Stoyanchev
15b2fb1210
Polish
...
Replacing a couple of calls to Mono.fromCallable with Mono.just which
seems to work with doOnDiscard except when nested inside Flux.defer.
2019-04-16 20:52:19 -04:00
Rossen Stoyanchev
375090bb7c
LeakAwareDataBuffer related fixes
...
Following on 3ebbfa2191
where the local
refCount was removed in favor of using the internal refCount of the
native data buffer, this commit ensures that LeakAwareDataBufferFactory
uses a PooledDataBufferFactory delegate by default.
There are also fixes for test issues with eager allocation uncovered by
these changes in StringDecoder and ResourceDecoder.
2019-04-16 20:52:19 -04:00
Rossen Stoyanchev
ed650891ca
Add filter to add exchange to Reactor Context
...
Closes gh-21746
2019-04-16 10:08:20 -04:00
Rossen Stoyanchev
e4da7cb47f
Merge branch '5.1.x'
2019-04-15 08:41:27 -04:00
Rossen Stoyanchev
0109231d8e
Ensure Jackson generator flushed
...
Closes gh-22771
2019-04-15 08:40:19 -04:00
Juergen Hoeller
44df98c82d
Merge branch '5.1.x'
2019-04-12 11:37:07 +02:00
Juergen Hoeller
b07d46da99
MockCookie compares attributes in case-insensitive manner
...
Closes gh-22786
2019-04-12 11:10:02 +02:00
Rossen Stoyanchev
5fc18064f2
Use encode with an Object value where feasible
...
Closes gh-22782
2019-04-11 19:00:28 -04:00
Rossen Stoyanchev
181482fa15
Add option to encode with an Object value
...
See gh-22782
2019-04-11 19:00:28 -04:00
Rossen Stoyanchev
f89d2ac148
Use decode from a DataBuffer where feasible
...
See gh-22782
2019-04-11 19:00:28 -04:00
Rossen Stoyanchev
a912d8de1e
Add option to decode from a DataBuffer
...
See gh-22782
2019-04-11 19:00:28 -04:00
Rossen Stoyanchev
2aae81ef0c
Join buffers in decodeToMono for Jackson and Jaxb2
...
Closes gh-22783
2019-04-11 19:00:28 -04:00
Sam Brannen
6d7bf8050f
Polishing
2019-04-10 13:15:16 +02:00
Rossen Stoyanchev
d707d382b4
Merge branch '5.1.x'
2019-04-09 22:38:15 -04:00
Rossen Stoyanchev
28e206a946
Apply doOnDiscard for streaming mode
...
Use of Flux.just is problematic in that if the Flux is cancelled before
demand, the item may never be read, nor freed. Flux#just does not
even delegate cancellation signals.
Closes gh-22731
2019-04-09 22:30:26 -04:00
Rossen Stoyanchev
b11e7feff6
Polish during review of DataBuffer handling
2019-04-09 22:19:05 -04:00
Rossen Stoyanchev
bd956ed75a
DataBuffer fixes in Protobuf codecs
...
Closes gh-22731
2019-04-09 17:00:26 -04:00
Rossen Stoyanchev
f839c1f9cd
Remove warning about empty @RequestMapping path
...
See gh-22543
2019-04-09 15:03:43 -04:00
Juergen Hoeller
eb971690d2
Merge branch '5.1.x'
2019-04-09 18:09:20 +02:00
Juergen Hoeller
2835424f9d
Jackson2Tokenizer creates fully configured DeserializationContext
...
Closes gh-22510
2019-04-09 17:59:10 +02:00
Juergen Hoeller
c8609b83b6
Merge branch '5.1.x'
2019-04-08 20:19:03 +02:00
Juergen Hoeller
4ec9aff01d
Polishing
2019-04-08 19:59:06 +02:00
Juergen Hoeller
d1303affc8
Avoid expensive Stream API usage in HttpRange
...
See gh-22742
2019-04-08 19:42:21 +02:00
ladislav-bozek
4d17eb4f0e
Fix typo in JavaDoc for UrlPathHelper.setUrlDecode()
...
Closes gh22768
2019-04-08 17:37:59 +02:00
Sebastien Deleuze
2e7ed915cd
Merge branch '5.1.x'
2019-04-08 15:46:47 +02:00
Sebastien Deleuze
a089027e7d
Fix a regression in Jackson builder module registration
...
This commit brings back the support for registration of multiple
Jackson modules with a null typeId.
Closes gh-22740
2019-04-08 15:37:10 +02:00
Sam Brannen
ab1b8dee58
Ensure XmlEventDecoder compiles on JDK 9 and 11
2019-04-06 16:00:33 +02:00
Sam Brannen
021909dac2
Merge branch '5.1.x'
2019-04-06 11:22:15 +02:00
Sam Brannen
a1668ad1c2
Fix Javadoc for PathPattern
2019-04-06 11:21:39 +02:00
Rossen Stoyanchev
02da8486a3
Merge branch '5.1.x'
2019-04-05 21:53:55 -04:00
Rossen Stoyanchev
6cabb79f0f
Decode resourcePath for classpath locations
...
Closes gh-22272
2019-04-05 16:23:33 -04:00
Sam Brannen
d04a640baf
Polish Javadoc for @RequestMapping
2019-04-05 14:03:10 +02:00
Juergen Hoeller
b90e6ef8a0
Merge branch '5.1.x'
2019-04-05 12:48:34 +02:00
Juergen Hoeller
da557e7415
Avoid expensive assertions in HttpRange
...
Closes gh-22742
2019-04-05 12:47:02 +02:00
Sam Brannen
c0b52d09f5
Require explicit path mappings for @RequestMapping methods
...
Prior to this commit, handler methods in Spring MVC controllers were
not required to provide explicit path mappings via @RequestMapping (or
any of its specializations such as @GetMapping). Such handler methods
were effectively mapped to all paths. Consequently, developers may have
unwittingly mapped all requests to a single handler method.
This commit addresses this by enforcing that @RequestMapping methods
are mapped to an explicit path. Note, however, that this is enforced
after type-level and method-level @RequestMapping information has been
merged.
Developers wishing to map to all paths should now add an explicit path
mapping to "/**" or "**".
Closes gh-22543
2019-04-04 17:33:59 +02:00
Sam Brannen
de69871354
Removed unused import
2019-04-04 17:13:08 +02:00
stsypanov
383f18e214
Use StringJoiner where possible to simplify String joining
2019-04-04 16:11:32 +02:00
Rossen Stoyanchev
254f06e1a1
Request attribute cache for resolved lookupPath
...
See gh-22644
2019-04-03 14:56:30 -04:00
Sebastien Deleuze
a63d23492a
Optimize Jackson2Tokenizer
...
See gh-22727
2019-04-03 18:02:27 +02:00
Juergen Hoeller
2e63c66b0d
Merge branch '5.1.x'
2019-04-02 20:13:29 +02:00
Juergen Hoeller
0babc1fb64
Polishing
2019-04-02 20:04:07 +02:00
Juergen Hoeller
95a84bbad1
Clarify case-insensitive nature of HttpHeaders
...
Closes gh-22723
2019-04-02 20:04:00 +02:00
Rossen Stoyanchev
89a29598d5
Merge branch '5.1.x'
2019-04-02 11:05:30 -04:00
Rossen Stoyanchev
4c08863776
Add test case for writeFunction error signal
...
See gh-22720
2019-04-02 11:00:58 -04:00
Sebastien Deleuze
d2fa5536db
Use more efficient Reactor operators
...
Use handle/flatMapIterable instead of flatMap/flatMapMany
when possible.
Closes gh-22727
2019-04-02 15:49:59 +02:00
Violeta Georgieva
9bd0ec33f8
Release cached item in ChannelSendOperator when server error
...
Related to gh-22720
2019-04-02 16:42:52 +03:00
Juergen Hoeller
4a5b9d39d4
Consistent java.time setters on HttpHeaders and CorsConfiguration
...
Closes gh-22546
2019-04-02 14:56:20 +02:00
Juergen Hoeller
03bda29032
Revert "AnnotationConfigRegistry exposes registerBean with supplier/qualifiers"
...
This reverts commit 18f2e6a1
2019-04-02 14:55:13 +02:00
Rossen Stoyanchev
20742c74dc
Merge branch '5.1.x'
2019-04-01 17:16:17 -04:00
Rossen Stoyanchev
9c48d63082
Release cached item in ChannelSendOperator
...
1. If the write Subscriber cancels with the item cached, release it.
2. If the write Publisher emits an error while the item is cached, when
the write Subscriber subscribes, release the cached item and emit the
error signal.
Closes gh-22720
2019-04-01 17:15:16 -04:00
Sebastien Deleuze
d27b5d0ab6
Improve CORS handling
...
This commit improves CORS support by:
- Using CORS processing only for CORS-enabled endpoints
- Skipping CORS processing for same-origin requests
- Adding Vary headers for non-CORS requests
It introduces an AbstractHandlerMapping#hasCorsConfigurationSource
method in order to be able to check CORS endpoints efficiently.
Closes gh-22273
Closes gh-22496
2019-04-01 17:42:51 +02:00
Rossen Stoyanchev
8dc535c15c
Match declared parameters on produces condition
...
Closes gh-21670
2019-03-29 17:03:40 -04:00
Sam Brannen
3f85530efd
URL Cleanup - polishing
2019-03-28 17:23:13 +01:00
Sam Brannen
025eaf688f
Clean up warnings in Gradle build output
2019-03-28 12:32:58 +01:00
Sam Brannen
3cf2c04406
URL Cleanup - polishing
...
See gh-22680
2019-03-27 22:05:38 +01:00
Sam Brannen
5dc9c4c527
URL Cleanup - Fix broken tests
...
See gh-22680
2019-03-27 22:05:38 +01:00
Spring Operator
3db08c6b7a
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).
These URLs were unable to be fixed. Please review them to see if they can be manually resolved.
* [ ] http://aopalliance.sourceforge.net (200) with 1 occurrences could not be migrated:
([https](https://aopalliance.sourceforge.net ) result AnnotatedConnectException).
* [ ] http://cglib.sourceforge.net (200) with 2 occurrences could not be migrated:
([https](https://cglib.sourceforge.net ) result AnnotatedConnectException).
* [ ] http://classdoc.sourceforge.net (200) with 1 occurrences could not be migrated:
([https](https://classdoc.sourceforge.net ) result AnnotatedConnectException).
* [ ] http://code.jquery.com:80/jquery.js (200) with 1 occurrences could not be migrated:
([https](https://code.jquery.com:80/jquery.js ) result SSLException).
* [ ] http://dbunit.sourceforge.net/ (200) with 1 occurrences could not be migrated:
([https](https://dbunit.sourceforge.net/ ) result AnnotatedConnectException).
* [ ] http://docs.groovy-lang.org/docs/next/html/documentation/template-engines.html (200) with 1 occurrences could not be migrated:
([https](https://docs.groovy-lang.org/docs/next/html/documentation/template-engines.html ) result SSLProtocolException).
* [ ] http://domain3.com (200) with 6 occurrences could not be migrated:
([https](https://domain3.com ) result ConnectTimeoutException).
* [ ] http://forum.thymeleaf.org/Thymeleaf-3-0-8-JUST-PUBLISHED-td4030687.html (200) with 1 occurrences could not be migrated:
([https](https://forum.thymeleaf.org/Thymeleaf-3-0-8-JUST-PUBLISHED-td4030687.html ) result SSLHandshakeException).
* [ ] http://gregfranko.com/jquery.tocify.js/ (200) with 1 occurrences could not be migrated:
([https](https://gregfranko.com/jquery.tocify.js/ ) result SSLHandshakeException).
* [ ] http://grinder.sourceforge.net/ (200) with 1 occurrences could not be migrated:
([https](https://grinder.sourceforge.net/ ) result AnnotatedConnectException).
* [ ] http://groovy-lang.org/templating.html (200) with 3 occurrences could not be migrated:
([https](https://groovy-lang.org/templating.html ) result SSLProtocolException).
* [ ] http://hsqldb.org (200) with 1 occurrences could not be migrated:
([https](https://hsqldb.org ) result SSLHandshakeException).
* [ ] http://htmlunit.sourceforge.net/ (200) with 3 occurrences could not be migrated:
([https](https://htmlunit.sourceforge.net/ ) result AnnotatedConnectException).
* [ ] http://htmlunit.sourceforge.net/gettingStarted.html (200) with 1 occurrences could not be migrated:
([https](https://htmlunit.sourceforge.net/gettingStarted.html ) result AnnotatedConnectException).
* [ ] http://htmlunit.sourceforge.net/javascript.html (200) with 1 occurrences could not be migrated:
([https](https://htmlunit.sourceforge.net/javascript.html ) result AnnotatedConnectException).
* [ ] http://javadiff.cvs.sourceforge.net/ (200) with 3 occurrences could not be migrated:
([https](https://javadiff.cvs.sourceforge.net/ ) result SSLHandshakeException).
* [ ] http://jibx.sourceforge.net/ (200) with 2 occurrences could not be migrated:
([https](https://jibx.sourceforge.net/ ) result AnnotatedConnectException).
* [ ] http://joda-time.sourceforge.net (200) with 1 occurrences could not be migrated:
([https](https://joda-time.sourceforge.net ) result AnnotatedConnectException).
* [ ] http://jotm.objectweb.org/ (200) with 1 occurrences could not be migrated:
([https](https://jotm.objectweb.org/ ) result NotSslRecordException).
* [ ] http://json-b.net/ (200) with 1 occurrences could not be migrated:
([https](https://json-b.net/ ) result SSLHandshakeException).
* [ ] http://mx4j.sourceforge.net (200) with 1 occurrences could not be migrated:
([https](https://mx4j.sourceforge.net ) result AnnotatedConnectException).
* [ ] http://mx4j.sourceforge.net/ (200) with 1 occurrences could not be migrated:
([https](https://mx4j.sourceforge.net/ ) result AnnotatedConnectException).
* [ ] http://mydomain3.com (200) with 9 occurrences could not be migrated:
([https](https://mydomain3.com ) result ConnectTimeoutException).
* [ ] http://objenesis.org (200) with 1 occurrences could not be migrated:
([https](https://objenesis.org ) result SSLHandshakeException).
* [ ] http://objenesis.org/tutorial.html (200) with 1 occurrences could not be migrated:
([https](https://objenesis.org/tutorial.html ) result SSLHandshakeException).
* [ ] http://other.com/ (200) with 2 occurrences could not be migrated:
([https](https://other.com/ ) result SSLHandshakeException).
* [ ] http://reactivex.io/ (200) with 1 occurrences could not be migrated:
([https](https://reactivex.io/ ) result SSLHandshakeException).
* [ ] http://reactivex.io/documentation/operators.html (200) with 1 occurrences could not be migrated:
([https](https://reactivex.io/documentation/operators.html ) result SSLHandshakeException).
* [ ] http://url.somewhereelse.com (200) with 4 occurrences could not be migrated:
([https](https://url.somewhereelse.com ) result SSLHandshakeException).
* [ ] http://www.beanshell.org (200) with 1 occurrences could not be migrated:
([https](https://www.beanshell.org ) result SSLHandshakeException).
* [ ] http://www.beanshell.org/ (200) with 1 occurrences could not be migrated:
([https](https://www.beanshell.org/ ) result SSLHandshakeException).
* [ ] http://www.doclet.com (200) with 1 occurrences could not be migrated:
([https](https://www.doclet.com ) result AnnotatedConnectException).
* [ ] http://www.gebish.org/ (200) with 1 occurrences could not be migrated:
([https](https://www.gebish.org/ ) result SSLHandshakeException).
* [ ] http://www.gebish.org/manual/current/ (200) with 3 occurrences could not be migrated:
([https](https://www.gebish.org/manual/current/ ) result SSLHandshakeException).
* [ ] http://www.groovy-lang.org/ (200) with 2 occurrences could not be migrated:
([https](https://www.groovy-lang.org/ ) result SSLProtocolException).
* [ ] http://www.groovy-lang.org/operators.html (200) with 2 occurrences could not be migrated:
([https](https://www.groovy-lang.org/operators.html ) result SSLProtocolException).
* [ ] http://www.hsqldb.org (200) with 1 occurrences could not be migrated:
([https](https://www.hsqldb.org ) result SSLHandshakeException).
* [ ] http://www.jensgulden.de (200) with 1 occurrences could not be migrated:
([https](https://www.jensgulden.de ) result AnnotatedConnectException).
* [ ] http://www.mockobjects.com (200) with 2 occurrences could not be migrated:
([https](https://www.mockobjects.com ) result ClosedChannelException).
* [ ] http://www.mockobjects.com/ (200) with 1 occurrences could not be migrated:
([https](https://www.mockobjects.com/ ) result ClosedChannelException).
* [ ] http://xmlunit.sourceforge.net/ (200) with 2 occurrences could not be migrated:
([https](https://xmlunit.sourceforge.net/ ) result AnnotatedConnectException).
* [ ] http://192.168.0.1/mvc-showcase (301) with 1 occurrences could not be migrated:
([https](https://192.168.0.1/mvc-showcase ) result ConnectTimeoutException).
* [ ] http://www.easymock.org (301) with 2 occurrences could not be migrated:
([https](https://www.easymock.org ) result SSLHandshakeException).
* [ ] http://www.easymock.org/ (301) with 1 occurrences could not be migrated:
([https](https://www.easymock.org/ ) result SSLHandshakeException).
* [ ] http://www.jmock.org/ (301) with 1 occurrences could not be migrated:
([https](https://www.jmock.org/ ) result SSLHandshakeException).
* [ ] http://foo.com (301) with 4 occurrences could not be migrated:
([https](https://foo.com ) result SSLHandshakeException).
* [ ] http://foo.com/ (301) with 1 occurrences could not be migrated:
([https](https://foo.com/ ) result SSLHandshakeException).
* [ ] http://foo.com/a (301) with 1 occurrences could not be migrated:
([https](https://foo.com/a ) result SSLHandshakeException).
* [ ] http://foo.com/a?foo=bar&foo=baz (301) with 4 occurrences could not be migrated:
([https](https://foo.com/a?foo=bar&foo=baz ) result SSLHandshakeException).
* [ ] http://foo.com/bar (301) with 5 occurrences could not be migrated:
([https](https://foo.com/bar ) result SSLHandshakeException).
* [ ] http://foo.com/baz (301) with 1 occurrences could not be migrated:
([https](https://foo.com/baz ) result SSLHandshakeException).
* [ ] http://foo.com/rest/books/6.json (301) with 1 occurrences could not be migrated:
([https](https://foo.com/rest/books/6.json ) result SSLHandshakeException).
* [ ] http://foo.com/rest/books/6/pages/1.json (301) with 1 occurrences could not be migrated:
([https](https://foo.com/rest/books/6/pages/1.json ) result SSLHandshakeException).
* [ ] http://foo.com/v1 (301) with 1 occurrences could not be migrated:
([https](https://foo.com/v1 ) result SSLHandshakeException).
* [ ] http://foo.com/v1/123 (301) with 1 occurrences could not be migrated:
([https](https://foo.com/v1/123 ) result SSLHandshakeException).
* [ ] http://foo.com/v1/bar (301) with 1 occurrences could not be migrated:
([https](https://foo.com/v1/bar ) result SSLHandshakeException).
* [ ] http://foo.com/v1?id=123 (301) with 2 occurrences could not be migrated:
([https](https://foo.com/v1?id=123 ) result SSLHandshakeException).
* [ ] http://foo.com/wrong (301) with 1 occurrences could not be migrated:
([https](https://foo.com/wrong ) result SSLHandshakeException).
* [ ] http://mydomain4.com (301) with 3 occurrences could not be migrated:
([https](https://mydomain4.com ) result SSLHandshakeException).
* [ ] http://www.caucho.com/hessian (302) with 6 occurrences could not be migrated:
([https](https://www.caucho.com/hessian ) result SSLHandshakeException).
* [ ] http://mydomain2.com (302) with 22 occurrences could not be migrated:
([https](https://mydomain2.com ) result ConnectTimeoutException).
* [ ] http://www.jdiff.org (302) with 1 occurrences could not be migrated:
([https](https://www.jdiff.org ) result ConnectTimeoutException).
* [ ] http://example.com:80/test/this/here (404) with 3 occurrences could not be migrated:
([https](https://example.com:80/test/this/here ) result NotSslRecordException).
* [ ] http://www.foo.com/schema/component/component.xsd (404) with 1 occurrences could not be migrated:
([https](https://www.foo.com/schema/component/component.xsd ) result SSLHandshakeException).
* [ ] http://www.foo.com/schema/jcache (404) with 2 occurrences could not be migrated:
([https](https://www.foo.com/schema/jcache ) result SSLHandshakeException).
* [ ] http://www.mycompany.com/schema/myns/myns.xsd (404) with 1 occurrences could not be migrated:
([https](https://www.mycompany.com/schema/myns/myns.xsd ) result ConnectTimeoutException).
* [ ] http://xunitpatterns.com/Test%20Spy.html (404) with 1 occurrences could not be migrated:
([https](https://xunitpatterns.com/Test%20Spy.html ) result AnnotatedConnectException).
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://bugs.sun.com/view_bug.do?bug_id=6342411 (302) with 1 occurrences migrated to:
https://bugs.java.com/view_bug.do?bug_id=6342411 ([https](https://bugs.sun.com/view_bug.do?bug_id=6342411 ) result SSLHandshakeException).
* [ ] http://bugs.sun.com/view_bug.do?bug_id=7023180 (302) with 2 occurrences migrated to:
https://bugs.java.com/view_bug.do?bug_id=7023180 ([https](https://bugs.sun.com/view_bug.do?bug_id=7023180 ) result SSLHandshakeException).
* [ ] http://www.freemarker.org (301) with 5 occurrences migrated to:
https://freemarker.apache.org/ ([https](https://www.freemarker.org ) result ConnectTimeoutException).
* [ ] http://sockjs.org (303) with 2 occurrences migrated to:
https://github.com/sockjs/sockjs-client ([https](https://sockjs.org ) result AnnotatedConnectException).
* [ ] http://network.pivotal.io/open-source (301) with 1 occurrences migrated to:
https://network.pivotal.io/open-source ([https](https://network.pivotal.io/open-source ) result ReadTimeoutException).
* [ ] http://projects.eclipse.org/projects/tools.buildship (301) with 1 occurrences migrated to:
https://projects.eclipse.org/projects/tools.buildship ([https](https://projects.eclipse.org/projects/tools.buildship ) result SSLException).
* [ ] http://aaa.org:8080/a (301) with 1 occurrences migrated to:
https://www.aaa.org/articles/ ([https](https://aaa.org:8080/a ) result NotSslRecordException).
* [ ] http://aaa.org:8080/b/c/d (301) with 1 occurrences migrated to:
https://www.aaa.org/b/c/d ([https](https://aaa.org:8080/b/c/d ) result ReadTimeoutException).
* [ ] http://www.caucho.com (302) with 1 occurrences migrated to:
https://www.caucho.com/ ([https](https://www.caucho.com ) result SSLHandshakeException).
* [ ] http://jruby.org (301) with 4 occurrences migrated to:
https://www.jruby.org ([https](https://jruby.org ) result SSLHandshakeException).
* [ ] http://jruby.org/ (301) with 1 occurrences migrated to:
https://www.jruby.org ([https](https://jruby.org/ ) result SSLHandshakeException).
* [ ] http://bbb.org:9090/b (AnnotatedConnectException) with 2 occurrences migrated to:
https://bbb.org:9090/b ([https](https://bbb.org:9090/b ) result AnnotatedConnectException).
* [ ] http://192.168.28.42/1.jsp (ConnectTimeoutException) with 3 occurrences migrated to:
https://192.168.28.42/1.jsp ([https](https://192.168.28.42/1.jsp ) result ConnectTimeoutException).
* [ ] http://example.com:8080/ (ConnectTimeoutException) with 1 occurrences migrated to:
https://example.com:8080/ ([https](https://example.com:8080/ ) result ConnectTimeoutException).
* [ ] http://example.com:8080/bar (ConnectTimeoutException) with 5 occurrences migrated to:
https://example.com:8080/bar ([https](https://example.com:8080/bar ) result ConnectTimeoutException).
* [ ] http://example.org:9090 (ConnectTimeoutException) with 2 occurrences migrated to:
https://example.org:9090 ([https](https://example.org:9090 ) result ConnectTimeoutException).
* [ ] http://example.org:9090/base (ConnectTimeoutException) with 12 occurrences migrated to:
https://example.org:9090/base ([https](https://example.org:9090/base ) result ConnectTimeoutException).
* [ ] http://example.org:9090/base/people (ConnectTimeoutException) with 2 occurrences migrated to:
https://example.org:9090/base/people ([https](https://example.org:9090/base/people ) result ConnectTimeoutException).
* [ ] http://example.org:9090/base/something/1/foo (ConnectTimeoutException) with 2 occurrences migrated to:
https://example.org:9090/base/something/1/foo ([https](https://example.org:9090/base/something/1/foo ) result ConnectTimeoutException).
* [ ] http://example.org:9090/base/something/else (ConnectTimeoutException) with 2 occurrences migrated to:
https://example.org:9090/base/something/else ([https](https://example.org:9090/base/something/else ) result ConnectTimeoutException).
* [ ] http://example.org:9999/base (ConnectTimeoutException) with 1 occurrences migrated to:
https://example.org:9999/base ([https](https://example.org:9999/base ) result ConnectTimeoutException).
* [ ] http://example.org:9999/base/api/people/123/addresses (ConnectTimeoutException) with 1 occurrences migrated to:
https://example.org:9999/base/api/people/123/addresses ([https](https://example.org:9999/base/api/people/123/addresses ) result ConnectTimeoutException).
* [ ] http://example.org:9999/base/api/people/123/addresses/DE (ConnectTimeoutException) with 1 occurrences migrated to:
https://example.org:9999/base/api/people/123/addresses/DE ([https](https://example.org:9999/base/api/people/123/addresses/DE ) result ConnectTimeoutException).
* [ ] http://example.org:9999/base/people/123/addresses/DE (ConnectTimeoutException) with 1 occurrences migrated to:
https://example.org:9999/base/people/123/addresses/DE ([https](https://example.org:9999/base/people/123/addresses/DE ) result ConnectTimeoutException).
* [ ] http://example.org:9999/next (ConnectTimeoutException) with 1 occurrences migrated to:
https://example.org:9999/next ([https](https://example.org:9999/next ) result ConnectTimeoutException).
* [ ] http://example.org:9999/path?q=foo (ConnectTimeoutException) with 1 occurrences migrated to:
https://example.org:9999/path?q=foo ([https](https://example.org:9999/path?q=foo ) result ConnectTimeoutException).
* [ ] http://foo.com:8080/v1/bar?id=123 (ConnectTimeoutException) with 1 occurrences migrated to:
https://foo.com:8080/v1/bar?id=123 ([https](https://foo.com:8080/v1/bar?id=123 ) result ConnectTimeoutException).
* [ ] http://mydomain1.com:123 (ConnectTimeoutException) with 1 occurrences migrated to:
https://mydomain1.com:123 ([https](https://mydomain1.com:123 ) result ConnectTimeoutException).
* [ ] http://site1.com (ConnectTimeoutException) with 13 occurrences migrated to:
https://site1.com ([https](https://site1.com ) result ConnectTimeoutException).
* [ ] http://wwws.sun.com/software/xml/developers/diffmk/ (ConnectTimeoutException) with 1 occurrences migrated to:
https://wwws.sun.com/software/xml/developers/diffmk/ ([https](https://wwws.sun.com/software/xml/developers/diffmk/ ) result ConnectTimeoutException).
* [ ] http://www.w3.org/TR/html4/loose.dtd (ReadTimeoutException) with 5 occurrences migrated to:
https://www.w3.org/TR/html4/loose.dtd ([https](https://www.w3.org/TR/html4/loose.dtd ) result ReadTimeoutException).
* [ ] http://DOMAIN2.com (UnknownHostException) with 2 occurrences migrated to:
https://DOMAIN2.com ([https](https://DOMAIN2.com ) result UnknownHostException).
* [ ] http://a.example.org/mvc-showcase (UnknownHostException) with 1 occurrences migrated to:
https://a.example.org/mvc-showcase ([https](https://a.example.org/mvc-showcase ) result UnknownHostException).
* [ ] http://arjen:foobar@java.sun.com:80 (UnknownHostException) with 1 occurrences migrated to:
https://arjen:foobar@java.sun.com:80 ([https](https://arjen:foobar@java.sun.com:80 ) result UnknownHostException).
* [ ] http://dev.bar.com (UnknownHostException) with 3 occurrences migrated to:
https://dev.bar.com ([https](https://dev.bar.com ) result UnknownHostException).
* [ ] http://domain1.com (UnknownHostException) with 25 occurrences migrated to:
https://domain1.com ([https](https://domain1.com ) result UnknownHostException).
* [ ] http://domain1.com/test.html (UnknownHostException) with 4 occurrences migrated to:
https://domain1.com/test.html ([https](https://domain1.com/test.html ) result UnknownHostException).
* [ ] http://domain2.com (UnknownHostException) with 98 occurrences migrated to:
https://domain2.com ([https](https://domain2.com ) result UnknownHostException).
* [ ] http://example.com",HttpMethod.GET (UnknownHostException) with 6 occurrences migrated to:
https://example.com",HttpMethod.GET ([https](https://example.com",HttpMethod.GET ) result UnknownHostException).
* [ ] http://foo.bar.com (UnknownHostException) with 4 occurrences migrated to:
https://foo.bar.com ([https](https://foo.bar.com ) result UnknownHostException).
* [ ] http://joe.openid.example.org/ (UnknownHostException) with 2 occurrences migrated to:
https://joe.openid.example.org/ ([https](https://joe.openid.example.org/ ) result UnknownHostException).
* [ ] http://myserver/logo.png (UnknownHostException) with 1 occurrences migrated to:
https://myserver/logo.png ([https](https://myserver/logo.png ) result UnknownHostException).
* [ ] http://samples.springframework.org/order (UnknownHostException) with 2 occurrences migrated to:
https://samples.springframework.org/order ([https](https://samples.springframework.org/order ) result UnknownHostException).
* [ ] http://url.somewhere.com (UnknownHostException) with 25 occurrences migrated to:
https://url.somewhere.com ([https](https://url.somewhere.com ) result UnknownHostException).
* [ ] http://url.somewhere.com/path (UnknownHostException) with 1 occurrences migrated to:
https://url.somewhere.com/path ([https](https://url.somewhere.com/path ) result UnknownHostException).
* [ ] http://url.somewhere.com/path?id=1 (UnknownHostException) with 1 occurrences migrated to:
https://url.somewhere.com/path?id=1 ([https](https://url.somewhere.com/path?id=1 ) result UnknownHostException).
* [ ] http://url.somewhere.com/test.htm (UnknownHostException) with 2 occurrences migrated to:
https://url.somewhere.com/test.htm ([https](https://url.somewhere.com/test.htm ) result UnknownHostException).
* [ ] http://url.somewhere.com?a=b&c=d (UnknownHostException) with 1 occurrences migrated to:
https://url.somewhere.com?a=b&c=d ([https](https://url.somewhere.com?a=b&c=d ) result UnknownHostException).
* [ ] http://url.somewhere.com?foo= (UnknownHostException) with 2 occurrences migrated to:
https://url.somewhere.com?foo= ([https](https://url.somewhere.com?foo= ) result UnknownHostException).
* [ ] http://url.somewhere.com?foo=bar (UnknownHostException) with 4 occurrences migrated to:
https://url.somewhere.com?foo=bar ([https](https://url.somewhere.com?foo=bar ) result UnknownHostException).
* [ ] http://url.somewhere.com?foo=bar&a=b&c=d (UnknownHostException) with 2 occurrences migrated to:
https://url.somewhere.com?foo=bar&a=b&c=d ([https](https://url.somewhere.com?foo=bar&a=b&c=d ) result UnknownHostException).
* [ ] http://wiki.fasterxml.com/JacksonHome (UnknownHostException) with 3 occurrences migrated to:
https://wiki.fasterxml.com/JacksonHome ([https](https://wiki.fasterxml.com/JacksonHome ) result UnknownHostException).
* [ ] http://wiki.fasterxml.com/JacksonJsonViews (UnknownHostException) with 4 occurrences migrated to:
https://wiki.fasterxml.com/JacksonJsonViews ([https](https://wiki.fasterxml.com/JacksonJsonViews ) result UnknownHostException).
* [ ] http://x.y.z (UnknownHostException) with 2 occurrences migrated to:
https://x.y.z ([https](https://x.y.z ) result UnknownHostException).
* [ ] http://abc.com/v1 (301) with 1 occurrences migrated to:
https://abc.go.com/v1 ([https](https://abc.com/v1 ) result 404).
* [ ] http://abc.com/v1/accounts/43 (301) with 1 occurrences migrated to:
https://abc.go.com/v1/accounts/43 ([https](https://abc.com/v1/accounts/43 ) result 404).
* [ ] http://abc.com/v1/accounts?q=12 (301) with 1 occurrences migrated to:
https://abc.go.com/v1/accounts?q=12 ([https](https://abc.com/v1/accounts?q=12 ) result 404).
* [ ] http://abc.com/v2/accounts?q=12 (301) with 1 occurrences migrated to:
https://abc.go.com/v2/accounts?q=12 ([https](https://abc.com/v2/accounts?q=12 ) result 404).
* [ ] http://docs.spring.io/v1/bar (301) with 1 occurrences migrated to:
https://docs.spring.io/v1/bar ([https](https://docs.spring.io/v1/bar ) result 404).
* [ ] http://example.com/-foo (404) with 2 occurrences migrated to:
https://example.com/-foo ([https](https://example.com/-foo ) result 404).
* [ ] http://example.com/1 (404) with 1 occurrences migrated to:
https://example.com/1 ([https](https://example.com/1 ) result 404).
* [ ] http://example.com/1/2 (404) with 2 occurrences migrated to:
https://example.com/1/2 ([https](https://example.com/1/2 ) result 404).
* [ ] http://example.com/2 (404) with 1 occurrences migrated to:
https://example.com/2 ([https](https://example.com/2 ) result 404).
* [ ] http://example.com/a%20b?q=a%2Bb (404) with 1 occurrences migrated to:
https://example.com/a%20b?q=a%2Bb ([https](https://example.com/a%20b?q=a%2Bb ) result 404).
* [ ] http://example.com/abc/ (404) with 1 occurrences migrated to:
https://example.com/abc/ ([https](https://example.com/abc/ ) result 404).
* [ ] http://example.com/abc/x/y (404) with 1 occurrences migrated to:
https://example.com/abc/x/y ([https](https://example.com/abc/x/y ) result 404).
* [ ] http://example.com/abc/x/y/z (404) with 3 occurrences migrated to:
https://example.com/abc/x/y/z ([https](https://example.com/abc/x/y/z ) result 404).
* [ ] http://example.com/app/login/authenticate (404) with 1 occurrences migrated to:
https://example.com/app/login/authenticate ([https](https://example.com/app/login/authenticate ) result 404).
* [ ] http://example.com/arbitrary/path (404) with 1 occurrences migrated to:
https://example.com/arbitrary/path ([https](https://example.com/arbitrary/path ) result 404).
* [ ] http://example.com/bar (404) with 6 occurrences migrated to:
https://example.com/bar ([https](https://example.com/bar ) result 404).
* [ ] http://example.com/context.xml (404) with 4 occurrences migrated to:
https://example.com/context.xml ([https](https://example.com/context.xml ) result 404).
* [ ] http://example.com/example (404) with 6 occurrences migrated to:
https://example.com/example ([https](https://example.com/example ) result 404).
* [ ] http://example.com/example/?name (404) with 1 occurrences migrated to:
https://example.com/example/?name ([https](https://example.com/example/?name ) result 404).
* [ ] http://example.com/example/?name= (404) with 1 occurrences migrated to:
https://example.com/example/?name= ([https](https://example.com/example/?name= ) result 404).
* [ ] http://example.com/example/?name=%20 (404) with 1 occurrences migrated to:
https://example.com/example/?name=%20 ([https](https://example.com/example/?name=%20 ) result 404).
* [ ] http://example.com/example/?name=row%5B0%5D (404) with 1 occurrences migrated to:
https://example.com/example/?name=row%5B0%5D ([https](https://example.com/example/?name=row%5B0%5D ) result 404).
* [ ] http://example.com/example/?name=value (404) with 1 occurrences migrated to:
https://example.com/example/?name=value ([https](https://example.com/example/?name=value ) result 404).
* [ ] http://example.com/example/?name=value¶m2=value+2 (404) with 1 occurrences migrated to:
https://example.com/example/?name=value¶m2=value+2 ([https](https://example.com/example/?name=value¶m2=value+2 ) result 404).
* [ ] http://example.com/example/?row%5B0%5D=value (404) with 1 occurrences migrated to:
https://example.com/example/?row%5B0%5D=value ([https](https://example.com/example/?row%5B0%5D=value ) result 404).
* [ ] http://example.com/foo (404) with 6 occurrences migrated to:
https://example.com/foo ([https](https://example.com/foo ) result 404).
* [ ] http://example.com/foo/../bar (404) with 1 occurrences migrated to:
https://example.com/foo/../bar ([https](https://example.com/foo/../bar ) result 404).
* [ ] http://example.com/foo/foo2?bar (404) with 1 occurrences migrated to:
https://example.com/foo/foo2?bar ([https](https://example.com/foo/foo2?bar ) result 404).
* [ ] http://example.com/foo?bar (404) with 4 occurrences migrated to:
https://example.com/foo?bar ([https](https://example.com/foo?bar ) result 404).
* [ ] http://example.com/foo?bar= (404) with 2 occurrences migrated to:
https://example.com/foo?bar= ([https](https://example.com/foo?bar= ) result 404).
* [ ] http://example.com/foo?bar=baz (404) with 2 occurrences migrated to:
https://example.com/foo?bar=baz ([https](https://example.com/foo?bar=baz ) result 404).
* [ ] http://example.com/foo?baz=42 (404) with 1 occurrences migrated to:
https://example.com/foo?baz=42 ([https](https://example.com/foo?baz=42 ) result 404).
* [ ] http://example.com/foo?foo=bar&baz=qux (404) with 2 occurrences migrated to:
https://example.com/foo?foo=bar&baz=qux ([https](https://example.com/foo?foo=bar&baz=qux ) result 404).
* [ ] http://example.com/hotel (404) with 3 occurrences migrated to:
https://example.com/hotel ([https](https://example.com/hotel ) result 404).
* [ ] http://example.com/hotel%20list (404) with 1 occurrences migrated to:
https://example.com/hotel%20list ([https](https://example.com/hotel%20list ) result 404).
* [ ] http://example.com/hotel%20list/Z (404) with 1 occurrences migrated to:
https://example.com/hotel%20list/Z ([https](https://example.com/hotel%20list/Z ) result 404).
* [ ] http://example.com/hotel%20list/Z%C3%BCrich (404) with 3 occurrences migrated to:
https://example.com/hotel%20list/Z%C3%BCrich ([https](https://example.com/hotel%20list/Z%C3%BCrich ) result 404).
* [ ] http://example.com/hotels (404) with 3 occurrences migrated to:
https://example.com/hotels ([https](https://example.com/hotels ) result 404).
* [ ] http://example.com/hotels/ (404) with 15 occurrences migrated to:
https://example.com/hotels/ ([https](https://example.com/hotels/ ) result 404).
* [ ] http://example.com/hotels/1/bookings/42 (404) with 1 occurrences migrated to:
https://example.com/hotels/1/bookings/42 ([https](https://example.com/hotels/1/bookings/42 ) result 404).
* [ ] http://example.com/hotels/1/pic/pics%2Flogo.png/size/150x150 (404) with 2 occurrences migrated to:
https://example.com/hotels/1/pic/pics%2Flogo.png/size/150x150 ([https](https://example.com/hotels/1/pic/pics%2Flogo.png/size/150x150 ) result 404).
* [ ] http://example.com/hotels/1/pic/pics/logo.png (404) with 1 occurrences migrated to:
https://example.com/hotels/1/pic/pics/logo.png ([https](https://example.com/hotels/1/pic/pics/logo.png ) result 404).
* [ ] http://example.com/hotels/42/bookings/21 (404) with 1 occurrences migrated to:
https://example.com/hotels/42/bookings/21 ([https](https://example.com/hotels/42/bookings/21 ) result 404).
* [ ] http://example.com/hotels/42/bookings/42 (404) with 1 occurrences migrated to:
https://example.com/hotels/42/bookings/42 ([https](https://example.com/hotels/42/bookings/42 ) result 404).
* [ ] http://example.com/hotels/Rest%20%26%20Relax/bookings/42 (404) with 2 occurrences migrated to:
https://example.com/hotels/Rest%20%26%20Relax/bookings/42 ([https](https://example.com/hotels/Rest%20%26%20Relax/bookings/42 ) result 404).
* [ ] http://example.com/info (404) with 2 occurrences migrated to:
https://example.com/info ([https](https://example.com/info ) result 404).
* [ ] http://example.com/invalid (404) with 1 occurrences migrated to:
https://example.com/invalid ([https](https://example.com/invalid ) result 404).
* [ ] http://example.com/jquery-1.11.0.min.js (404) with 2 occurrences migrated to:
https://example.com/jquery-1.11.0.min.js ([https](https://example.com/jquery-1.11.0.min.js ) result 404).
* [ ] http://example.com/match (404) with 1 occurrences migrated to:
https://example.com/match ([https](https://example.com/match ) result 404).
* [ ] http://example.com/myFileUpload (404) with 1 occurrences migrated to:
https://example.com/myFileUpload ([https](https://example.com/myFileUpload ) result 404).
* [ ] http://example.com/myForm (404) with 1 occurrences migrated to:
https://example.com/myForm ([https](https://example.com/myForm ) result 404).
* [ ] http://example.com/path (404) with 4 occurrences migrated to:
https://example.com/path ([https](https://example.com/path ) result 404).
* [ ] http://example.com/path?query (404) with 2 occurrences migrated to:
https://example.com/path?query ([https](https://example.com/path?query ) result 404).
* [ ] http://example.com/path?query=foo (404) with 1 occurrences migrated to:
https://example.com/path?query=foo ([https](https://example.com/path?query=foo ) result 404).
* [ ] http://example.com/people (404) with 1 occurrences migrated to:
https://example.com/people ([https](https://example.com/people ) result 404).
* [ ] http://example.com/people/ (404) with 1 occurrences migrated to:
https://example.com/people/ ([https](https://example.com/people/ ) result 404).
* [ ] http://example.com/prefix/path (404) with 2 occurrences migrated to:
https://example.com/prefix/path ([https](https://example.com/prefix/path ) result 404).
* [ ] http://example.com/resource (404) with 5 occurrences migrated to:
https://example.com/resource ([https](https://example.com/resource ) result 404).
* [ ] http://example.com/resource?access_token=123 (404) with 1 occurrences migrated to:
https://example.com/resource?access_token=123 ([https](https://example.com/resource?access_token=123 ) result 404).
* [ ] http://example.com/spaces (404) with 1 occurrences migrated to:
https://example.com/spaces ([https](https://example.com/spaces ) result 404).
* [ ] http://example.com/spaces%20and%20%E2%82%AC (404) with 3 occurrences migrated to:
https://example.com/spaces%20and%20%E2%82%AC ([https](https://example.com/spaces%20and%20%E2%82%AC ) result 404).
* [ ] http://example.com/spring/ (404) with 1 occurrences migrated to:
https://example.com/spring/ ([https](https://example.com/spring/ ) result 404).
* [ ] http://example.com/test/this/here (404) with 1 occurrences migrated to:
https://example.com/test/this/here ([https](https://example.com/test/this/here ) result 404).
* [ ] http://example.com/upload (404) with 1 occurrences migrated to:
https://example.com/upload ([https](https://example.com/upload ) result 404).
* [ ] http://example.com/user (404) with 1 occurrences migrated to:
https://example.com/user ([https](https://example.com/user ) result 404).
* [ ] http://example.org/fonts/css (404) with 6 occurrences migrated to:
https://example.org/fonts/css ([https](https://example.org/fonts/css ) result 404).
* [ ] http://example.org/foo/page.html (404) with 1 occurrences migrated to:
https://example.org/foo/page.html ([https](https://example.org/foo/page.html ) result 404).
* [ ] http://example.org/image.png (404) with 4 occurrences migrated to:
https://example.org/image.png ([https](https://example.org/image.png ) result 404).
* [ ] http://example.org/music/people (404) with 4 occurrences migrated to:
https://example.org/music/people ([https](https://example.org/music/people ) result 404).
* [ ] http://example.org/page.cache.html (404) with 1 occurrences migrated to:
https://example.org/page.cache.html ([https](https://example.org/page.cache.html ) result 404).
* [ ] http://example.org/path (404) with 3 occurrences migrated to:
https://example.org/path ([https](https://example.org/path ) result 404).
* [ ] http://springframework.org/oxm-test (404) with 2 occurrences migrated to:
https://springframework.org/oxm-test ([https](https://springframework.org/oxm-test ) result 404).
* [ ] http://aaa.org:8080/app/b/c/d (301) with 1 occurrences migrated to:
https://www.aaa.org/app/b/c/d ([https](https://aaa.org:8080/app/b/c/d ) result 404).
* [ ] http://www.example.com/favicon.ico (404) with 2 occurrences migrated to:
https://www.example.com/favicon.ico ([https](https://www.example.com/favicon.ico ) result 404).
* [ ] http://www.example.com/foo/bar (404) with 1 occurrences migrated to:
https://www.example.com/foo/bar ([https](https://www.example.com/foo/bar ) result 404).
* [ ] http://www.example.com/hotels (404) with 2 occurrences migrated to:
https://www.example.com/hotels ([https](https://www.example.com/hotels ) result 404).
* [ ] http://www.example.com/user/ (404) with 4 occurrences migrated to:
https://www.example.com/user/ ([https](https://www.example.com/user/ ) result 404).
* [ ] http://www.example.com/user/john%3Bdoe/dashboard (404) with 4 occurrences migrated to:
https://www.example.com/user/john%3Bdoe/dashboard ([https](https://www.example.com/user/john%3Bdoe/dashboard ) result 404).
* [ ] http://www.example.com/user/john;doe/dashboard (404) with 2 occurrences migrated to:
https://www.example.com/user/john;doe/dashboard ([https](https://www.example.com/user/john;doe/dashboard ) result 404).
* [ ] http://www.ibm.com/developerworks/websphere/library/techarticles/0404_tang/0404_tang.html (301) with 1 occurrences migrated to:
https://www.ibm.com/developerworks/websphere/library/techarticles/0404_tang/0404_tang.html ([https](https://www.ibm.com/developerworks/websphere/library/techarticles/0404_tang/0404_tang.html ) result 404).
* [ ] http://mydomain1.com:80/path (301) with 2 occurrences migrated to:
https://www.mydomain1.com/path ([https](https://mydomain1.com:80/path ) result 404).
* [ ] http://www.quartz-scheduler.org/documentation/quartz-2.1.x/tutorials/tutorial-lesson-03 (404) with 1 occurrences migrated to:
https://www.quartz-scheduler.org/documentation/quartz-2.1.x/tutorials/tutorial-lesson-03 ([https](https://www.quartz-scheduler.org/documentation/quartz-2.1.x/tutorials/tutorial-lesson-03 ) result 404).
* [ ] http://www.utoronto.ca/webdocs/HTMLdocs/Book/Book-3ed/appb/mimetype.html (301) with 1 occurrences migrated to:
https://www.utoronto.ca/webdocs/HTMLdocs/Book/Book-3ed/appb/mimetype.html ([https](https://www.utoronto.ca/webdocs/HTMLdocs/Book/Book-3ed/appb/mimetype.html ) result 404).
* [ ] http://xml.apache.org/xslt (404) with 3 occurrences migrated to:
https://xml.apache.org/xslt ([https](https://xml.apache.org/xslt ) result 404).
* [ ] http://myhost.com/resource/path/myTemplate.txt (500) with 1 occurrences migrated to:
https://myhost.com/resource/path/myTemplate.txt ([https](https://myhost.com/resource/path/myTemplate.txt ) result 500).
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/delete-inactive-destinations.html with 1 occurrences migrated to:
https://activemq.apache.org/delete-inactive-destinations.html ([https](https://activemq.apache.org/delete-inactive-destinations.html ) result 200).
* [ ] http://activemq.apache.org/stomp.html with 1 occurrences migrated to:
https://activemq.apache.org/stomp.html ([https](https://activemq.apache.org/stomp.html ) result 200).
* [ ] http://ant.apache.org with 1 occurrences migrated to:
https://ant.apache.org ([https](https://ant.apache.org ) result 200).
* [ ] http://asciidoctor.org/ with 1 occurrences migrated to:
https://asciidoctor.org/ ([https](https://asciidoctor.org/ ) result 200).
* [ ] http://asciidoctor.org/docs/editing-asciidoc-with-live-preview/ with 2 occurrences migrated to:
https://asciidoctor.org/docs/editing-asciidoc-with-live-preview/ ([https](https://asciidoctor.org/docs/editing-asciidoc-with-live-preview/ ) result 200).
* [ ] http://beanvalidation.org/ with 1 occurrences migrated to:
https://beanvalidation.org/ ([https](https://beanvalidation.org/ ) result 200).
* [ ] http://caniuse.com/ with 2 occurrences migrated to:
https://caniuse.com/ ([https](https://caniuse.com/ ) result 200).
* [ ] http://castor-data-binding.github.io/castor/reference-guides/1.3.3/html-single/index.html with 2 occurrences migrated to:
https://castor-data-binding.github.io/castor/reference-guides/1.3.3/html-single/index.html ([https](https://castor-data-binding.github.io/castor/reference-guides/1.3.3/html-single/index.html ) result 200).
* [ ] http://cbor.io/ with 1 occurrences migrated to:
https://cbor.io/ ([https](https://cbor.io/ ) result 200).
* [ ] http://code.jquery.com/jquery-1.11.0.min.js with 2 occurrences migrated to:
https://code.jquery.com/jquery-1.11.0.min.js ([https](https://code.jquery.com/jquery-1.11.0.min.js ) result 200).
* [ ] http://code.jquery.com/jquery.js with 1 occurrences migrated to:
https://code.jquery.com/jquery.js ([https](https://code.jquery.com/jquery.js ) result 200).
* [ ] http://commons.apache.org/proper/commons-lang/ with 2 occurrences migrated to:
https://commons.apache.org/proper/commons-lang/ ([https](https://commons.apache.org/proper/commons-lang/ ) result 200).
* [ ] http://docs.oracle.com/javase/6/docs/api/java/lang/instrument/package-summary.html with 1 occurrences migrated to:
https://docs.oracle.com/javase/6/docs/api/java/lang/instrument/package-summary.html ([https](https://docs.oracle.com/javase/6/docs/api/java/lang/instrument/package-summary.html ) result 200).
* [ ] http://docs.oracle.com/javase/8/docs/api/java/beans/package-summary.html with 1 occurrences migrated to:
https://docs.oracle.com/javase/8/docs/api/java/beans/package-summary.html ([https](https://docs.oracle.com/javase/8/docs/api/java/beans/package-summary.html ) result 200).
* [ ] http://docs.oracle.com/javase/8/docs/api/java/lang/instrument/package-summary.html with 1 occurrences migrated to:
https://docs.oracle.com/javase/8/docs/api/java/lang/instrument/package-summary.html ([https](https://docs.oracle.com/javase/8/docs/api/java/lang/instrument/package-summary.html ) result 200).
* [ ] http://docs.oracle.com/javase/8/docs/api/javax/script/ScriptEngineFactory.html with 2 occurrences migrated to:
https://docs.oracle.com/javase/8/docs/api/javax/script/ScriptEngineFactory.html ([https](https://docs.oracle.com/javase/8/docs/api/javax/script/ScriptEngineFactory.html ) result 200).
* [ ] http://docs.oracle.com/javase/tutorial/javabeans/advanced/customization.html with 1 occurrences migrated to:
https://docs.oracle.com/javase/tutorial/javabeans/advanced/customization.html ([https](https://docs.oracle.com/javase/tutorial/javabeans/advanced/customization.html ) result 200).
* [ ] http://docs.oracle.com/javase/tutorial/javabeans/writing/properties.html with 1 occurrences migrated to:
https://docs.oracle.com/javase/tutorial/javabeans/writing/properties.html ([https](https://docs.oracle.com/javase/tutorial/javabeans/writing/properties.html ) result 200).
* [ ] http://docs.seleniumhq.org/ with 1 occurrences migrated to:
https://docs.seleniumhq.org/ ([https](https://docs.seleniumhq.org/ ) result 200).
* [ ] http://docs.seleniumhq.org/projects/webdriver/ with 1 occurrences migrated to:
https://docs.seleniumhq.org/projects/webdriver/ ([https](https://docs.seleniumhq.org/projects/webdriver/ ) result 200).
* [ ] http://docs.spring.io/spring-framework/docs/current/javadoc-api/ with 1 occurrences migrated to:
https://docs.spring.io/spring-framework/docs/current/javadoc-api/ ([https](https://docs.spring.io/spring-framework/docs/current/javadoc-api/ ) result 200).
* [ ] http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/servlet/view/script/ScriptTemplateView.html with 1 occurrences migrated to:
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/servlet/view/script/ScriptTemplateView.html ([https](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/servlet/view/script/ScriptTemplateView.html ) result 200).
* [ ] http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/ with 1 occurrences migrated to:
https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/ ([https](https://docs.spring.io/spring-framework/docs/current/spring-framework-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://en.wikipedia.org/wiki/Adapter_pattern with 1 occurrences migrated to:
https://en.wikipedia.org/wiki/Adapter_pattern ([https](https://en.wikipedia.org/wiki/Adapter_pattern ) result 200).
* [ ] http://en.wikipedia.org/wiki/Halting_Problem with 1 occurrences migrated to:
https://en.wikipedia.org/wiki/Halting_Problem ([https](https://en.wikipedia.org/wiki/Halting_Problem ) result 200).
* [ ] http://en.wikipedia.org/wiki/List_of_HTTP_status_codes with 1 occurrences migrated to:
https://en.wikipedia.org/wiki/List_of_HTTP_status_codes ([https](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes ) result 200).
* [ ] http://en.wikipedia.org/wiki/MIME with 1 occurrences migrated to:
https://en.wikipedia.org/wiki/MIME ([https](https://en.wikipedia.org/wiki/MIME ) result 200).
* [ ] http://en.wikipedia.org/wiki/Mock_Object with 1 occurrences migrated to:
https://en.wikipedia.org/wiki/Mock_Object ([https](https://en.wikipedia.org/wiki/Mock_Object ) result 200).
* [ ] http://en.wikipedia.org/wiki/Polyfill with 2 occurrences migrated to:
https://en.wikipedia.org/wiki/Polyfill ([https](https://en.wikipedia.org/wiki/Polyfill ) result 200).
* [ ] http://example.com with 132 occurrences migrated to:
https://example.com ([https](https://example.com ) result 200).
* [ ] http://example.com/ with 16 occurrences migrated to:
https://example.com/ ([https](https://example.com/ ) result 200).
* [ ] http://example.com?foo with 2 occurrences migrated to:
https://example.com?foo ([https](https://example.com?foo ) result 200).
* [ ] http://example.com?foo=bar with 8 occurrences migrated to:
https://example.com?foo=bar ([https](https://example.com?foo=bar ) result 200).
* [ ] http://example.com?foo=bar@baz with 1 occurrences migrated to:
https://example.com?foo=bar@baz ([https](https://example.com?foo=bar@baz ) result 200).
* [ ] http://example.org with 18 occurrences migrated to:
https://example.org ([https](https://example.org ) result 200).
* [ ] http://example.org/ with 1 occurrences migrated to:
https://example.org/ ([https](https://example.org/ ) result 200).
* [ ] http://fasterxml.github.io/jackson-databind/javadoc/2.6/com/fasterxml/jackson/databind/DeserializationFeature.html with 2 occurrences migrated to:
https://fasterxml.github.io/jackson-databind/javadoc/2.6/com/fasterxml/jackson/databind/DeserializationFeature.html ([https](https://fasterxml.github.io/jackson-databind/javadoc/2.6/com/fasterxml/jackson/databind/DeserializationFeature.html ) result 200).
* [ ] http://fasterxml.github.io/jackson-databind/javadoc/2.6/com/fasterxml/jackson/databind/MapperFeature.html with 2 occurrences migrated to:
https://fasterxml.github.io/jackson-databind/javadoc/2.6/com/fasterxml/jackson/databind/MapperFeature.html ([https](https://fasterxml.github.io/jackson-databind/javadoc/2.6/com/fasterxml/jackson/databind/MapperFeature.html ) result 200).
* [ ] http://h2database.com with 1 occurrences migrated to:
https://h2database.com ([https](https://h2database.com ) result 200).
* [ ] http://handlebarsjs.com with 2 occurrences migrated to:
https://handlebarsjs.com ([https](https://handlebarsjs.com ) result 200).
* [ ] http://handlebarsjs.com/ with 2 occurrences migrated to:
https://handlebarsjs.com/ ([https](https://handlebarsjs.com/ ) result 200).
* [ ] http://hc.apache.org/httpcomponents-asyncclient-dev/ with 1 occurrences migrated to:
https://hc.apache.org/httpcomponents-asyncclient-dev/ ([https](https://hc.apache.org/httpcomponents-asyncclient-dev/ ) result 200).
* [ ] http://hc.apache.org/httpcomponents-client-ga/ with 2 occurrences migrated to:
https://hc.apache.org/httpcomponents-client-ga/ ([https](https://hc.apache.org/httpcomponents-client-ga/ ) result 200).
* [ ] http://hc.apache.org/httpcomponents-client-ga/httpclient/ with 1 occurrences migrated to:
https://hc.apache.org/httpcomponents-client-ga/httpclient/ ([https](https://hc.apache.org/httpcomponents-client-ga/httpclient/ ) result 200).
* [ ] http://www.hibernate.org/ (301) with 1 occurrences migrated to:
https://hibernate.org/ ([https](https://www.hibernate.org/ ) result 200).
* [ ] http://www.hibernate.org (301) with 1 occurrences migrated to:
https://hibernate.org/ ([https](https://www.hibernate.org ) result 200).
* [ ] http://jcp.org/aboutJava/communityprocess/final/jsr003/index3.html with 1 occurrences migrated to:
https://jcp.org/aboutJava/communityprocess/final/jsr003/index3.html ([https](https://jcp.org/aboutJava/communityprocess/final/jsr003/index3.html ) result 200).
* [ ] http://jcp.org/aboutJava/communityprocess/final/jsr160/index.html with 1 occurrences migrated to:
https://jcp.org/aboutJava/communityprocess/final/jsr160/index.html ([https](https://jcp.org/aboutJava/communityprocess/final/jsr160/index.html ) result 200).
* [ ] http://jcp.org/en/jsr/detail?id=107 with 1 occurrences migrated to:
https://jcp.org/en/jsr/detail?id=107 ([https](https://jcp.org/en/jsr/detail?id=107 ) result 200).
* [ ] http://joel-costigliola.github.io/assertj/ with 3 occurrences migrated to:
https://joel-costigliola.github.io/assertj/ ([https](https://joel-costigliola.github.io/assertj/ ) result 200).
* [ ] http://jsonassert.skyscreamer.org with 1 occurrences migrated to:
https://jsonassert.skyscreamer.org ([https](https://jsonassert.skyscreamer.org ) result 200).
* [ ] http://jsonassert.skyscreamer.org/ with 5 occurrences migrated to:
https://jsonassert.skyscreamer.org/ ([https](https://jsonassert.skyscreamer.org/ ) result 200).
* [ ] http://junit.org/junit5/docs/current/user-guide/ with 2 occurrences migrated to:
https://junit.org/junit5/docs/current/user-guide/ ([https](https://junit.org/junit5/docs/current/user-guide/ ) result 200).
* [ ] http://kotlinlang.org/ with 2 occurrences migrated to:
https://kotlinlang.org/ ([https](https://kotlinlang.org/ ) result 200).
* [ ] http://kotlinlang.org/docs/reference/ with 1 occurrences migrated to:
https://kotlinlang.org/docs/reference/ ([https](https://kotlinlang.org/docs/reference/ ) result 200).
* [ ] http://kotlinlang.org/docs/reference/classes.html with 3 occurrences migrated to:
https://kotlinlang.org/docs/reference/classes.html ([https](https://kotlinlang.org/docs/reference/classes.html ) result 200).
* [ ] http://mydomain.com with 5 occurrences migrated to:
https://mydomain.com ([https](https://mydomain.com ) result 200).
* [ ] http://netty.io/ with 1 occurrences migrated to:
https://netty.io/ ([https](https://netty.io/ ) result 200).
* [ ] http://openjdk.java.net/jeps/290 with 1 occurrences migrated to:
https://openjdk.java.net/jeps/290 ([https](https://openjdk.java.net/jeps/290 ) result 200).
* [ ] http://openjdk.java.net/projects/nashorn/ with 10 occurrences migrated to:
https://openjdk.java.net/projects/nashorn/ ([https](https://openjdk.java.net/projects/nashorn/ ) result 200).
* [ ] http://poi.apache.org with 3 occurrences migrated to:
https://poi.apache.org ([https](https://poi.apache.org ) result 200).
* [ ] http://projects.spring.io/spring-boot/ with 1 occurrences migrated to:
https://projects.spring.io/spring-boot/ ([https](https://projects.spring.io/spring-boot/ ) result 200).
* [ ] http://projects.spring.io/spring-data/ with 1 occurrences migrated to:
https://projects.spring.io/spring-data/ ([https](https://projects.spring.io/spring-data/ ) result 200).
* [ ] http://projects.spring.io/spring-framework/ with 1 occurrences migrated to:
https://projects.spring.io/spring-framework/ ([https](https://projects.spring.io/spring-framework/ ) result 200).
* [ ] http://projects.spring.io/spring-integration/ with 1 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 3 occurrences migrated to:
https://projects.spring.io/spring-security/ ([https](https://projects.spring.io/spring-security/ ) result 200).
* [ ] http://repo1.maven.org/maven2/javax/inject/javax.inject/1/ with 2 occurrences migrated to:
https://repo1.maven.org/maven2/javax/inject/javax.inject/1/ ([https](https://repo1.maven.org/maven2/javax/inject/javax.inject/1/ ) result 200).
* [ ] http://schema.spring.io/mvc/spring-mvc.xsd with 1 occurrences migrated to:
https://schema.spring.io/mvc/spring-mvc.xsd ([https](https://schema.spring.io/mvc/spring-mvc.xsd ) result 200).
* [ ] http://search.maven.org/ with 2 occurrences migrated to:
https://search.maven.org/ ([https](https://search.maven.org/ ) result 200).
* [ ] http://sockjs.github.io/sockjs-protocol/sockjs-protocol-0.3.3.html with 3 occurrences migrated to:
https://sockjs.github.io/sockjs-protocol/sockjs-protocol-0.3.3.html ([https](https://sockjs.github.io/sockjs-protocol/sockjs-protocol-0.3.3.html ) result 200).
* [ ] http://sourceforge.net with 1 occurrences migrated to:
https://sourceforge.net ([https](https://sourceforge.net ) result 200).
* [ ] http://sourceforge.net/projects/javadiff/ with 1 occurrences migrated to:
https://sourceforge.net/projects/javadiff/ ([https](https://sourceforge.net/projects/javadiff/ ) result 200).
* [ ] http://sourceforge.net/sflogo.php?group_id=37160 with 1 occurrences migrated to:
https://sourceforge.net/sflogo.php?group_id=37160 ([https](https://sourceforge.net/sflogo.php?group_id=37160 ) result 200).
* [ ] http://spring.io/blog/ with 1 occurrences migrated to:
https://spring.io/blog/ ([https](https://spring.io/blog/ ) result 200).
* [ ] http://spring.io/blog/category/news with 1 occurrences migrated to:
https://spring.io/blog/category/news ([https](https://spring.io/blog/category/news ) result 200).
* [ ] http://square.github.io/okhttp/ with 1 occurrences migrated to:
https://square.github.io/okhttp/ ([https](https://square.github.io/okhttp/ ) result 200).
* [ ] http://stackoverflow.com/questions/1481251/what-does-document-domain-document-domain-do with 1 occurrences migrated to:
https://stackoverflow.com/questions/1481251/what-does-document-domain-document-domain-do ([https](https://stackoverflow.com/questions/1481251/what-does-document-domain-document-domain-do ) result 200).
* [ ] http://stackoverflow.com/questions/19394570/java-jre-7u45-breaks-classloader-getresources with 2 occurrences migrated to:
https://stackoverflow.com/questions/19394570/java-jre-7u45-breaks-classloader-getresources ([https](https://stackoverflow.com/questions/19394570/java-jre-7u45-breaks-classloader-getresources ) result 200).
* [ ] http://stackoverflow.com/questions/22986109/testing-spring-managed-servlet with 1 occurrences migrated to:
https://stackoverflow.com/questions/22986109/testing-spring-managed-servlet ([https](https://stackoverflow.com/questions/22986109/testing-spring-managed-servlet ) result 200).
* [ ] http://stackoverflow.com/questions/24725438/what-could-cause-a-class-implementing-applicationlistenercontextrefreshedevent with 1 occurrences migrated to:
https://stackoverflow.com/questions/24725438/what-could-cause-a-class-implementing-applicationlistenercontextrefreshedevent ([https](https://stackoverflow.com/questions/24725438/what-could-cause-a-class-implementing-applicationlistenercontextrefreshedevent ) result 200).
* [ ] http://stackoverflow.com/questions/35733344/can-contextconfiguration-in-a-custom-annotation-be-merged with 1 occurrences migrated to:
https://stackoverflow.com/questions/35733344/can-contextconfiguration-in-a-custom-annotation-be-merged ([https](https://stackoverflow.com/questions/35733344/can-contextconfiguration-in-a-custom-annotation-be-merged ) result 200).
* [ ] http://start.spring.io/ with 2 occurrences migrated to:
https://start.spring.io/ ([https](https://start.spring.io/ ) result 200).
* [ ] http://stas-blogspot.blogspot.com/2010/03/java-bridge-methods-explained.html with 1 occurrences migrated to:
https://stas-blogspot.blogspot.com/2010/03/java-bridge-methods-explained.html ([https](https://stas-blogspot.blogspot.com/2010/03/java-bridge-methods-explained.html ) result 200).
* [ ] http://stomp.github.io/stomp-specification-1.2.html with 9 occurrences migrated to:
https://stomp.github.io/stomp-specification-1.2.html ([https](https://stomp.github.io/stomp-specification-1.2.html ) result 200).
* [ ] http://struts.apache.org with 1 occurrences migrated to:
https://struts.apache.org ([https](https://struts.apache.org ) result 200).
* [ ] http://struts.apache.org/ with 1 occurrences migrated to:
https://struts.apache.org/ ([https](https://struts.apache.org/ ) result 200).
* [ ] http://tapestry.apache.org/ with 2 occurrences migrated to:
https://tapestry.apache.org/ ([https](https://tapestry.apache.org/ ) result 200).
* [ ] http://tiles.apache.org with 4 occurrences migrated to:
https://tiles.apache.org ([https](https://tiles.apache.org ) result 200).
* [ ] http://tiles.apache.org/framework/dependency-management.html with 1 occurrences migrated to:
https://tiles.apache.org/framework/dependency-management.html ([https](https://tiles.apache.org/framework/dependency-management.html ) result 200).
* [ ] http://tools.ietf.org/html/rfc1945 with 1 occurrences migrated to:
https://tools.ietf.org/html/rfc1945 ([https](https://tools.ietf.org/html/rfc1945 ) result 200).
* [ ] http://tools.ietf.org/html/rfc2109 with 2 occurrences migrated to:
https://tools.ietf.org/html/rfc2109 ([https](https://tools.ietf.org/html/rfc2109 ) result 200).
* [ ] http://tools.ietf.org/html/rfc2295 with 1 occurrences migrated to:
https://tools.ietf.org/html/rfc2295 ([https](https://tools.ietf.org/html/rfc2295 ) result 200).
* [ ] http://tools.ietf.org/html/rfc2324 with 1 occurrences migrated to:
https://tools.ietf.org/html/rfc2324 ([https](https://tools.ietf.org/html/rfc2324 ) result 200).
* [ ] http://tools.ietf.org/html/rfc2518 with 1 occurrences migrated to:
https://tools.ietf.org/html/rfc2518 ([https](https://tools.ietf.org/html/rfc2518 ) result 200).
* [ ] http://tools.ietf.org/html/rfc2616 with 3 occurrences migrated to:
https://tools.ietf.org/html/rfc2616 ([https](https://tools.ietf.org/html/rfc2616 ) result 200).
* [ ] http://tools.ietf.org/html/rfc2774 with 1 occurrences migrated to:
https://tools.ietf.org/html/rfc2774 ([https](https://tools.ietf.org/html/rfc2774 ) result 200).
* [ ] http://tools.ietf.org/html/rfc2817 with 1 occurrences migrated to:
https://tools.ietf.org/html/rfc2817 ([https](https://tools.ietf.org/html/rfc2817 ) result 200).
* [ ] http://tools.ietf.org/html/rfc2965 with 1 occurrences migrated to:
https://tools.ietf.org/html/rfc2965 ([https](https://tools.ietf.org/html/rfc2965 ) result 200).
* [ ] http://tools.ietf.org/html/rfc3229 with 1 occurrences migrated to:
https://tools.ietf.org/html/rfc3229 ([https](https://tools.ietf.org/html/rfc3229 ) result 200).
* [ ] http://tools.ietf.org/html/rfc3986 with 3 occurrences migrated to:
https://tools.ietf.org/html/rfc3986 ([https](https://tools.ietf.org/html/rfc3986 ) result 200).
* [ ] http://tools.ietf.org/html/rfc4918 with 5 occurrences migrated to:
https://tools.ietf.org/html/rfc4918 ([https](https://tools.ietf.org/html/rfc4918 ) result 200).
* [ ] http://tools.ietf.org/html/rfc5842 with 2 occurrences migrated to:
https://tools.ietf.org/html/rfc5842 ([https](https://tools.ietf.org/html/rfc5842 ) result 200).
* [ ] http://tools.ietf.org/html/rfc5988 with 1 occurrences migrated to:
https://tools.ietf.org/html/rfc5988 ([https](https://tools.ietf.org/html/rfc5988 ) result 200).
* [ ] http://tools.ietf.org/html/rfc6202 with 1 occurrences migrated to:
https://tools.ietf.org/html/rfc6202 ([https](https://tools.ietf.org/html/rfc6202 ) result 200).
* [ ] http://tools.ietf.org/html/rfc6266 with 1 occurrences migrated to:
https://tools.ietf.org/html/rfc6266 ([https](https://tools.ietf.org/html/rfc6266 ) result 200).
* [ ] http://tools.ietf.org/html/rfc6454 with 1 occurrences migrated to:
https://tools.ietf.org/html/rfc6454 ([https](https://tools.ietf.org/html/rfc6454 ) result 200).
* [ ] http://tools.ietf.org/html/rfc6455 with 2 occurrences migrated to:
https://tools.ietf.org/html/rfc6455 ([https](https://tools.ietf.org/html/rfc6455 ) result 200).
* [ ] http://tools.ietf.org/html/rfc6585 with 4 occurrences migrated to:
https://tools.ietf.org/html/rfc6585 ([https](https://tools.ietf.org/html/rfc6585 ) result 200).
* [ ] http://tools.ietf.org/html/rfc7230 with 10 occurrences migrated to:
https://tools.ietf.org/html/rfc7230 ([https](https://tools.ietf.org/html/rfc7230 ) result 200).
* [ ] http://tools.ietf.org/html/rfc7231 with 56 occurrences migrated to:
https://tools.ietf.org/html/rfc7231 ([https](https://tools.ietf.org/html/rfc7231 ) result 200).
* [ ] http://tools.ietf.org/html/rfc7232 with 8 occurrences migrated to:
https://tools.ietf.org/html/rfc7232 ([https](https://tools.ietf.org/html/rfc7232 ) result 200).
* [ ] http://tools.ietf.org/html/rfc7233 with 12 occurrences migrated to:
https://tools.ietf.org/html/rfc7233 ([https](https://tools.ietf.org/html/rfc7233 ) result 200).
* [ ] http://tools.ietf.org/html/rfc7234 with 5 occurrences migrated to:
https://tools.ietf.org/html/rfc7234 ([https](https://tools.ietf.org/html/rfc7234 ) result 200).
* [ ] http://tools.ietf.org/html/rfc7235 with 6 occurrences migrated to:
https://tools.ietf.org/html/rfc7235 ([https](https://tools.ietf.org/html/rfc7235 ) result 200).
* [ ] http://tools.ietf.org/html/rfc7238 with 1 occurrences migrated to:
https://tools.ietf.org/html/rfc7238 ([https](https://tools.ietf.org/html/rfc7238 ) result 200).
* [ ] http://tools.ietf.org/html/rfc7239 with 7 occurrences migrated to:
https://tools.ietf.org/html/rfc7239 ([https](https://tools.ietf.org/html/rfc7239 ) result 200).
* [ ] http://tools.ietf.org/rfcdiff?difftype=--hwdiff&url2=draft-ietf-webdav-protocol-06.txt with 3 occurrences migrated to:
https://tools.ietf.org/rfcdiff?difftype=--hwdiff&url2=draft-ietf-webdav-protocol-06.txt ([https](https://tools.ietf.org/rfcdiff?difftype=--hwdiff&url2=draft-ietf-webdav-protocol-06.txt ) result 200).
* [ ] http://unlicense.org with 1 occurrences migrated to:
https://unlicense.org ([https](https://unlicense.org ) result 200).
* [ ] http://www.amazon.com/exec/obidos/tg/detail/-/0764543857/ with 10 occurrences migrated to:
https://www.amazon.com/exec/obidos/tg/detail/-/0764543857/ ([https](https://www.amazon.com/exec/obidos/tg/detail/-/0764543857/ ) result 200).
* [ ] http://www.apache.org with 1 occurrences migrated to:
https://www.apache.org ([https](https://www.apache.org ) result 200).
* [ ] http://www.apple.com/DTDs/PropertyList-1.0.dtd with 6 occurrences migrated to:
https://www.apple.com/DTDs/PropertyList-1.0.dtd ([https](https://www.apple.com/DTDs/PropertyList-1.0.dtd ) result 200).
* [ ] http://www.atomikos.com/ with 1 occurrences migrated to:
https://www.atomikos.com/ ([https](https://www.atomikos.com/ ) result 200).
* [ ] http://www.baeldung.com/kotlin-null-safety with 1 occurrences migrated to:
https://www.baeldung.com/kotlin-null-safety ([https](https://www.baeldung.com/kotlin-null-safety ) result 200).
* [ ] http://www.eclipse.org/aspectj/doc/released/devguide/index.html with 1 occurrences migrated to:
https://www.eclipse.org/aspectj/doc/released/devguide/index.html ([https](https://www.eclipse.org/aspectj/doc/released/devguide/index.html ) result 200).
* [ ] http://www.eclipse.org/aspectj/doc/released/devguide/ltw-configuration.html with 1 occurrences migrated to:
https://www.eclipse.org/aspectj/doc/released/devguide/ltw-configuration.html ([https](https://www.eclipse.org/aspectj/doc/released/devguide/ltw-configuration.html ) result 200).
* [ ] http://www.eclipse.org/aspectj/dtd/aspectj.dtd with 1 occurrences migrated to:
https://www.eclipse.org/aspectj/dtd/aspectj.dtd ([https](https://www.eclipse.org/aspectj/dtd/aspectj.dtd ) result 200).
* [ ] http://ehcache.sourceforge.net (301) with 1 occurrences migrated to:
https://www.ehcache.org/ ([https](https://ehcache.sourceforge.net ) result 200).
* [ ] http://ehcache.org/ (301) with 1 occurrences migrated to:
https://www.ehcache.org/ ([https](https://ehcache.org/ ) result 200).
* [ ] http://www.embeddedjs.com/ with 2 occurrences migrated to:
https://www.embeddedjs.com/ ([https](https://www.embeddedjs.com/ ) result 200).
* [ ] http://www.enterpriseintegrationpatterns.com with 1 occurrences migrated to:
https://www.enterpriseintegrationpatterns.com ([https](https://www.enterpriseintegrationpatterns.com ) result 200).
* [ ] http://www.example.org/?param=aGVsbG9Xb3JsZA%3D%3D with 1 occurrences migrated to:
https://www.example.org/?param=aGVsbG9Xb3JsZA%3D%3D ([https](https://www.example.org/?param=aGVsbG9Xb3JsZA%3D%3D ) result 200).
* [ ] http://www.google.com with 2 occurrences migrated to:
https://www.google.com ([https](https://www.google.com ) result 200).
* [ ] http://www.h2database.com with 1 occurrences migrated to:
https://www.h2database.com ([https](https://www.h2database.com ) result 200).
* [ ] http://www.h2database.com/html/grammar.html with 1 occurrences migrated to:
https://www.h2database.com/html/grammar.html ([https](https://www.h2database.com/html/grammar.html ) result 200).
* [ ] http://www.ietf.org with 1 occurrences migrated to:
https://www.ietf.org ([https](https://www.ietf.org ) result 200).
* [ ] http://www.ietf.org/rfc/rfc1867.txt with 1 occurrences migrated to:
https://www.ietf.org/rfc/rfc1867.txt ([https](https://www.ietf.org/rfc/rfc1867.txt ) result 200).
* [ ] http://www.ietf.org/rfc/rfc2396.txt with 2 occurrences migrated to:
https://www.ietf.org/rfc/rfc2396.txt ([https](https://www.ietf.org/rfc/rfc2396.txt ) result 200).
* [ ] http://www.ietf.org/rfc/rfc3986.txt with 11 occurrences migrated to:
https://www.ietf.org/rfc/rfc3986.txt ([https](https://www.ietf.org/rfc/rfc3986.txt ) result 200).
* [ ] http://www.infoq.com/ with 1 occurrences migrated to:
https://www.infoq.com/ ([https](https://www.infoq.com/ ) result 200).
* [ ] http://www.infoq.com/minibooks/JTDS with 1 occurrences migrated to:
https://www.infoq.com/minibooks/JTDS ([https](https://www.infoq.com/minibooks/JTDS ) result 200).
* [ ] http://www.jetbrains.com/idea/ with 1 occurrences migrated to:
https://www.jetbrains.com/idea/ ([https](https://www.jetbrains.com/idea/ ) result 200).
* [ ] http://www.json.org/ with 1 occurrences migrated to:
https://www.json.org/ ([https](https://www.json.org/ ) result 200).
* [ ] http://www.jython.org with 2 occurrences migrated to:
https://www.jython.org ([https](https://www.jython.org ) result 200).
* [ ] http://www.jython.org/ with 2 occurrences migrated to:
https://www.jython.org/ ([https](https://www.jython.org/ ) result 200).
* [ ] http://www.lowagie.com/iText with 2 occurrences migrated to:
https://www.lowagie.com/iText ([https](https://www.lowagie.com/iText ) result 200).
* [ ] http://www.manpagez.com/man/5/crontab/ with 1 occurrences migrated to:
https://www.manpagez.com/man/5/crontab/ ([https](https://www.manpagez.com/man/5/crontab/ ) result 200).
* [ ] http://mydomain1.com:80/ (301) with 2 occurrences migrated to:
https://www.mydomain1.com/ ([https](https://mydomain1.com:80/ ) result 200).
* [ ] http://mydomain1.com:80 (301) with 1 occurrences migrated to:
https://www.mydomain1.com/ ([https](https://mydomain1.com:80 ) result 200).
* [ ] http://www.oracle.com/technetwork/articles/javaee/jpa-137156.html with 1 occurrences migrated to:
https://www.oracle.com/technetwork/articles/javaee/jpa-137156.html ([https](https://www.oracle.com/technetwork/articles/javaee/jpa-137156.html ) result 200).
* [ ] http://www.oracle.com/technetwork/java/javaee/javaserverfaces-139869.html with 1 occurrences migrated to:
https://www.oracle.com/technetwork/java/javaee/javaserverfaces-139869.html ([https](https://www.oracle.com/technetwork/java/javaee/javaserverfaces-139869.html ) result 200).
* [ ] http://www.oracle.com/technetwork/java/javase/documentation/spec-136004.html with 1 occurrences migrated to:
https://www.oracle.com/technetwork/java/javase/documentation/spec-136004.html ([https](https://www.oracle.com/technetwork/java/javase/documentation/spec-136004.html ) result 200).
* [ ] http://www.oracle.com/technetwork/java/javase/tech/download-jsp-141676.html with 1 occurrences migrated to:
https://www.oracle.com/technetwork/java/javase/tech/download-jsp-141676.html ([https](https://www.oracle.com/technetwork/java/javase/tech/download-jsp-141676.html ) result 200).
* [ ] http://www.oracle.com/technetwork/java/javase/tech/javamanagement-140525.html with 1 occurrences migrated to:
https://www.oracle.com/technetwork/java/javase/tech/javamanagement-140525.html ([https](https://www.oracle.com/technetwork/java/javase/tech/javamanagement-140525.html ) result 200).
* [ ] http://www.ow2.org/ with 1 occurrences migrated to:
https://www.ow2.org/ ([https](https://www.ow2.org/ ) result 200).
* [ ] http://www.owasp.org/index.php/HTTPOnly with 4 occurrences migrated to:
https://www.owasp.org/index.php/HTTPOnly ([https](https://www.owasp.org/index.php/HTTPOnly ) result 200).
* [ ] http://quartz-scheduler.org (301) with 3 occurrences migrated to:
https://www.quartz-scheduler.org/ ([https](https://quartz-scheduler.org ) result 200).
* [ ] http://www.rabbitmq.com/stomp.html with 1 occurrences migrated to:
https://www.rabbitmq.com/stomp.html ([https](https://www.rabbitmq.com/stomp.html ) result 200).
* [ ] http://www.reactive-streams.org with 1 occurrences migrated to:
https://www.reactive-streams.org ([https](https://www.reactive-streams.org ) result 200).
* [ ] http://www.reactive-streams.org/ with 2 occurrences migrated to:
https://www.reactive-streams.org/ ([https](https://www.reactive-streams.org/ ) result 200).
* [ ] http://www.reactive-streams.org/reactive-streams-1.0.1-javadoc/org/reactivestreams/Publisher.html with 1 occurrences migrated to:
https://www.reactive-streams.org/reactive-streams-1.0.1-javadoc/org/reactivestreams/Publisher.html ([https](https://www.reactive-streams.org/reactive-streams-1.0.1-javadoc/org/reactivestreams/Publisher.html ) result 200).
* [ ] http://www.reactive-streams.org/reactive-streams-1.0.1-javadoc/org/reactivestreams/Subscriber.html with 1 occurrences migrated to:
https://www.reactive-streams.org/reactive-streams-1.0.1-javadoc/org/reactivestreams/Subscriber.html ([https](https://www.reactive-streams.org/reactive-streams-1.0.1-javadoc/org/reactivestreams/Subscriber.html ) result 200).
* [ ] http://seleniumhq.org/projects/webdriver/ (301) with 1 occurrences migrated to:
https://www.seleniumhq.org ([https](https://seleniumhq.org/projects/webdriver/ ) result 200).
* [ ] http://www.springbyexample.org/examples/custom-thread-scope-module.html with 1 occurrences migrated to:
https://www.springbyexample.org/examples/custom-thread-scope-module.html ([https](https://www.springbyexample.org/examples/custom-thread-scope-module.html ) result 200).
* [ ] http://www.springframework.org/dtd/spring-beans-2.0.dtd with 3 occurrences migrated to:
https://www.springframework.org/dtd/spring-beans-2.0.dtd ([https](https://www.springframework.org/dtd/spring-beans-2.0.dtd ) 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 80 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/cache/spring-cache.xsd with 2 occurrences migrated to:
https://www.springframework.org/schema/cache/spring-cache.xsd ([https](https://www.springframework.org/schema/cache/spring-cache.xsd ) result 200).
* [ ] http://www.springframework.org/schema/context/spring-context.xsd with 13 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/jdbc/spring-jdbc.xsd with 1 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/jee/spring-jee.xsd with 2 occurrences migrated to:
https://www.springframework.org/schema/jee/spring-jee.xsd ([https](https://www.springframework.org/schema/jee/spring-jee.xsd ) result 200).
* [ ] http://www.springframework.org/schema/jms/spring-jms.xsd with 2 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 3 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/oxm/spring-oxm.xsd with 1 occurrences migrated to:
https://www.springframework.org/schema/oxm/spring-oxm.xsd ([https](https://www.springframework.org/schema/oxm/spring-oxm.xsd ) result 200).
* [ ] http://www.springframework.org/schema/tool/spring-tool.xsd with 13 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 8 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 1 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 12 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.stuartellis.eu/articles/erb/ (301) with 2 occurrences migrated to:
https://www.stuartellis.name/articles/erb/ ([https](https://www.stuartellis.eu/articles/erb/ ) result 200).
* [ ] http://www.thymeleaf.org/ with 2 occurrences migrated to:
https://www.thymeleaf.org/ ([https](https://www.thymeleaf.org/ ) result 200).
* [ ] http://www.thymeleaf.org/documentation.html with 2 occurrences migrated to:
https://www.thymeleaf.org/documentation.html ([https](https://www.thymeleaf.org/documentation.html ) result 200).
* [ ] http://www.w3.org/2000/xmlns/ with 5 occurrences migrated to:
https://www.w3.org/2000/xmlns/ ([https](https://www.w3.org/2000/xmlns/ ) result 200).
* [ ] http://www.w3.org/2004/08/xop/include with 2 occurrences migrated to:
https://www.w3.org/2004/08/xop/include ([https](https://www.w3.org/2004/08/xop/include ) result 200).
* [ ] http://www.w3.org/DesignIssues/MatrixURIs.html with 1 occurrences migrated to:
https://www.w3.org/DesignIssues/MatrixURIs.html ([https](https://www.w3.org/DesignIssues/MatrixURIs.html ) result 200).
* [ ] http://www.w3.org/TR/2004/WD-soap12-mtom-20040608/ with 2 occurrences migrated to:
https://www.w3.org/TR/2004/WD-soap12-mtom-20040608/ ([https](https://www.w3.org/TR/2004/WD-soap12-mtom-20040608/ ) result 200).
* [ ] http://www.w3.org/TR/2005/REC-xop10-20050125/ with 6 occurrences migrated to:
https://www.w3.org/TR/2005/REC-xop10-20050125/ ([https](https://www.w3.org/TR/2005/REC-xop10-20050125/ ) result 200).
* [ ] http://www.w3.org/TR/cors/ with 19 occurrences migrated to:
https://www.w3.org/TR/cors/ ([https](https://www.w3.org/TR/cors/ ) result 200).
* [ ] http://www.w3.org/TR/eventsource/ with 2 occurrences migrated to:
https://www.w3.org/TR/eventsource/ ([https](https://www.w3.org/TR/eventsource/ ) result 200).
* [ ] http://www.w3.org/TR/xhtml1/ with 1 occurrences migrated to:
https://www.w3.org/TR/xhtml1/ ([https](https://www.w3.org/TR/xhtml1/ ) result 200).
* [ ] http://www.w3.org/TR/xhtml1/diffs.html with 1 occurrences migrated to:
https://www.w3.org/TR/xhtml1/diffs.html ([https](https://www.w3.org/TR/xhtml1/diffs.html ) result 200).
* [ ] http://www.w3.org/TR/xhtml1/dtds.html with 1 occurrences migrated to:
https://www.w3.org/TR/xhtml1/dtds.html ([https](https://www.w3.org/TR/xhtml1/dtds.html ) result 200).
* [ ] http://www.webjars.org with 4 occurrences migrated to:
https://www.webjars.org ([https](https://www.webjars.org ) result 200).
* [ ] http://www.webjars.org/ with 2 occurrences migrated to:
https://www.webjars.org/ ([https](https://www.webjars.org/ ) result 200).
* [ ] http://www.webjars.org/documentation with 2 occurrences migrated to:
https://www.webjars.org/documentation ([https](https://www.webjars.org/documentation ) result 200).
* [ ] http://x-stream.github.io/ with 2 occurrences migrated to:
https://x-stream.github.io/ ([https](https://x-stream.github.io/ ) result 200).
* [ ] http://youtrack.jetbrains.com/issue/IDEA-53476 with 1 occurrences migrated to:
https://youtrack.jetbrains.com/issue/IDEA-53476 ([https](https://youtrack.jetbrains.com/issue/IDEA-53476 ) result 200).
* [ ] http://youtrack.jetbrains.com/issue/IDEA-64446 with 1 occurrences migrated to:
https://youtrack.jetbrains.com/issue/IDEA-64446 ([https](https://youtrack.jetbrains.com/issue/IDEA-64446 ) result 200).
* [ ] http://bit.ly/TRlX2r with 1 occurrences migrated to:
https://bit.ly/TRlX2r ([https](https://bit.ly/TRlX2r ) result 301).
* [ ] http://bit.ly/UzccDt with 1 occurrences migrated to:
https://bit.ly/UzccDt ([https](https://bit.ly/UzccDt ) result 301).
* [ ] http://bit.ly/p9rIvx with 1 occurrences migrated to:
https://bit.ly/p9rIvx ([https](https://bit.ly/p9rIvx ) result 301).
* [ ] http://bit.ly/qUwvwz with 1 occurrences migrated to:
https://bit.ly/qUwvwz ([https](https://bit.ly/qUwvwz ) result 301).
* [ ] http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx with 1 occurrences migrated to:
https://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx ([https](https://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx ) result 301).
* [ ] http://castor-data-binding.github.io/castor with 1 occurrences migrated to:
https://castor-data-binding.github.io/castor ([https](https://castor-data-binding.github.io/castor ) result 301).
* [ ] http://code.google.com/p/beanshell2/ with 1 occurrences migrated to:
https://code.google.com/p/beanshell2/ ([https](https://code.google.com/p/beanshell2/ ) result 301).
* [ ] http://code.google.com/p/browsersec/wiki/Part2 with 1 occurrences migrated to:
https://code.google.com/p/browsersec/wiki/Part2 ([https](https://code.google.com/p/browsersec/wiki/Part2 ) result 301).
* [ ] http://code.google.com/p/gears/wiki/ResumableHttpRequestsProposal with 1 occurrences migrated to:
https://code.google.com/p/gears/wiki/ResumableHttpRequestsProposal ([https](https://code.google.com/p/gears/wiki/ResumableHttpRequestsProposal ) result 301).
* [ ] http://code.google.com/p/xml-matchers/ with 3 occurrences migrated to:
https://code.google.com/p/xml-matchers/ ([https](https://code.google.com/p/xml-matchers/ ) result 301).
* [ ] http://commons.apache.org/proper/commons-dbcp with 2 occurrences migrated to:
https://commons.apache.org/proper/commons-dbcp ([https](https://commons.apache.org/proper/commons-dbcp ) result 301).
* [ ] http://commons.apache.org/proper/commons-fileupload with 2 occurrences migrated to:
https://commons.apache.org/proper/commons-fileupload ([https](https://commons.apache.org/proper/commons-fileupload ) result 301).
* [ ] http://confluence.jetbrains.net/display/IDEADEV/Gradle+integration with 1 occurrences migrated to:
https://confluence.jetbrains.net/display/IDEADEV/Gradle+integration ([https](https://confluence.jetbrains.net/display/IDEADEV/Gradle+integration ) result 301).
* [ ] http://contributor-covenant.org with 1 occurrences migrated to:
https://contributor-covenant.org ([https](https://contributor-covenant.org ) result 301).
* [ ] http://contributor-covenant.org/version/1/3/0/ with 1 occurrences migrated to:
https://contributor-covenant.org/version/1/3/0/ ([https](https://contributor-covenant.org/version/1/3/0/ ) result 301).
* [ ] http://db.apache.org/derby with 2 occurrences migrated to:
https://db.apache.org/derby ([https](https://db.apache.org/derby ) result 301).
* [ ] http://dev.w3.org/html5/eventsource/ with 2 occurrences migrated to:
https://dev.w3.org/html5/eventsource/ ([https](https://dev.w3.org/html5/eventsource/ ) result 301).
* [ ] http://domain.com with 24 occurrences migrated to:
https://domain.com ([https](https://domain.com ) result 301).
* [ ] http://domain.com/ with 1 occurrences migrated to:
https://domain.com/ ([https](https://domain.com/ ) result 301).
* [ ] http://en.wikipedia.org/wiki/Cache_ with 1 occurrences migrated to:
https://en.wikipedia.org/wiki/Cache_ ([https](https://en.wikipedia.org/wiki/Cache_ ) result 301).
* [ ] http://facebook.github.io/react/ with 2 occurrences migrated to:
https://facebook.github.io/react/ ([https](https://facebook.github.io/react/ ) result 301).
* [ ] http://forum.springframework.org/showthread.php?t=41350 with 1 occurrences migrated to:
https://forum.springframework.org/showthread.php?t=41350 ([https](https://forum.springframework.org/showthread.php?t=41350 ) result 301).
* [ ] http://github.com/SpringSource/spring-framework with 1 occurrences migrated to:
https://github.com/SpringSource/spring-framework ([https](https://github.com/SpringSource/spring-framework ) result 301).
* [ ] http://hdiv.org/ with 1 occurrences migrated to:
https://hdiv.org/ ([https](https://hdiv.org/ ) result 301).
* [ ] http://jakarta.apache.org/commons/fileupload with 1 occurrences migrated to:
https://jakarta.apache.org/commons/fileupload ([https](https://jakarta.apache.org/commons/fileupload ) result 301).
* [ ] http://jira.springframework.org/browse/SPR-5708 with 1 occurrences migrated to:
https://jira.springframework.org/browse/SPR-5708 ([https](https://jira.springframework.org/browse/SPR-5708 ) result 301).
* [ ] http://jira.springframework.org/browse/SPR-6124 with 1 occurrences migrated to:
https://jira.springframework.org/browse/SPR-6124 ([https](https://jira.springframework.org/browse/SPR-6124 ) result 301).
* [ ] http://jira.springframework.org/browse/SPR-6128 with 1 occurrences migrated to:
https://jira.springframework.org/browse/SPR-6128 ([https](https://jira.springframework.org/browse/SPR-6128 ) result 301).
* [ ] http://jira.springframework.org/browse/SPR-7064 with 1 occurrences migrated to:
https://jira.springframework.org/browse/SPR-7064 ([https](https://jira.springframework.org/browse/SPR-7064 ) result 301).
* [ ] http://maven.apache.org/plugins/maven-surefire-plugin/test-mojo.html with 1 occurrences migrated to:
https://maven.apache.org/plugins/maven-surefire-plugin/test-mojo.html ([https](https://maven.apache.org/plugins/maven-surefire-plugin/test-mojo.html ) result 301).
* [ ] http://mockito.org/ (301) with 1 occurrences migrated to:
https://mockito.github.io ([https](https://mockito.org/ ) result 301).
* [ ] http://mydomain1.com with 37 occurrences migrated to:
https://mydomain1.com ([https](https://mydomain1.com ) result 301).
* [ ] http://mydomain1.com/ with 2 occurrences migrated to:
https://mydomain1.com/ ([https](https://mydomain1.com/ ) result 301).
* [ ] http://mydomain1.com/path with 2 occurrences migrated to:
https://mydomain1.com/path ([https](https://mydomain1.com/path ) result 301).
* [ ] http://opensource.atlassian.com/projects/spring/browse/SPR-2660 with 1 occurrences migrated to:
https://opensource.atlassian.com/projects/spring/browse/SPR-2660 ([https](https://opensource.atlassian.com/projects/spring/browse/SPR-2660 ) result 301).
* [ ] http://opensource.atlassian.com/projects/spring/browse/SPR-2754 with 1 occurrences migrated to:
https://opensource.atlassian.com/projects/spring/browse/SPR-2754 ([https](https://opensource.atlassian.com/projects/spring/browse/SPR-2754 ) result 301).
* [ ] http://opensource.atlassian.com/projects/spring/browse/SPR-2789 with 1 occurrences migrated to:
https://opensource.atlassian.com/projects/spring/browse/SPR-2789 ([https](https://opensource.atlassian.com/projects/spring/browse/SPR-2789 ) result 301).
* [ ] http://opensource.atlassian.com/projects/spring/browse/SPR-3127 with 1 occurrences migrated to:
https://opensource.atlassian.com/projects/spring/browse/SPR-3127 ([https](https://opensource.atlassian.com/projects/spring/browse/SPR-3127 ) result 301).
* [ ] http://opensource.atlassian.com/projects/spring/browse/SPR-3775 with 1 occurrences migrated to:
https://opensource.atlassian.com/projects/spring/browse/SPR-3775 ([https](https://opensource.atlassian.com/projects/spring/browse/SPR-3775 ) result 301).
* [ ] http://opensource.atlassian.com/projects/spring/browse/SPR-3880 with 1 occurrences migrated to:
https://opensource.atlassian.com/projects/spring/browse/SPR-3880 ([https](https://opensource.atlassian.com/projects/spring/browse/SPR-3880 ) result 301).
* [ ] http://opensource.atlassian.com/projects/spring/browse/SPR-3896 with 7 occurrences migrated to:
https://opensource.atlassian.com/projects/spring/browse/SPR-3896 ([https](https://opensource.atlassian.com/projects/spring/browse/SPR-3896 ) result 301).
* [ ] http://opensource.atlassian.com/projects/spring/browse/SPR-3949 with 1 occurrences migrated to:
https://opensource.atlassian.com/projects/spring/browse/SPR-3949 ([https](https://opensource.atlassian.com/projects/spring/browse/SPR-3949 ) result 301).
* [ ] http://opensource.atlassian.com/projects/spring/browse/SPR-4008 with 2 occurrences migrated to:
https://opensource.atlassian.com/projects/spring/browse/SPR-4008 ([https](https://opensource.atlassian.com/projects/spring/browse/SPR-4008 ) result 301).
* [ ] http://opensource.atlassian.com/projects/spring/browse/SPR-4040 with 2 occurrences migrated to:
https://opensource.atlassian.com/projects/spring/browse/SPR-4040 ([https](https://opensource.atlassian.com/projects/spring/browse/SPR-4040 ) result 301).
* [ ] http://publib.boulder.ibm.com/infocenter/wasinfo/v5r1//topic/com.ibm.websphere.base.doc/info/aes/ae/rdat_extiapi.html with 1 occurrences migrated to:
https://publib.boulder.ibm.com/infocenter/wasinfo/v5r1//topic/com.ibm.websphere.base.doc/info/aes/ae/rdat_extiapi.html ([https](https://publib.boulder.ibm.com/infocenter/wasinfo/v5r1//topic/com.ibm.websphere.base.doc/info/aes/ae/rdat_extiapi.html ) result 301).
* [ ] http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/topic/com.ibm.websphere.javadoc.doc/public_html/api/com/ibm/websphere/rsadapter/JDBCConnectionSpec.html with 1 occurrences migrated to:
https://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/topic/com.ibm.websphere.javadoc.doc/public_html/api/com/ibm/websphere/rsadapter/JDBCConnectionSpec.html ([https](https://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/topic/com.ibm.websphere.javadoc.doc/public_html/api/com/ibm/websphere/rsadapter/JDBCConnectionSpec.html ) result 301).
* [ ] http://site2.com with 3 occurrences migrated to:
https://site2.com ([https](https://site2.com ) result 301).
* [ ] http://slack.kotlinlang.org/ with 2 occurrences migrated to:
https://slack.kotlinlang.org/ ([https](https://slack.kotlinlang.org/ ) result 301).
* [ ] http://sourceforge.net/projects/c3p0 with 2 occurrences migrated to:
https://sourceforge.net/projects/c3p0 ([https](https://sourceforge.net/projects/c3p0 ) result 301).
* [ ] http://sourceforge.net/projects/javadiff with 1 occurrences migrated to:
https://sourceforge.net/projects/javadiff ([https](https://sourceforge.net/projects/javadiff ) result 301).
* [ ] http://springframework.org with 2 occurrences migrated to:
https://springframework.org ([https](https://springframework.org ) result 301).
* [ ] http://www.atomenabled.org/developers/syndication/ with 1 occurrences migrated to:
https://www.atomenabled.org/developers/syndication/ ([https](https://www.atomenabled.org/developers/syndication/ ) result 301).
* [ ] http://www.google.com/ig/calculator?q=1USD=?EUR with 1 occurrences migrated to:
https://www.google.com/ig/calculator?q=1USD=?EUR ([https](https://www.google.com/ig/calculator?q=1USD=?EUR ) result 301).
* [ ] http://www.javaworld.com/javaworld/jw-01-2009/jw-01-spring-transactions.html with 1 occurrences migrated to:
https://www.javaworld.com/javaworld/jw-01-2009/jw-01-spring-transactions.html ([https](https://www.javaworld.com/javaworld/jw-01-2009/jw-01-spring-transactions.html ) result 301).
* [ ] http://www.junit.org/ with 1 occurrences migrated to:
https://www.junit.org/ ([https](https://www.junit.org/ ) result 301).
* [ ] http://www.mnot.net/cache_docs with 1 occurrences migrated to:
https://www.mnot.net/cache_docs ([https](https://www.mnot.net/cache_docs ) result 301).
* [ ] http://www.sf.net/home.view?siteLanguage=nl with 1 occurrences migrated to:
https://www.sf.net/home.view?siteLanguage=nl ([https](https://www.sf.net/home.view?siteLanguage=nl ) result 301).
* [ ] http://www.springframework.org with 7 occurrences migrated to:
https://www.springframework.org ([https](https://www.springframework.org ) result 301).
* [ ] http://www.springframework.org/ with 3 occurrences migrated to:
https://www.springframework.org/ ([https](https://www.springframework.org/ ) result 301).
* [ ] http://xyz.com/path with 2 occurrences migrated to:
https://xyz.com/path ([https](https://xyz.com/path ) result 301).
* [ ] http://commons.apache.org/codec/ with 1 occurrences migrated to:
https://commons.apache.org/codec/ ([https](https://commons.apache.org/codec/ ) result 302).
* [ ] http://commons.apache.org/logging with 2 occurrences migrated to:
https://commons.apache.org/logging ([https](https://commons.apache.org/logging ) result 302).
* [ ] http://download.oracle.com/javaee/6/api/javax/inject/Scope.html with 1 occurrences migrated to:
https://download.oracle.com/javaee/6/api/javax/inject/Scope.html ([https](https://download.oracle.com/javaee/6/api/javax/inject/Scope.html ) result 302).
* [ ] http://download.oracle.com/javase/1.5.0/docs/api/java/lang/System.html with 4 occurrences migrated to:
https://download.oracle.com/javase/1.5.0/docs/api/java/lang/System.html ([https](https://download.oracle.com/javase/1.5.0/docs/api/java/lang/System.html ) result 302).
* [ ] http://download.oracle.com/javase/6/docs/technotes/guides/jar/jar.html with 1 occurrences migrated to:
https://download.oracle.com/javase/6/docs/technotes/guides/jar/jar.html ([https](https://download.oracle.com/javase/6/docs/technotes/guides/jar/jar.html ) result 302).
* [ ] http://download.oracle.com/javase/8/docs/api/java/beans/ConstructorProperties.html with 1 occurrences migrated to:
https://download.oracle.com/javase/8/docs/api/java/beans/ConstructorProperties.html ([https](https://download.oracle.com/javase/8/docs/api/java/beans/ConstructorProperties.html ) result 302).
* [ ] http://download.oracle.com/javase/jndi/tutorial/beyond/misc/policy.html with 1 occurrences migrated to:
https://download.oracle.com/javase/jndi/tutorial/beyond/misc/policy.html ([https](https://download.oracle.com/javase/jndi/tutorial/beyond/misc/policy.html ) result 302).
* [ ] http://gafter.blogspot.nl/2006/12/super-type-tokens.html with 1 occurrences migrated to:
https://gafter.blogspot.nl/2006/12/super-type-tokens.html ([https](https://gafter.blogspot.nl/2006/12/super-type-tokens.html ) result 302).
* [ ] http://git-scm.com/book/en/Distributed-Git-Contributing-to-a-Project with 1 occurrences migrated to:
https://git-scm.com/book/en/Distributed-Git-Contributing-to-a-Project ([https](https://git-scm.com/book/en/Distributed-Git-Contributing-to-a-Project ) result 302).
* [ ] http://git-scm.com/book/en/Git-Tools-Rewriting-History with 1 occurrences migrated to:
https://git-scm.com/book/en/Git-Tools-Rewriting-History ([https](https://git-scm.com/book/en/Git-Tools-Rewriting-History ) result 302).
* [ ] http://java.sun.com with 3 occurrences migrated to:
https://java.sun.com ([https](https://java.sun.com ) result 302).
* [ ] http://java.sun.com/docs/books/jls/third_edition/html/conversions.html with 1 occurrences migrated to:
https://java.sun.com/docs/books/jls/third_edition/html/conversions.html ([https](https://java.sun.com/docs/books/jls/third_edition/html/conversions.html ) result 302).
* [ ] http://java.sun.com/docs/books/jls/third_edition/html/expressions.html with 1 occurrences migrated to:
https://java.sun.com/docs/books/jls/third_edition/html/expressions.html ([https](https://java.sun.com/docs/books/jls/third_edition/html/expressions.html ) result 302).
* [ ] http://java.sun.com/j2se/ with 2 occurrences migrated to:
https://java.sun.com/j2se/ ([https](https://java.sun.com/j2se/ ) result 302).
* [ ] http://java.sun.com/j2se/1.4.1/docs/tooldocs/solaris/javadoc.html with 1 occurrences migrated to:
https://java.sun.com/j2se/1.4.1/docs/tooldocs/solaris/javadoc.html ([https](https://java.sun.com/j2se/1.4.1/docs/tooldocs/solaris/javadoc.html ) result 302).
* [ ] http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html with 1 occurrences migrated to:
https://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html ([https](https://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html ) result 302).
* [ ] http://java.sun.com/j2se/javadoc with 1 occurrences migrated to:
https://java.sun.com/j2se/javadoc ([https](https://java.sun.com/j2se/javadoc ) result 302).
* [ ] http://java.sun.com/j2se/javadoc/ with 1 occurrences migrated to:
https://java.sun.com/j2se/javadoc/ ([https](https://java.sun.com/j2se/javadoc/ ) result 302).
* [ ] http://java.sun.com/j2se/javadoc/faq.html with 1 occurrences migrated to:
https://java.sun.com/j2se/javadoc/faq.html ([https](https://java.sun.com/j2se/javadoc/faq.html ) result 302).
* [ ] http://java.sun.com/webservices/jaxb/ with 1 occurrences migrated to:
https://java.sun.com/webservices/jaxb/ ([https](https://java.sun.com/webservices/jaxb/ ) result 302).
* [ ] http://java.sun.com/xml/ns/j2ee/connector_1_5.xsd with 1 occurrences migrated to:
https://java.sun.com/xml/ns/j2ee/connector_1_5.xsd ([https](https://java.sun.com/xml/ns/j2ee/connector_1_5.xsd ) result 302).
* [ ] http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd with 2 occurrences migrated to:
https://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd ([https](https://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd ) result 302).
* [ ] http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd with 2 occurrences migrated to:
https://java.sun.com/xml/ns/javaee/web-app_3_0.xsd ([https](https://java.sun.com/xml/ns/javaee/web-app_3_0.xsd ) result 302).
* [ ] http://sourceforge.net/projects/cglib/files/cglib3/3.0/cglib-3.0.jar/download with 1 occurrences migrated to:
https://sourceforge.net/projects/cglib/files/cglib3/3.0/cglib-3.0.jar/download ([https](https://sourceforge.net/projects/cglib/files/cglib3/3.0/cglib-3.0.jar/download ) result 302).
* [ ] http://other.info/foo/bar (301) with 1 occurrences migrated to:
https://weibo.com/otherinfo/foo/bar ([https](https://other.info/foo/bar ) result 302).
* [ ] http://www.iana.org/assignments/http-status-codes with 1 occurrences migrated to:
https://www.iana.org/assignments/http-status-codes ([https](https://www.iana.org/assignments/http-status-codes ) result 302).
* [ ] http://www.iana.org/assignments/media-types/ with 1 occurrences migrated to:
https://www.iana.org/assignments/media-types/ ([https](https://www.iana.org/assignments/media-types/ ) result 302).
* [ ] http://www.sys-con.com/java with 1 occurrences migrated to:
https://www.sys-con.com/java ([https](https://www.sys-con.com/java ) result 302).
These URLs were intentionally ignored.
* http://Additional-namespace-name-URI with 1 occurrences
* http://Default-namespace-name-URI with 1 occurrences
* http://HOST:8080/remoting/AccountService with 1 occurrences
* http://Namespace-name-URI with 1 occurrences
* http://Unbound-namespace-name-URI with 1 occurrences
* http://anotherHost/mvc-showcase with 1 occurrences
* http://apache.org/xml/features/disallow-doctype-decl with 14 occurrences
* http://barfoo:8888 with 1 occurrences
* http://example/ with 1 occurrences
* http://fake-service with 7 occurrences
* http://foo with 3 occurrences
* http://foobar:8088 with 1 occurrences
* http://host:port/myApp/myEndpoint/ with 1 occurrences
* http://java.sun.com/jsp/jstl/core with 1 occurrences
* http://java.sun.com/xml/jaxp/properties/schemaLanguage with 1 occurrences
* http://java.sun.com/xml/ns/j2ee with 6 occurrences
* http://java.sun.com/xml/ns/javaee with 4 occurrences
* http://java.sun.com/xml/ns/persistence with 1 occurrences
* http://java.sun.com/xml/stream/properties/report-cdata-event with 1 occurrences
* http://jaxws.remoting.springframework.org/ with 4 occurrences
* http://localhost with 86 occurrences
* http://localhost/ with 16 occurrences
* http://localhost/42 with 1 occurrences
* http://localhost/?cookie=foo with 1 occurrences
* http://localhost/FILE.TXT with 1 occurrences
* http://localhost/abc with 1 occurrences
* http://localhost/abc/def with 1 occurrences
* http://localhost/app%20/path/ with 1 occurrences
* http://localhost/app/path%20with%20spaces/ with 1 occurrences
* http://localhost/bar with 2 occurrences
* http://localhost/context/a with 3 occurrences
* http://localhost/contextPath/main/path with 2 occurrences
* http://localhost/file.foo with 1 occurrences
* http://localhost/file.txt with 1 occurrences
* http://localhost/foo with 2 occurrences
* http://localhost/foo%20bar with 1 occurrences
* http://localhost/foo/bar with 1 occurrences
* http://localhost/foo/bar/baz with 1 occurrences
* http://localhost/forward with 1 occurrences
* http://localhost/hotels/42/bookings/21 with 4 occurrences
* http://localhost/input with 1 occurrences
* http://localhost/jquery-1.11.0.min.js with 5 occurrences
* http://localhost/messages/form with 1 occurrences
* http://localhost/mvc-showcase with 2 occurrences
* http://localhost/mvc-showcase/app with 1 occurrences
* http://localhost/mvc-showcase/data/foo%20bar with 1 occurrences
* http://localhost/mvc-showcase/data/param with 1 occurrences
* http://localhost/mvc-showcase/data/param?foo=123 with 2 occurrences
* http://localhost/myapp/main with 1 occurrences
* http://localhost/myapp/people/1/addresses/DE with 1 occurrences
* http://localhost/path with 3 occurrences
* http://localhost/path;a=b/with/semicolon with 1 occurrences
* http://localhost/persons with 1 occurrences
* http://localhost/prefix with 1 occurrences
* http://localhost/prefix/app with 1 occurrences
* http://localhost/prefix/bar with 1 occurrences
* http://localhost/prefix/mvc-showcase with 3 occurrences
* http://localhost/query= with 1 occurrences
* http://localhost/query=foo@bar with 1 occurrences
* http://localhost/resources/child/response.txt with 1 occurrences
* http://localhost/resources/foo with 2 occurrences
* http://localhost/resources/foo.txt with 1 occurrences
* http://localhost/resources/response.txt with 2 occurrences
* http://localhost/rest/books/6/pages/1.json with 1 occurrences
* http://localhost/something/1/foo with 1 occurrences
* http://localhost/something/optional-param with 1 occurrences
* http://localhost/test with 4 occurrences
* http://localhost/test.html with 1 occurrences
* http://localhost/test/this with 2 occurrences
* http://localhost:7070/example/adminhandle.vm with 1 occurrences
* http://localhost:7070/example/bingo.html with 1 occurrences
* http://localhost:80/jquery-1.11.0.min.js with 1 occurrences
* http://localhost:8080 with 34 occurrences
* http://localhost:8080/ with 4 occurrences
* http://localhost:8080/OrderService with 3 occurrences
* http://localhost:8080/aA/bB/cC with 1 occurrences
* http://localhost:8080/context with 1 occurrences
* http://localhost:8080/context/myapiresource with 1 occurrences
* http://localhost:8080/gamecast/admin/index.html with 1 occurrences
* http://localhost:8080/gamecast/display.html with 1 occurrences
* http://localhost:8080/gamecast/displayShoppingCart.html with 1 occurrences
* http://localhost:8080/jquery-1.11.0.min.js with 1 occurrences
* http://localhost:8080/mvc-showcase with 1 occurrences
* http://localhost:8080/myapiresource with 1 occurrences
* http://localhost:8080/myapp/js/sockjs-client.js with 1 occurrences
* http://localhost:8080/path with 2 occurrences
* http://localhost:8080/people with 2 occurrences
* http://localhost:8080/portfolio with 1 occurrences
* http://localhost:8080/spring/ with 2 occurrences
* http://localhost:8080/test/ with 2 occurrences
* http://localhost:8080/test/print?value=%EA%B0%80+%EB%82%98 with 1 occurrences
* http://localhost:8081 with 1 occurrences
* http://localhost:8081/ with 1 occurrences
* http://localhost:8181 with 1 occurrences
* http://localhost:8888/AccountServiceEndpoint?WSDL with 1 occurrences
* http://localhost:9000 with 7 occurrences
* http://localhost:9090 with 18 occurrences
* http://localhost:9090/jquery-1.11.0.min.js with 2 occurrences
* http://localhost:9990/mail/messages/form with 1 occurrences
* http://localhost:9999/ with 1 occurrences
* http://localhost:9999/OrderService?wsdl with 4 occurrences
* http://localhosta/testbean with 3 occurrences
* http://myserver with 1 occurrences
* http://myurl with 12 occurrences
* http://remotehost:8080/remoting/AccountService with 2 occurrences
* http://samples.springframework.org/flight with 39 occurrences
* http://somethingDifferent with 1 occurrences
* http://springframework.org/spring-ws with 17 occurrences
* http://test.com with 1 occurrences
* http://test.com/ with 1 occurrences
* http://testng.org/ with 1 occurrences
* http://tiles.apache.org/tags-tiles with 1 occurrences
* http://www with 1 occurrences
* http://www.foo.com/schema/component with 6 occurrences
* http://www.mycompany.com/schema/myns with 4 occurrences
* http://www.springframework.org/schema/aop with 30 occurrences
* http://www.springframework.org/schema/beans with 169 occurrences
* http://www.springframework.org/schema/beans/test with 2 occurrences
* http://www.springframework.org/schema/c with 1 occurrences
* http://www.springframework.org/schema/cache with 5 occurrences
* http://www.springframework.org/schema/context with 28 occurrences
* http://www.springframework.org/schema/jdbc with 8 occurrences
* http://www.springframework.org/schema/jee with 9 occurrences
* http://www.springframework.org/schema/jms with 5 occurrences
* http://www.springframework.org/schema/lang with 10 occurrences
* http://www.springframework.org/schema/mvc with 8 occurrences
* http://www.springframework.org/schema/oxm with 4 occurrences
* http://www.springframework.org/schema/p with 4 occurrences
* http://www.springframework.org/schema/task with 2 occurrences
* http://www.springframework.org/schema/tool with 27 occurrences
* http://www.springframework.org/schema/tx with 18 occurrences
* http://www.springframework.org/schema/util with 8 occurrences
* http://www.springframework.org/schema/websocket with 26 occurrences
* http://www.springframework.org/spring-ws with 1 occurrences
* http://www.springframework.org/tags with 4 occurrences
* http://www.springframework.org/tags/form with 2 occurrences
* http://www.w3.org/1999/XSL/Transform with 8 occurrences
* http://www.w3.org/2001/XMLSchema with 24 occurrences
* http://www.w3.org/2001/XMLSchema-instance with 83 occurrences
* http://www.w3.org/2005/Atom with 4 occurrences
* http://www.w3.org/TR/html4/charset.html with 5 occurrences
* http://www.w3.org/TR/html4/sgml/entities.html with 14 occurrences
* http://www.w3.org/XML/1998/namespace with 5 occurrences
* http://xml.org/sax/features/ with 4 occurrences
* http://xml.org/sax/features/external-general-entities with 14 occurrences
* http://xml.org/sax/features/is-standalone with 1 occurrences
* http://xml.org/sax/features/namespace-prefixes with 13 occurrences
* http://xml.org/sax/features/namespaces with 12 occurrences
* http://xml.org/sax/features/namespaces-prefixes with 1 occurrences
* http://xml.org/sax/properties/lexical-handler with 12 occurrences
Closes gh-22680
2019-03-27 22:05:38 +01:00
Juergen Hoeller
ac0ffda311
Merge branch '5.1.x'
2019-03-27 19:39:28 +01:00
Sam Brannen
20f1f46ae1
URL Cleanup - Fix broken tests
...
See gh-22669
2019-03-27 19:06:01 +01:00
Sam Brannen
c74d102df3
URL Cleanup - remove obsolete ATOM schema location
...
See gh-22669
2019-03-27 19:05:34 +01:00
Spring Operator
8f77b7366e
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).
These URLs were unable to be fixed. Please review them to see if they can be manually resolved.
* [ ] http://castor.org/mapping.dtd (301) with 1 occurrences could not be migrated:
([https](https://castor.org/mapping.dtd ) result AnnotatedConnectException).
* [ ] http://mydomain2.com (302) with 2 occurrences could not be migrated:
([https](https://mydomain2.com ) result ConnectTimeoutException).
* [ ] http://www.foo.com/schema/component/component.xsd (404) with 1 occurrences could not be migrated:
([https](https://www.foo.com/schema/component/component.xsd ) result SSLHandshakeException).
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://www.kbcafe.com/rss/atom.xsd.xml (ConnectTimeoutException) with 1 occurrences migrated to:
https://www.kbcafe.com/rss/atom.xsd.xml ([https](https://www.kbcafe.com/rss/atom.xsd.xml ) result ConnectTimeoutException).
* [ ] http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd (ReadTimeoutException) with 5 occurrences migrated to:
https://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd ([https](https://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd ) result ReadTimeoutException).
* [ ] http://domain1.com (UnknownHostException) with 2 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://mydomain1.com,http://mydomain2.com (UnknownHostException) with 1 occurrences migrated to:
https://mydomain1.com,http://mydomain2.com ([https](https://mydomain1.com,https://mydomain2.com ) result UnknownHostException).
* [ ] http://mydomain3.com,http://mydomain4.com (UnknownHostException) with 1 occurrences migrated to:
https://mydomain3.com,http://mydomain4.com ([https](https://mydomain3.com,https://mydomain4.com ) result UnknownHostException).
* [ ] http://www.springframework.org/schema/beans/factory/xml/support/CustomNamespaceHandlerTests.xsd (404) with 1 occurrences migrated to:
https://www.springframework.org/schema/beans/factory/xml/support/CustomNamespaceHandlerTests.xsd ([https](https://www.springframework.org/schema/beans/factory/xml/support/CustomNamespaceHandlerTests.xsd ) result 404).
These URLs were switched to an https URL with a 2xx status. While the status was successful, your review is still recommended.
* [ ] http://example.com with 1 occurrences migrated to:
https://example.com ([https](https://example.com ) result 200).
* [ ] http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd (301) with 2 occurrences migrated to:
https://hibernate.org/dtd/hibernate-mapping-3.0.dtd ([https](https://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd ) result 200).
* [ ] http://testng.org/testng-1.0.dtd with 3 occurrences migrated to:
https://testng.org/testng-1.0.dtd ([https](https://testng.org/testng-1.0.dtd ) result 200).
* [ ] http://tiles.apache.org/dtds/tiles-config_2_0.dtd with 2 occurrences migrated to:
https://tiles.apache.org/dtds/tiles-config_2_0.dtd ([https](https://tiles.apache.org/dtds/tiles-config_2_0.dtd ) result 200).
* [ ] http://tiles.apache.org/dtds/tiles-config_2_1.dtd with 2 occurrences migrated to:
https://tiles.apache.org/dtds/tiles-config_2_1.dtd ([https](https://tiles.apache.org/dtds/tiles-config_2_1.dtd ) result 200).
* [ ] http://tiles.apache.org/dtds/tiles-config_3_0.dtd with 4 occurrences migrated to:
https://tiles.apache.org/dtds/tiles-config_3_0.dtd ([https](https://tiles.apache.org/dtds/tiles-config_3_0.dtd ) result 200).
* [ ] http://www.quartz-scheduler.org/xml/job_scheduling_data_1_8.xsd with 1 occurrences migrated to:
https://www.quartz-scheduler.org/xml/job_scheduling_data_1_8.xsd ([https](https://www.quartz-scheduler.org/xml/job_scheduling_data_1_8.xsd ) result 200).
* [ ] http://www.springframework.org/dtd/spring-beans-2.0.dtd with 176 occurrences migrated to:
https://www.springframework.org/dtd/spring-beans-2.0.dtd ([https](https://www.springframework.org/dtd/spring-beans-2.0.dtd ) result 200).
* [ ] http://www.springframework.org/schema/aop/spring-aop-2.0.xsd with 68 occurrences migrated to:
https://www.springframework.org/schema/aop/spring-aop-2.0.xsd ([https](https://www.springframework.org/schema/aop/spring-aop-2.0.xsd ) result 200).
* [ ] http://www.springframework.org/schema/aop/spring-aop-2.5.xsd with 11 occurrences migrated to:
https://www.springframework.org/schema/aop/spring-aop-2.5.xsd ([https](https://www.springframework.org/schema/aop/spring-aop-2.5.xsd ) result 200).
* [ ] http://www.springframework.org/schema/aop/spring-aop-3.0.xsd with 2 occurrences migrated to:
https://www.springframework.org/schema/aop/spring-aop-3.0.xsd ([https](https://www.springframework.org/schema/aop/spring-aop-3.0.xsd ) result 200).
* [ ] http://www.springframework.org/schema/aop/spring-aop.xsd with 7 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-2.0.xsd with 112 occurrences migrated to:
https://www.springframework.org/schema/beans/spring-beans-2.0.xsd ([https](https://www.springframework.org/schema/beans/spring-beans-2.0.xsd ) result 200).
* [ ] http://www.springframework.org/schema/beans/spring-beans-2.5.xsd with 46 occurrences migrated to:
https://www.springframework.org/schema/beans/spring-beans-2.5.xsd ([https](https://www.springframework.org/schema/beans/spring-beans-2.5.xsd ) result 200).
* [ ] http://www.springframework.org/schema/beans/spring-beans-3.0.xsd with 10 occurrences migrated to:
https://www.springframework.org/schema/beans/spring-beans-3.0.xsd ([https](https://www.springframework.org/schema/beans/spring-beans-3.0.xsd ) result 200).
* [ ] http://www.springframework.org/schema/beans/spring-beans-3.1.xsd with 33 occurrences migrated to:
https://www.springframework.org/schema/beans/spring-beans-3.1.xsd ([https](https://www.springframework.org/schema/beans/spring-beans-3.1.xsd ) result 200).
* [ ] http://www.springframework.org/schema/beans/spring-beans-3.2.xsd with 1 occurrences migrated to:
https://www.springframework.org/schema/beans/spring-beans-3.2.xsd ([https](https://www.springframework.org/schema/beans/spring-beans-3.2.xsd ) result 200).
* [ ] http://www.springframework.org/schema/beans/spring-beans-4.0.xsd with 1 occurrences migrated to:
https://www.springframework.org/schema/beans/spring-beans-4.0.xsd ([https](https://www.springframework.org/schema/beans/spring-beans-4.0.xsd ) result 200).
* [ ] http://www.springframework.org/schema/beans/spring-beans-4.1.xsd with 3 occurrences migrated to:
https://www.springframework.org/schema/beans/spring-beans-4.1.xsd ([https](https://www.springframework.org/schema/beans/spring-beans-4.1.xsd ) result 200).
* [ ] http://www.springframework.org/schema/beans/spring-beans-4.2.xsd with 4 occurrences migrated to:
https://www.springframework.org/schema/beans/spring-beans-4.2.xsd ([https](https://www.springframework.org/schema/beans/spring-beans-4.2.xsd ) result 200).
* [ ] http://www.springframework.org/schema/beans/spring-beans-4.3.xsd with 4 occurrences migrated to:
https://www.springframework.org/schema/beans/spring-beans-4.3.xsd ([https](https://www.springframework.org/schema/beans/spring-beans-4.3.xsd ) result 200).
* [ ] http://www.springframework.org/schema/beans/spring-beans.xsd with 142 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/cache/spring-cache.xsd with 10 occurrences migrated to:
https://www.springframework.org/schema/cache/spring-cache.xsd ([https](https://www.springframework.org/schema/cache/spring-cache.xsd ) result 200).
* [ ] http://www.springframework.org/schema/context/spring-context-2.5.xsd with 41 occurrences migrated to:
https://www.springframework.org/schema/context/spring-context-2.5.xsd ([https](https://www.springframework.org/schema/context/spring-context-2.5.xsd ) result 200).
* [ ] http://www.springframework.org/schema/context/spring-context-3.0.xsd with 2 occurrences migrated to:
https://www.springframework.org/schema/context/spring-context-3.0.xsd ([https](https://www.springframework.org/schema/context/spring-context-3.0.xsd ) result 200).
* [ ] http://www.springframework.org/schema/context/spring-context-3.1.xsd with 1 occurrences migrated to:
https://www.springframework.org/schema/context/spring-context-3.1.xsd ([https](https://www.springframework.org/schema/context/spring-context-3.1.xsd ) result 200).
* [ ] http://www.springframework.org/schema/context/spring-context-3.2.xsd with 1 occurrences migrated to:
https://www.springframework.org/schema/context/spring-context-3.2.xsd ([https](https://www.springframework.org/schema/context/spring-context-3.2.xsd ) result 200).
* [ ] http://www.springframework.org/schema/context/spring-context-4.0.xsd with 1 occurrences migrated to:
https://www.springframework.org/schema/context/spring-context-4.0.xsd ([https](https://www.springframework.org/schema/context/spring-context-4.0.xsd ) result 200).
* [ ] http://www.springframework.org/schema/context/spring-context-4.2.xsd with 4 occurrences migrated to:
https://www.springframework.org/schema/context/spring-context-4.2.xsd ([https](https://www.springframework.org/schema/context/spring-context-4.2.xsd ) result 200).
* [ ] http://www.springframework.org/schema/context/spring-context-4.3.xsd with 2 occurrences migrated to:
https://www.springframework.org/schema/context/spring-context-4.3.xsd ([https](https://www.springframework.org/schema/context/spring-context-4.3.xsd ) result 200).
* [ ] http://www.springframework.org/schema/context/spring-context.xsd with 10 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/jdbc/spring-jdbc-3.0.xsd with 9 occurrences migrated to:
https://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd ([https](https://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd ) result 200).
* [ ] http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd with 5 occurrences migrated to:
https://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd ([https](https://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd ) result 200).
* [ ] http://www.springframework.org/schema/jdbc/spring-jdbc-4.2.xsd with 9 occurrences migrated to:
https://www.springframework.org/schema/jdbc/spring-jdbc-4.2.xsd ([https](https://www.springframework.org/schema/jdbc/spring-jdbc-4.2.xsd ) result 200).
* [ ] http://www.springframework.org/schema/jdbc/spring-jdbc-4.3.xsd with 2 occurrences migrated to:
https://www.springframework.org/schema/jdbc/spring-jdbc-4.3.xsd ([https](https://www.springframework.org/schema/jdbc/spring-jdbc-4.3.xsd ) result 200).
* [ ] http://www.springframework.org/schema/jdbc/spring-jdbc.xsd with 8 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/jee/spring-jee-3.1.xsd with 1 occurrences migrated to:
https://www.springframework.org/schema/jee/spring-jee-3.1.xsd ([https](https://www.springframework.org/schema/jee/spring-jee-3.1.xsd ) result 200).
* [ ] http://www.springframework.org/schema/jms/spring-jms-4.1.xsd with 9 occurrences migrated to:
https://www.springframework.org/schema/jms/spring-jms-4.1.xsd ([https](https://www.springframework.org/schema/jms/spring-jms-4.1.xsd ) result 200).
* [ ] http://www.springframework.org/schema/jms/spring-jms-4.2.xsd with 1 occurrences migrated to:
https://www.springframework.org/schema/jms/spring-jms-4.2.xsd ([https](https://www.springframework.org/schema/jms/spring-jms-4.2.xsd ) result 200).
* [ ] http://www.springframework.org/schema/lang/spring-lang-2.0.xsd with 1 occurrences migrated to:
https://www.springframework.org/schema/lang/spring-lang-2.0.xsd ([https](https://www.springframework.org/schema/lang/spring-lang-2.0.xsd ) result 200).
* [ ] http://www.springframework.org/schema/lang/spring-lang-2.5.xsd with 3 occurrences migrated to:
https://www.springframework.org/schema/lang/spring-lang-2.5.xsd ([https](https://www.springframework.org/schema/lang/spring-lang-2.5.xsd ) result 200).
* [ ] http://www.springframework.org/schema/lang/spring-lang-3.0.xsd with 1 occurrences migrated to:
https://www.springframework.org/schema/lang/spring-lang-3.0.xsd ([https](https://www.springframework.org/schema/lang/spring-lang-3.0.xsd ) result 200).
* [ ] http://www.springframework.org/schema/lang/spring-lang-3.1.xsd with 5 occurrences migrated to:
https://www.springframework.org/schema/lang/spring-lang-3.1.xsd ([https](https://www.springframework.org/schema/lang/spring-lang-3.1.xsd ) result 200).
* [ ] http://www.springframework.org/schema/lang/spring-lang-4.2.xsd with 2 occurrences migrated to:
https://www.springframework.org/schema/lang/spring-lang-4.2.xsd ([https](https://www.springframework.org/schema/lang/spring-lang-4.2.xsd ) result 200).
* [ ] http://www.springframework.org/schema/lang/spring-lang.xsd with 1 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-3.1.xsd with 1 occurrences migrated to:
https://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd ([https](https://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd ) result 200).
* [ ] http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd with 2 occurrences migrated to:
https://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd ([https](https://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd ) result 200).
* [ ] http://www.springframework.org/schema/mvc/spring-mvc.xsd with 26 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/oxm/spring-oxm.xsd with 1 occurrences migrated to:
https://www.springframework.org/schema/oxm/spring-oxm.xsd ([https](https://www.springframework.org/schema/oxm/spring-oxm.xsd ) result 200).
* [ ] http://www.springframework.org/schema/task/spring-task-4.1.xsd with 1 occurrences migrated to:
https://www.springframework.org/schema/task/spring-task-4.1.xsd ([https](https://www.springframework.org/schema/task/spring-task-4.1.xsd ) result 200).
* [ ] http://www.springframework.org/schema/task/spring-task.xsd with 6 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/tx/spring-tx-2.5.xsd with 3 occurrences migrated to:
https://www.springframework.org/schema/tx/spring-tx-2.5.xsd ([https](https://www.springframework.org/schema/tx/spring-tx-2.5.xsd ) result 200).
* [ ] http://www.springframework.org/schema/tx/spring-tx-4.0.xsd with 1 occurrences migrated to:
https://www.springframework.org/schema/tx/spring-tx-4.0.xsd ([https](https://www.springframework.org/schema/tx/spring-tx-4.0.xsd ) result 200).
* [ ] http://www.springframework.org/schema/tx/spring-tx.xsd with 2 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-2.0.xsd with 2 occurrences migrated to:
https://www.springframework.org/schema/util/spring-util-2.0.xsd ([https](https://www.springframework.org/schema/util/spring-util-2.0.xsd ) result 200).
* [ ] http://www.springframework.org/schema/util/spring-util-2.5.xsd with 2 occurrences migrated to:
https://www.springframework.org/schema/util/spring-util-2.5.xsd ([https](https://www.springframework.org/schema/util/spring-util-2.5.xsd ) result 200).
* [ ] http://www.springframework.org/schema/util/spring-util-3.0.xsd with 1 occurrences migrated to:
https://www.springframework.org/schema/util/spring-util-3.0.xsd ([https](https://www.springframework.org/schema/util/spring-util-3.0.xsd ) result 200).
* [ ] http://www.springframework.org/schema/util/spring-util-3.1.xsd with 2 occurrences migrated to:
https://www.springframework.org/schema/util/spring-util-3.1.xsd ([https](https://www.springframework.org/schema/util/spring-util-3.1.xsd ) result 200).
* [ ] http://www.springframework.org/schema/util/spring-util-4.1.xsd with 1 occurrences migrated to:
https://www.springframework.org/schema/util/spring-util-4.1.xsd ([https](https://www.springframework.org/schema/util/spring-util-4.1.xsd ) result 200).
* [ ] http://www.springframework.org/schema/util/spring-util-4.2.xsd with 4 occurrences migrated to:
https://www.springframework.org/schema/util/spring-util-4.2.xsd ([https](https://www.springframework.org/schema/util/spring-util-4.2.xsd ) result 200).
* [ ] http://www.springframework.org/schema/util/spring-util.xsd with 2 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 11 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/1999/02/22-rdf-syntax-ns with 2 occurrences migrated to:
https://www.w3.org/1999/02/22-rdf-syntax-ns ([https](https://www.w3.org/1999/02/22-rdf-syntax-ns ) result 200).
* [ ] http://mydomain1.com with 2 occurrences migrated to:
https://mydomain1.com ([https](https://mydomain1.com ) result 301).
* [ ] http://www.springframework.org with 1 occurrences migrated to:
https://www.springframework.org ([https](https://www.springframework.org ) result 301).
* [ ] http://help.sap.com/saphelp_hanaplatform/helpdata/en/20/a78d3275191014b41bae7c4a46d835/content.htm with 1 occurrences migrated to:
https://help.sap.com/saphelp_hanaplatform/helpdata/en/20/a78d3275191014b41bae7c4a46d835/content.htm ([https](https://help.sap.com/saphelp_hanaplatform/helpdata/en/20/a78d3275191014b41bae7c4a46d835/content.htm ) result 302).
* [ ] http://java.sun.com/xml/ns/j2ee/connector_1_5.xsd with 1 occurrences migrated to:
https://java.sun.com/xml/ns/j2ee/connector_1_5.xsd ([https](https://java.sun.com/xml/ns/j2ee/connector_1_5.xsd ) result 302).
* [ ] http://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd with 1 occurrences migrated to:
https://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd ([https](https://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd ) result 302).
* [ ] http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd with 12 occurrences migrated to:
https://java.sun.com/xml/ns/persistence/persistence_1_0.xsd ([https](https://java.sun.com/xml/ns/persistence/persistence_1_0.xsd ) result 302).
* [ ] 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).
* [ ] http://purl.org/dc/dcmitype/StillImage with 2 occurrences migrated to:
https://purl.org/dc/dcmitype/StillImage ([https](https://purl.org/dc/dcmitype/StillImage ) result 302).
These URLs were intentionally ignored.
* http://creativecommons.org/ns with 2 occurrences
* http://java.sun.com/dtd/properties.dtd with 4 occurrences
* http://java.sun.com/xml/ns/j2ee with 2 occurrences
* http://java.sun.com/xml/ns/javaee with 2 occurrences
* http://java.sun.com/xml/ns/persistence with 27 occurrences
* http://localhost:8080 with 3 occurrences
* http://purl.org/dc/elements/1.1/ with 2 occurrences
* http://samples.springframework.org/flight with 7 occurrences
* http://schemas.microsoft.com/visio/2003/SVGExtensions/ with 7 occurrences
* http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd with 2 occurrences
* http://www.foo.com/schema/component with 2 occurrences
* http://www.greeting.com/goodbye/ with 1 occurrences
* http://www.greeting.com/hello/ with 1 occurrences
* http://www.inkscape.org/namespaces/inkscape with 2 occurrences
* http://www.quartz-scheduler.org/xml/JobSchedulingData with 2 occurrences
* http://www.springframework.org/schema/aop with 176 occurrences
* http://www.springframework.org/schema/beans with 715 occurrences
* http://www.springframework.org/schema/beans/test with 2 occurrences
* http://www.springframework.org/schema/c with 9 occurrences
* http://www.springframework.org/schema/cache with 20 occurrences
* http://www.springframework.org/schema/context with 126 occurrences
* http://www.springframework.org/schema/jdbc with 66 occurrences
* http://www.springframework.org/schema/jee with 2 occurrences
* http://www.springframework.org/schema/jms with 20 occurrences
* http://www.springframework.org/schema/lang with 27 occurrences
* http://www.springframework.org/schema/mvc with 58 occurrences
* http://www.springframework.org/schema/oxm with 2 occurrences
* http://www.springframework.org/schema/p with 16 occurrences
* http://www.springframework.org/schema/task with 14 occurrences
* http://www.springframework.org/schema/tx with 12 occurrences
* http://www.springframework.org/schema/util with 28 occurrences
* http://www.springframework.org/schema/websocket with 22 occurrences
* http://www.w3.org/2000/svg with 9 occurrences
* http://www.w3.org/2001/XMLSchema-instance with 375 occurrences
* http://www.w3.org/2005/Atom with 2 occurrences
Closes gh-22669
2019-03-27 19:05:08 +01:00
Sebastien Deleuze
864dddee7a
Merge branch '5.1.x'
2019-03-27 17:13:06 +01:00
Sebastien Deleuze
f0ae8bc300
Support custom XmlFactory in Jackson2ObjectMapperBuilder
...
Closes gh-22428
2019-03-27 16:48:21 +01:00
Sebastien Deleuze
cbb5a78aa0
Infer Kotlin null-safety from type variables
...
This commit removes the constraint from type variables in
PropertyResolver, JdbcOperations and RestOperations
Kotlin extensions in order to get null-safety inferred
from the type declared by the user.
Closes gh-22687
2019-03-27 09:03:32 +01:00
Rossen Stoyanchev
68a529b915
Merge branch '5.1.x'
2019-03-26 21:14:51 -04:00
Rossen Stoyanchev
c54355784e
Buffer leak fixes
...
Address issues where buffers are allocated (and cached somehow) at or
before subscription, and before explicit demand.
The commit adds tests proving the leaks and fixes. The common thread
for all tests is a "zero demand" subscriber that subscribes but does
not request, and then cancels without consuming anything.
Closes gh-22107
2019-03-26 21:13:42 -04:00
Juergen Hoeller
6f1b583130
Polishing
2019-03-25 13:54:02 +01:00
www
4517f40f57
Remove redundant 'String.substring()' call
2019-03-25 09:34:29 +01:00
Sam Brannen
9ac2e034e7
Polishing
2019-03-23 16:09:47 +01:00
Sam Brannen
af99e868c4
Upgrade to spring-javaformat-checkstyle version 0.0.7
...
See gh-22634
2019-03-23 15:38:44 +01:00
Spring Operator
540759ec41
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 6515 occurrences migrated to:
https://www.apache.org/licenses/LICENSE-2.0 ([https](https://www.apache.org/licenses/LICENSE-2.0 ) result 200).
2019-03-23 15:19:34 +01:00
Sam Brannen
20764685ec
Merge URL Cleanup PRs
...
This merges the URL Cleanup PRs along with fixes.
Closes gh-22617 gh-22622 gh-22635
2019-03-23 13:01:57 +01:00
Juergen Hoeller
bddba68549
Polishing
2019-03-23 12:14:35 +01:00
Juergen Hoeller
32b46866c7
Make MultipartResolutionDelegate final (aligned with other delegates)
2019-03-23 12:14:21 +01:00
Sam Brannen
307a74835d
URL Cleanup - remove obsolete ATOM schema location
...
See gh-22617 gh-22622 gh-22635
2019-03-23 11:54:49 +01:00
Sam Brannen
cedcd2fddd
URL Cleanup - fix links
...
See gh-22617 gh-22622 gh-22635
2019-03-23 11:52:49 +01:00
Rossen Stoyanchev
f8121515bf
Merge branch '5.1.x'
2019-03-22 14:50:51 -04:00
Rossen Stoyanchev
c9a86e1ff4
Polish
...
See gh-22598
2019-03-22 14:39:21 -04:00
wenqi.huang
d10174a3e9
Optimize performance of produces condition checks
2019-03-22 13:59:34 -04:00
Sam Brannen
7fe12cc23e
URL Cleanup
...
This merges the URL Cleanup PRs along with fixes.
Closes gh-22617 gh-22622 gh-22635
2019-03-22 16:37:36 +01:00
Sam Brannen
14902e1744
Polish Javadoc
2019-03-22 13:32:24 +01:00
Rob Winch
bff3d2f2be
Update to spring-javaformat-checkstyle 0.0.7
...
Remove unnecessary lambdas to fix updated checkstyle
2019-03-22 00:35:32 -05:00
Spring Operator
dc6f63f610
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 6625 occurrences migrated to:
https://www.apache.org/licenses/LICENSE-2.0 ([https](https://www.apache.org/licenses/LICENSE-2.0 ) result 200).
2019-03-21 23:49:28 -05:00
Rob Winch
263868f018
Polish URL Cleanup
2019-03-21 23:47:38 -05:00
Spring Operator
d99edd154f
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).
These URLs were unable to be fixed. Please review them to see if they can be manually resolved.
* [ ] http://aopalliance.sourceforge.net (200) with 1 occurrences could not be migrated:
([https](https://aopalliance.sourceforge.net ) result AnnotatedConnectException).
* [ ] http://cglib.sourceforge.net (200) with 2 occurrences could not be migrated:
([https](https://cglib.sourceforge.net ) result AnnotatedConnectException).
* [ ] http://classdoc.sourceforge.net (200) with 1 occurrences could not be migrated:
([https](https://classdoc.sourceforge.net ) result AnnotatedConnectException).
* [ ] http://code.jquery.com:80/jquery.js (200) with 1 occurrences could not be migrated:
([https](https://code.jquery.com:80/jquery.js ) result ClosedChannelException).
* [ ] http://dbunit.sourceforge.net/ (200) with 1 occurrences could not be migrated:
([https](https://dbunit.sourceforge.net/ ) result AnnotatedConnectException).
* [ ] http://docs.groovy-lang.org/docs/next/html/documentation/template-engines.html (200) with 1 occurrences could not be migrated:
([https](https://docs.groovy-lang.org/docs/next/html/documentation/template-engines.html ) result SSLProtocolException).
* [ ] http://domain3.com (200) with 6 occurrences could not be migrated:
([https](https://domain3.com ) result ConnectTimeoutException).
* [ ] http://forum.thymeleaf.org/Thymeleaf-3-0-8-JUST-PUBLISHED-td4030687.html (200) with 1 occurrences could not be migrated:
([https](https://forum.thymeleaf.org/Thymeleaf-3-0-8-JUST-PUBLISHED-td4030687.html ) result SSLHandshakeException).
* [ ] http://grinder.sourceforge.net/ (200) with 1 occurrences could not be migrated:
([https](https://grinder.sourceforge.net/ ) result AnnotatedConnectException).
* [ ] http://groovy-lang.org/templating.html (200) with 3 occurrences could not be migrated:
([https](https://groovy-lang.org/templating.html ) result SSLProtocolException).
* [ ] http://hsqldb.org (200) with 1 occurrences could not be migrated:
([https](https://hsqldb.org ) result SSLHandshakeException).
* [ ] http://htmlunit.sourceforge.net/ (200) with 3 occurrences could not be migrated:
([https](https://htmlunit.sourceforge.net/ ) result AnnotatedConnectException).
* [ ] http://htmlunit.sourceforge.net/gettingStarted.html (200) with 1 occurrences could not be migrated:
([https](https://htmlunit.sourceforge.net/gettingStarted.html ) result AnnotatedConnectException).
* [ ] http://htmlunit.sourceforge.net/javascript.html (200) with 1 occurrences could not be migrated:
([https](https://htmlunit.sourceforge.net/javascript.html ) result AnnotatedConnectException).
* [ ] http://javadiff.cvs.sourceforge.net/ (200) with 3 occurrences could not be migrated:
([https](https://javadiff.cvs.sourceforge.net/ ) result SSLHandshakeException).
* [ ] http://jibx.sourceforge.net/ (200) with 2 occurrences could not be migrated:
([https](https://jibx.sourceforge.net/ ) result AnnotatedConnectException).
* [ ] http://joda-time.sourceforge.net (200) with 1 occurrences could not be migrated:
([https](https://joda-time.sourceforge.net ) result AnnotatedConnectException).
* [ ] http://jotm.objectweb.org/ (200) with 1 occurrences could not be migrated:
([https](https://jotm.objectweb.org/ ) result NotSslRecordException).
* [ ] http://json-b.net/ (200) with 1 occurrences could not be migrated:
([https](https://json-b.net/ ) result SSLHandshakeException).
* [ ] http://mx4j.sourceforge.net (200) with 1 occurrences could not be migrated:
([https](https://mx4j.sourceforge.net ) result AnnotatedConnectException).
* [ ] http://mx4j.sourceforge.net/ (200) with 1 occurrences could not be migrated:
([https](https://mx4j.sourceforge.net/ ) result AnnotatedConnectException).
* [ ] http://mydomain3.com (200) with 9 occurrences could not be migrated:
([https](https://mydomain3.com ) result ConnectTimeoutException).
* [ ] http://objenesis.org (200) with 1 occurrences could not be migrated:
([https](https://objenesis.org ) result SSLHandshakeException).
* [ ] http://objenesis.org/tutorial.html (200) with 1 occurrences could not be migrated:
([https](https://objenesis.org/tutorial.html ) result SSLHandshakeException).
* [ ] http://other.com/ (200) with 2 occurrences could not be migrated:
([https](https://other.com/ ) result SSLHandshakeException).
* [ ] http://reactivex.io/ (200) with 1 occurrences could not be migrated:
([https](https://reactivex.io/ ) result SSLHandshakeException).
* [ ] http://reactivex.io/documentation/operators.html (200) with 1 occurrences could not be migrated:
([https](https://reactivex.io/documentation/operators.html ) result SSLHandshakeException).
* [ ] http://url.somewhereelse.com (200) with 4 occurrences could not be migrated:
([https](https://url.somewhereelse.com ) result SSLHandshakeException).
* [ ] http://www.beanshell.org (200) with 1 occurrences could not be migrated:
([https](https://www.beanshell.org ) result SSLHandshakeException).
* [ ] http://www.beanshell.org/ (200) with 1 occurrences could not be migrated:
([https](https://www.beanshell.org/ ) result SSLHandshakeException).
* [ ] http://www.doclet.com (200) with 1 occurrences could not be migrated:
([https](https://www.doclet.com ) result AnnotatedConnectException).
* [ ] http://www.gebish.org/ (200) with 1 occurrences could not be migrated:
([https](https://www.gebish.org/ ) result SSLHandshakeException).
* [ ] http://www.gebish.org/manual/current/ (200) with 3 occurrences could not be migrated:
([https](https://www.gebish.org/manual/current/ ) result SSLHandshakeException).
* [ ] http://www.groovy-lang.org/ (200) with 2 occurrences could not be migrated:
([https](https://www.groovy-lang.org/ ) result SSLProtocolException).
* [ ] http://www.groovy-lang.org/operators.html (200) with 2 occurrences could not be migrated:
([https](https://www.groovy-lang.org/operators.html ) result SSLProtocolException).
* [ ] http://www.hsqldb.org (200) with 1 occurrences could not be migrated:
([https](https://www.hsqldb.org ) result SSLHandshakeException).
* [ ] http://www.jensgulden.de (200) with 1 occurrences could not be migrated:
([https](https://www.jensgulden.de ) result AnnotatedConnectException).
* [ ] http://www.mockobjects.com (200) with 1 occurrences could not be migrated:
([https](https://www.mockobjects.com ) result ClosedChannelException).
* [ ] http://www.mockobjects.com/ (200) with 1 occurrences could not be migrated:
([https](https://www.mockobjects.com/ ) result ClosedChannelException).
* [ ] http://www.w3.org/TR/cors/ (200) with 19 occurrences could not be migrated:
([https](https://www.w3.org/TR/cors/ ) result SSLException).
* [ ] http://xmlunit.sourceforge.net/ (200) with 2 occurrences could not be migrated:
([https](https://xmlunit.sourceforge.net/ ) result AnnotatedConnectException).
* [ ] http://www.easymock.org (301) with 1 occurrences could not be migrated:
([https](https://www.easymock.org ) result SSLHandshakeException).
* [ ] http://www.easymock.org/ (301) with 1 occurrences could not be migrated:
([https](https://www.easymock.org/ ) result SSLHandshakeException).
* [ ] http://www.jmock.org/ (301) with 1 occurrences could not be migrated:
([https](https://www.jmock.org/ ) result SSLHandshakeException).
* [ ] http://foo.com (301) with 4 occurrences could not be migrated:
([https](https://foo.com ) result SSLHandshakeException).
* [ ] http://foo.com/ (301) with 1 occurrences could not be migrated:
([https](https://foo.com/ ) result SSLHandshakeException).
* [ ] http://foo.com/a (301) with 1 occurrences could not be migrated:
([https](https://foo.com/a ) result SSLHandshakeException).
* [ ] http://foo.com/a?foo=bar&foo=baz (301) with 4 occurrences could not be migrated:
([https](https://foo.com/a?foo=bar&foo=baz ) result SSLHandshakeException).
* [ ] http://foo.com/bar (301) with 5 occurrences could not be migrated:
([https](https://foo.com/bar ) result SSLHandshakeException).
* [ ] http://foo.com/baz (301) with 1 occurrences could not be migrated:
([https](https://foo.com/baz ) result SSLHandshakeException).
* [ ] http://foo.com/rest/books/6.json (301) with 1 occurrences could not be migrated:
([https](https://foo.com/rest/books/6.json ) result SSLHandshakeException).
* [ ] http://foo.com/rest/books/6/pages/1.json (301) with 1 occurrences could not be migrated:
([https](https://foo.com/rest/books/6/pages/1.json ) result SSLHandshakeException).
* [ ] http://foo.com/v1 (301) with 1 occurrences could not be migrated:
([https](https://foo.com/v1 ) result SSLHandshakeException).
* [ ] http://foo.com/v1/123 (301) with 1 occurrences could not be migrated:
([https](https://foo.com/v1/123 ) result SSLHandshakeException).
* [ ] http://foo.com/v1/bar (301) with 1 occurrences could not be migrated:
([https](https://foo.com/v1/bar ) result SSLHandshakeException).
* [ ] http://foo.com/v1?id=123 (301) with 2 occurrences could not be migrated:
([https](https://foo.com/v1?id=123 ) result SSLHandshakeException).
* [ ] http://foo.com/wrong (301) with 1 occurrences could not be migrated:
([https](https://foo.com/wrong ) result SSLHandshakeException).
* [ ] http://mydomain4.com (301) with 3 occurrences could not be migrated:
([https](https://mydomain4.com ) result SSLHandshakeException).
* [ ] http://xml.org/sax/features/ (301) with 4 occurrences could not be migrated:
([https](https://xml.org/sax/features/ ) result SSLHandshakeException).
* [ ] http://xml.org/sax/features/external-general-entities (301) with 10 occurrences could not be migrated:
([https](https://xml.org/sax/features/external-general-entities ) result SSLHandshakeException).
* [ ] http://xml.org/sax/features/is-standalone (301) with 1 occurrences could not be migrated:
([https](https://xml.org/sax/features/is-standalone ) result SSLHandshakeException).
* [ ] http://xml.org/sax/features/namespace-prefixes (301) with 13 occurrences could not be migrated:
([https](https://xml.org/sax/features/namespace-prefixes ) result SSLHandshakeException).
* [ ] http://xml.org/sax/features/namespaces (301) with 12 occurrences could not be migrated:
([https](https://xml.org/sax/features/namespaces ) result SSLHandshakeException).
* [ ] http://xml.org/sax/features/namespaces-prefixes (301) with 1 occurrences could not be migrated:
([https](https://xml.org/sax/features/namespaces-prefixes ) result SSLHandshakeException).
* [ ] http://xml.org/sax/properties/lexical-handler (301) with 12 occurrences could not be migrated:
([https](https://xml.org/sax/properties/lexical-handler ) result SSLHandshakeException).
* [ ] http://www.caucho.com/hessian (302) with 6 occurrences could not be migrated:
([https](https://www.caucho.com/hessian ) result SSLHandshakeException).
* [ ] http://example.com:80/test/this/here (404) with 3 occurrences could not be migrated:
([https](https://example.com:80/test/this/here ) result NotSslRecordException).
* [ ] http://www.foo.com/schema/component/component.xsd (404) with 1 occurrences could not be migrated:
([https](https://www.foo.com/schema/component/component.xsd ) result SSLHandshakeException).
* [ ] http://www.foo.com/schema/jcache (404) with 2 occurrences could not be migrated:
([https](https://www.foo.com/schema/jcache ) result SSLHandshakeException).
* [ ] http://www.mycompany.com/schema/myns/myns.xsd (404) with 1 occurrences could not be migrated:
([https](https://www.mycompany.com/schema/myns/myns.xsd ) result ConnectTimeoutException).
* [ ] http://xunitpatterns.com/Test%20Spy.html (404) with 1 occurrences could not be migrated:
([https](https://xunitpatterns.com/Test%20Spy.html ) result AnnotatedConnectException).
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://mydomain2.com (302) with 22 occurrences migrated to:
/QTifZ/ ([https](https://mydomain2.com ) result IllegalArgumentException).
* [ ] http://www.jdiff.org (302) with 1 occurrences migrated to:
/VQYNZ/ ([https](https://www.jdiff.org ) result IllegalArgumentException).
* [ ] http://192.168.0.1/mvc-showcase (301) with 1 occurrences migrated to:
/admin/ ([https](https://192.168.0.1/mvc-showcase ) result IllegalArgumentException).
* [ ] http://bugs.sun.com/view_bug.do?bug_id=6342411 (302) with 1 occurrences migrated to:
https://bugs.java.com/view_bug.do?bug_id=6342411 ([https](https://bugs.sun.com/view_bug.do?bug_id=6342411 ) result SSLHandshakeException).
* [ ] http://bugs.sun.com/view_bug.do?bug_id=7023180 (302) with 2 occurrences migrated to:
https://bugs.java.com/view_bug.do?bug_id=7023180 ([https](https://bugs.sun.com/view_bug.do?bug_id=7023180 ) result SSLHandshakeException).
* [ ] http://www.freemarker.org (301) with 5 occurrences migrated to:
https://freemarker.apache.org/ ([https](https://www.freemarker.org ) result ConnectTimeoutException).
* [ ] http://sockjs.org (303) with 2 occurrences migrated to:
https://github.com/sockjs/sockjs-client ([https](https://sockjs.org ) result AnnotatedConnectException).
* [ ] http://projects.eclipse.org/projects/tools.buildship (301) with 1 occurrences migrated to:
https://projects.eclipse.org/projects/tools.buildship ([https](https://projects.eclipse.org/projects/tools.buildship ) result SSLException).
* [ ] http://tools.ietf.org/html/rfc6202 (301) with 1 occurrences migrated to:
https://tools.ietf.org/html/rfc6202 ([https](https://tools.ietf.org/html/rfc6202 ) result ReadTimeoutException).
* [ ] http://tools.ietf.org/html/rfc7239 (301) with 7 occurrences migrated to:
https://tools.ietf.org/html/rfc7239 ([https](https://tools.ietf.org/html/rfc7239 ) result ReadTimeoutException).
* [ ] http://aaa.org:8080/a (301) with 1 occurrences migrated to:
https://www.aaa.org/articles/ ([https](https://aaa.org:8080/a ) result NotSslRecordException).
* [ ] http://www.caucho.com (302) with 1 occurrences migrated to:
https://www.caucho.com/ ([https](https://www.caucho.com ) result SSLHandshakeException).
* [ ] http://jruby.org (301) with 4 occurrences migrated to:
https://www.jruby.org ([https](https://jruby.org ) result SSLHandshakeException).
* [ ] http://jruby.org/ (301) with 1 occurrences migrated to:
https://www.jruby.org ([https](https://jruby.org/ ) result SSLHandshakeException).
* [ ] http://bbb.org:9090/b (AnnotatedConnectException) with 2 occurrences migrated to:
https://bbb.org:9090/b ([https](https://bbb.org:9090/b ) result AnnotatedConnectException).
* [ ] http://192.168.28.42/1.jsp (ConnectTimeoutException) with 3 occurrences migrated to:
https://192.168.28.42/1.jsp ([https](https://192.168.28.42/1.jsp ) result ConnectTimeoutException).
* [ ] http://abc.com/v2/accounts?q=12 (ConnectTimeoutException) with 1 occurrences migrated to:
https://abc.com/v2/accounts?q=12 ([https](https://abc.com/v2/accounts?q=12 ) result ConnectTimeoutException).
* [ ] http://example.com:8080/ (ConnectTimeoutException) with 1 occurrences migrated to:
https://example.com:8080/ ([https](https://example.com:8080/ ) result ConnectTimeoutException).
* [ ] http://example.com:8080/bar (ConnectTimeoutException) with 5 occurrences migrated to:
https://example.com:8080/bar ([https](https://example.com:8080/bar ) result ConnectTimeoutException).
* [ ] http://example.org:9090 (ConnectTimeoutException) with 2 occurrences migrated to:
https://example.org:9090 ([https](https://example.org:9090 ) result ConnectTimeoutException).
* [ ] http://example.org:9090/base (ConnectTimeoutException) with 12 occurrences migrated to:
https://example.org:9090/base ([https](https://example.org:9090/base ) result ConnectTimeoutException).
* [ ] http://example.org:9090/base/people (ConnectTimeoutException) with 2 occurrences migrated to:
https://example.org:9090/base/people ([https](https://example.org:9090/base/people ) result ConnectTimeoutException).
* [ ] http://example.org:9090/base/something/1/foo (ConnectTimeoutException) with 2 occurrences migrated to:
https://example.org:9090/base/something/1/foo ([https](https://example.org:9090/base/something/1/foo ) result ConnectTimeoutException).
* [ ] http://example.org:9090/base/something/else (ConnectTimeoutException) with 2 occurrences migrated to:
https://example.org:9090/base/something/else ([https](https://example.org:9090/base/something/else ) result ConnectTimeoutException).
* [ ] http://example.org:9999/base (ConnectTimeoutException) with 1 occurrences migrated to:
https://example.org:9999/base ([https](https://example.org:9999/base ) result ConnectTimeoutException).
* [ ] http://example.org:9999/base/api/people/123/addresses (ConnectTimeoutException) with 1 occurrences migrated to:
https://example.org:9999/base/api/people/123/addresses ([https](https://example.org:9999/base/api/people/123/addresses ) result ConnectTimeoutException).
* [ ] http://example.org:9999/base/api/people/123/addresses/DE (ConnectTimeoutException) with 1 occurrences migrated to:
https://example.org:9999/base/api/people/123/addresses/DE ([https](https://example.org:9999/base/api/people/123/addresses/DE ) result ConnectTimeoutException).
* [ ] http://example.org:9999/base/people/123/addresses/DE (ConnectTimeoutException) with 1 occurrences migrated to:
https://example.org:9999/base/people/123/addresses/DE ([https](https://example.org:9999/base/people/123/addresses/DE ) result ConnectTimeoutException).
* [ ] http://example.org:9999/next (ConnectTimeoutException) with 1 occurrences migrated to:
https://example.org:9999/next ([https](https://example.org:9999/next ) result ConnectTimeoutException).
* [ ] http://example.org:9999/path?q=foo (ConnectTimeoutException) with 1 occurrences migrated to:
https://example.org:9999/path?q=foo ([https](https://example.org:9999/path?q=foo ) result ConnectTimeoutException).
* [ ] http://foo.com:8080/v1/bar?id=123 (ConnectTimeoutException) with 1 occurrences migrated to:
https://foo.com:8080/v1/bar?id=123 ([https](https://foo.com:8080/v1/bar?id=123 ) result ConnectTimeoutException).
* [ ] http://mydomain1.com:123 (ConnectTimeoutException) with 1 occurrences migrated to:
https://mydomain1.com:123 ([https](https://mydomain1.com:123 ) result ConnectTimeoutException).
* [ ] http://site1.com (ConnectTimeoutException) with 13 occurrences migrated to:
https://site1.com ([https](https://site1.com ) result ConnectTimeoutException).
* [ ] http://wwws.sun.com/software/xml/developers/diffmk/ (ConnectTimeoutException) with 1 occurrences migrated to:
https://wwws.sun.com/software/xml/developers/diffmk/ ([https](https://wwws.sun.com/software/xml/developers/diffmk/ ) result ConnectTimeoutException).
* [ ] http://aaa.org:8080/app/b/c/d (ReadTimeoutException) with 1 occurrences migrated to:
https://aaa.org:8080/app/b/c/d ([https](https://aaa.org:8080/app/b/c/d ) result NotSslRecordException).
* [ ] http://aaa.org:8080/b/c/d (ReadTimeoutException) with 1 occurrences migrated to:
https://aaa.org:8080/b/c/d ([https](https://aaa.org:8080/b/c/d ) result NotSslRecordException).
* [ ] http://www.w3.org/2000/xmlns/ (ReadTimeoutException) with 5 occurrences migrated to:
https://www.w3.org/2000/xmlns/ ([https](https://www.w3.org/2000/xmlns/ ) result SSLException).
* [ ] http://www.w3.org/2004/08/xop/include (ReadTimeoutException) with 2 occurrences migrated to:
https://www.w3.org/2004/08/xop/include ([https](https://www.w3.org/2004/08/xop/include ) result SSLException).
* [ ] http://www.w3.org/DesignIssues/MatrixURIs.html (ReadTimeoutException) with 2 occurrences migrated to:
https://www.w3.org/DesignIssues/MatrixURIs.html ([https](https://www.w3.org/DesignIssues/MatrixURIs.html ) result SSLException).
* [ ] http://www.w3.org/TR/2004/WD-soap12-mtom-20040608/ (ReadTimeoutException) with 2 occurrences migrated to:
https://www.w3.org/TR/2004/WD-soap12-mtom-20040608/ ([https](https://www.w3.org/TR/2004/WD-soap12-mtom-20040608/ ) result SSLException).
* [ ] http://www.w3.org/TR/2005/REC-xop10-20050125/ (ReadTimeoutException) with 6 occurrences migrated to:
https://www.w3.org/TR/2005/REC-xop10-20050125/ ([https](https://www.w3.org/TR/2005/REC-xop10-20050125/ ) result SSLException).
* [ ] http://www.w3.org/TR/eventsource/ (ReadTimeoutException) with 2 occurrences migrated to:
https://www.w3.org/TR/eventsource/ ([https](https://www.w3.org/TR/eventsource/ ) result SSLException).
* [ ] http://www.w3.org/TR/html4/loose.dtd (ReadTimeoutException) with 5 occurrences migrated to:
https://www.w3.org/TR/html4/loose.dtd ([https](https://www.w3.org/TR/html4/loose.dtd ) result SSLException).
* [ ] http://www.w3.org/TR/xhtml1/ (ReadTimeoutException) with 1 occurrences migrated to:
https://www.w3.org/TR/xhtml1/ ([https](https://www.w3.org/TR/xhtml1/ ) result SSLException).
* [ ] http://www.w3.org/TR/xhtml1/diffs.html (ReadTimeoutException) with 1 occurrences migrated to:
https://www.w3.org/TR/xhtml1/diffs.html ([https](https://www.w3.org/TR/xhtml1/diffs.html ) result SSLException).
* [ ] http://www.w3.org/TR/xhtml1/dtds.html (ReadTimeoutException) with 1 occurrences migrated to:
https://www.w3.org/TR/xhtml1/dtds.html ([https](https://www.w3.org/TR/xhtml1/dtds.html ) result SSLException).
* [ ] http://www.w3.org/XML/1998/namespace (ReadTimeoutException) with 5 occurrences migrated to:
https://www.w3.org/XML/1998/namespace ([https](https://www.w3.org/XML/1998/namespace ) result SSLException).
* [ ] http://Additional-namespace-name-URI (UnknownHostException) with 1 occurrences migrated to:
https://Additional-namespace-name-URI ([https](https://Additional-namespace-name-URI ) result UnknownHostException).
* [ ] http://DOMAIN2.com (UnknownHostException) with 2 occurrences migrated to:
https://DOMAIN2.com ([https](https://DOMAIN2.com ) result UnknownHostException).
* [ ] http://Default-namespace-name-URI (UnknownHostException) with 1 occurrences migrated to:
https://Default-namespace-name-URI ([https](https://Default-namespace-name-URI ) result UnknownHostException).
* [ ] http://HOST:8080/remoting/AccountService (UnknownHostException) with 1 occurrences migrated to:
https://HOST:8080/remoting/AccountService ([https](https://HOST:8080/remoting/AccountService ) result UnknownHostException).
* [ ] http://Namespace-name-URI (UnknownHostException) with 1 occurrences migrated to:
https://Namespace-name-URI ([https](https://Namespace-name-URI ) result UnknownHostException).
* [ ] http://Unbound-namespace-name-URI (UnknownHostException) with 1 occurrences migrated to:
https://Unbound-namespace-name-URI ([https](https://Unbound-namespace-name-URI ) result UnknownHostException).
* [ ] http://a.example.org/mvc-showcase (UnknownHostException) with 1 occurrences migrated to:
https://a.example.org/mvc-showcase ([https](https://a.example.org/mvc-showcase ) result UnknownHostException).
* [ ] http://anotherHost/mvc-showcase (UnknownHostException) with 1 occurrences migrated to:
https://anotherHost/mvc-showcase ([https](https://anotherHost/mvc-showcase ) result UnknownHostException).
* [ ] http://arjen:foobar@java.sun.com:80 (UnknownHostException) with 1 occurrences migrated to:
https://arjen:foobar@java.sun.com:80 ([https](https://arjen:foobar@java.sun.com:80 ) result UnknownHostException).
* [ ] http://barfoo:8888 (UnknownHostException) with 1 occurrences migrated to:
https://barfoo:8888 ([https](https://barfoo:8888 ) result UnknownHostException).
* [ ] http://dev.bar.com (UnknownHostException) with 3 occurrences migrated to:
https://dev.bar.com ([https](https://dev.bar.com ) result UnknownHostException).
* [ ] http://domain1.com (UnknownHostException) with 25 occurrences migrated to:
https://domain1.com ([https](https://domain1.com ) result UnknownHostException).
* [ ] http://domain1.com/test.html (UnknownHostException) with 4 occurrences migrated to:
https://domain1.com/test.html ([https](https://domain1.com/test.html ) result UnknownHostException).
* [ ] http://domain2.com (UnknownHostException) with 98 occurrences migrated to:
https://domain2.com ([https](https://domain2.com ) result UnknownHostException).
* [ ] http://example.com",HttpMethod.GET (UnknownHostException) with 6 occurrences migrated to:
https://example.com",HttpMethod.GET ([https](https://example.com",HttpMethod.GET ) result UnknownHostException).
* [ ] http://example/ (UnknownHostException) with 1 occurrences migrated to:
https://example/ ([https](https://example/ ) result UnknownHostException).
* [ ] http://fake-service (UnknownHostException) with 7 occurrences migrated to:
https://fake-service ([https](https://fake-service ) result UnknownHostException).
* [ ] http://foo (UnknownHostException) with 3 occurrences migrated to:
https://foo ([https](https://foo ) result UnknownHostException).
* [ ] http://foo.bar.com (UnknownHostException) with 4 occurrences migrated to:
https://foo.bar.com ([https](https://foo.bar.com ) result UnknownHostException).
* [ ] http://foobar:8088 (UnknownHostException) with 1 occurrences migrated to:
https://foobar:8088 ([https](https://foobar:8088 ) result UnknownHostException).
* [ ] http://host:port/myApp/myEndpoint/ (UnknownHostException) with 1 occurrences migrated to:
https://host:port/myApp/myEndpoint/ ([https](https://host:port/myApp/myEndpoint/ ) result UnknownHostException).
* [ ] http://jaxws.remoting.springframework.org/ (UnknownHostException) with 4 occurrences migrated to:
https://jaxws.remoting.springframework.org/ ([https](https://jaxws.remoting.springframework.org/ ) result UnknownHostException).
* [ ] http://joe.openid.example.org/ (UnknownHostException) with 2 occurrences migrated to:
https://joe.openid.example.org/ ([https](https://joe.openid.example.org/ ) result UnknownHostException).
* [ ] http://myserver (UnknownHostException) with 1 occurrences migrated to:
https://myserver ([https](https://myserver ) result UnknownHostException).
* [ ] http://myserver/logo.png (UnknownHostException) with 1 occurrences migrated to:
https://myserver/logo.png ([https](https://myserver/logo.png ) result UnknownHostException).
* [ ] http://myurl (UnknownHostException) with 12 occurrences migrated to:
https://myurl ([https](https://myurl ) result UnknownHostException).
* [ ] http://remotehost:8080/remoting/AccountService (UnknownHostException) with 2 occurrences migrated to:
https://remotehost:8080/remoting/AccountService ([https](https://remotehost:8080/remoting/AccountService ) result UnknownHostException).
* [ ] http://samples.springframework.org/order (UnknownHostException) with 2 occurrences migrated to:
https://samples.springframework.org/order ([https](https://samples.springframework.org/order ) result UnknownHostException).
* [ ] http://somethingDifferent (UnknownHostException) with 1 occurrences migrated to:
https://somethingDifferent ([https](https://somethingDifferent ) result UnknownHostException).
* [ ] http://url.somewhere.com (UnknownHostException) with 25 occurrences migrated to:
https://url.somewhere.com ([https](https://url.somewhere.com ) result UnknownHostException).
* [ ] http://url.somewhere.com/path (UnknownHostException) with 1 occurrences migrated to:
https://url.somewhere.com/path ([https](https://url.somewhere.com/path ) result UnknownHostException).
* [ ] http://url.somewhere.com/path?id=1 (UnknownHostException) with 1 occurrences migrated to:
https://url.somewhere.com/path?id=1 ([https](https://url.somewhere.com/path?id=1 ) result UnknownHostException).
* [ ] http://url.somewhere.com/test.htm (UnknownHostException) with 2 occurrences migrated to:
https://url.somewhere.com/test.htm ([https](https://url.somewhere.com/test.htm ) result UnknownHostException).
* [ ] http://url.somewhere.com?a=b&c=d (UnknownHostException) with 1 occurrences migrated to:
https://url.somewhere.com?a=b&c=d ([https](https://url.somewhere.com?a=b&c=d ) result UnknownHostException).
* [ ] http://url.somewhere.com?foo= (UnknownHostException) with 2 occurrences migrated to:
https://url.somewhere.com?foo= ([https](https://url.somewhere.com?foo= ) result UnknownHostException).
* [ ] http://url.somewhere.com?foo=bar (UnknownHostException) with 4 occurrences migrated to:
https://url.somewhere.com?foo=bar ([https](https://url.somewhere.com?foo=bar ) result UnknownHostException).
* [ ] http://url.somewhere.com?foo=bar&a=b&c=d (UnknownHostException) with 2 occurrences migrated to:
https://url.somewhere.com?foo=bar&a=b&c=d ([https](https://url.somewhere.com?foo=bar&a=b&c=d ) result UnknownHostException).
* [ ] http://wiki.fasterxml.com/JacksonHome (UnknownHostException) with 3 occurrences migrated to:
https://wiki.fasterxml.com/JacksonHome ([https](https://wiki.fasterxml.com/JacksonHome ) result UnknownHostException).
* [ ] http://wiki.fasterxml.com/JacksonJsonViews (UnknownHostException) with 4 occurrences migrated to:
https://wiki.fasterxml.com/JacksonJsonViews ([https](https://wiki.fasterxml.com/JacksonJsonViews ) result UnknownHostException).
* [ ] http://www (UnknownHostException) with 1 occurrences migrated to:
https://www ([https](https://www ) result UnknownHostException).
* [ ] http://x.y.z (UnknownHostException) with 2 occurrences migrated to:
https://x.y.z ([https](https://x.y.z ) result UnknownHostException).
* [ ] http://abc.com/v1 (301) with 1 occurrences migrated to:
https://abc.go.com/v1 ([https](https://abc.com/v1 ) result 404).
* [ ] http://abc.com/v1/accounts/43 (301) with 1 occurrences migrated to:
https://abc.go.com/v1/accounts/43 ([https](https://abc.com/v1/accounts/43 ) result 404).
* [ ] http://abc.com/v1/accounts?q=12 (301) with 1 occurrences migrated to:
https://abc.go.com/v1/accounts?q=12 ([https](https://abc.com/v1/accounts?q=12 ) result 404).
* [ ] http://apache.org/xml/features/disallow-doctype-decl (404) with 10 occurrences migrated to:
https://apache.org/xml/features/disallow-doctype-decl ([https](https://apache.org/xml/features/disallow-doctype-decl ) result 404).
* [ ] http://docs.spring.io/v1/bar (301) with 1 occurrences migrated to:
https://docs.spring.io/v1/bar ([https](https://docs.spring.io/v1/bar ) result 404).
* [ ] http://example.com/-foo (404) with 2 occurrences migrated to:
https://example.com/-foo ([https](https://example.com/-foo ) result 404).
* [ ] http://example.com/1 (404) with 1 occurrences migrated to:
https://example.com/1 ([https](https://example.com/1 ) result 404).
* [ ] http://example.com/1/2 (404) with 2 occurrences migrated to:
https://example.com/1/2 ([https](https://example.com/1/2 ) result 404).
* [ ] http://example.com/2 (404) with 1 occurrences migrated to:
https://example.com/2 ([https](https://example.com/2 ) result 404).
* [ ] http://example.com/a%20b?q=a%2Bb (404) with 1 occurrences migrated to:
https://example.com/a%20b?q=a%2Bb ([https](https://example.com/a%20b?q=a%2Bb ) result 404).
* [ ] http://example.com/abc/ (404) with 1 occurrences migrated to:
https://example.com/abc/ ([https](https://example.com/abc/ ) result 404).
* [ ] http://example.com/abc/x/y (404) with 1 occurrences migrated to:
https://example.com/abc/x/y ([https](https://example.com/abc/x/y ) result 404).
* [ ] http://example.com/abc/x/y/z (404) with 3 occurrences migrated to:
https://example.com/abc/x/y/z ([https](https://example.com/abc/x/y/z ) result 404).
* [ ] http://example.com/app/login/authenticate (404) with 1 occurrences migrated to:
https://example.com/app/login/authenticate ([https](https://example.com/app/login/authenticate ) result 404).
* [ ] http://example.com/arbitrary/path (404) with 1 occurrences migrated to:
https://example.com/arbitrary/path ([https](https://example.com/arbitrary/path ) result 404).
* [ ] http://example.com/bar (404) with 6 occurrences migrated to:
https://example.com/bar ([https](https://example.com/bar ) result 404).
* [ ] http://example.com/context.xml (404) with 4 occurrences migrated to:
https://example.com/context.xml ([https](https://example.com/context.xml ) result 404).
* [ ] http://example.com/example (404) with 6 occurrences migrated to:
https://example.com/example ([https](https://example.com/example ) result 404).
* [ ] http://example.com/example/?name (404) with 1 occurrences migrated to:
https://example.com/example/?name ([https](https://example.com/example/?name ) result 404).
* [ ] http://example.com/example/?name= (404) with 1 occurrences migrated to:
https://example.com/example/?name= ([https](https://example.com/example/?name= ) result 404).
* [ ] http://example.com/example/?name=%20 (404) with 1 occurrences migrated to:
https://example.com/example/?name=%20 ([https](https://example.com/example/?name=%20 ) result 404).
* [ ] http://example.com/example/?name=row%5B0%5D (404) with 1 occurrences migrated to:
https://example.com/example/?name=row%5B0%5D ([https](https://example.com/example/?name=row%5B0%5D ) result 404).
* [ ] http://example.com/example/?name=value (404) with 1 occurrences migrated to:
https://example.com/example/?name=value ([https](https://example.com/example/?name=value ) result 404).
* [ ] http://example.com/example/?name=value¶m2=value+2 (404) with 1 occurrences migrated to:
https://example.com/example/?name=value¶m2=value+2 ([https](https://example.com/example/?name=value¶m2=value+2 ) result 404).
* [ ] http://example.com/example/?row%5B0%5D=value (404) with 1 occurrences migrated to:
https://example.com/example/?row%5B0%5D=value ([https](https://example.com/example/?row%5B0%5D=value ) result 404).
* [ ] http://example.com/foo (404) with 7 occurrences migrated to:
https://example.com/foo ([https](https://example.com/foo ) result 404).
* [ ] http://example.com/foo/../bar (404) with 1 occurrences migrated to:
https://example.com/foo/../bar ([https](https://example.com/foo/../bar ) result 404).
* [ ] http://example.com/foo/foo2?bar (404) with 1 occurrences migrated to:
https://example.com/foo/foo2?bar ([https](https://example.com/foo/foo2?bar ) result 404).
* [ ] http://example.com/foo?bar (404) with 4 occurrences migrated to:
https://example.com/foo?bar ([https](https://example.com/foo?bar ) result 404).
* [ ] http://example.com/foo?bar= (404) with 2 occurrences migrated to:
https://example.com/foo?bar= ([https](https://example.com/foo?bar= ) result 404).
* [ ] http://example.com/foo?bar=baz (404) with 2 occurrences migrated to:
https://example.com/foo?bar=baz ([https](https://example.com/foo?bar=baz ) result 404).
* [ ] http://example.com/foo?baz=42 (404) with 1 occurrences migrated to:
https://example.com/foo?baz=42 ([https](https://example.com/foo?baz=42 ) result 404).
* [ ] http://example.com/foo?foo=bar&baz=qux (404) with 2 occurrences migrated to:
https://example.com/foo?foo=bar&baz=qux ([https](https://example.com/foo?foo=bar&baz=qux ) result 404).
* [ ] http://example.com/hotel (404) with 3 occurrences migrated to:
https://example.com/hotel ([https](https://example.com/hotel ) result 404).
* [ ] http://example.com/hotel%20list (404) with 1 occurrences migrated to:
https://example.com/hotel%20list ([https](https://example.com/hotel%20list ) result 404).
* [ ] http://example.com/hotel%20list/Z (404) with 1 occurrences migrated to:
https://example.com/hotel%20list/Z ([https](https://example.com/hotel%20list/Z ) result 404).
* [ ] http://example.com/hotel%20list/Z%C3%BCrich (404) with 3 occurrences migrated to:
https://example.com/hotel%20list/Z%C3%BCrich ([https](https://example.com/hotel%20list/Z%C3%BCrich ) result 404).
* [ ] http://example.com/hotels (404) with 3 occurrences migrated to:
https://example.com/hotels ([https](https://example.com/hotels ) result 404).
* [ ] http://example.com/hotels/ (404) with 15 occurrences migrated to:
https://example.com/hotels/ ([https](https://example.com/hotels/ ) result 404).
* [ ] http://example.com/hotels/1/bookings/42 (404) with 1 occurrences migrated to:
https://example.com/hotels/1/bookings/42 ([https](https://example.com/hotels/1/bookings/42 ) result 404).
* [ ] http://example.com/hotels/1/pic/pics%2Flogo.png/size/150x150 (404) with 2 occurrences migrated to:
https://example.com/hotels/1/pic/pics%2Flogo.png/size/150x150 ([https](https://example.com/hotels/1/pic/pics%2Flogo.png/size/150x150 ) result 404).
* [ ] http://example.com/hotels/1/pic/pics/logo.png (404) with 1 occurrences migrated to:
https://example.com/hotels/1/pic/pics/logo.png ([https](https://example.com/hotels/1/pic/pics/logo.png ) result 404).
* [ ] http://example.com/hotels/42/bookings/21 (404) with 1 occurrences migrated to:
https://example.com/hotels/42/bookings/21 ([https](https://example.com/hotels/42/bookings/21 ) result 404).
* [ ] http://example.com/hotels/42/bookings/42 (404) with 1 occurrences migrated to:
https://example.com/hotels/42/bookings/42 ([https](https://example.com/hotels/42/bookings/42 ) result 404).
* [ ] http://example.com/hotels/Rest%20%26%20Relax/bookings/42 (404) with 2 occurrences migrated to:
https://example.com/hotels/Rest%20%26%20Relax/bookings/42 ([https](https://example.com/hotels/Rest%20%26%20Relax/bookings/42 ) result 404).
* [ ] http://example.com/info (404) with 2 occurrences migrated to:
https://example.com/info ([https](https://example.com/info ) result 404).
* [ ] http://example.com/invalid (404) with 1 occurrences migrated to:
https://example.com/invalid ([https](https://example.com/invalid ) result 404).
* [ ] http://example.com/jquery-1.11.0.min.js (404) with 2 occurrences migrated to:
https://example.com/jquery-1.11.0.min.js ([https](https://example.com/jquery-1.11.0.min.js ) result 404).
* [ ] http://example.com/match (404) with 1 occurrences migrated to:
https://example.com/match ([https](https://example.com/match ) result 404).
* [ ] http://example.com/myFileUpload (404) with 1 occurrences migrated to:
https://example.com/myFileUpload ([https](https://example.com/myFileUpload ) result 404).
* [ ] http://example.com/myForm (404) with 1 occurrences migrated to:
https://example.com/myForm ([https](https://example.com/myForm ) result 404).
* [ ] http://example.com/path (404) with 4 occurrences migrated to:
https://example.com/path ([https](https://example.com/path ) result 404).
* [ ] http://example.com/path?query (404) with 2 occurrences migrated to:
https://example.com/path?query ([https](https://example.com/path?query ) result 404).
* [ ] http://example.com/path?query=foo (404) with 1 occurrences migrated to:
https://example.com/path?query=foo ([https](https://example.com/path?query=foo ) result 404).
* [ ] http://example.com/people (404) with 1 occurrences migrated to:
https://example.com/people ([https](https://example.com/people ) result 404).
* [ ] http://example.com/people/ (404) with 1 occurrences migrated to:
https://example.com/people/ ([https](https://example.com/people/ ) result 404).
* [ ] http://example.com/prefix/path (404) with 2 occurrences migrated to:
https://example.com/prefix/path ([https](https://example.com/prefix/path ) result 404).
* [ ] http://example.com/resource (404) with 5 occurrences migrated to:
https://example.com/resource ([https](https://example.com/resource ) result 404).
* [ ] http://example.com/resource?access_token=123 (404) with 1 occurrences migrated to:
https://example.com/resource?access_token=123 ([https](https://example.com/resource?access_token=123 ) result 404).
* [ ] http://example.com/spaces (404) with 1 occurrences migrated to:
https://example.com/spaces ([https](https://example.com/spaces ) result 404).
* [ ] http://example.com/spaces%20and%20%E2%82%AC (404) with 3 occurrences migrated to:
https://example.com/spaces%20and%20%E2%82%AC ([https](https://example.com/spaces%20and%20%E2%82%AC ) result 404).
* [ ] http://example.com/spring/ (404) with 1 occurrences migrated to:
https://example.com/spring/ ([https](https://example.com/spring/ ) result 404).
* [ ] http://example.com/test/this/here (404) with 1 occurrences migrated to:
https://example.com/test/this/here ([https](https://example.com/test/this/here ) result 404).
* [ ] http://example.com/upload (404) with 1 occurrences migrated to:
https://example.com/upload ([https](https://example.com/upload ) result 404).
* [ ] http://example.com/user (404) with 1 occurrences migrated to:
https://example.com/user ([https](https://example.com/user ) result 404).
* [ ] http://example.org/fonts/css (404) with 6 occurrences migrated to:
https://example.org/fonts/css ([https](https://example.org/fonts/css ) result 404).
* [ ] http://example.org/foo/page.html (404) with 1 occurrences migrated to:
https://example.org/foo/page.html ([https](https://example.org/foo/page.html ) result 404).
* [ ] http://example.org/image.png (404) with 4 occurrences migrated to:
https://example.org/image.png ([https](https://example.org/image.png ) result 404).
* [ ] http://example.org/music/people (404) with 4 occurrences migrated to:
https://example.org/music/people ([https](https://example.org/music/people ) result 404).
* [ ] http://example.org/page.cache.html (404) with 1 occurrences migrated to:
https://example.org/page.cache.html ([https](https://example.org/page.cache.html ) result 404).
* [ ] http://example.org/path (404) with 3 occurrences migrated to:
https://example.org/path ([https](https://example.org/path ) result 404).
* [ ] http://springframework.org/oxm-test (404) with 2 occurrences migrated to:
https://springframework.org/oxm-test ([https](https://springframework.org/oxm-test ) result 404).
* [ ] http://www.example.com/favicon.ico (404) with 2 occurrences migrated to:
https://www.example.com/favicon.ico ([https](https://www.example.com/favicon.ico ) result 404).
* [ ] http://www.example.com/foo/bar (404) with 1 occurrences migrated to:
https://www.example.com/foo/bar ([https](https://www.example.com/foo/bar ) result 404).
* [ ] http://www.example.com/hotels (404) with 2 occurrences migrated to:
https://www.example.com/hotels ([https](https://www.example.com/hotels ) result 404).
* [ ] http://www.example.com/user/ (404) with 4 occurrences migrated to:
https://www.example.com/user/ ([https](https://www.example.com/user/ ) result 404).
* [ ] http://www.example.com/user/john%3Bdoe/dashboard (404) with 4 occurrences migrated to:
https://www.example.com/user/john%3Bdoe/dashboard ([https](https://www.example.com/user/john%3Bdoe/dashboard ) result 404).
* [ ] http://www.example.com/user/john;doe/dashboard (404) with 2 occurrences migrated to:
https://www.example.com/user/john;doe/dashboard ([https](https://www.example.com/user/john;doe/dashboard ) result 404).
* [ ] http://www.ibm.com/developerworks/websphere/library/techarticles/0404_tang/0404_tang.html (301) with 1 occurrences migrated to:
https://www.ibm.com/developerworks/websphere/library/techarticles/0404_tang/0404_tang.html ([https](https://www.ibm.com/developerworks/websphere/library/techarticles/0404_tang/0404_tang.html ) result 404).
* [ ] http://mydomain1.com:80/path (301) with 2 occurrences migrated to:
https://www.mydomain1.com/path ([https](https://mydomain1.com:80/path ) result 404).
* [ ] http://www.quartz-scheduler.org/documentation/quartz-2.1.x/tutorials/tutorial-lesson-03 (404) with 1 occurrences migrated to:
https://www.quartz-scheduler.org/documentation/quartz-2.1.x/tutorials/tutorial-lesson-03 ([https](https://www.quartz-scheduler.org/documentation/quartz-2.1.x/tutorials/tutorial-lesson-03 ) result 404).
* [ ] http://www.utoronto.ca/webdocs/HTMLdocs/Book/Book-3ed/appb/mimetype.html (301) with 1 occurrences migrated to:
https://www.utoronto.ca/webdocs/HTMLdocs/Book/Book-3ed/appb/mimetype.html ([https](https://www.utoronto.ca/webdocs/HTMLdocs/Book/Book-3ed/appb/mimetype.html ) result 404).
* [ ] http://xml.apache.org/xslt (404) with 3 occurrences migrated to:
https://xml.apache.org/xslt ([https](https://xml.apache.org/xslt ) result 404).
* [ ] http://myhost.com/resource/path/myTemplate.txt (500) with 1 occurrences migrated to:
https://myhost.com/resource/path/myTemplate.txt ([https](https://myhost.com/resource/path/myTemplate.txt ) result 500).
* [ ] http://myhost.com/some/arbitrary/path (500) with 1 occurrences migrated to:
https://myhost.com/some/arbitrary/path ([https](https://myhost.com/some/arbitrary/path ) result 500).
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/delete-inactive-destinations.html with 1 occurrences migrated to:
https://activemq.apache.org/delete-inactive-destinations.html ([https](https://activemq.apache.org/delete-inactive-destinations.html ) result 200).
* [ ] http://activemq.apache.org/stomp.html with 1 occurrences migrated to:
https://activemq.apache.org/stomp.html ([https](https://activemq.apache.org/stomp.html ) result 200).
* [ ] http://ant.apache.org with 1 occurrences migrated to:
https://ant.apache.org ([https](https://ant.apache.org ) result 200).
* [ ] http://asciidoctor.org/ with 1 occurrences migrated to:
https://asciidoctor.org/ ([https](https://asciidoctor.org/ ) result 200).
* [ ] http://asciidoctor.org/docs/editing-asciidoc-with-live-preview/ with 2 occurrences migrated to:
https://asciidoctor.org/docs/editing-asciidoc-with-live-preview/ ([https](https://asciidoctor.org/docs/editing-asciidoc-with-live-preview/ ) result 200).
* [ ] http://beanvalidation.org/ with 1 occurrences migrated to:
https://beanvalidation.org/ ([https](https://beanvalidation.org/ ) result 200).
* [ ] http://caniuse.com/ with 2 occurrences migrated to:
https://caniuse.com/ ([https](https://caniuse.com/ ) result 200).
* [ ] http://cbor.io/ with 1 occurrences migrated to:
https://cbor.io/ ([https](https://cbor.io/ ) result 200).
* [ ] http://code.jquery.com/jquery-1.11.0.min.js with 2 occurrences migrated to:
https://code.jquery.com/jquery-1.11.0.min.js ([https](https://code.jquery.com/jquery-1.11.0.min.js ) result 200).
* [ ] http://code.jquery.com/jquery.js with 1 occurrences migrated to:
https://code.jquery.com/jquery.js ([https](https://code.jquery.com/jquery.js ) result 200).
* [ ] http://commons.apache.org/proper/commons-lang/ with 2 occurrences migrated to:
https://commons.apache.org/proper/commons-lang/ ([https](https://commons.apache.org/proper/commons-lang/ ) result 200).
* [ ] http://docs.oracle.com/javase/6/docs/api/java/lang/instrument/package-summary.html with 1 occurrences migrated to:
https://docs.oracle.com/javase/6/docs/api/java/lang/instrument/package-summary.html ([https](https://docs.oracle.com/javase/6/docs/api/java/lang/instrument/package-summary.html ) result 200).
* [ ] http://docs.oracle.com/javase/8/docs/api/java/beans/package-summary.html with 1 occurrences migrated to:
https://docs.oracle.com/javase/8/docs/api/java/beans/package-summary.html ([https](https://docs.oracle.com/javase/8/docs/api/java/beans/package-summary.html ) result 200).
* [ ] http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html with 1 occurrences migrated to:
https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html ([https](https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html ) result 200).
* [ ] http://docs.oracle.com/javase/8/docs/api/java/lang/instrument/package-summary.html with 1 occurrences migrated to:
https://docs.oracle.com/javase/8/docs/api/java/lang/instrument/package-summary.html ([https](https://docs.oracle.com/javase/8/docs/api/java/lang/instrument/package-summary.html ) result 200).
* [ ] http://docs.oracle.com/javase/8/docs/api/javax/script/ScriptEngineFactory.html with 2 occurrences migrated to:
https://docs.oracle.com/javase/8/docs/api/javax/script/ScriptEngineFactory.html ([https](https://docs.oracle.com/javase/8/docs/api/javax/script/ScriptEngineFactory.html ) result 200).
* [ ] http://docs.oracle.com/javase/tutorial/javabeans/advanced/customization.html with 1 occurrences migrated to:
https://docs.oracle.com/javase/tutorial/javabeans/advanced/customization.html ([https](https://docs.oracle.com/javase/tutorial/javabeans/advanced/customization.html ) result 200).
* [ ] http://docs.oracle.com/javase/tutorial/javabeans/writing/properties.html with 1 occurrences migrated to:
https://docs.oracle.com/javase/tutorial/javabeans/writing/properties.html ([https](https://docs.oracle.com/javase/tutorial/javabeans/writing/properties.html ) result 200).
* [ ] http://docs.seleniumhq.org/ with 1 occurrences migrated to:
https://docs.seleniumhq.org/ ([https](https://docs.seleniumhq.org/ ) result 200).
* [ ] http://docs.seleniumhq.org/projects/webdriver/ with 1 occurrences migrated to:
https://docs.seleniumhq.org/projects/webdriver/ ([https](https://docs.seleniumhq.org/projects/webdriver/ ) result 200).
* [ ] http://docs.spring.io/spring-framework/docs/current/javadoc-api/ with 1 occurrences migrated to:
https://docs.spring.io/spring-framework/docs/current/javadoc-api/ ([https](https://docs.spring.io/spring-framework/docs/current/javadoc-api/ ) result 200).
* [ ] http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/servlet/view/script/ScriptTemplateView.html with 1 occurrences migrated to:
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/servlet/view/script/ScriptTemplateView.html ([https](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/servlet/view/script/ScriptTemplateView.html ) result 200).
* [ ] http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/ with 1 occurrences migrated to:
https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/ ([https](https://docs.spring.io/spring-framework/docs/current/spring-framework-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://en.wikipedia.org/wiki/Adapter_pattern with 1 occurrences migrated to:
https://en.wikipedia.org/wiki/Adapter_pattern ([https](https://en.wikipedia.org/wiki/Adapter_pattern ) result 200).
* [ ] http://en.wikipedia.org/wiki/Halting_Problem with 1 occurrences migrated to:
https://en.wikipedia.org/wiki/Halting_Problem ([https](https://en.wikipedia.org/wiki/Halting_Problem ) result 200).
* [ ] http://en.wikipedia.org/wiki/List_of_HTTP_status_codes with 1 occurrences migrated to:
https://en.wikipedia.org/wiki/List_of_HTTP_status_codes ([https](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes ) result 200).
* [ ] http://en.wikipedia.org/wiki/MIME with 1 occurrences migrated to:
https://en.wikipedia.org/wiki/MIME ([https](https://en.wikipedia.org/wiki/MIME ) result 200).
* [ ] http://en.wikipedia.org/wiki/Mock_Object with 1 occurrences migrated to:
https://en.wikipedia.org/wiki/Mock_Object ([https](https://en.wikipedia.org/wiki/Mock_Object ) result 200).
* [ ] http://en.wikipedia.org/wiki/Polyfill with 2 occurrences migrated to:
https://en.wikipedia.org/wiki/Polyfill ([https](https://en.wikipedia.org/wiki/Polyfill ) result 200).
* [ ] http://example.com with 150 occurrences migrated to:
https://example.com ([https](https://example.com ) result 200).
* [ ] http://example.com/ with 16 occurrences migrated to:
https://example.com/ ([https](https://example.com/ ) result 200).
* [ ] http://example.com?foo with 2 occurrences migrated to:
https://example.com?foo ([https](https://example.com?foo ) result 200).
* [ ] http://example.com?foo=bar with 8 occurrences migrated to:
https://example.com?foo=bar ([https](https://example.com?foo=bar ) result 200).
* [ ] http://example.com?foo=bar@baz with 1 occurrences migrated to:
https://example.com?foo=bar@baz ([https](https://example.com?foo=bar@baz ) result 200).
* [ ] http://example.org with 18 occurrences migrated to:
https://example.org ([https](https://example.org ) result 200).
* [ ] http://example.org/ with 1 occurrences migrated to:
https://example.org/ ([https](https://example.org/ ) result 200).
* [ ] http://fasterxml.github.io/jackson-databind/javadoc/2.6/com/fasterxml/jackson/databind/DeserializationFeature.html with 2 occurrences migrated to:
https://fasterxml.github.io/jackson-databind/javadoc/2.6/com/fasterxml/jackson/databind/DeserializationFeature.html ([https](https://fasterxml.github.io/jackson-databind/javadoc/2.6/com/fasterxml/jackson/databind/DeserializationFeature.html ) result 200).
* [ ] http://fasterxml.github.io/jackson-databind/javadoc/2.6/com/fasterxml/jackson/databind/MapperFeature.html with 2 occurrences migrated to:
https://fasterxml.github.io/jackson-databind/javadoc/2.6/com/fasterxml/jackson/databind/MapperFeature.html ([https](https://fasterxml.github.io/jackson-databind/javadoc/2.6/com/fasterxml/jackson/databind/MapperFeature.html ) result 200).
* [ ] http://h2database.com with 1 occurrences migrated to:
https://h2database.com ([https](https://h2database.com ) result 200).
* [ ] http://handlebarsjs.com with 2 occurrences migrated to:
https://handlebarsjs.com ([https](https://handlebarsjs.com ) result 200).
* [ ] http://handlebarsjs.com/ with 2 occurrences migrated to:
https://handlebarsjs.com/ ([https](https://handlebarsjs.com/ ) result 200).
* [ ] http://hc.apache.org/httpcomponents-asyncclient-dev/ with 1 occurrences migrated to:
https://hc.apache.org/httpcomponents-asyncclient-dev/ ([https](https://hc.apache.org/httpcomponents-asyncclient-dev/ ) result 200).
* [ ] http://hc.apache.org/httpcomponents-client-ga/ with 2 occurrences migrated to:
https://hc.apache.org/httpcomponents-client-ga/ ([https](https://hc.apache.org/httpcomponents-client-ga/ ) result 200).
* [ ] http://hc.apache.org/httpcomponents-client-ga/httpclient/ with 1 occurrences migrated to:
https://hc.apache.org/httpcomponents-client-ga/httpclient/ ([https](https://hc.apache.org/httpcomponents-client-ga/httpclient/ ) result 200).
* [ ] http://www.hibernate.org/ (301) with 1 occurrences migrated to:
https://hibernate.org/ ([https](https://www.hibernate.org/ ) result 200).
* [ ] http://www.hibernate.org (301) with 1 occurrences migrated to:
https://hibernate.org/ ([https](https://www.hibernate.org ) result 200).
* [ ] http://jcp.org/aboutJava/communityprocess/final/jsr003/index3.html with 1 occurrences migrated to:
https://jcp.org/aboutJava/communityprocess/final/jsr003/index3.html ([https](https://jcp.org/aboutJava/communityprocess/final/jsr003/index3.html ) result 200).
* [ ] http://jcp.org/aboutJava/communityprocess/final/jsr160/index.html with 1 occurrences migrated to:
https://jcp.org/aboutJava/communityprocess/final/jsr160/index.html ([https](https://jcp.org/aboutJava/communityprocess/final/jsr160/index.html ) result 200).
* [ ] http://jcp.org/en/jsr/detail?id=107 with 1 occurrences migrated to:
https://jcp.org/en/jsr/detail?id=107 ([https](https://jcp.org/en/jsr/detail?id=107 ) result 200).
* [ ] http://joel-costigliola.github.io/assertj/ with 3 occurrences migrated to:
https://joel-costigliola.github.io/assertj/ ([https](https://joel-costigliola.github.io/assertj/ ) result 200).
* [ ] http://jsonassert.skyscreamer.org with 1 occurrences migrated to:
https://jsonassert.skyscreamer.org ([https](https://jsonassert.skyscreamer.org ) result 200).
* [ ] http://jsonassert.skyscreamer.org/ with 5 occurrences migrated to:
https://jsonassert.skyscreamer.org/ ([https](https://jsonassert.skyscreamer.org/ ) result 200).
* [ ] http://junit.org/junit5/docs/current/user-guide/ with 2 occurrences migrated to:
https://junit.org/junit5/docs/current/user-guide/ ([https](https://junit.org/junit5/docs/current/user-guide/ ) result 200).
* [ ] http://kotlinlang.org/ with 2 occurrences migrated to:
https://kotlinlang.org/ ([https](https://kotlinlang.org/ ) result 200).
* [ ] http://kotlinlang.org/docs/reference/ with 1 occurrences migrated to:
https://kotlinlang.org/docs/reference/ ([https](https://kotlinlang.org/docs/reference/ ) result 200).
* [ ] http://kotlinlang.org/docs/reference/classes.html with 3 occurrences migrated to:
https://kotlinlang.org/docs/reference/classes.html ([https](https://kotlinlang.org/docs/reference/classes.html ) result 200).
* [ ] http://mydomain.com with 5 occurrences migrated to:
https://mydomain.com ([https](https://mydomain.com ) result 200).
* [ ] http://netty.io/ with 1 occurrences migrated to:
https://netty.io/ ([https](https://netty.io/ ) result 200).
* [ ] http://openjdk.java.net/jeps/290 with 1 occurrences migrated to:
https://openjdk.java.net/jeps/290 ([https](https://openjdk.java.net/jeps/290 ) result 200).
* [ ] http://openjdk.java.net/projects/nashorn/ with 10 occurrences migrated to:
https://openjdk.java.net/projects/nashorn/ ([https](https://openjdk.java.net/projects/nashorn/ ) result 200).
* [ ] http://pivotal.io/security/cve-2015-5211 with 1 occurrences migrated to:
https://pivotal.io/security/cve-2015-5211 ([https](https://pivotal.io/security/cve-2015-5211 ) result 200).
* [ ] http://poi.apache.org with 3 occurrences migrated to:
https://poi.apache.org ([https](https://poi.apache.org ) result 200).
* [ ] http://projects.spring.io/spring-boot/ with 1 occurrences migrated to:
https://projects.spring.io/spring-boot/ ([https](https://projects.spring.io/spring-boot/ ) result 200).
* [ ] http://projects.spring.io/spring-data/ with 1 occurrences migrated to:
https://projects.spring.io/spring-data/ ([https](https://projects.spring.io/spring-data/ ) result 200).
* [ ] http://projects.spring.io/spring-framework/ with 1 occurrences migrated to:
https://projects.spring.io/spring-framework/ ([https](https://projects.spring.io/spring-framework/ ) result 200).
* [ ] http://projects.spring.io/spring-integration/ with 1 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 3 occurrences migrated to:
https://projects.spring.io/spring-security/ ([https](https://projects.spring.io/spring-security/ ) result 200).
* [ ] http://repo1.maven.org/maven2/javax/inject/javax.inject/1/ with 2 occurrences migrated to:
https://repo1.maven.org/maven2/javax/inject/javax.inject/1/ ([https](https://repo1.maven.org/maven2/javax/inject/javax.inject/1/ ) result 200).
* [ ] http://schema.spring.io/mvc/spring-mvc.xsd with 1 occurrences migrated to:
https://schema.spring.io/mvc/spring-mvc.xsd ([https](https://schema.spring.io/mvc/spring-mvc.xsd ) result 200).
* [ ] http://search.maven.org/ with 2 occurrences migrated to:
https://search.maven.org/ ([https](https://search.maven.org/ ) result 200).
* [ ] http://sockjs.github.io/sockjs-protocol/sockjs-protocol-0.3.3.html with 3 occurrences migrated to:
https://sockjs.github.io/sockjs-protocol/sockjs-protocol-0.3.3.html ([https](https://sockjs.github.io/sockjs-protocol/sockjs-protocol-0.3.3.html ) result 200).
* [ ] http://sourceforge.net with 1 occurrences migrated to:
https://sourceforge.net ([https](https://sourceforge.net ) result 200).
* [ ] http://sourceforge.net/projects/javadiff/ with 1 occurrences migrated to:
https://sourceforge.net/projects/javadiff/ ([https](https://sourceforge.net/projects/javadiff/ ) result 200).
* [ ] http://sourceforge.net/sflogo.php?group_id=37160 with 1 occurrences migrated to:
https://sourceforge.net/sflogo.php?group_id=37160 ([https](https://sourceforge.net/sflogo.php?group_id=37160 ) result 200).
* [ ] http://spring.io/blog/ with 1 occurrences migrated to:
https://spring.io/blog/ ([https](https://spring.io/blog/ ) result 200).
* [ ] http://spring.io/blog/category/news with 1 occurrences migrated to:
https://spring.io/blog/category/news ([https](https://spring.io/blog/category/news ) result 200).
* [ ] http://square.github.io/okhttp/ with 1 occurrences migrated to:
https://square.github.io/okhttp/ ([https](https://square.github.io/okhttp/ ) result 200).
* [ ] http://stackoverflow.com/questions/1481251/what-does-document-domain-document-domain-do with 1 occurrences migrated to:
https://stackoverflow.com/questions/1481251/what-does-document-domain-document-domain-do ([https](https://stackoverflow.com/questions/1481251/what-does-document-domain-document-domain-do ) result 200).
* [ ] http://stackoverflow.com/questions/19394570/java-jre-7u45-breaks-classloader-getresources with 2 occurrences migrated to:
https://stackoverflow.com/questions/19394570/java-jre-7u45-breaks-classloader-getresources ([https](https://stackoverflow.com/questions/19394570/java-jre-7u45-breaks-classloader-getresources ) result 200).
* [ ] http://stackoverflow.com/questions/22986109/testing-spring-managed-servlet with 1 occurrences migrated to:
https://stackoverflow.com/questions/22986109/testing-spring-managed-servlet ([https](https://stackoverflow.com/questions/22986109/testing-spring-managed-servlet ) result 200).
* [ ] http://stackoverflow.com/questions/24725438/what-could-cause-a-class-implementing-applicationlistenercontextrefreshedevent with 1 occurrences migrated to:
https://stackoverflow.com/questions/24725438/what-could-cause-a-class-implementing-applicationlistenercontextrefreshedevent ([https](https://stackoverflow.com/questions/24725438/what-could-cause-a-class-implementing-applicationlistenercontextrefreshedevent ) result 200).
* [ ] http://stackoverflow.com/questions/35733344/can-contextconfiguration-in-a-custom-annotation-be-merged with 1 occurrences migrated to:
https://stackoverflow.com/questions/35733344/can-contextconfiguration-in-a-custom-annotation-be-merged ([https](https://stackoverflow.com/questions/35733344/can-contextconfiguration-in-a-custom-annotation-be-merged ) result 200).
* [ ] http://start.spring.io/ with 2 occurrences migrated to:
https://start.spring.io/ ([https](https://start.spring.io/ ) result 200).
* [ ] http://stas-blogspot.blogspot.com/2010/03/java-bridge-methods-explained.html with 1 occurrences migrated to:
https://stas-blogspot.blogspot.com/2010/03/java-bridge-methods-explained.html ([https](https://stas-blogspot.blogspot.com/2010/03/java-bridge-methods-explained.html ) result 200).
* [ ] http://stomp.github.io/stomp-specification-1.2.html with 9 occurrences migrated to:
https://stomp.github.io/stomp-specification-1.2.html ([https](https://stomp.github.io/stomp-specification-1.2.html ) result 200).
* [ ] http://struts.apache.org with 1 occurrences migrated to:
https://struts.apache.org ([https](https://struts.apache.org ) result 200).
* [ ] http://struts.apache.org/ with 1 occurrences migrated to:
https://struts.apache.org/ ([https](https://struts.apache.org/ ) result 200).
* [ ] http://tapestry.apache.org/ with 2 occurrences migrated to:
https://tapestry.apache.org/ ([https](https://tapestry.apache.org/ ) result 200).
* [ ] http://tiles.apache.org with 4 occurrences migrated to:
https://tiles.apache.org ([https](https://tiles.apache.org ) result 200).
* [ ] http://tiles.apache.org/framework/dependency-management.html with 1 occurrences migrated to:
https://tiles.apache.org/framework/dependency-management.html ([https](https://tiles.apache.org/framework/dependency-management.html ) result 200).
* [ ] http://tomcat.apache.org/ with 1 occurrences migrated to:
https://tomcat.apache.org/ ([https](https://tomcat.apache.org/ ) result 200).
* [ ] http://tools.ietf.org/html/rfc1945 with 1 occurrences migrated to:
https://tools.ietf.org/html/rfc1945 ([https](https://tools.ietf.org/html/rfc1945 ) result 200).
* [ ] http://tools.ietf.org/html/rfc2109 with 2 occurrences migrated to:
https://tools.ietf.org/html/rfc2109 ([https](https://tools.ietf.org/html/rfc2109 ) result 200).
* [ ] http://tools.ietf.org/html/rfc2295 with 1 occurrences migrated to:
https://tools.ietf.org/html/rfc2295 ([https](https://tools.ietf.org/html/rfc2295 ) result 200).
* [ ] http://tools.ietf.org/html/rfc2324 with 1 occurrences migrated to:
https://tools.ietf.org/html/rfc2324 ([https](https://tools.ietf.org/html/rfc2324 ) result 200).
* [ ] http://tools.ietf.org/html/rfc2518 with 1 occurrences migrated to:
https://tools.ietf.org/html/rfc2518 ([https](https://tools.ietf.org/html/rfc2518 ) result 200).
* [ ] http://tools.ietf.org/html/rfc2616 with 3 occurrences migrated to:
https://tools.ietf.org/html/rfc2616 ([https](https://tools.ietf.org/html/rfc2616 ) result 200).
* [ ] http://tools.ietf.org/html/rfc2774 with 1 occurrences migrated to:
https://tools.ietf.org/html/rfc2774 ([https](https://tools.ietf.org/html/rfc2774 ) result 200).
* [ ] http://tools.ietf.org/html/rfc2817 with 1 occurrences migrated to:
https://tools.ietf.org/html/rfc2817 ([https](https://tools.ietf.org/html/rfc2817 ) result 200).
* [ ] http://tools.ietf.org/html/rfc2965 with 1 occurrences migrated to:
https://tools.ietf.org/html/rfc2965 ([https](https://tools.ietf.org/html/rfc2965 ) result 200).
* [ ] http://tools.ietf.org/html/rfc3229 with 1 occurrences migrated to:
https://tools.ietf.org/html/rfc3229 ([https](https://tools.ietf.org/html/rfc3229 ) result 200).
* [ ] http://tools.ietf.org/html/rfc3986 with 4 occurrences migrated to:
https://tools.ietf.org/html/rfc3986 ([https](https://tools.ietf.org/html/rfc3986 ) result 200).
* [ ] http://tools.ietf.org/html/rfc4918 with 5 occurrences migrated to:
https://tools.ietf.org/html/rfc4918 ([https](https://tools.ietf.org/html/rfc4918 ) result 200).
* [ ] http://tools.ietf.org/html/rfc5842 with 2 occurrences migrated to:
https://tools.ietf.org/html/rfc5842 ([https](https://tools.ietf.org/html/rfc5842 ) result 200).
* [ ] http://tools.ietf.org/html/rfc5988 with 1 occurrences migrated to:
https://tools.ietf.org/html/rfc5988 ([https](https://tools.ietf.org/html/rfc5988 ) result 200).
* [ ] http://tools.ietf.org/html/rfc6266 with 1 occurrences migrated to:
https://tools.ietf.org/html/rfc6266 ([https](https://tools.ietf.org/html/rfc6266 ) result 200).
* [ ] http://tools.ietf.org/html/rfc6454 with 1 occurrences migrated to:
https://tools.ietf.org/html/rfc6454 ([https](https://tools.ietf.org/html/rfc6454 ) result 200).
* [ ] http://tools.ietf.org/html/rfc6455 with 2 occurrences migrated to:
https://tools.ietf.org/html/rfc6455 ([https](https://tools.ietf.org/html/rfc6455 ) result 200).
* [ ] http://tools.ietf.org/html/rfc6585 with 4 occurrences migrated to:
https://tools.ietf.org/html/rfc6585 ([https](https://tools.ietf.org/html/rfc6585 ) result 200).
* [ ] http://tools.ietf.org/html/rfc7230 with 10 occurrences migrated to:
https://tools.ietf.org/html/rfc7230 ([https](https://tools.ietf.org/html/rfc7230 ) result 200).
* [ ] http://tools.ietf.org/html/rfc7231 with 56 occurrences migrated to:
https://tools.ietf.org/html/rfc7231 ([https](https://tools.ietf.org/html/rfc7231 ) result 200).
* [ ] http://tools.ietf.org/html/rfc7232 with 8 occurrences migrated to:
https://tools.ietf.org/html/rfc7232 ([https](https://tools.ietf.org/html/rfc7232 ) result 200).
* [ ] http://tools.ietf.org/html/rfc7233 with 12 occurrences migrated to:
https://tools.ietf.org/html/rfc7233 ([https](https://tools.ietf.org/html/rfc7233 ) result 200).
* [ ] http://tools.ietf.org/html/rfc7234 with 5 occurrences migrated to:
https://tools.ietf.org/html/rfc7234 ([https](https://tools.ietf.org/html/rfc7234 ) result 200).
* [ ] http://tools.ietf.org/html/rfc7235 with 6 occurrences migrated to:
https://tools.ietf.org/html/rfc7235 ([https](https://tools.ietf.org/html/rfc7235 ) result 200).
* [ ] http://tools.ietf.org/html/rfc7238 with 1 occurrences migrated to:
https://tools.ietf.org/html/rfc7238 ([https](https://tools.ietf.org/html/rfc7238 ) result 200).
* [ ] http://tools.ietf.org/rfcdiff?difftype=--hwdiff&url2=draft-ietf-webdav-protocol-06.txt with 3 occurrences migrated to:
https://tools.ietf.org/rfcdiff?difftype=--hwdiff&url2=draft-ietf-webdav-protocol-06.txt ([https](https://tools.ietf.org/rfcdiff?difftype=--hwdiff&url2=draft-ietf-webdav-protocol-06.txt ) result 200).
* [ ] http://www.amazon.com/exec/obidos/tg/detail/-/0764543857/ with 10 occurrences migrated to:
https://www.amazon.com/exec/obidos/tg/detail/-/0764543857/ ([https](https://www.amazon.com/exec/obidos/tg/detail/-/0764543857/ ) result 200).
* [ ] http://www.apache.org with 1 occurrences migrated to:
https://www.apache.org ([https](https://www.apache.org ) result 200).
* [ ] http://www.apple.com/DTDs/PropertyList-1.0.dtd with 6 occurrences migrated to:
https://www.apple.com/DTDs/PropertyList-1.0.dtd ([https](https://www.apple.com/DTDs/PropertyList-1.0.dtd ) result 200).
* [ ] http://www.atomikos.com/ with 1 occurrences migrated to:
https://www.atomikos.com/ ([https](https://www.atomikos.com/ ) result 200).
* [ ] http://www.baeldung.com/kotlin-null-safety with 1 occurrences migrated to:
https://www.baeldung.com/kotlin-null-safety ([https](https://www.baeldung.com/kotlin-null-safety ) result 200).
* [ ] http://www.eclipse.org/ajdt/ with 1 occurrences migrated to:
https://www.eclipse.org/ajdt/ ([https](https://www.eclipse.org/ajdt/ ) result 200).
* [ ] http://www.eclipse.org/aspectj/doc/next/progguide/index.html with 1 occurrences migrated to:
https://www.eclipse.org/aspectj/doc/next/progguide/index.html ([https](https://www.eclipse.org/aspectj/doc/next/progguide/index.html ) result 200).
* [ ] http://www.eclipse.org/aspectj/doc/next/progguide/semantics-joinPoints.html with 1 occurrences migrated to:
https://www.eclipse.org/aspectj/doc/next/progguide/semantics-joinPoints.html ([https](https://www.eclipse.org/aspectj/doc/next/progguide/semantics-joinPoints.html ) result 200).
* [ ] http://www.eclipse.org/aspectj/doc/released/adk15notebook/index.html with 1 occurrences migrated to:
https://www.eclipse.org/aspectj/doc/released/adk15notebook/index.html ([https](https://www.eclipse.org/aspectj/doc/released/adk15notebook/index.html ) result 200).
* [ ] http://www.eclipse.org/aspectj/doc/released/devguide/antTasks.html with 1 occurrences migrated to:
https://www.eclipse.org/aspectj/doc/released/devguide/antTasks.html ([https](https://www.eclipse.org/aspectj/doc/released/devguide/antTasks.html ) result 200).
* [ ] http://www.eclipse.org/aspectj/doc/released/devguide/index.html with 1 occurrences migrated to:
https://www.eclipse.org/aspectj/doc/released/devguide/index.html ([https](https://www.eclipse.org/aspectj/doc/released/devguide/index.html ) result 200).
* [ ] http://www.eclipse.org/aspectj/doc/released/devguide/ltw-configuration.html with 1 occurrences migrated to:
https://www.eclipse.org/aspectj/doc/released/devguide/ltw-configuration.html ([https](https://www.eclipse.org/aspectj/doc/released/devguide/ltw-configuration.html ) result 200).
* [ ] http://www.eclipse.org/aspectj/doc/released/devguide/ltw.html with 1 occurrences migrated to:
https://www.eclipse.org/aspectj/doc/released/devguide/ltw.html ([https](https://www.eclipse.org/aspectj/doc/released/devguide/ltw.html ) result 200).
* [ ] http://www.eclipse.org/aspectj/doc/released/progguide/index.html with 1 occurrences migrated to:
https://www.eclipse.org/aspectj/doc/released/progguide/index.html ([https](https://www.eclipse.org/aspectj/doc/released/progguide/index.html ) result 200).
* [ ] http://www.eclipse.org/aspectj/doc/released/progguide/semantics-pointcuts.html with 1 occurrences migrated to:
https://www.eclipse.org/aspectj/doc/released/progguide/semantics-pointcuts.html ([https](https://www.eclipse.org/aspectj/doc/released/progguide/semantics-pointcuts.html ) result 200).
* [ ] http://www.eclipse.org/aspectj/dtd/aspectj.dtd with 1 occurrences migrated to:
https://www.eclipse.org/aspectj/dtd/aspectj.dtd ([https](https://www.eclipse.org/aspectj/dtd/aspectj.dtd ) result 200).
* [ ] http://ehcache.sourceforge.net (301) with 1 occurrences migrated to:
https://www.ehcache.org/ ([https](https://ehcache.sourceforge.net ) result 200).
* [ ] http://ehcache.org/ (301) with 1 occurrences migrated to:
https://www.ehcache.org/ ([https](https://ehcache.org/ ) result 200).
* [ ] http://www.embeddedjs.com/ with 2 occurrences migrated to:
https://www.embeddedjs.com/ ([https](https://www.embeddedjs.com/ ) result 200).
* [ ] http://www.enterpriseintegrationpatterns.com with 1 occurrences migrated to:
https://www.enterpriseintegrationpatterns.com ([https](https://www.enterpriseintegrationpatterns.com ) result 200).
* [ ] http://www.example.org/?param=aGVsbG9Xb3JsZA%3D%3D with 1 occurrences migrated to:
https://www.example.org/?param=aGVsbG9Xb3JsZA%3D%3D ([https](https://www.example.org/?param=aGVsbG9Xb3JsZA%3D%3D ) result 200).
* [ ] http://www.google.com with 2 occurrences migrated to:
https://www.google.com ([https](https://www.google.com ) result 200).
* [ ] http://www.h2database.com with 1 occurrences migrated to:
https://www.h2database.com ([https](https://www.h2database.com ) result 200).
* [ ] http://www.h2database.com/html/grammar.html with 1 occurrences migrated to:
https://www.h2database.com/html/grammar.html ([https](https://www.h2database.com/html/grammar.html ) result 200).
* [ ] http://www.ietf.org with 1 occurrences migrated to:
https://www.ietf.org ([https](https://www.ietf.org ) result 200).
* [ ] http://www.ietf.org/rfc/rfc1867.txt with 1 occurrences migrated to:
https://www.ietf.org/rfc/rfc1867.txt ([https](https://www.ietf.org/rfc/rfc1867.txt ) result 200).
* [ ] http://www.ietf.org/rfc/rfc2396.txt with 2 occurrences migrated to:
https://www.ietf.org/rfc/rfc2396.txt ([https](https://www.ietf.org/rfc/rfc2396.txt ) result 200).
* [ ] http://www.ietf.org/rfc/rfc3986.txt with 11 occurrences migrated to:
https://www.ietf.org/rfc/rfc3986.txt ([https](https://www.ietf.org/rfc/rfc3986.txt ) result 200).
* [ ] http://www.infoq.com/ with 1 occurrences migrated to:
https://www.infoq.com/ ([https](https://www.infoq.com/ ) result 200).
* [ ] http://www.infoq.com/minibooks/JTDS with 1 occurrences migrated to:
https://www.infoq.com/minibooks/JTDS ([https](https://www.infoq.com/minibooks/JTDS ) result 200).
* [ ] http://www.jetbrains.com/idea/ with 1 occurrences migrated to:
https://www.jetbrains.com/idea/ ([https](https://www.jetbrains.com/idea/ ) result 200).
* [ ] http://www.json.org/ with 1 occurrences migrated to:
https://www.json.org/ ([https](https://www.json.org/ ) result 200).
* [ ] http://www.jython.org with 2 occurrences migrated to:
https://www.jython.org ([https](https://www.jython.org ) result 200).
* [ ] http://www.jython.org/ with 2 occurrences migrated to:
https://www.jython.org/ ([https](https://www.jython.org/ ) result 200).
* [ ] http://www.lowagie.com/iText with 2 occurrences migrated to:
https://www.lowagie.com/iText ([https](https://www.lowagie.com/iText ) result 200).
* [ ] http://www.manpagez.com/man/5/crontab/ with 1 occurrences migrated to:
https://www.manpagez.com/man/5/crontab/ ([https](https://www.manpagez.com/man/5/crontab/ ) result 200).
* [ ] http://mydomain1.com:80/ (301) with 2 occurrences migrated to:
https://www.mydomain1.com/ ([https](https://mydomain1.com:80/ ) result 200).
* [ ] http://mydomain1.com:80 (301) with 1 occurrences migrated to:
https://www.mydomain1.com/ ([https](https://mydomain1.com:80 ) result 200).
* [ ] http://www.oracle.com/technetwork/articles/javaee/jpa-137156.html with 1 occurrences migrated to:
https://www.oracle.com/technetwork/articles/javaee/jpa-137156.html ([https](https://www.oracle.com/technetwork/articles/javaee/jpa-137156.html ) result 200).
* [ ] http://www.oracle.com/technetwork/java/javaee/javaserverfaces-139869.html with 1 occurrences migrated to:
https://www.oracle.com/technetwork/java/javaee/javaserverfaces-139869.html ([https](https://www.oracle.com/technetwork/java/javaee/javaserverfaces-139869.html ) result 200).
* [ ] http://www.oracle.com/technetwork/java/javase/documentation/spec-136004.html with 1 occurrences migrated to:
https://www.oracle.com/technetwork/java/javase/documentation/spec-136004.html ([https](https://www.oracle.com/technetwork/java/javase/documentation/spec-136004.html ) result 200).
* [ ] http://www.oracle.com/technetwork/java/javase/tech/download-jsp-141676.html with 1 occurrences migrated to:
https://www.oracle.com/technetwork/java/javase/tech/download-jsp-141676.html ([https](https://www.oracle.com/technetwork/java/javase/tech/download-jsp-141676.html ) result 200).
* [ ] http://www.oracle.com/technetwork/java/javase/tech/javamanagement-140525.html with 1 occurrences migrated to:
https://www.oracle.com/technetwork/java/javase/tech/javamanagement-140525.html ([https](https://www.oracle.com/technetwork/java/javase/tech/javamanagement-140525.html ) result 200).
* [ ] http://www.oracle.com/technetwork/middleware/weblogic/overview/index-085209.html with 1 occurrences migrated to:
https://www.oracle.com/technetwork/middleware/weblogic/overview/index-085209.html ([https](https://www.oracle.com/technetwork/middleware/weblogic/overview/index-085209.html ) result 200).
* [ ] http://www.ow2.org/ with 1 occurrences migrated to:
https://www.ow2.org/ ([https](https://www.ow2.org/ ) result 200).
* [ ] http://www.owasp.org/index.php/HTTPOnly with 4 occurrences migrated to:
https://www.owasp.org/index.php/HTTPOnly ([https](https://www.owasp.org/index.php/HTTPOnly ) result 200).
* [ ] http://quartz-scheduler.org (301) with 3 occurrences migrated to:
https://www.quartz-scheduler.org/ ([https](https://quartz-scheduler.org ) result 200).
* [ ] http://www.rabbitmq.com/stomp.html with 1 occurrences migrated to:
https://www.rabbitmq.com/stomp.html ([https](https://www.rabbitmq.com/stomp.html ) result 200).
* [ ] http://www.reactive-streams.org with 1 occurrences migrated to:
https://www.reactive-streams.org ([https](https://www.reactive-streams.org ) result 200).
* [ ] http://www.reactive-streams.org/ with 2 occurrences migrated to:
https://www.reactive-streams.org/ ([https](https://www.reactive-streams.org/ ) result 200).
* [ ] http://www.reactive-streams.org/reactive-streams-1.0.1-javadoc/org/reactivestreams/Publisher.html with 1 occurrences migrated to:
https://www.reactive-streams.org/reactive-streams-1.0.1-javadoc/org/reactivestreams/Publisher.html ([https](https://www.reactive-streams.org/reactive-streams-1.0.1-javadoc/org/reactivestreams/Publisher.html ) result 200).
* [ ] http://www.reactive-streams.org/reactive-streams-1.0.1-javadoc/org/reactivestreams/Subscriber.html with 1 occurrences migrated to:
https://www.reactive-streams.org/reactive-streams-1.0.1-javadoc/org/reactivestreams/Subscriber.html ([https](https://www.reactive-streams.org/reactive-streams-1.0.1-javadoc/org/reactivestreams/Subscriber.html ) result 200).
* [ ] http://seleniumhq.org/projects/webdriver/ (301) with 1 occurrences migrated to:
https://www.seleniumhq.org ([https](https://seleniumhq.org/projects/webdriver/ ) result 200).
* [ ] http://www.springbyexample.org/examples/custom-thread-scope-module.html with 1 occurrences migrated to:
https://www.springbyexample.org/examples/custom-thread-scope-module.html ([https](https://www.springbyexample.org/examples/custom-thread-scope-module.html ) result 200).
* [ ] http://www.springframework.org/dtd/spring-beans-2.0.dtd with 3 occurrences migrated to:
https://www.springframework.org/dtd/spring-beans-2.0.dtd ([https](https://www.springframework.org/dtd/spring-beans-2.0.dtd ) 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 80 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/cache/spring-cache.xsd with 2 occurrences migrated to:
https://www.springframework.org/schema/cache/spring-cache.xsd ([https](https://www.springframework.org/schema/cache/spring-cache.xsd ) result 200).
* [ ] http://www.springframework.org/schema/context/spring-context.xsd with 13 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/jdbc/spring-jdbc.xsd with 1 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/jee/spring-jee.xsd with 2 occurrences migrated to:
https://www.springframework.org/schema/jee/spring-jee.xsd ([https](https://www.springframework.org/schema/jee/spring-jee.xsd ) result 200).
* [ ] http://www.springframework.org/schema/jms/spring-jms.xsd with 2 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 3 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/oxm/spring-oxm.xsd with 1 occurrences migrated to:
https://www.springframework.org/schema/oxm/spring-oxm.xsd ([https](https://www.springframework.org/schema/oxm/spring-oxm.xsd ) result 200).
* [ ] http://www.springframework.org/schema/tool/spring-tool.xsd with 13 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 8 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 1 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 12 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.stuartellis.eu/articles/erb/ (301) with 2 occurrences migrated to:
https://www.stuartellis.name/articles/erb/ ([https](https://www.stuartellis.eu/articles/erb/ ) result 200).
* [ ] http://www.thymeleaf.org/ with 2 occurrences migrated to:
https://www.thymeleaf.org/ ([https](https://www.thymeleaf.org/ ) result 200).
* [ ] http://www.thymeleaf.org/documentation.html with 2 occurrences migrated to:
https://www.thymeleaf.org/documentation.html ([https](https://www.thymeleaf.org/documentation.html ) result 200).
* [ ] http://www.webjars.org with 4 occurrences migrated to:
https://www.webjars.org ([https](https://www.webjars.org ) result 200).
* [ ] http://www.webjars.org/ with 2 occurrences migrated to:
https://www.webjars.org/ ([https](https://www.webjars.org/ ) result 200).
* [ ] http://www.webjars.org/documentation with 2 occurrences migrated to:
https://www.webjars.org/documentation ([https](https://www.webjars.org/documentation ) result 200).
* [ ] http://www.wildfly.org/ with 1 occurrences migrated to:
https://www.wildfly.org/ ([https](https://www.wildfly.org/ ) result 200).
* [ ] http://x-stream.github.io/ with 2 occurrences migrated to:
https://x-stream.github.io/ ([https](https://x-stream.github.io/ ) result 200).
* [ ] http://youtrack.jetbrains.com/issue/IDEA-53476 with 1 occurrences migrated to:
https://youtrack.jetbrains.com/issue/IDEA-53476 ([https](https://youtrack.jetbrains.com/issue/IDEA-53476 ) result 200).
* [ ] http://youtrack.jetbrains.com/issue/IDEA-64446 with 1 occurrences migrated to:
https://youtrack.jetbrains.com/issue/IDEA-64446 ([https](https://youtrack.jetbrains.com/issue/IDEA-64446 ) result 200).
* [ ] http://bit.ly/TRlX2r with 1 occurrences migrated to:
https://bit.ly/TRlX2r ([https](https://bit.ly/TRlX2r ) result 301).
* [ ] http://bit.ly/UzccDt with 1 occurrences migrated to:
https://bit.ly/UzccDt ([https](https://bit.ly/UzccDt ) result 301).
* [ ] http://bit.ly/p9rIvx with 1 occurrences migrated to:
https://bit.ly/p9rIvx ([https](https://bit.ly/p9rIvx ) result 301).
* [ ] http://bit.ly/qUwvwz with 1 occurrences migrated to:
https://bit.ly/qUwvwz ([https](https://bit.ly/qUwvwz ) result 301).
* [ ] http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx with 1 occurrences migrated to:
https://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx ([https](https://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx ) result 301).
* [ ] http://code.google.com/p/beanshell2/ with 1 occurrences migrated to:
https://code.google.com/p/beanshell2/ ([https](https://code.google.com/p/beanshell2/ ) result 301).
* [ ] http://code.google.com/p/browsersec/wiki/Part2 with 1 occurrences migrated to:
https://code.google.com/p/browsersec/wiki/Part2 ([https](https://code.google.com/p/browsersec/wiki/Part2 ) result 301).
* [ ] http://code.google.com/p/gears/wiki/ResumableHttpRequestsProposal with 1 occurrences migrated to:
https://code.google.com/p/gears/wiki/ResumableHttpRequestsProposal ([https](https://code.google.com/p/gears/wiki/ResumableHttpRequestsProposal ) result 301).
* [ ] http://code.google.com/p/xml-matchers/ with 3 occurrences migrated to:
https://code.google.com/p/xml-matchers/ ([https](https://code.google.com/p/xml-matchers/ ) result 301).
* [ ] http://commons.apache.org/proper/commons-dbcp with 2 occurrences migrated to:
https://commons.apache.org/proper/commons-dbcp ([https](https://commons.apache.org/proper/commons-dbcp ) result 301).
* [ ] http://commons.apache.org/proper/commons-fileupload with 2 occurrences migrated to:
https://commons.apache.org/proper/commons-fileupload ([https](https://commons.apache.org/proper/commons-fileupload ) result 301).
* [ ] http://confluence.jetbrains.net/display/IDEADEV/Gradle+integration with 1 occurrences migrated to:
https://confluence.jetbrains.net/display/IDEADEV/Gradle+integration ([https](https://confluence.jetbrains.net/display/IDEADEV/Gradle+integration ) result 301).
* [ ] http://contributor-covenant.org with 1 occurrences migrated to:
https://contributor-covenant.org ([https](https://contributor-covenant.org ) result 301).
* [ ] http://contributor-covenant.org/version/1/3/0/ with 1 occurrences migrated to:
https://contributor-covenant.org/version/1/3/0/ ([https](https://contributor-covenant.org/version/1/3/0/ ) result 301).
* [ ] http://db.apache.org/derby with 2 occurrences migrated to:
https://db.apache.org/derby ([https](https://db.apache.org/derby ) result 301).
* [ ] http://dev.w3.org/html5/eventsource/ with 2 occurrences migrated to:
https://dev.w3.org/html5/eventsource/ ([https](https://dev.w3.org/html5/eventsource/ ) result 301).
* [ ] http://domain.com with 24 occurrences migrated to:
https://domain.com ([https](https://domain.com ) result 301).
* [ ] http://domain.com/ with 1 occurrences migrated to:
https://domain.com/ ([https](https://domain.com/ ) result 301).
* [ ] http://en.wikipedia.org/wiki/Cache_ with 1 occurrences migrated to:
https://en.wikipedia.org/wiki/Cache_ ([https](https://en.wikipedia.org/wiki/Cache_ ) result 301).
* [ ] http://facebook.github.io/react/ with 2 occurrences migrated to:
https://facebook.github.io/react/ ([https](https://facebook.github.io/react/ ) result 301).
* [ ] http://forum.springframework.org/showthread.php?t=41350 with 1 occurrences migrated to:
https://forum.springframework.org/showthread.php?t=41350 ([https](https://forum.springframework.org/showthread.php?t=41350 ) result 301).
* [ ] http://github.com/SpringSource/spring-framework with 1 occurrences migrated to:
https://github.com/SpringSource/spring-framework ([https](https://github.com/SpringSource/spring-framework ) result 301).
* [ ] http://hdiv.org/ with 1 occurrences migrated to:
https://hdiv.org/ ([https](https://hdiv.org/ ) result 301).
* [ ] http://jakarta.apache.org/commons/fileupload with 1 occurrences migrated to:
https://jakarta.apache.org/commons/fileupload ([https](https://jakarta.apache.org/commons/fileupload ) result 301).
* [ ] http://jira.springframework.org/browse/SPR-5708 with 1 occurrences migrated to:
https://jira.springframework.org/browse/SPR-5708 ([https](https://jira.springframework.org/browse/SPR-5708 ) result 301).
* [ ] http://jira.springframework.org/browse/SPR-6124 with 1 occurrences migrated to:
https://jira.springframework.org/browse/SPR-6124 ([https](https://jira.springframework.org/browse/SPR-6124 ) result 301).
* [ ] http://jira.springframework.org/browse/SPR-6128 with 1 occurrences migrated to:
https://jira.springframework.org/browse/SPR-6128 ([https](https://jira.springframework.org/browse/SPR-6128 ) result 301).
* [ ] http://jira.springframework.org/browse/SPR-7064 with 1 occurrences migrated to:
https://jira.springframework.org/browse/SPR-7064 ([https](https://jira.springframework.org/browse/SPR-7064 ) result 301).
* [ ] http://maven.apache.org/plugins/maven-surefire-plugin/test-mojo.html with 1 occurrences migrated to:
https://maven.apache.org/plugins/maven-surefire-plugin/test-mojo.html ([https](https://maven.apache.org/plugins/maven-surefire-plugin/test-mojo.html ) result 301).
* [ ] http://mockito.org/ (301) with 1 occurrences migrated to:
https://mockito.github.io ([https](https://mockito.org/ ) result 301).
* [ ] http://mydomain1.com with 37 occurrences migrated to:
https://mydomain1.com ([https](https://mydomain1.com ) result 301).
* [ ] http://mydomain1.com/ with 2 occurrences migrated to:
https://mydomain1.com/ ([https](https://mydomain1.com/ ) result 301).
* [ ] http://mydomain1.com/path with 2 occurrences migrated to:
https://mydomain1.com/path ([https](https://mydomain1.com/path ) result 301).
* [ ] http://opensource.atlassian.com/projects/spring/browse/SPR-2660 with 1 occurrences migrated to:
https://opensource.atlassian.com/projects/spring/browse/SPR-2660 ([https](https://opensource.atlassian.com/projects/spring/browse/SPR-2660 ) result 301).
* [ ] http://opensource.atlassian.com/projects/spring/browse/SPR-2754 with 1 occurrences migrated to:
https://opensource.atlassian.com/projects/spring/browse/SPR-2754 ([https](https://opensource.atlassian.com/projects/spring/browse/SPR-2754 ) result 301).
* [ ] http://opensource.atlassian.com/projects/spring/browse/SPR-2789 with 1 occurrences migrated to:
https://opensource.atlassian.com/projects/spring/browse/SPR-2789 ([https](https://opensource.atlassian.com/projects/spring/browse/SPR-2789 ) result 301).
* [ ] http://opensource.atlassian.com/projects/spring/browse/SPR-3127 with 1 occurrences migrated to:
https://opensource.atlassian.com/projects/spring/browse/SPR-3127 ([https](https://opensource.atlassian.com/projects/spring/browse/SPR-3127 ) result 301).
* [ ] http://opensource.atlassian.com/projects/spring/browse/SPR-3775 with 1 occurrences migrated to:
https://opensource.atlassian.com/projects/spring/browse/SPR-3775 ([https](https://opensource.atlassian.com/projects/spring/browse/SPR-3775 ) result 301).
* [ ] http://opensource.atlassian.com/projects/spring/browse/SPR-3880 with 1 occurrences migrated to:
https://opensource.atlassian.com/projects/spring/browse/SPR-3880 ([https](https://opensource.atlassian.com/projects/spring/browse/SPR-3880 ) result 301).
* [ ] http://opensource.atlassian.com/projects/spring/browse/SPR-3896 with 7 occurrences migrated to:
https://opensource.atlassian.com/projects/spring/browse/SPR-3896 ([https](https://opensource.atlassian.com/projects/spring/browse/SPR-3896 ) result 301).
* [ ] http://opensource.atlassian.com/projects/spring/browse/SPR-3949 with 1 occurrences migrated to:
https://opensource.atlassian.com/projects/spring/browse/SPR-3949 ([https](https://opensource.atlassian.com/projects/spring/browse/SPR-3949 ) result 301).
* [ ] http://opensource.atlassian.com/projects/spring/browse/SPR-4008 with 2 occurrences migrated to:
https://opensource.atlassian.com/projects/spring/browse/SPR-4008 ([https](https://opensource.atlassian.com/projects/spring/browse/SPR-4008 ) result 301).
* [ ] http://opensource.atlassian.com/projects/spring/browse/SPR-4040 with 2 occurrences migrated to:
https://opensource.atlassian.com/projects/spring/browse/SPR-4040 ([https](https://opensource.atlassian.com/projects/spring/browse/SPR-4040 ) result 301).
* [ ] http://publib.boulder.ibm.com/infocenter/wasinfo/v5r1//topic/com.ibm.websphere.base.doc/info/aes/ae/rdat_extiapi.html with 1 occurrences migrated to:
https://publib.boulder.ibm.com/infocenter/wasinfo/v5r1//topic/com.ibm.websphere.base.doc/info/aes/ae/rdat_extiapi.html ([https](https://publib.boulder.ibm.com/infocenter/wasinfo/v5r1//topic/com.ibm.websphere.base.doc/info/aes/ae/rdat_extiapi.html ) result 301).
* [ ] http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/topic/com.ibm.websphere.javadoc.doc/public_html/api/com/ibm/websphere/rsadapter/JDBCConnectionSpec.html with 1 occurrences migrated to:
https://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/topic/com.ibm.websphere.javadoc.doc/public_html/api/com/ibm/websphere/rsadapter/JDBCConnectionSpec.html ([https](https://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/topic/com.ibm.websphere.javadoc.doc/public_html/api/com/ibm/websphere/rsadapter/JDBCConnectionSpec.html ) result 301).
* [ ] http://site2.com with 3 occurrences migrated to:
https://site2.com ([https](https://site2.com ) result 301).
* [ ] http://slack.kotlinlang.org/ with 2 occurrences migrated to:
https://slack.kotlinlang.org/ ([https](https://slack.kotlinlang.org/ ) result 301).
* [ ] http://sourceforge.net/projects/c3p0 with 2 occurrences migrated to:
https://sourceforge.net/projects/c3p0 ([https](https://sourceforge.net/projects/c3p0 ) result 301).
* [ ] http://sourceforge.net/projects/javadiff with 1 occurrences migrated to:
https://sourceforge.net/projects/javadiff ([https](https://sourceforge.net/projects/javadiff ) result 301).
* [ ] http://springframework.org with 2 occurrences migrated to:
https://springframework.org ([https](https://springframework.org ) result 301).
* [ ] http://www-01.ibm.com/software/webservers/appserv/was/ with 1 occurrences migrated to:
https://www-01.ibm.com/software/webservers/appserv/was/ ([https](https://www-01.ibm.com/software/webservers/appserv/was/ ) result 301).
* [ ] http://www.atomenabled.org/developers/syndication/ with 1 occurrences migrated to:
https://www.atomenabled.org/developers/syndication/ ([https](https://www.atomenabled.org/developers/syndication/ ) result 301).
* [ ] http://www.eclipse.org/aspectj with 2 occurrences migrated to:
https://www.eclipse.org/aspectj ([https](https://www.eclipse.org/aspectj ) result 301).
* [ ] http://www.google.com/ig/calculator?q=1USD=?EUR with 1 occurrences migrated to:
https://www.google.com/ig/calculator?q=1USD=?EUR ([https](https://www.google.com/ig/calculator?q=1USD=?EUR ) result 301).
* [ ] http://www.javaworld.com/javaworld/jw-01-2009/jw-01-spring-transactions.html with 1 occurrences migrated to:
https://www.javaworld.com/javaworld/jw-01-2009/jw-01-spring-transactions.html ([https](https://www.javaworld.com/javaworld/jw-01-2009/jw-01-spring-transactions.html ) result 301).
* [ ] http://www.jboss.org/jbossas/ with 1 occurrences migrated to:
https://www.jboss.org/jbossas/ ([https](https://www.jboss.org/jbossas/ ) result 301).
* [ ] http://www.junit.org/ with 1 occurrences migrated to:
https://www.junit.org/ ([https](https://www.junit.org/ ) result 301).
* [ ] http://www.mnot.net/cache_docs with 1 occurrences migrated to:
https://www.mnot.net/cache_docs ([https](https://www.mnot.net/cache_docs ) result 301).
* [ ] http://www.sf.net/home.view?siteLanguage=nl with 1 occurrences migrated to:
https://www.sf.net/home.view?siteLanguage=nl ([https](https://www.sf.net/home.view?siteLanguage=nl ) result 301).
* [ ] http://www.springframework.org with 7 occurrences migrated to:
https://www.springframework.org ([https](https://www.springframework.org ) result 301).
* [ ] http://www.springframework.org/ with 3 occurrences migrated to:
https://www.springframework.org/ ([https](https://www.springframework.org/ ) result 301).
* [ ] http://xyz.com/path with 2 occurrences migrated to:
https://xyz.com/path ([https](https://xyz.com/path ) result 301).
* [ ] http://commons.apache.org/codec/ with 1 occurrences migrated to:
https://commons.apache.org/codec/ ([https](https://commons.apache.org/codec/ ) result 302).
* [ ] http://commons.apache.org/logging with 2 occurrences migrated to:
https://commons.apache.org/logging ([https](https://commons.apache.org/logging ) result 302).
* [ ] http://download.oracle.com/javaee/6/api/javax/inject/Scope.html with 1 occurrences migrated to:
https://download.oracle.com/javaee/6/api/javax/inject/Scope.html ([https](https://download.oracle.com/javaee/6/api/javax/inject/Scope.html ) result 302).
* [ ] http://download.oracle.com/javase/1.5.0/docs/api/java/lang/System.html with 4 occurrences migrated to:
https://download.oracle.com/javase/1.5.0/docs/api/java/lang/System.html ([https](https://download.oracle.com/javase/1.5.0/docs/api/java/lang/System.html ) result 302).
* [ ] http://download.oracle.com/javase/6/docs/technotes/guides/jar/jar.html with 1 occurrences migrated to:
https://download.oracle.com/javase/6/docs/technotes/guides/jar/jar.html ([https](https://download.oracle.com/javase/6/docs/technotes/guides/jar/jar.html ) result 302).
* [ ] http://download.oracle.com/javase/8/docs/api/java/beans/ConstructorProperties.html with 1 occurrences migrated to:
https://download.oracle.com/javase/8/docs/api/java/beans/ConstructorProperties.html ([https](https://download.oracle.com/javase/8/docs/api/java/beans/ConstructorProperties.html ) result 302).
* [ ] http://download.oracle.com/javase/jndi/tutorial/beyond/misc/policy.html with 1 occurrences migrated to:
https://download.oracle.com/javase/jndi/tutorial/beyond/misc/policy.html ([https](https://download.oracle.com/javase/jndi/tutorial/beyond/misc/policy.html ) result 302).
* [ ] http://gafter.blogspot.nl/2006/12/super-type-tokens.html with 1 occurrences migrated to:
https://gafter.blogspot.nl/2006/12/super-type-tokens.html ([https](https://gafter.blogspot.nl/2006/12/super-type-tokens.html ) result 302).
* [ ] http://git-scm.com/book/en/Distributed-Git-Contributing-to-a-Project with 1 occurrences migrated to:
https://git-scm.com/book/en/Distributed-Git-Contributing-to-a-Project ([https](https://git-scm.com/book/en/Distributed-Git-Contributing-to-a-Project ) result 302).
* [ ] http://git-scm.com/book/en/Git-Tools-Rewriting-History with 1 occurrences migrated to:
https://git-scm.com/book/en/Git-Tools-Rewriting-History ([https](https://git-scm.com/book/en/Git-Tools-Rewriting-History ) result 302).
* [ ] http://glassfish.dev.java.net/ with 1 occurrences migrated to:
https://glassfish.dev.java.net/ ([https](https://glassfish.dev.java.net/ ) result 302).
* [ ] http://java.sun.com/docs/books/jls/third_edition/html/conversions.html with 1 occurrences migrated to:
https://java.sun.com/docs/books/jls/third_edition/html/conversions.html ([https](https://java.sun.com/docs/books/jls/third_edition/html/conversions.html ) result 302).
* [ ] http://java.sun.com/docs/books/jls/third_edition/html/expressions.html with 1 occurrences migrated to:
https://java.sun.com/docs/books/jls/third_edition/html/expressions.html ([https](https://java.sun.com/docs/books/jls/third_edition/html/expressions.html ) result 302).
* [ ] http://java.sun.com/j2se/ with 2 occurrences migrated to:
https://java.sun.com/j2se/ ([https](https://java.sun.com/j2se/ ) result 302).
* [ ] http://java.sun.com/j2se/1.4.1/docs/tooldocs/solaris/javadoc.html with 1 occurrences migrated to:
https://java.sun.com/j2se/1.4.1/docs/tooldocs/solaris/javadoc.html ([https](https://java.sun.com/j2se/1.4.1/docs/tooldocs/solaris/javadoc.html ) result 302).
* [ ] http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html with 1 occurrences migrated to:
https://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html ([https](https://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html ) result 302).
* [ ] http://java.sun.com/j2se/javadoc with 1 occurrences migrated to:
https://java.sun.com/j2se/javadoc ([https](https://java.sun.com/j2se/javadoc ) result 302).
* [ ] http://java.sun.com/j2se/javadoc/ with 1 occurrences migrated to:
https://java.sun.com/j2se/javadoc/ ([https](https://java.sun.com/j2se/javadoc/ ) result 302).
* [ ] http://java.sun.com/j2se/javadoc/faq.html with 1 occurrences migrated to:
https://java.sun.com/j2se/javadoc/faq.html ([https](https://java.sun.com/j2se/javadoc/faq.html ) result 302).
* [ ] http://java.sun.com/webservices/jaxb/ with 1 occurrences migrated to:
https://java.sun.com/webservices/jaxb/ ([https](https://java.sun.com/webservices/jaxb/ ) result 302).
* [ ] http://java.sun.com/xml/jaxp/properties/schemaLanguage with 1 occurrences migrated to:
https://java.sun.com/xml/jaxp/properties/schemaLanguage ([https](https://java.sun.com/xml/jaxp/properties/schemaLanguage ) result 302).
* [ ] http://java.sun.com/xml/ns/j2ee/connector_1_5.xsd with 1 occurrences migrated to:
https://java.sun.com/xml/ns/j2ee/connector_1_5.xsd ([https](https://java.sun.com/xml/ns/j2ee/connector_1_5.xsd ) result 302).
* [ ] http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd with 2 occurrences migrated to:
https://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd ([https](https://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd ) result 302).
* [ ] http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd with 2 occurrences migrated to:
https://java.sun.com/xml/ns/javaee/web-app_3_0.xsd ([https](https://java.sun.com/xml/ns/javaee/web-app_3_0.xsd ) result 302).
* [ ] http://java.sun.com/xml/stream/properties/report-cdata-event with 1 occurrences migrated to:
https://java.sun.com/xml/stream/properties/report-cdata-event ([https](https://java.sun.com/xml/stream/properties/report-cdata-event ) result 302).
* [ ] http://sourceforge.net/projects/cglib/files/cglib3/3.0/cglib-3.0.jar/download with 1 occurrences migrated to:
https://sourceforge.net/projects/cglib/files/cglib3/3.0/cglib-3.0.jar/download ([https](https://sourceforge.net/projects/cglib/files/cglib3/3.0/cglib-3.0.jar/download ) result 302).
* [ ] http://other.info/foo/bar (301) with 1 occurrences migrated to:
https://weibo.com/otherinfo/foo/bar ([https](https://other.info/foo/bar ) result 302).
* [ ] http://www.iana.org/assignments/http-status-codes with 1 occurrences migrated to:
https://www.iana.org/assignments/http-status-codes ([https](https://www.iana.org/assignments/http-status-codes ) result 302).
* [ ] http://www.iana.org/assignments/media-types/ with 1 occurrences migrated to:
https://www.iana.org/assignments/media-types/ ([https](https://www.iana.org/assignments/media-types/ ) result 302).
* [ ] http://www.springsource.org/download with 1 occurrences migrated to:
https://www.springsource.org/download ([https](https://www.springsource.org/download ) result 302).
* [ ] http://www.sys-con.com/java with 1 occurrences migrated to:
https://www.sys-con.com/java ([https](https://www.sys-con.com/java ) result 302).
These URLs were intentionally ignored.
* http://java.sun.com/jsp/jstl/core with 1 occurrences
* http://java.sun.com/xml/ns/j2ee with 6 occurrences
* http://java.sun.com/xml/ns/javaee with 4 occurrences
* http://java.sun.com/xml/ns/persistence with 1 occurrences
* http://localhost with 86 occurrences
* http://localhost/ with 16 occurrences
* http://localhost/42 with 1 occurrences
* http://localhost/?cookie=foo with 1 occurrences
* http://localhost/FILE.TXT with 1 occurrences
* http://localhost/abc with 1 occurrences
* http://localhost/abc/def with 1 occurrences
* http://localhost/app%20/path/ with 1 occurrences
* http://localhost/app/path%20with%20spaces/ with 1 occurrences
* http://localhost/bar with 2 occurrences
* http://localhost/context/a with 3 occurrences
* http://localhost/contextPath/main/path with 2 occurrences
* http://localhost/file.foo with 1 occurrences
* http://localhost/file.txt with 1 occurrences
* http://localhost/foo with 2 occurrences
* http://localhost/foo%20bar with 1 occurrences
* http://localhost/foo/bar with 1 occurrences
* http://localhost/foo/bar/baz with 1 occurrences
* http://localhost/forward with 1 occurrences
* http://localhost/hotels/42/bookings/21 with 4 occurrences
* http://localhost/input with 1 occurrences
* http://localhost/jquery-1.11.0.min.js with 5 occurrences
* http://localhost/messages/form with 1 occurrences
* http://localhost/mvc-showcase with 2 occurrences
* http://localhost/mvc-showcase/app with 1 occurrences
* http://localhost/mvc-showcase/data/foo%20bar with 1 occurrences
* http://localhost/mvc-showcase/data/param with 1 occurrences
* http://localhost/mvc-showcase/data/param?foo=123 with 2 occurrences
* http://localhost/myapp/main with 1 occurrences
* http://localhost/myapp/people/1/addresses/DE with 1 occurrences
* http://localhost/path with 3 occurrences
* http://localhost/path;a=b/with/semicolon with 1 occurrences
* http://localhost/persons with 1 occurrences
* http://localhost/prefix with 1 occurrences
* http://localhost/prefix/app with 1 occurrences
* http://localhost/prefix/bar with 1 occurrences
* http://localhost/prefix/mvc-showcase with 3 occurrences
* http://localhost/query= with 1 occurrences
* http://localhost/query=foo@bar with 1 occurrences
* http://localhost/resources/child/response.txt with 1 occurrences
* http://localhost/resources/foo with 2 occurrences
* http://localhost/resources/foo.txt with 1 occurrences
* http://localhost/resources/response.txt with 2 occurrences
* http://localhost/rest/books/6/pages/1.json with 1 occurrences
* http://localhost/something/1/foo with 1 occurrences
* http://localhost/something/optional-param with 1 occurrences
* http://localhost/test with 4 occurrences
* http://localhost/test.html with 1 occurrences
* http://localhost/test/this with 2 occurrences
* http://localhost:7070/example/adminhandle.vm with 1 occurrences
* http://localhost:7070/example/bingo.html with 1 occurrences
* http://localhost:80/jquery-1.11.0.min.js with 1 occurrences
* http://localhost:8080 with 34 occurrences
* http://localhost:8080/ with 4 occurrences
* http://localhost:8080/OrderService with 3 occurrences
* http://localhost:8080/aA/bB/cC with 1 occurrences
* http://localhost:8080/context with 1 occurrences
* http://localhost:8080/context/myapiresource with 1 occurrences
* http://localhost:8080/gamecast/admin/index.html with 1 occurrences
* http://localhost:8080/gamecast/display.html with 1 occurrences
* http://localhost:8080/gamecast/displayShoppingCart.html with 1 occurrences
* http://localhost:8080/jquery-1.11.0.min.js with 1 occurrences
* http://localhost:8080/mvc-showcase with 1 occurrences
* http://localhost:8080/myapiresource with 1 occurrences
* http://localhost:8080/myapp/js/sockjs-client.js with 1 occurrences
* http://localhost:8080/path with 3 occurrences
* http://localhost:8080/people with 2 occurrences
* http://localhost:8080/portfolio with 1 occurrences
* http://localhost:8080/spring/ with 2 occurrences
* http://localhost:8080/test/ with 2 occurrences
* http://localhost:8080/test/print?value=%EA%B0%80+%EB%82%98 with 1 occurrences
* http://localhost:8081 with 1 occurrences
* http://localhost:8081/ with 1 occurrences
* http://localhost:8181 with 1 occurrences
* http://localhost:8888/AccountServiceEndpoint?WSDL with 1 occurrences
* http://localhost:9000 with 7 occurrences
* http://localhost:9090 with 18 occurrences
* http://localhost:9090/jquery-1.11.0.min.js with 2 occurrences
* http://localhost:9990/mail/messages/form with 1 occurrences
* http://localhost:9999/ with 1 occurrences
* http://localhost:9999/OrderService?wsdl with 4 occurrences
* http://localhosta/testbean with 3 occurrences
* http://samples.springframework.org/flight with 27 occurrences
* http://springframework.org/spring-ws with 17 occurrences
* http://test.com with 1 occurrences
* http://test.com/ with 1 occurrences
* http://testng.org/ with 1 occurrences
* http://tiles.apache.org/tags-tiles with 1 occurrences
* http://www.foo.com/schema/component with 6 occurrences
* http://www.mycompany.com/schema/myns with 4 occurrences
* http://www.springframework.org/schema/aop with 30 occurrences
* http://www.springframework.org/schema/beans with 169 occurrences
* http://www.springframework.org/schema/beans/test with 2 occurrences
* http://www.springframework.org/schema/c with 1 occurrences
* http://www.springframework.org/schema/cache with 5 occurrences
* http://www.springframework.org/schema/context with 28 occurrences
* http://www.springframework.org/schema/jdbc with 8 occurrences
* http://www.springframework.org/schema/jee with 9 occurrences
* http://www.springframework.org/schema/jms with 5 occurrences
* http://www.springframework.org/schema/lang with 10 occurrences
* http://www.springframework.org/schema/mvc with 8 occurrences
* http://www.springframework.org/schema/oxm with 4 occurrences
* http://www.springframework.org/schema/p with 4 occurrences
* http://www.springframework.org/schema/task with 2 occurrences
* http://www.springframework.org/schema/tool with 27 occurrences
* http://www.springframework.org/schema/tx with 18 occurrences
* http://www.springframework.org/schema/util with 8 occurrences
* http://www.springframework.org/schema/websocket with 26 occurrences
* http://www.springframework.org/spring-ws with 1 occurrences
* http://www.springframework.org/tags with 4 occurrences
* http://www.springframework.org/tags/form with 2 occurrences
* http://www.w3.org/1999/XSL/Transform with 8 occurrences
* http://www.w3.org/2001/XMLSchema with 24 occurrences
* http://www.w3.org/2001/XMLSchema-instance with 79 occurrences
* http://www.w3.org/2005/Atom with 4 occurrences
* http://www.w3.org/TR/html4/charset.html with 5 occurrences
* http://www.w3.org/TR/html4/sgml/entities.html with 14 occurrences
2019-03-21 15:08:55 -05:00
Rob Winch
c8732d0258
Polish URL Cleanup
...
Closes gh-22617
2019-03-21 15:07:40 -05:00
Spring Operator
6a0ef1aa64
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://www.foo.com/schema/component/component.xsd (404) with 1 occurrences could not be migrated:
([https](https://www.foo.com/schema/component/component.xsd ) 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://www.kbcafe.com/rss/atom.xsd.xml (ConnectTimeoutException) with 1 occurrences migrated to:
https://www.kbcafe.com/rss/atom.xsd.xml ([https](https://www.kbcafe.com/rss/atom.xsd.xml ) result ConnectTimeoutException).
* http://domain1.com (UnknownHostException) with 2 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://mydomain1.com,http://mydomain2.com (UnknownHostException) with 1 occurrences migrated to:
https://mydomain1.com,http://mydomain2.com ([https](https://mydomain1.com,https://mydomain2.com ) result UnknownHostException).
* http://mydomain2.com (UnknownHostException) with 2 occurrences migrated to:
https://mydomain2.com ([https](https://mydomain2.com ) result UnknownHostException).
* http://mydomain3.com,http://mydomain4.com (UnknownHostException) with 1 occurrences migrated to:
https://mydomain3.com,http://mydomain4.com ([https](https://mydomain3.com,https://mydomain4.com ) result UnknownHostException).
* http://www.springframework.org/schema/beans/factory/xml/support/CustomNamespaceHandlerTests.xsd (404) with 1 occurrences migrated to:
https://www.springframework.org/schema/beans/factory/xml/support/CustomNamespaceHandlerTests.xsd ([https](https://www.springframework.org/schema/beans/factory/xml/support/CustomNamespaceHandlerTests.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.com with 1 occurrences migrated to:
https://example.com ([https](https://example.com ) result 200).
* http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd (301) with 2 occurrences migrated to:
https://hibernate.org/dtd/hibernate-mapping-3.0.dtd ([https](https://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd ) result 200).
* http://testng.org/testng-1.0.dtd with 3 occurrences migrated to:
https://testng.org/testng-1.0.dtd ([https](https://testng.org/testng-1.0.dtd ) result 200).
* http://tiles.apache.org/dtds/tiles-config_2_0.dtd with 2 occurrences migrated to:
https://tiles.apache.org/dtds/tiles-config_2_0.dtd ([https](https://tiles.apache.org/dtds/tiles-config_2_0.dtd ) result 200).
* http://tiles.apache.org/dtds/tiles-config_2_1.dtd with 2 occurrences migrated to:
https://tiles.apache.org/dtds/tiles-config_2_1.dtd ([https](https://tiles.apache.org/dtds/tiles-config_2_1.dtd ) result 200).
* http://tiles.apache.org/dtds/tiles-config_3_0.dtd with 4 occurrences migrated to:
https://tiles.apache.org/dtds/tiles-config_3_0.dtd ([https](https://tiles.apache.org/dtds/tiles-config_3_0.dtd ) result 200).
* http://www.quartz-scheduler.org/xml/job_scheduling_data_1_8.xsd with 1 occurrences migrated to:
https://www.quartz-scheduler.org/xml/job_scheduling_data_1_8.xsd ([https](https://www.quartz-scheduler.org/xml/job_scheduling_data_1_8.xsd ) result 200).
* http://www.springframework.org/dtd/spring-beans-2.0.dtd with 168 occurrences migrated to:
https://www.springframework.org/dtd/spring-beans-2.0.dtd ([https](https://www.springframework.org/dtd/spring-beans-2.0.dtd ) result 200).
* http://www.springframework.org/schema/aop/spring-aop-2.0.xsd with 68 occurrences migrated to:
https://www.springframework.org/schema/aop/spring-aop-2.0.xsd ([https](https://www.springframework.org/schema/aop/spring-aop-2.0.xsd ) result 200).
* http://www.springframework.org/schema/aop/spring-aop-2.5.xsd with 11 occurrences migrated to:
https://www.springframework.org/schema/aop/spring-aop-2.5.xsd ([https](https://www.springframework.org/schema/aop/spring-aop-2.5.xsd ) result 200).
* http://www.springframework.org/schema/aop/spring-aop-3.0.xsd with 2 occurrences migrated to:
https://www.springframework.org/schema/aop/spring-aop-3.0.xsd ([https](https://www.springframework.org/schema/aop/spring-aop-3.0.xsd ) result 200).
* http://www.springframework.org/schema/aop/spring-aop.xsd with 7 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-2.0.xsd with 112 occurrences migrated to:
https://www.springframework.org/schema/beans/spring-beans-2.0.xsd ([https](https://www.springframework.org/schema/beans/spring-beans-2.0.xsd ) result 200).
* http://www.springframework.org/schema/beans/spring-beans-2.5.xsd with 46 occurrences migrated to:
https://www.springframework.org/schema/beans/spring-beans-2.5.xsd ([https](https://www.springframework.org/schema/beans/spring-beans-2.5.xsd ) result 200).
* http://www.springframework.org/schema/beans/spring-beans-3.0.xsd with 10 occurrences migrated to:
https://www.springframework.org/schema/beans/spring-beans-3.0.xsd ([https](https://www.springframework.org/schema/beans/spring-beans-3.0.xsd ) result 200).
* http://www.springframework.org/schema/beans/spring-beans-3.1.xsd with 33 occurrences migrated to:
https://www.springframework.org/schema/beans/spring-beans-3.1.xsd ([https](https://www.springframework.org/schema/beans/spring-beans-3.1.xsd ) result 200).
* http://www.springframework.org/schema/beans/spring-beans-3.2.xsd with 1 occurrences migrated to:
https://www.springframework.org/schema/beans/spring-beans-3.2.xsd ([https](https://www.springframework.org/schema/beans/spring-beans-3.2.xsd ) result 200).
* http://www.springframework.org/schema/beans/spring-beans-4.0.xsd with 1 occurrences migrated to:
https://www.springframework.org/schema/beans/spring-beans-4.0.xsd ([https](https://www.springframework.org/schema/beans/spring-beans-4.0.xsd ) result 200).
* http://www.springframework.org/schema/beans/spring-beans-4.1.xsd with 3 occurrences migrated to:
https://www.springframework.org/schema/beans/spring-beans-4.1.xsd ([https](https://www.springframework.org/schema/beans/spring-beans-4.1.xsd ) result 200).
* http://www.springframework.org/schema/beans/spring-beans-4.2.xsd with 4 occurrences migrated to:
https://www.springframework.org/schema/beans/spring-beans-4.2.xsd ([https](https://www.springframework.org/schema/beans/spring-beans-4.2.xsd ) result 200).
* http://www.springframework.org/schema/beans/spring-beans-4.3.xsd with 4 occurrences migrated to:
https://www.springframework.org/schema/beans/spring-beans-4.3.xsd ([https](https://www.springframework.org/schema/beans/spring-beans-4.3.xsd ) result 200).
* http://www.springframework.org/schema/beans/spring-beans.xsd with 142 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/cache/spring-cache.xsd with 10 occurrences migrated to:
https://www.springframework.org/schema/cache/spring-cache.xsd ([https](https://www.springframework.org/schema/cache/spring-cache.xsd ) result 200).
* http://www.springframework.org/schema/context/spring-context-2.5.xsd with 41 occurrences migrated to:
https://www.springframework.org/schema/context/spring-context-2.5.xsd ([https](https://www.springframework.org/schema/context/spring-context-2.5.xsd ) result 200).
* http://www.springframework.org/schema/context/spring-context-3.0.xsd with 2 occurrences migrated to:
https://www.springframework.org/schema/context/spring-context-3.0.xsd ([https](https://www.springframework.org/schema/context/spring-context-3.0.xsd ) result 200).
* http://www.springframework.org/schema/context/spring-context-3.1.xsd with 1 occurrences migrated to:
https://www.springframework.org/schema/context/spring-context-3.1.xsd ([https](https://www.springframework.org/schema/context/spring-context-3.1.xsd ) result 200).
* http://www.springframework.org/schema/context/spring-context-3.2.xsd with 1 occurrences migrated to:
https://www.springframework.org/schema/context/spring-context-3.2.xsd ([https](https://www.springframework.org/schema/context/spring-context-3.2.xsd ) result 200).
* http://www.springframework.org/schema/context/spring-context-4.0.xsd with 1 occurrences migrated to:
https://www.springframework.org/schema/context/spring-context-4.0.xsd ([https](https://www.springframework.org/schema/context/spring-context-4.0.xsd ) result 200).
* http://www.springframework.org/schema/context/spring-context-4.2.xsd with 4 occurrences migrated to:
https://www.springframework.org/schema/context/spring-context-4.2.xsd ([https](https://www.springframework.org/schema/context/spring-context-4.2.xsd ) result 200).
* http://www.springframework.org/schema/context/spring-context-4.3.xsd with 2 occurrences migrated to:
https://www.springframework.org/schema/context/spring-context-4.3.xsd ([https](https://www.springframework.org/schema/context/spring-context-4.3.xsd ) result 200).
* http://www.springframework.org/schema/context/spring-context.xsd with 10 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/jdbc/spring-jdbc-3.0.xsd with 9 occurrences migrated to:
https://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd ([https](https://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd ) result 200).
* http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd with 5 occurrences migrated to:
https://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd ([https](https://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd ) result 200).
* http://www.springframework.org/schema/jdbc/spring-jdbc-4.2.xsd with 9 occurrences migrated to:
https://www.springframework.org/schema/jdbc/spring-jdbc-4.2.xsd ([https](https://www.springframework.org/schema/jdbc/spring-jdbc-4.2.xsd ) result 200).
* http://www.springframework.org/schema/jdbc/spring-jdbc-4.3.xsd with 2 occurrences migrated to:
https://www.springframework.org/schema/jdbc/spring-jdbc-4.3.xsd ([https](https://www.springframework.org/schema/jdbc/spring-jdbc-4.3.xsd ) result 200).
* http://www.springframework.org/schema/jdbc/spring-jdbc.xsd with 8 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/jee/spring-jee-3.1.xsd with 1 occurrences migrated to:
https://www.springframework.org/schema/jee/spring-jee-3.1.xsd ([https](https://www.springframework.org/schema/jee/spring-jee-3.1.xsd ) result 200).
* http://www.springframework.org/schema/jms/spring-jms-4.1.xsd with 9 occurrences migrated to:
https://www.springframework.org/schema/jms/spring-jms-4.1.xsd ([https](https://www.springframework.org/schema/jms/spring-jms-4.1.xsd ) result 200).
* http://www.springframework.org/schema/jms/spring-jms-4.2.xsd with 1 occurrences migrated to:
https://www.springframework.org/schema/jms/spring-jms-4.2.xsd ([https](https://www.springframework.org/schema/jms/spring-jms-4.2.xsd ) result 200).
* http://www.springframework.org/schema/lang/spring-lang-2.0.xsd with 1 occurrences migrated to:
https://www.springframework.org/schema/lang/spring-lang-2.0.xsd ([https](https://www.springframework.org/schema/lang/spring-lang-2.0.xsd ) result 200).
* http://www.springframework.org/schema/lang/spring-lang-2.5.xsd with 3 occurrences migrated to:
https://www.springframework.org/schema/lang/spring-lang-2.5.xsd ([https](https://www.springframework.org/schema/lang/spring-lang-2.5.xsd ) result 200).
* http://www.springframework.org/schema/lang/spring-lang-3.0.xsd with 1 occurrences migrated to:
https://www.springframework.org/schema/lang/spring-lang-3.0.xsd ([https](https://www.springframework.org/schema/lang/spring-lang-3.0.xsd ) result 200).
* http://www.springframework.org/schema/lang/spring-lang-3.1.xsd with 5 occurrences migrated to:
https://www.springframework.org/schema/lang/spring-lang-3.1.xsd ([https](https://www.springframework.org/schema/lang/spring-lang-3.1.xsd ) result 200).
* http://www.springframework.org/schema/lang/spring-lang-4.2.xsd with 2 occurrences migrated to:
https://www.springframework.org/schema/lang/spring-lang-4.2.xsd ([https](https://www.springframework.org/schema/lang/spring-lang-4.2.xsd ) result 200).
* http://www.springframework.org/schema/lang/spring-lang.xsd with 1 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-3.1.xsd with 1 occurrences migrated to:
https://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd ([https](https://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd ) result 200).
* http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd with 2 occurrences migrated to:
https://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd ([https](https://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd ) result 200).
* http://www.springframework.org/schema/mvc/spring-mvc.xsd with 26 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/oxm/spring-oxm.xsd with 1 occurrences migrated to:
https://www.springframework.org/schema/oxm/spring-oxm.xsd ([https](https://www.springframework.org/schema/oxm/spring-oxm.xsd ) result 200).
* http://www.springframework.org/schema/task/spring-task-4.1.xsd with 1 occurrences migrated to:
https://www.springframework.org/schema/task/spring-task-4.1.xsd ([https](https://www.springframework.org/schema/task/spring-task-4.1.xsd ) result 200).
* http://www.springframework.org/schema/task/spring-task.xsd with 6 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/tx/spring-tx-2.5.xsd with 3 occurrences migrated to:
https://www.springframework.org/schema/tx/spring-tx-2.5.xsd ([https](https://www.springframework.org/schema/tx/spring-tx-2.5.xsd ) result 200).
* http://www.springframework.org/schema/tx/spring-tx-4.0.xsd with 1 occurrences migrated to:
https://www.springframework.org/schema/tx/spring-tx-4.0.xsd ([https](https://www.springframework.org/schema/tx/spring-tx-4.0.xsd ) result 200).
* http://www.springframework.org/schema/tx/spring-tx.xsd with 2 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-2.0.xsd with 2 occurrences migrated to:
https://www.springframework.org/schema/util/spring-util-2.0.xsd ([https](https://www.springframework.org/schema/util/spring-util-2.0.xsd ) result 200).
* http://www.springframework.org/schema/util/spring-util-2.5.xsd with 2 occurrences migrated to:
https://www.springframework.org/schema/util/spring-util-2.5.xsd ([https](https://www.springframework.org/schema/util/spring-util-2.5.xsd ) result 200).
* http://www.springframework.org/schema/util/spring-util-3.0.xsd with 1 occurrences migrated to:
https://www.springframework.org/schema/util/spring-util-3.0.xsd ([https](https://www.springframework.org/schema/util/spring-util-3.0.xsd ) result 200).
* http://www.springframework.org/schema/util/spring-util-3.1.xsd with 2 occurrences migrated to:
https://www.springframework.org/schema/util/spring-util-3.1.xsd ([https](https://www.springframework.org/schema/util/spring-util-3.1.xsd ) result 200).
* http://www.springframework.org/schema/util/spring-util-4.1.xsd with 1 occurrences migrated to:
https://www.springframework.org/schema/util/spring-util-4.1.xsd ([https](https://www.springframework.org/schema/util/spring-util-4.1.xsd ) result 200).
* http://www.springframework.org/schema/util/spring-util-4.2.xsd with 4 occurrences migrated to:
https://www.springframework.org/schema/util/spring-util-4.2.xsd ([https](https://www.springframework.org/schema/util/spring-util-4.2.xsd ) result 200).
* http://www.springframework.org/schema/util/spring-util.xsd with 2 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 11 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://mydomain1.com with 2 occurrences migrated to:
https://mydomain1.com ([https](https://mydomain1.com ) result 301).
* http://www.springframework.org with 1 occurrences migrated to:
https://www.springframework.org ([https](https://www.springframework.org ) result 301).
* http://help.sap.com/saphelp_hanaplatform/helpdata/en/20/a78d3275191014b41bae7c4a46d835/content.htm with 1 occurrences migrated to:
https://help.sap.com/saphelp_hanaplatform/helpdata/en/20/a78d3275191014b41bae7c4a46d835/content.htm ([https](https://help.sap.com/saphelp_hanaplatform/helpdata/en/20/a78d3275191014b41bae7c4a46d835/content.htm ) result 302).
* http://java.sun.com/dtd/properties.dtd with 4 occurrences migrated to:
https://java.sun.com/dtd/properties.dtd ([https](https://java.sun.com/dtd/properties.dtd ) result 302).
* http://java.sun.com/xml/ns/j2ee/connector_1_5.xsd with 1 occurrences migrated to:
https://java.sun.com/xml/ns/j2ee/connector_1_5.xsd ([https](https://java.sun.com/xml/ns/j2ee/connector_1_5.xsd ) result 302).
* http://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd with 1 occurrences migrated to:
https://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd ([https](https://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd ) result 302).
* http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd with 12 occurrences migrated to:
https://java.sun.com/xml/ns/persistence/persistence_1_0.xsd ([https](https://java.sun.com/xml/ns/persistence/persistence_1_0.xsd ) result 302).
* 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/j2ee with 2 occurrences
* http://java.sun.com/xml/ns/javaee with 2 occurrences
* http://java.sun.com/xml/ns/persistence with 27 occurrences
* http://localhost:8080 with 3 occurrences
* http://samples.springframework.org/flight with 3 occurrences
* http://www.foo.com/schema/component with 2 occurrences
* http://www.greeting.com/goodbye/ with 1 occurrences
* http://www.greeting.com/hello/ with 1 occurrences
* http://www.quartz-scheduler.org/xml/JobSchedulingData with 2 occurrences
* http://www.springframework.org/schema/aop with 176 occurrences
* http://www.springframework.org/schema/beans with 715 occurrences
* http://www.springframework.org/schema/beans/test with 2 occurrences
* http://www.springframework.org/schema/c with 9 occurrences
* http://www.springframework.org/schema/cache with 20 occurrences
* http://www.springframework.org/schema/context with 126 occurrences
* http://www.springframework.org/schema/jdbc with 66 occurrences
* http://www.springframework.org/schema/jee with 2 occurrences
* http://www.springframework.org/schema/jms with 20 occurrences
* http://www.springframework.org/schema/lang with 27 occurrences
* http://www.springframework.org/schema/mvc with 58 occurrences
* http://www.springframework.org/schema/oxm with 2 occurrences
* http://www.springframework.org/schema/p with 16 occurrences
* http://www.springframework.org/schema/task with 14 occurrences
* http://www.springframework.org/schema/tx with 12 occurrences
* http://www.springframework.org/schema/util with 28 occurrences
* http://www.springframework.org/schema/websocket with 22 occurrences
* http://www.w3.org/2001/XMLSchema-instance with 375 occurrences
* http://www.w3.org/2005/Atom with 2 occurrences
2019-03-21 15:07:40 -05:00
Sebastien Deleuze
5a0ac42b85
Merge branch '5.1.x'
2019-03-21 19:17:22 +01:00
Sebastien Deleuze
d4714847a0
Restore 2 digit days format in HttpHeaders
...
As recommended by RFC 7231, this commit restore using 2 digit days
when formatting dates while still using
DateTimeFormatter.RFC_1123_DATE_TIME for parsing.
Closes gh-22478
2019-03-21 18:31:45 +01:00
Sebastien Deleuze
0d8fbb4c65
Merge branch '5.1.x'
2019-03-21 11:34:10 +01:00
Sebastien Deleuze
35010149f8
Fix Jackson builder modulesToInstall override behavior
...
This commit updates Jackson2ObjectMapperBuilder in order
to ensure that modules specified via modulesToInstall
eventually override the default ones.
Closes gh-22576
2019-03-21 11:24:03 +01:00
Rossen Stoyanchev
4938831575
Register custom before default codecs
...
Closes gh-22612
2019-03-20 20:52:57 -04:00
Rossen Stoyanchev
2e7f98d7f6
Merge branch '5.1.x'
2019-03-20 14:47:02 -04:00
Rossen Stoyanchev
c6a655275d
Allow overriding of FormHttpMessageWriter#getMediaType
...
Closes gh-22588
2019-03-20 14:46:38 -04:00
Rossen Stoyanchev
5f111098b1
Check for Reactor Netty disconnected client errors
...
Extend the list of disconnected client errors in HttpWebHandlerAdapter
to include the Reactor Netty AbortedException as well exceptions with
the message "connection reset by peer".
Closes gh-21790
2019-03-20 09:01:22 -04:00
Sam Brannen
7d498ba681
Fix Checkstyle error and polish Javadoc for ResourceHttpMessageReader
2019-03-20 11:03:54 +01:00
Rossen Stoyanchev
4a397f108a
ResourceDecoder supports filename hint
...
Closes gh-22267
2019-03-19 17:50:06 -04:00
Rossen Stoyanchev
5a3ff35215
Map arg resolver backs out if annotations present
...
Closes gh-21874
2019-03-19 16:41:26 -04:00
Arjen Poutsma
228cae216e
Merge branch '5.1.x'
2019-03-19 11:30:43 +01:00
Arjen Poutsma
4651039b1f
Use ChannelListener for Undertow zero-copy file transfers
...
This commit changes the UndertowServerHttpResponse to use a
listener-based approach instead of a blocking approach.
Closes gh-22413
2019-03-19 11:16:42 +01:00
Rossen Stoyanchev
e6d206b45a
Extra information in WebFlux stacktraces
...
Use the checkpoint operator at various places in WebFlux to insert
information that Reactor then uses to enrich exceptions, via suppressed
exceptions, when error signals flow through the operator.
Closes gh-22105
2019-03-15 16:25:43 -04:00
Sam Brannen
9d2e7ced89
Favor Math.[min|max]() over handcrafted code
...
In line with the general trend toward favoring core JDK APIs for common
tasks in Spring Framework 5.2, this commit replaces handcrafted
statements with Math.min() and Math.max() were applicable.
2019-03-14 16:48:44 +01:00
Juergen Hoeller
840d80b994
Merge branch '5.1.x'
2019-03-13 16:24:01 +01:00
Juergen Hoeller
fe56aa6fa4
Polishing
2019-03-13 15:32:24 +01:00
Rossen Stoyanchev
57a67a3c06
Header predicate option in AbstractRequestLoggingFilter
...
Closes gh-22244
2019-03-12 17:05:40 -04:00
Rossen Stoyanchev
2b4cd5cf56
Fragment should be expanded last
...
Closes gh-22447
2019-03-12 15:10:35 -04:00
Juergen Hoeller
a06ab6d0ad
Polishing
2019-03-08 09:54:44 +01:00
Lars Grefer
a98e3f0481
Migrate CacheControl to use java.time.Duration for durations
2019-03-08 09:12:19 +01:00
Juergen Hoeller
17930d6c27
Consistent formatting and related polishing
2019-03-07 17:25:48 +01:00
stsypanov
cb4d6f097c
Use StringJoiner where possible to simplify String joining
2019-03-07 16:51:18 +01:00
Juergen Hoeller
18f2e6a12d
AnnotationConfigRegistry exposes registerBean with supplier/qualifiers
...
Closes gh-22457
2019-03-05 18:26:04 +01:00
www
ef91313342
Use String::isEmpty instead of "".equals(arg) when arg is not null
2019-03-05 14:32:56 +01:00
Juergen Hoeller
b2b0df893a
Merge branch '5.1.x'
2019-03-05 14:20:02 +01:00
Juergen Hoeller
d034c053b3
Jackson2Tokenizer passes DeserializationContext into all TokenBuffers
...
See gh-22510
2019-03-05 13:47:26 +01:00
Juergen Hoeller
013c0bca92
Polishing
2019-03-05 13:08:11 +01:00
Juergen Hoeller
f6693e790a
Jackson2Tokenizer passes DeserializationContext into TokenBuffer
...
Closes gh-22510
2019-03-05 13:08:04 +01:00
Rossen Stoyanchev
e3e1ffc986
Encoder/Decoder based payload serialization
...
See gh-21987
2019-03-04 23:35:43 -05:00
Sam Brannen
70cf597484
Remove obsolete overview.html files
2019-03-04 14:07:48 +01:00
Sam Brannen
a9f251db42
Fix broken Javadoc links
2019-03-03 17:18:18 +01:00
Sam Brannen
abda6a6c66
Polishing
2019-03-02 16:17:58 +01:00
Sam Brannen
02be21d0dc
Polishing
2019-03-02 14:22:28 +01:00
Johnny Lim
e21d94f91b
Polish
...
Closes gh-22472
2019-02-26 08:57:03 +01:00
Juergen Hoeller
5c2f3079fd
Sync between MockHttpServletResponse copies
...
See gh-22466
2019-02-25 23:14:37 +01:00
Juergen Hoeller
bc0317af3b
Merge branch '5.1.x'
2019-02-25 17:57:49 +01:00
Juergen Hoeller
9eb7f7e294
Polishing
2019-02-25 17:36:37 +01:00
Johnny Lim
625e210676
Polish
2019-02-25 12:17:53 +01:00
Sebastien Deleuze
dc8fb8bc5e
Use StringJoiner where possible to simplify String joining
2019-02-25 12:11:57 +01:00
Brian Clozel
afbe7b31bb
Polish
...
See gh-22341
2019-02-11 10:46:27 +01:00
Brian Clozel
fb4a28f904
Polish
...
See gh-22340
2019-02-11 10:45:50 +01:00
Sebastien Deleuze
0b9522c84e
Migrate Kotlin Mockito tests to Mockk
...
Closes gh-22345
2019-02-05 15:47:08 +01:00
Brian Clozel
1bf3b36ce8
Polish
...
See gh-22340
2019-02-05 15:06:33 +01:00
Brian Clozel
ba8849dda3
Avoid MimeType garbage creation
...
Prior to this commit, calls to `MimeType` and `MediaType` would create a
significant amount of garbage:
* during startup time, in the static sections of `MimeType` and
`MediaType` when creating well-known types
* at runtime, when parsing media types for content negotiation or
writing known media types as strings in HTTP response headers
This commit does the following:
* Avoid parsing the well-known types and use regular constructors
instead
* Cache types in a simple LRU cache once they've been parsed, since an
application is likely to deal with a limited set of types
* Avoid using `java.util.stream.Stream` in hot code paths
Benchmarks show that a complete revision of the `MimeTypeUtils` parser
is not required, since the LRU cache is enough there.
Closes gh-22340
2019-02-05 14:33:43 +01:00
Arjen Poutsma
d3b5ba7a36
Add test case for HttpRequest with relative URIs
...
Test case for #19890
2019-01-28 16:43:46 +01:00
Rossen Stoyanchev
b8f7c37cc4
Merge branch '5.1.x'
2019-01-25 17:01:51 -05:00
Rossen Stoyanchev
4560dc2818
Improve empty body check
...
Fixes gh-22265
2019-01-25 15:48:04 -05:00
Juergen Hoeller
05f1ea8515
Merge branch '5.1.x'
2019-01-25 15:46:01 +01:00
Juergen Hoeller
85ec9b9df2
Avoid Class.getPackage() in favor of plain Class.getName() checks
...
Fixes #22306
2019-01-25 15:35:49 +01:00
Juergen Hoeller
160ecdf956
Merge branch '5.1.x'
2019-01-24 15:35:28 +01:00
Juergen Hoeller
7cc700435b
HandlerMethod skips interface parameter introspection for return value
...
Fixes #22303
2019-01-24 15:18:55 +01:00
Arjen Poutsma
a5cef3845c
Improve message for HttpStatusCodeException with empty status text
...
This commit improves the message for HttpStatusCodeException so that it
defaults to the HttpStatus reason phrase if a status text is not
provided.
This commit also fixes SimpleClientHttpResponse so that it does not
return null for getStatusText().
Fixed #22162
2019-01-23 11:44:00 +01:00
Rossen Stoyanchev
e373b46660
Jackson2JsonDecoder tolerates null literal
...
Fixes #22042
2019-01-18 18:27:40 -05:00
Rossen Stoyanchev
5dcde9e7d7
Trim decoded SSE data
...
Fixes #22043
2019-01-18 18:13:58 -05:00
Rossen Stoyanchev
a77eee899a
Document synchronous use of the WebClient
...
Fixes #22173
2019-01-18 17:46:16 -05:00
Juergen Hoeller
72dddfbc7b
Polishing
2019-01-09 12:26:58 +01:00
Rossen Stoyanchev
dc3f953f4b
Correction for commit #b219c6c
...
Issue: SPR-17630
2019-01-08 22:43:42 -05:00
Juergen Hoeller
a82f049083
FormHttpMessageConverter officially supports non-String form values
...
Issue: SPR-17645
2019-01-08 17:11:07 +01:00
Rossen Stoyanchev
b219c6ce15
Adjust UriComponentsBuilder#toUriString behavior
...
Commit #93b7a4 added support for pre-configuring URI variables at the
UriComponentsBuilder level, and also changed toUriString to encode
template and URI variables separately. However this went a bit too far
causing side effects for URLs with curly braces that don't represent
URI variables.
This commit restores the original toUriString behavior which is to
encode template and URI variables sepraately only if URI variables have
been pre-configured.
Issue: SPR-17630
2019-01-08 11:06:33 -05:00
王诗峣
b94e8c4bef
Fix ClassCastException in FormHttpMessageConverter
...
We should not cast MultiValueMap<String, ?> to MultiValueMap<String, String>
2019-01-08 12:19:51 +01:00
Juergen Hoeller
6e3f974951
HttpHeaders.writableHttpHeaders properly handles HttpHeaders.EMPTY
...
Issue: SPR-17633
2019-01-08 00:32:27 +01:00
Juergen Hoeller
1faeeaea14
HandlerMethodParameter defensively handles interface annotation arrays
...
Issue: SPR-17629
2019-01-08 00:32:09 +01:00
Rossen Stoyanchev
673a20cb10
Defensive initialization of AsyncXMLInputFactory
...
Aalto's InputFactoryImpl already disables loading of external entities
by default (property "javax.xml.stream.isSupportingExternalEntities").
This commit goes further by applying the same defensive measures as we
do elsewhere for XMLInputFactory, which disables DTD completely.
Arguably there is no good reason to enable that by default in WebFlux.
2019-01-07 13:52:46 -05:00
Rossen Stoyanchev
63984800e4
Lenient URI template encoding
...
URI template encoding ignores mismatched curly braces, treating them as
literal parts instead.
Issue: SPR-17630
2019-01-02 16:36:08 -05:00
Rossen Stoyanchev
4b24bcb799
More accurate checks for presence of MediaType.ALL
...
Typically a straight up equals as well as Collections#contains
checks for MediaType.ALL is susceptible to the presence of
media type parameters.
This commits adds equalsTypeAndSubtype as well as an
isPresentIn(Collection<MimeType>) methods to MimeType to faciliate
with checks for MediaType.ALL.
Issue: SPR-17550
2019-01-02 14:32:50 -05:00
Brian Clozel
6361b0cb23
Write CharSequence instances to DataBuffers
...
Prior to this commit, one could write a `CharSequence` to an existing
`DataBuffer` instance by turning it into a byte array or `ByteBuffer`
first. This had the following disadvantages:
1. Memory allocation was not efficient (not leveraging pooled memory
when available)
2. Dealing with `CharsetEncoder` is not always easy
3. `DataBuffer` implementations, like `NettyDataBuffer` can use
optimized implementations in some cases
This commit adds a new `DataBuffer#write(CharSequence, Charset)` method
for those cases and also an `ensureCapacity` method useful for checking
that the current buffer has enough capacity to write to it..
Issue: SPR-17558
2018-12-20 21:33:33 +01:00
Arjen Poutsma
5e4a8966ee
Make TomcatHttpHandlerAdapter aware of request/response wrappers
...
This commit makes TomcatServerHttpRequest aware of
HttpServletRequestWrappers, and TomcatServerHttpResponse aware of
HttpServletResponseWrappers.
Issue: SPR-17611
2018-12-19 12:16:14 +01:00
Violeta Georgieva
09da10cc6c
Propagate the cancel signal to the downstream
...
Issue: SPR-17609
2018-12-18 15:04:08 -05:00
Juergen Hoeller
0e8ed5931d
Revised backport version 5.0.11
...
Issue: SPR-17410
Issue: SPR-17433
2018-12-17 18:19:21 +01:00
Juergen Hoeller
a240cfcf2f
Consistent support for if-(un)modified-since as ZonedDateTime/Instant
...
Includes DefaultRequestBodyUriSpec pre-resolving URI for HttpRequest.
Issue: SPR-17571
2018-12-17 16:21:39 +01:00
igor-suhorukov
93189a6733
String.indexOf() expressions can be replaced with a call to the String.contains() method available in Java 5 and newer.
2018-12-13 12:29:31 +01:00
Rossen Stoyanchev
38ae282c3b
Update log category precision for all tests
...
Replace the full category capped at 36 chars with the class name only
and 1 char per package, e.g. org.apache.commons.Foo -> o.a.c.Foo
2018-12-12 11:40:33 -05:00
Rossen Stoyanchev
05d616240a
StringHttpMessageConverter defaults to UTF-8 for JSON
...
Issue: SPR-17568
2018-12-12 11:40:33 -05:00
Rossen Stoyanchev
8eef97da33
HTTP header adapters print header values
...
Issue: SPR-17546
2018-12-12 11:40:33 -05:00
Juergen Hoeller
7b7a8196f5
Revised HttpHeaders javadoc
2018-12-12 13:20:58 +01:00
Juergen Hoeller
6eb0a60df9
Polishing
2018-12-12 11:16:53 +01:00
Juergen Hoeller
5bbbc82e19
Consistent handling of null header values in HttpHeaders
...
Issue: SPR-17588
2018-12-12 11:16:45 +01:00
wonwoo
9a13d93a6b
Fix typo in javadoc
...
Closes gh-2049
2018-12-12 08:00:15 +01:00
Juergen Hoeller
6a012147c4
Consistent support for last-modified argument as Instant/ZonedDateTime
...
Issue: SPR-17571
2018-12-06 15:53:47 +01:00
Lars Grefer
9abd4ed33d
Allow Instant and ZonedDateTime as Last-Modified header.
...
Issues: SPR-17571
2018-12-06 14:49:12 +01:00
Rossen Stoyanchev
7a5f8e03bc
Refine check for multiple subscribers
...
Commit #c187cb2 introduced proactive rejection of multiple subscribers
in ReactorClientHttpResponse, instead of hanging indefinitely as per
https://github.com/reactor/reactor-netty/issues/503 .
However FluxReceive also rejects subsequent subscribers if the response
is consumed fully, as opposed to being canceled, e.g. as with
bodyToMono(Void.class). In that case, a subsequent subscriber causes
two competing error signals to be sent, and one gets dropped and
logged by reactor-core.
This fix ensures that a rejection is raised in
ReactorClientHttpResponse only after a cancel() was detected.
Issue: SPR-17564
2018-12-04 21:27:37 -05:00
Juergen Hoeller
9efea7eb73
MockHttpServletRequest preserves original Accept-Language header value
...
Issue: SPR-17566
2018-12-04 22:07:43 +01:00
Juergen Hoeller
6d7827e36b
Polishing
2018-12-03 23:53:00 +01:00
Francesco Komauli
66f822e600
Fix typo in Javadoc for UnsupportedMediaTypeStatusException
...
Response status 415 (unsupported media type) reported as of 416 (which is Range Not Satisfiable), mismatching with superclass constructor parameter HttpStatus.UNSUPPORTED_MEDIA_TYPE
2018-11-29 16:36:56 +01:00
Juergen Hoeller
97ac1c22c5
DefaultResponseErrorHandler makes use of HttpStatus.isError()
...
Issue: SPR-17439
2018-11-23 19:27:47 +01:00
Sebastien Deleuze
91de8d265e
Fix ProtobufDecoder handling of split message size
...
This commit introduces a new readMessageSize(DataBuffer input) private
method, inspired from CodedInputStream#readRawVarint32(int, InputStream)
and adapted for DataBuffer using MessageDecoderFunction fields in
order to support use cases where the message size is split between
distinct chunks.
It also fixes handling of end of streams by using
DataBuffer#readableByteCount instead of -1 which is only relevant with
InputStream.
Issue: SPR-17429
2018-11-23 14:22:58 +01:00
Juergen Hoeller
77ab88b144
Polishing
2018-11-23 13:56:02 +01:00
Juergen Hoeller
738097def2
DefaultResponseErrorHandler detects non-standard error code as well
...
Issue: SPR-17439
2018-11-23 13:55:50 +01:00
Juergen Hoeller
ae8f680d2e
Polishing
2018-11-22 18:21:56 +01:00
Rossen Stoyanchev
7e9857a663
ForwardedHeaderTransformer handles encoding correctly
...
Issue: SPR-17525
2018-11-21 10:54:39 -05:00
Arjen Poutsma
f3c29fe2e6
Add test for UriUtils.encode(String, Charset)
...
Issue: SPR-17451
2018-11-20 10:51:19 +01:00
Rossen Stoyanchev
abf9ce8a34
Improve handling of empty response with Mono<T>
...
Issue: SPR-17560
2018-11-19 16:48:38 -05:00
Brian Clozel
3203d39821
Remove Content-Length response header from errors
...
Prior to this commit, when errors happened before the response was
committed, the `Content-Length` response header would be left as is.
This can be problematic since the error can be handled later in the
chain and the response body changed accordingly. For example, Spring
Boot renders error pages in those cases. If the `Content-Length` is set,
HTTP clients can get confused and only consider part of the error
response body.
This commit ensures that any `Content-Length` response header is removed
in case of errors, if the response is not already committed.
This is done at the `AbstractServerHttpResponse` level, since errors can
be handled in multiple places and the response itself is the safest
place to handle this case.
As a consequence, this commit also removes `Content-Length` checks in
`EncoderHttpMessageWriter` since we now consider that we should rely on
the response body we're about to write rather than any previously set
value.
Issue: SPR-17502
2018-11-19 15:49:54 +01:00
Stephane Nicoll
7b6f2f8fb3
Polish contribution
...
Closes gh-2019
2018-11-19 08:45:33 +01:00
Hanope
bfb49c7249
Fix typos
...
See gh-2019
2018-11-19 08:41:21 +01:00
HeemangHan
729ce4108d
Correct typos ( #2018 )
2018-11-17 16:31:01 +01:00
Rossen Stoyanchev
1a37345e84
Fix checkstyle violation and polish
2018-11-16 19:42:42 -05:00
Arjen Poutsma
539cfc24c6
Refactor AbstractEncoderTestCase
...
Refactor AbstractEncoderTestCase to resemble AbstractDecoderTestCase
Issue: SPR-17449
2018-11-16 14:33:26 +01:00
Arjen Poutsma
39ce989d1a
Add and use AbstractDecoderTestCase
...
Introduce new base test case for decoder tests, and use it.
Issue: SPR-17449
2018-11-16 14:33:26 +01:00
Rossen Stoyanchev
ba3fef3e8a
Refactor media types parsing improvements
...
Issue: SPR-17459
2018-11-13 23:02:09 -05:00
Dimitrios Liapis
f4b05dc2e7
MediaType parsing supports comma inside quotes
...
Issue: SPR-17459
2018-11-13 16:59:57 -05:00
Rossen Stoyanchev
46a5fb7a91
Configurable Marshaller/Unmarshaller in JAXB2 codecs
...
Issue: SPR-17388
2018-11-13 16:56:56 -05:00
Juergen Hoeller
093254b2b3
Jackson2ObjectMapperBuilder stores visibility declarations in order
...
Issue: SPR-17489
2018-11-13 21:17:55 +01:00
Rossen Stoyanchev
75b1396768
Fall back on default server response status code
...
Update the ServerHttpRespnose contract to indicate that server specific
sub-classes should fall back on the default status, if a status code
has not been set explicitly.
Issue: SPR-17368
2018-11-13 14:10:48 -05:00
Arjen Poutsma
445b76bbe8
Polishing
2018-11-13 13:35:37 +01:00
Arjen Poutsma
3bab3515b1
Add and use AbstractEncoderTestCase
...
Introduce new base test case for encoder tests, and use it.
Issue: SPR-17449
2018-11-13 13:35:37 +01:00
Juergen Hoeller
40148c0560
Consistent use of ResolvableType.toClass() for assignability checks
...
Issue: SPR-17086
2018-11-12 20:29:37 +01:00
Juergen Hoeller
3a66927bd2
Polishing
2018-11-12 16:43:43 +01:00
Juergen Hoeller
c58da71006
Synthesize parameter annotations from interface methods as well
...
Issue: SPR-17460
2018-11-12 16:23:14 +01:00
Rossen Stoyanchev
e4c84ec757
Consistent default encoding in DefaultUriBuilderFactory
...
Issue: SPR-17465
2018-11-09 14:13:51 -05:00
Rossen Stoyanchev
c187cb2fa1
Ensure client response is drained with onStatus hook
...
Issue: SPR-17473
2018-11-08 22:41:22 -05:00
Rossen Stoyanchev
ed1d63dcc3
ResolvableMethod copy in spring-messaging src/test
2018-11-08 13:29:21 -05:00
Juergen Hoeller
e71ff2901a
Polishing
2018-11-05 22:59:33 +01:00
Juergen Hoeller
5e7a8b275d
Polishing
2018-11-05 19:33:24 +01:00
Rossen Stoyanchev
48654c6483
Polish
2018-11-01 14:21:00 -04:00
Rossen Stoyanchev
3f42e16172
Increase sharing among InvocableHandlerMethod variants
...
In particular between reactive and non-reactive web variants, but
also preparing for a messaing reactive variant.
2018-10-30 17:15:09 -04:00
Rossen Stoyanchev
7c36549e3a
Consistent InvocableHandlerMethod implementations
...
This commit makes the 3 existing InvocableHandlerMethod types more
consistent and comparable with each other.
1. Use of consistent method names and method order.
2. Consistent error formatting.
3. Explicit for loops for resolving argument values in webflux variant
because that makes it more readable, creates less garabage, and it's
the only way to bring consistency since the other two variants cannot
throw exceptions inside Optional lambdas (vs webflux variant which can
wrap it in a Mono).
4. Use package private HandlerMethodArgumentComposite in webflux
variant in order to pick up the resolver argument caching that the
other two variants have.
5. Polish tests.
6. Add missing tests for messaging variant.
2018-10-30 16:36:01 -04:00
Arjen Poutsma
e68bf010da
Fix memory leak for ServerSentEventHttpMessageWriter
...
Issue: SPR-17419
2018-10-26 11:36:05 +02:00
Arjen Poutsma
95542778ad
Fix MultipartHttpMessageWriterTests
...
Issue: SPR-17419
2018-10-25 12:13:03 +02:00
Arjen Poutsma
7a8a2d9608
Fix HttpMessageWriter tests
...
Issue: SPR-17419
2018-10-25 12:13:03 +02:00
Arjen Poutsma
256a6fe6cb
Fix memory leak for ServerSentEventHttpMessageWriter
...
This commit fixes a memory leak in ServerSentEventHttpMessageWriter
that occurs when the input stream contains an error. Test added as well.
Issue: SPR-17419
2018-10-25 12:13:03 +02:00
Juergen Hoeller
ffa032e78f
Polishing
2018-10-24 20:46:26 +02:00
Juergen Hoeller
f0f1979fc5
Support for @RequestParam Map declared with MultipartFile/Part values
...
Issue: SPR-17405
2018-10-24 20:44:58 +02:00
Arjen Poutsma
611019b73c
Fix memory leak for Jaxb2XmlEncoder
...
This commit fixes a memory leak in Jaxb2XmlEncoder that occurs when
the input stream contains an error. Test added as well.
Issue: SPR-17419
2018-10-24 16:28:21 +02:00
Arjen Poutsma
11a017d8b7
Add error stream tests for ProtobufEncoderTests
...
Issue: SPR-17419
2018-10-24 16:28:21 +02:00
Rossen Stoyanchev
2439f87a48
Add onDiscard hook to Jetty client request
...
The flatMap operation in writeAndFlushWith could buffer internally.
Issue: SPR-17424
2018-10-23 21:41:27 -04:00
Rossen Stoyanchev
2ba5ded306
Polish Jetty reactive HttpClient connector
2018-10-23 21:34:42 -04:00
Rossen Stoyanchev
feeec344e5
ForwardedHeaderFilter works with Servlet FORWARD
...
Issue: SPR-16983
2018-10-23 11:53:46 -04:00
Rossen Stoyanchev
41e6aa6de2
Restore log level for resolved exceptions
...
The fix for SPR-17178 switched from debug to warn level warning for
all sub-classes of AbstractHandlerExceptionResolver where the request
concerned the DefaultHandlerExceptionResolver only.
This commit restores the original DEBUG level logging that was in
AbstractHandlerExceptionResolver from before SPR-17178. In addition
DefaultHandlerExceptionResolver registers a warnLogCategory by default
which enables warn logging and hence fulfilling the original goal
for SPR-17178.
Issue: SPR-17383
2018-10-22 12:13:18 -04:00
Arjen Poutsma
0176d362be
Add error stream tests for Jackson2JsonDecoder
...
Issue: SPR-17418
2018-10-22 16:00:32 +02:00
Arjen Poutsma
946ec7e22e
Fix memory leaks in ProtobufDecoder
...
Issue: SPR-17418
2018-10-22 16:00:32 +02:00
Arjen Poutsma
47fe05066d
Add error stream tests for Jaxb2XmlDecoderTests
...
Issue: SPR-17418
2018-10-22 16:00:32 +02:00
Arjen Poutsma
a37efc9881
Add error stream tests for XmlEventDecoder
...
Issue: SPR-17418
2018-10-22 16:00:32 +02:00
Brian Clozel
85262a7932
Fix Map.put contract for HeadersAdapter impl.
...
This commit fixes the `Map.put` contract for both Reactor Netty and
Tomcat specific `HeadersAdapter` implementations.
Issue: SPR-17415
2018-10-22 14:53:14 +02:00
Rossen Stoyanchev
862dd23975
Server adapters release buffers on error/cancel
...
Review and update Servlet and Undertow adapters to release any data
buffers they be holding on to at the time of error or cancellation.
Also remove onDiscard hooks from Reactor and Undertow request body.
For Reactor we expect it to be handled. For Undertow there isn't
any Reactor Core upstream for the callback to be useful.
Issue: SPR-17410
2018-10-19 21:45:14 -04:00
Juergen Hoeller
5b5f7190bf
Declare InvocableHandlerMethod.getMethodArgumentValues as protected
...
Issue: SPR-17404
2018-10-18 18:05:07 +02:00
Arjen Poutsma
6f0c869afe
Polishing
2018-10-18 17:16:34 +02:00
Arjen Poutsma
857b600675
Fix memory leak in AbstractJackson2Encoder
...
Fixes a DataBuffer memory leak where a created buffer was not release
if Jackson threw an exception.
2018-10-18 17:09:53 +02:00
Brian Clozel
ab8310b5f3
Fix HeadersAdapters implementations
...
This commit harmonizes the `HeadersAdapter` implementations across all
supported servers with regards to the `get(Object key)` contract; some
server implementations are not sticking to a `Map`-like contract and
return empty `List` instead of `null` when a header is not present.
This also fixes the `size()` implementations to reflect the number of
header keys, as some implementations consider multiple values for the
same header as different entries.
Issue: SPR-17396
2018-10-18 11:18:29 +02:00
Rossen Stoyanchev
fdaceeb6c9
Remove checks and updates to transfer-encoding
...
Issue: SPR-17393
2018-10-16 16:49:46 -04:00
Rossen Stoyanchev
423aa28ed5
HttpRange validates requested ranges
...
Issue: SPR-17318
2018-10-14 22:49:25 -04:00
Juergen Hoeller
58b3af9475
Nullability fine-tuning and related polishing
...
Issue: SPR-17250
2018-10-14 23:29:46 +02:00
Juergen Hoeller
bfc5ad890e
MockHttpServletRequest resets InputStream/Reader on setContent
...
Issue: SPR-17373
2018-10-12 16:00:31 +02:00
陈灵敏
4ee704cedf
Supplier for timeout result in DeferredResult
...
Issue: SPR-17364
2018-10-11 20:26:01 -04:00
Brian Clozel
10d5de7d63
Handle special headers in Tomcat and Jetty
...
This commit adds special processing of some HTTP response headers in
Jetty and Tomcat; they both consider some headers like "Content-Length"
as specific and require explicit calls on the `HttpServletResponse`
itself on top of setting the HTTP response header.
Issue: SPR-17250
2018-10-11 14:37:14 +02:00
Brian Clozel
f12c28e402
Avoid copying in DefaultServerHttpRequestBuilder
...
This commit avoids copying HTTP headers when mutating an HTTP request.
Instead, we're now unwrapping the `ReadOnlyHttpHeaders` (which is most
likely backed by the native request headers).
Issue: SPR-17250
2018-10-11 12:11:47 +02:00
Brian Clozel
ce7278aaf4
Optimize HTTP headers management
...
Several benchmarks underlined a few hotspots for CPU and GC pressure in
the Spring Framework codebase:
1. `org.springframework.util.MimeType.<init>(String, String, Map)`
2. `org.springframework.util.LinkedCaseInsensitiveMap.convertKey(String)`
Both are linked with HTTP request headers parsing and response headers
writin during the exchange processing phase.
1) is linked to repeated calls to `HttpHeaders.getContentType`
within a single request handling. The media type parsing operation
is expensive and the result doesn't change between calls, since
the request headers are immutable at that point.
This commit improves this by caching the parsed `MediaType` for the
`"Content-Type"` request header in the `ReadOnlyHttpHeaders` class.
This change is available for both Spring MVC and Spring WebFlux.
2) is linked to insertions/lookups in the `LinkedCaseInsensitiveMap`,
which is the data structure behind `HttpHeaders`.
Those operations are creating a lot of garbage (including a lot of
`String` created by `toLowerCase`). We could choose a more efficient
data structure for storing HTTP headers data.
As a first step, this commit is focusing on Spring WebFlux and
introduces `MultiValueMap` implementations mapped by native HTTP headers
for the following servers: Tomcat, Jetty, Netty and Undertow.
Such implementations avoid unnecessary copying of the headers
and leverages as much as possible optimized operations provided by the
native implementations.
This change has a few consequences:
* `HttpHeaders` can now wrap a `MultiValueMap` directly
* The default constructor of `HttpHeaders` is still backed by a
`LinkedCaseInsensitiveMap`
* The HTTP request headers for the websocket HTTP handshake now need to
be cloned, because native headers are likely to be pooled/recycled by
the server implementation, hence gone when the initial HTTP exchange is
done
Issue: SPR-17250
2018-10-11 12:11:47 +02:00
Rossen Stoyanchev
d05924165b
Refactor FilterWebHandler and DefaultWebFilterChain
...
The chain is initialized once and re-used vs creating the "next" chains
on every request.
2018-10-10 14:33:51 -04:00
Juergen Hoeller
2b986af310
BasicAuthenticationInterceptor with HttpHeaders.setBasicAuth alignment
...
Issue: SPR-17326
2018-10-09 23:13:46 +02:00
Juergen Hoeller
efdbddd358
Full alignment of spring-test vs spring-web MockCookie variants
...
Issue: SPR-17321
2018-10-09 23:13:18 +02:00
Rossen Stoyanchev
1489457025
Restore calls to setLocale in MockHttpServletResponse
...
Issue: SPR-17284
2018-10-05 13:50:41 -04:00
Rossen Stoyanchev
9064ef59f9
Workaround for Synchronoss content-length limitation
...
Issue: SPR-17345
2018-10-05 12:12:49 -04:00
Sebastien Deleuze
3ff5731429
Leverage ObjectProvider instead of autowired containers
...
In order to be able to leverage WebFlux configuration in a functional
way, WebHttpHandlerBuilder and RouterFunctionMapping should leverage
new ObjectProvider capabilities to get a sorted list of beans by type
instead of using autowired containers.
Issue: SPR-17327
2018-10-03 14:14:47 +02:00
Rossen Stoyanchev
7aa933437c
Update links to http://java.net/jira
2018-10-01 12:01:28 -04:00
Juergen Hoeller
255015fc6b
Prepared for backport to 4.3.20 and 5.0.10
...
Issue: SPR-17295
2018-09-29 17:08:57 +02:00
Juergen Hoeller
a76b8deda5
Consistent copyright header and fine-tuned javadoc in test/web mocks
...
Issue: SPR-17295
2018-09-24 00:27:50 +02:00
Stephane Nicoll
7ca6b9f7d2
Fix copyright header
2018-09-23 17:26:40 +02:00
Juergen Hoeller
51ba322947
MockHttpServletRequest allows for removing registered header values
...
Includes full alignment of spring-test vs spring-web mock variants.
Issue: SPR-17295
2018-09-23 14:44:15 +02:00
Arjen Poutsma
8a4835368d
Use doOnDiscard to free internally queued data buffers
...
Issue: SPR-17246
2018-09-19 13:24:45 +02:00
Brian Clozel
d94e9225f4
Switch to Reactor Californium SNAPSHOTs
2018-09-18 18:50:37 +02:00
Juergen Hoeller
51f7a3e40f
Polishing
2018-09-17 14:26:56 +02:00
Juergen Hoeller
34663300a6
Avoid regex pattern matching for simple String replacement steps
...
Issue: SPR-17279
2018-09-17 14:22:19 +02:00
Rossen Stoyanchev
db8e9eafb2
Add LogFormatUtils
...
1. Helper method to eliminate duplication in formatting (de-)serialized
values for logging introduced with prior commit #e62298.
2. Helper method for TRACE vs DEBUG logging with different details.
Issue: SPR-17254
2018-09-14 18:06:46 -04:00
Rossen Stoyanchev
12240c7524
Apply formatValue to a few remaining places
...
Issue: SPR-17254
2018-09-14 12:37:00 -04:00
Rossen Stoyanchev
e62298eaad
Truncate logged encoded and decoded values if necessary
...
At DEBUG show up to 100 chars, at TRACE show full formatted value.
Note that the formatValue helper method is duplicated a number of times
in this commit. A utility method will likely be added in spring-core
through an extra commit.
Issue: SPR-17254
2018-09-14 12:20:03 -04:00
Arjen Poutsma
09af706af6
Use concatWith instead of mergeWith
2018-09-11 13:36:44 +02:00
Juergen Hoeller
e47355078c
Correct linkplain javadoc in BufferingClientHttpRequestFactory
...
Issue: SPR-17261
2018-09-10 12:36:40 +02:00
Juergen Hoeller
28208310dc
Unit test with assertion for merged query params
...
Issue: SPR-17256
2018-09-10 12:36:07 +02:00
Juergen Hoeller
c06b9525ac
UriComponentsBuilder copies query params through MultiValueMap.addAll
...
Issue: SPR-17256
2018-09-10 11:31:37 +02:00
Juergen Hoeller
90a4740279
Polishing
2018-09-07 12:56:53 +02:00
Rossen Stoyanchev
f30d19b724
Disable Jackson's buffer recyling feature for WebFlux
...
Issue: SPR-17193
2018-09-06 16:20:03 -04:00
Rossen Stoyanchev
2163fa94a7
Fix initialization issue in ReactorResourceFactory
...
Follow-up on recent commit #d537a1c.
Issue: SPR-17243
2018-09-06 15:16:01 -04:00
Rossen Stoyanchev
d537a1cfb4
Refine ReactorResourceFactory
...
1. Rename globalResources to useGlobalResources.
2. Use of global resources is mutually exlusive with explicit config.
3. Allow Consumer<HttpResources> to configure global resources.
4. Allow ConnectionProvider + LoopResources Supplier to customize
creation and initialization.
5. Do not manage externally provided ConnectionProvider + LoopResources
instances.
Issue: SPR-17243
2018-09-05 21:17:04 -04:00
Arjen Poutsma
259b2ca5f4
Added tests for errors in the source stream
...
This commit adds decoder/message-reader tests for errors in
the source data buffer publisher. Because the tests extend
AbstractDataBufferAllocatingTestCase, they also check whether
the buffers that precede the error in the stream are properly
released.
Issue: SPR-17025
2018-09-05 11:08:07 +02:00
Brian Clozel
1bdbc7bdef
Optimize for Flux to/from Mono conversions
...
This commit optimizes Flux <-> Mono conversions in our codebase by
avoiding to hide that conversion from Reactor.
This tries to keep conversions sequentially so that they can be detected
by Reactor and optimized. In Spring WebFlux, this means keeping the
conversions at the edges of a method implementation (right when getting
an input parameter, and before returning it as a result). If those
conversions are made between other operators, Reactor might not be able
to detect those conversions and optimize them.
Issue: SPR-17203
2018-09-04 16:42:46 +02:00
Brian Clozel
280da61d5c
Fix empty body writing in EncoderHttpMessageWriter
...
Prior to this commit, an bug introduced in SPR-16949 prevented
`Mono.empty` bodies from being written to the response.
This commit ensures that empty bodies still trigger the writing to the
response and does not hang the processing of the exchange.
Issue: SPR-17220
2018-08-27 21:17:10 +02:00
Juergen Hoeller
03f1920106
Support Jackson filters in combination with serialization view
...
Issue: SPR-17209
2018-08-24 12:06:52 +02:00
Sam Brannen
2bb15f7ed2
Fix grammar in JavaDoc for fully qualified links
...
This commit represents a best effort attempt at fixing remaining
"a" vs. "an" grammatical errors related links specified via a fully
qualified class name.
Issue: SPR-17208
2018-08-23 17:59:44 +02:00
Brian Clozel
709b185177
Clear global resources reference from HttpResources
...
When used as global Netty resources, ReactorResourceFactory creates and
sets those resources on Reactor's HttpResources directly.
When that ReactorResourceFactory bean is destroyed, those resources are
disposed but HttpResources still holds a reference to those and may try
to use them again.
This commit uses HttpResources to clear those resources and its
references to it, when the ReactorResourceFactory is treating those as
global.
Issue: SPR-17199
2018-08-21 16:16:28 +02:00
Sam Brannen
a8fbac8472
Polish JavaDoc
...
Issue: SPR-17174
2018-08-18 18:15:05 +02:00
Sebastien Deleuze
0dd9e8ce02
Polish JettyResourceFactory
...
Issue: SPR-17179
2018-08-16 21:47:02 +02:00
Juergen Hoeller
6bcb454a0d
Polishing
2018-08-16 19:31:10 +02:00
Juergen Hoeller
84300b796c
Fix recent javadoc errors
...
Issue: SPR-17174
2018-08-16 18:51:31 +02:00
Sebastien Deleuze
1eb06fcd90
Introduce JettyResourceFactory
...
JettyResourceFactory, similar to ReactorResourceFactory, allows
to share resources (Executor, ByteBufferPool, Scheduler) between
Jetty clients and servers.
Issue: SPR-17179
2018-08-16 18:17:07 +02:00
Juergen Hoeller
2ec8fa9cac
SmartLifecycle default methods for auto-startup in default phase
...
Issue: SPR-17188
2018-08-16 12:08:02 +02:00
Brian Clozel
cd403f4180
Polish
2018-08-15 20:56:27 +02:00
Brian Clozel
23fc6f6b1d
Drain JDK HTTP client response body in all cases
...
Prior to this commit, when using the `SimpleClientHttpRequestFactory`
as a driver for `RestTemplate`, the HTTP response body would only be
drained if there was an attempt to read it in the first place.
This commit ensures that, even if there's no attempt at reading the
response body, it is properly drained when the response is closed to
make sure that the connection is released in a proper state and can be
put back in the connection pool for reuse.
Issue: SPR-17181
2018-08-15 20:52:40 +02:00
Brian Clozel
432cdd7802
Add ResponseEntity.of(Optional) variant
...
When dealing with `Optional` values in a Controller handler (for
example, values coming from a Spring Data repository), developers might
reuse this code snippet quite often:
```
@GetMapping("/user")
public ResponseEntity<Optional<User>> fetchUser() {
Optional<User> user = //...
return user.map(ResponseEntity::ok).orElse(notFound().build());
}
```
This commit adds a new static method on `ResponseEntity` for that,
simplifying the previous snippet with `return ResponseEntity.of(user);`
Note that in case more specific HTTP response headers are required by
the application, developers should use other static methods to
explicitly tell which headers should be used in each case.
Issue: SPR-17187
2018-08-15 20:24:14 +02:00
Rossen Stoyanchev
04141dee65
Consistent logging of resolved exceptions
...
Issue: SPR-17178
2018-08-15 10:57:51 +03:00
Juergen Hoeller
6027cf2255
Polishing
2018-08-14 20:42:40 +02:00
Rossen Stoyanchev
3e4d305291
Polish ReactorResourceFactory
2018-08-14 17:34:17 +03:00
Rossen Stoyanchev
7a0c03e05e
Update section in reference on WebClient
...
Rename "Builder" sub-section to "Configuration" and move it in the
beginning before all others since it explains how to create a client
in the first place.
Update content on Reactor Netty connector based on the API in 0.8 and
specifically address Reactor Netty resources and lifecycle.
Issue: SPR-16963
2018-08-14 15:48:46 +03:00
Rossen Stoyanchev
2f732a8dea
Fix checkstyle errors
2018-08-14 13:01:09 +03:00
Rossen Stoyanchev
1bc08c61e1
Add ReactorResourceFactory
...
Issue: SPR-16963
2018-08-14 12:29:31 +03:00
Sam Brannen
8126ffbc8c
Fix broken links in JavaDoc
...
Issue: SPR-17174
2018-08-13 12:22:52 +02:00
Sam Brannen
1dcb6236a6
Fix broken links in JavaDoc
...
First step (as proof of concept) toward addressing SPR-17174.
Issue: SPR-17174
2018-08-13 11:54:05 +02:00
Rossen Stoyanchev
99f0129711
Fix URI var encoding issue with '$'
...
When expanding and strictly encoding URI variables, there is no need to
quote `/` and `$` which will be encoded anyway.
Issue: SPR-17168
2018-08-13 11:56:34 +03:00
Sam Brannen
cfb1ed1009
Clean up warnings and delete dead code
2018-08-12 15:55:11 +02:00
Sebastien Deleuze
6b6384a09e
Improve WebFlux Protobuf support
...
- Update javadoc for decoding default instances
- Refactor and simplify tests
- Add missing tests
- Refactor decoding with flatMapIterable instead of
concatMap and avoid recursive call
Issue: SPR-15776
2018-08-09 15:47:45 +02:00
Juergen Hoeller
247ec572b2
Consistent hasAnnotation check for findMergedAnnotation lookup
...
Issue: SPR-16933
2018-08-08 23:54:56 +02:00
Sebastien Deleuze
1c628293a2
Add doc & tests to Jaxb2XmlEncoder for collections
...
Issue: SPR-16363
2018-08-08 17:16:23 +02:00
Rossen Stoyanchev
eacf1d35ee
Proper use of setComplete in ContextPathCompositeHandler
...
Issue: SPR-17144
2018-08-08 16:35:47 +03:00
Rossen Stoyanchev
c90ab5fb0a
Polish Http[Client|Server]ErrorException hierarchy
2018-08-08 15:34:08 +03:00
Kazuhiro Sera
be211ceead
Fix typos detected by github.com/client9/misspell
2018-08-08 12:50:46 +02:00
Sebastien Deleuze
896eb5687a
Check scheme in (WebUtils|CorsUtils)#isSameOrigin
...
Issue: SPR-16362
2018-08-08 12:19:42 +02:00
Juergen Hoeller
2b051b8b32
Deprecate support classes for Sun's JDK HTTP server
...
Issue: SPR-17143
2018-08-07 20:35:53 +02:00
Rossen Stoyanchev
4a18488f30
Update deprecated basic auth client filters.
...
1. Update ExchangeFilterFunctions to delegate internally to
HttpHeaders.setBasicAuth(user, password).
2. Remove deprecation from
ExchangeFilterFunctions.basicAuthentication(String user, String password)
It is still useful as a filter to insert the header.
3. Update deprecation notes.
Issue: SPR-17099
2018-08-07 10:10:27 +03:00
Juergen Hoeller
943b394992
Polishing
2018-08-06 18:34:00 +02:00
Rossen Stoyanchev
a9a38fe67e
Consistent initialiazation of Forwarded header set
2018-08-06 14:32:18 +03:00
Rossen Stoyanchev
2216964b54
Polish RestTemplate exception hierarchy
...
Issue: SPR-15404
2018-08-06 14:29:10 +03:00
jerzykrlk
7f0e3481a5
Fine-grained RestTemplate exception hierarchy
...
Issue: SPR-15404
2018-08-06 14:29:10 +03:00
Rossen Stoyanchev
c55c9eb029
Polish
2018-08-03 17:41:38 +03:00
Vedran Pavic
bb2db87c2f
Add support for adding cookies as headers in MockHttpServletResponse
...
Issue: SPR-17110
2018-08-03 16:44:14 +03:00
Rossen Stoyanchev
a8a1fc6de5
Earlier processing of forwarded headers
...
Forwarded headers are now processed before ServerWebExchange is created
through ForwardedHeaderTransformer which has the same logic as the
ForwardedHeaderFilter but works on the request only.
ForwardedHeaderFilter is deprecated as of 5.1 but if registered it is
removed from the list of filters and ForwardedHeaderTransformer is used
instead.
Issue: SPR-17072
2018-08-03 15:16:09 +03:00
Juergen Hoeller
217aa38cbb
Polishing
2018-08-02 18:00:42 +02:00
Juergen Hoeller
2474c48749
Polishing
2018-08-02 16:55:53 +02:00
stsypanov
b5c691bdac
SPR-17074 Replace pointless wrapping with Arrays.asList with iteration over array
2018-08-02 12:07:00 +02:00
Juergen Hoeller
78eda961f2
Polishing
2018-08-01 13:11:35 +02:00
Vedran Pavic
70dbaf9751
Publish binding event for replaced attributes in MockHttpSession
...
Issue: SPR-17109
2018-08-01 13:07:41 +02:00
Juergen Hoeller
92eaf99067
Polishing
2018-07-31 21:04:36 +02:00
Сергей Цыпанов
f8340838b3
Use lambda expressions for lazy instantiation ( #1911 )
...
Issue: SPR-17074
2018-07-31 13:03:18 +02:00
Juergen Hoeller
4a147d26fc
Initialize pre-filled HashMaps with large enough capacity
...
Empty Maps are preferably initialized without capacity (not initializing them at all or lazily initializing with default capacity when needed).
Issue: SPR-17105
2018-07-30 22:07:31 +02:00
stsypanov
457d586859
SPR-17074 pass argument of addAll/putAll into constructor
2018-07-30 21:27:55 +02:00
Pascal Schumacher
aa656c47b8
Fix typo in notes on future deprecation of the RestTemplate
...
Issue: SPR-16993
Obvious Fix
2018-07-27 14:13:19 -04:00
Rossen Stoyanchev
91d17cf628
Add notes on future deprecation of the RestTemplate
...
Issue: SPR-16993
2018-07-27 08:41:20 -04:00
Rossen Stoyanchev
bcb485b5ed
bindToApplicatonContext uses WebSessionManager bean
...
Issue: SPR-17094
2018-07-26 15:53:41 -04:00
Rossen Stoyanchev
14d0fee86c
Improve context-related logging on web startup
...
Sample output at TRACE:
```
DispatcherServlet - Initializing Servlet 'org.springframework.web.servlet.DispatcherServlet-7a8c8dcf'
AnnotationConfigWebApplicationContext - Refreshing WebApplicationContext for namespace 'org.springframework.web.servlet.DispatcherServlet-7a8c8dcf-servlet', started on Wed Jul 25 17:46:38 EDT 2018
AnnotationConfigWebApplicationContext - Registering [org.springframework.web.servlet.mvc.method.annotation.RequestPartIntegrationTests$CommonsMultipartResolverTestConfig]
AnnotationConfigWebApplicationContext - No 'messageSource' bean, using [Empty MessageSource]
AnnotationConfigWebApplicationContext - No 'applicationEventMulticaster' bean, using [SimpleApplicationEventMulticaster]
AnnotationConfigWebApplicationContext - No 'lifecycleProcessor' bean, using [DefaultLifecycleProcessor]
...
DispatcherServlet - Initialization completed in 3361 ms
```
Issue: SPR-16946
2018-07-25 17:50:03 -04:00
Juergen Hoeller
2b2bf27933
Polishing
2018-07-25 15:26:52 +02:00
Juergen Hoeller
3881a4aded
Polishing
2018-07-25 14:16:02 +02:00
Juergen Hoeller
3899b7a909
Refactor DefaultCodecs.protobufWriter into protobufEncoder
...
Includes nullability declarations for the protobuf package.
Issue: SPR-15776
2018-07-25 14:15:50 +02:00
Juergen Hoeller
fd8e4abe5d
Introduce ResolvableType.toClass() shortcut
...
Issue: SPR-17086
2018-07-25 14:15:19 +02:00
Sebastien Deleuze
d3b244a81b
Optimize class detection by sharing the ClassLoader
...
Issue: SPR-17083
2018-07-25 11:09:42 +02:00
sdeleuze
36a07aa897
Support Protobuf serialization in WebFlux
...
This commit introduces Protobuf support in WebFlux via dedicated
codecs.
Flux<Message> are serialized/deserialized using delimited Protobuf
messages with the size of each message specified before the message
itself. In that case, a "delimited=true" parameter is added to the
content type.
Mono<Message> are expected to use regular Protobuf message
format (without the size prepended before the message).
Related HttpMessageReader/Writer are automatically registered when the
"com.google.protobuf:protobuf-java" library is detected in the classpath,
and can be customized easily if needed via CodecConfigurer, for example
to specify protocol extensions via the ExtensionRegistry based
constructors.
Both "application/x-protobuf" and "application/octet-stream" mime types
are supported.
Issue: SPR-15776
2018-07-25 01:17:06 +02:00
Juergen Hoeller
4475c67ba8
Fix checkstyle violation
2018-07-24 22:44:54 +02:00
Rossen Stoyanchev
2e4f5a7923
Consistently remove forwarded headers in WebFlux
...
Preparation for SPR-17072
2018-07-24 16:05:47 -04:00
Rossen Stoyanchev
41aa4218af
Polish WebFlux ForwardedHeaderFilter and tests
...
Preparation for SPR-17072
2018-07-24 16:05:47 -04:00
Sebastien Deleuze
36bbbab02d
Deprecate ExtensionRegistryInitializer in protobuf support
...
In order to be consistent with SPR-15776, and since it does not
provide clear added value, this commit deprecates
ExtensionRegistryInitializer and uses ExtensionRegistry
parameter instead in ProtobufHttpMessageConverter and
ProtobufJsonFormatHttpMessageConverter constructors.
Issue: SPR-17081
2018-07-24 17:25:55 +02:00
Juergen Hoeller
fac2e35f96
Refactor util.log.LogUtils into core.log.LogDelegateFactory
...
Issue: SPR-17012
2018-07-24 14:44:34 +02:00
Juergen Hoeller
1b09718104
Polishing
2018-07-24 00:45:21 +02:00
Vedran Pavic
82194f4ee0
Set SameSite default to Lax
...
Issue: SPR-16418
2018-07-23 18:23:05 +02:00
Sebastien Deleuze
b09fad13a1
Catch errors when adding SourceHttpMessageConverter
...
This commit ignores errors like TransformerFactoryConfigurationError
that can be thrown when instantiating SourceHttpMessageConverter on
platforms where no TransformerFactory implementation is available,
like when compiling/running as GraalVM native images.
Issue: SPR-17007
2018-07-23 10:39:26 +02:00
Brian Clozel
390bb871d8
Switch order of multipart Content-Type directives
...
Since SPR-15205, the `FormHttpMessageConverter` is adding a `charset`
directive to the `Content-Type` request header in order to help servers
understand which charset is being used to encode headers of each part.
As reported in SPR-17030 and others, some servers are not parsing
properly such header values and assume that `boundary` is the last
directive in the `Content-Type` header.
This commit reorders the charset information right before the boundary
declaration to get around those issues.
Issue: SPR-17030
2018-07-20 18:11:05 +02:00
Juergen Hoeller
9a43d2ec20
Revised log levels: less WARN and INFO, fine-tuned DEBUG vs TRACE
...
Issue: SPR-16946
2018-07-20 15:05:16 +02:00
Rossen Stoyanchev
93b7a4838e
UriComponentsBuilder method to configure URI variables
...
See Javadoc on UriComponentsBuilder#uriVariables for details.
This helps to prepare for SPR-17027 where the MvcUriComponentsBuilder
already does a partial expand but was forced to build UriComonents
and then create a new UriComponentsBuilder from it to continue. This
change makes it possible to stay with the same builder instance.
Issue: SPR-17027
2018-07-19 19:07:42 -04:00
Rossen Stoyanchev
28cd6978b5
Minor fixes: UriComponentsBuilder, UriComponents, docs
...
After the latest changes, two small fixes in the clone method to copy
the encode flag, and in the encodeUriTemplate method to account for
possible null query params.
Improvements in the URI encoding section.
Issue: SPR-17039, SPR-17027
2018-07-19 19:07:42 -04:00
Juergen Hoeller
51c7ceb95d
Polishing
2018-07-20 00:17:37 +02:00
Juergen Hoeller
1f5d0faf1f
HandlerMethod caches interface parameter annotations
...
Issue: SPR-11055
2018-07-19 11:38:10 +02:00
Vedran Pavic
b1e28a554a
Polish WebSession javadoc
...
Issue: SPR-17051
Closes gh-1888
2018-07-19 11:26:49 +02:00
Rossen Stoyanchev
9498da5910
Clarify behavior of WebSession#save()
...
+ minor update to the InMemoryWebSession to match the defined behavior.
Issue: SPR-17051
2018-07-18 22:14:02 -04:00
Juergen Hoeller
9c08a482d1
Prefer ArrayList/ArrayDeque over LinkedList for multi-element holders
...
LinkedList remains in place where a List is likely to remain empty or single-element (in order to avoid unused capacity).
Issue: SPR-17037
2018-07-18 22:17:42 +02:00
Rossen Stoyanchev
4d6f2df3cb
Add LogUtils and HttpLogging
...
SPR-17012
2018-07-18 15:32:50 -04:00
Juergen Hoeller
c77dbbb1e6
Specific exception for missing request header, cookie, matrix variable
...
Issue: SPR-14818
2018-07-18 18:56:51 +02:00
Juergen Hoeller
790d515f8c
HandlerMethod exposes interface parameter annotations as well
...
The HandlerMethodParameter arrangement uses an approach similar to ModelAttributeMethodProcessor's FieldAwareConstructorParameter, merging the local parameter annotations with interface-declared annotations.
Issue: SPR-11055
2018-07-18 17:13:55 +02:00
sdeleuze
a87764f1fd
Add support for Jetty Reactive Streams HTTP client
...
Leverage https://github.com/jetty-project/jetty-reactive-httpclient
to add support for Jetty in WebClient via JettyClientHttpConnector.
Implemented with buffer copy instead of optimized buffer wrapping
because the latter hangs since Callback#succeeded doesn't allow
releasing the buffer and requesting more data at different times
(required for Mono<DataBuffer> for example).
See https://github.com/eclipse/jetty.project/issues/2429 .
Issue: SPR-15092
2018-07-18 14:49:49 +02:00
Juergen Hoeller
5fcfe0fa8e
Polishing
2018-07-18 14:27:16 +02:00
Rossen Stoyanchev
6c4289e238
Polish
2018-07-17 17:39:16 -04:00
Juergen Hoeller
ef9027e1c1
Polishing
2018-07-17 17:59:16 +02:00
Juergen Hoeller
955665b419
Consistent processing of binding/validation failures for data classes
...
Includes an extension of SmartValidator for candidate value validation, as well as nullability refinements in Validator and BindingResult.
Issue: SPR-16840
Issue: SPR-16841
Issue: SPR-16854
2018-07-17 17:01:34 +02:00
Rossen Stoyanchev
a41a1edd93
Switch to TEMPLATE_AND_VALUES as the default mode
...
DefaultUriBuilderFactory now uses EncodingMode.TEMPLATE_AND_VALUES by
default. However the RestTemplate explicitly sets it to the previous
setting EncodingMode.URI_COMPONENTS, so this affects mainly the
WebClient and any direct use of DefaultUriBuilderFactory to configure
either the RestTemplate or the WebClient.
Issue: SPR-17039
2018-07-16 21:21:37 -04:00
Rossen Stoyanchev
2a0eac47f9
Add TEMPLATE_AND_VALUES mode to DefaultUriBuilderFactory
...
Issue: SPR-17039
2018-07-16 21:21:37 -04:00
Rossen Stoyanchev
75e45103b5
Polish DefaultUriBuilderFactory
2018-07-16 21:21:34 -04:00
Rossen Stoyanchev
5fb4982026
Support for encode() in UriComponentsBuilder
...
The ability to request to encode before `build()`, and more importantly
before expanding, allows stricter encoding to be applied to URI vars
and consequently to neutralize the effect of characters with reserved
meaning in a URI.
Issue: SPR-17039
2018-07-16 09:16:11 -04:00
Rossen Stoyanchev
24a30baa2a
Typos in InMemoryWebSessionStore
2018-07-13 17:51:23 -04:00
Rossen Stoyanchev
43fbd63254
Add maxSessions, getSessions, removeExpiredSessions
...
This commit removes the session threshold check added recently which
is not effective since maxIdleTime is usually much longer than the
frequency of checks. The lazy triggering of expiration checks during
create or retreive are simple and the most effective
This commit also adds a maxSessions limit on the total number of
sessions that can be created at any one time, a getSessions method
for management purposes, and a removeExpiredSessions public API
for manual triggering of expiration checks.
Issue: SPR-17020, SPR-16713
2018-07-12 16:12:19 -04:00
Rossen Stoyanchev
32b75221b3
Improve expired session check algorithm
...
1. Add session count threshold as am extra pre-condition.
2. Check pre-conditions for expiration checks on every request.
Effectively an upper bound on how many sessions can be created before
expiration checks are performed.
Issue: SPR-17020
2018-07-11 15:59:18 -04:00
Rossen Stoyanchev
e9ed45ee3b
Fix code completion typo
2018-07-11 11:13:57 -04:00
Rossen Stoyanchev
7b3a72f483
Warn when SimpleAsyncTaskExecutor is used
...
Issue: SPR-16203
2018-07-11 11:10:03 -04:00
Rossen Stoyanchev
1b1bc7f5b5
Switch defaults and model for logging sensitive data
...
Issue: SPR-17029
2018-07-11 11:10:03 -04:00
Brian Clozel
d00f6f09a5
Polish ContentCachingRequestWrapper
...
Issue: SPR-15762
2018-07-09 19:15:29 +02:00
zilong6
4d0800f392
Improve ContentCachingRequestWrapper performance
...
This commit improves the performance of `read` method variants
to write to the cache in an optimized way.
Issue: SPR-15762
2018-07-09 19:15:21 +02:00
Arjen Poutsma
2ac6a15f6f
Add setBearerAuth method
...
Issue: SPR-16997
2018-07-09 17:06:55 +02:00
Arjen Poutsma
a663454fad
Changed Basic Authentication consumer to setBasicAuth method
...
This commit changes the Basic Authentication Consumer<HttpHeaders> to
a basic setBasicAuth(String, String) method.
Issue: SPR-16913
2018-07-09 16:41:51 +02:00
Rossen Stoyanchev
4bd22eeb13
Fallback logger for logging in http and codec packages
...
Issue: SPR-17012
2018-07-07 10:54:03 -04:00
Rossen Stoyanchev
bca9f51092
Polish hint for suppressing logging at Encoder/Decoder
2018-07-06 20:32:08 -04:00
Rossen Stoyanchev
2874dd75ca
Fine-tune WebFlux logging at HTTP/WebSocket level
...
1. Use special category prefix "spring-web.reactivestreams" for logging
of reactive streams signals in spring-web, since those are quite
verbose would fill the logs at TRACE.
2. Add and use loggers in request and websocket session implementations
separate from reactive streams bridge for regular TRACE logging.
3. Improve log messages and add where missing (e.g. for Reactor)
Issue: SPR-16898
2018-07-06 17:33:16 -04:00
Rossen Stoyanchev
7746878b50
Remove workaround for Reactor Netty #171
2018-07-06 15:44:24 -04:00
Rossen Stoyanchev
bc3cf0eeb8
Expose request id at the ServerHttpRequest level
...
Hiding it (at AbstractServerHttpRequest) complicates matters since
requests are often mutated and decorated, plus it's also possible to
implement the interface directly (we've one, albeit corner case).
Issue: SPR-16966
2018-07-06 15:44:24 -04:00
Rossen Stoyanchev
5dc49b16ea
Correlated messages at HTTP adapter + WebSocket level
...
Issue: SPR-16966
2018-07-06 15:44:18 -04:00
Rossen Stoyanchev
bb3061d112
Polish
2018-07-05 14:08:05 -04:00
Violeta Georgieva
22f6e5b9ff
Adapt ReactorHttpsServer to lates Reactor Netty changes
2018-07-05 14:00:01 -04:00
Rossen Stoyanchev
39d5874441
Use connection id in server log messages if possible
...
Issue: SPR-16966
2018-07-05 08:32:27 -04:00
Rossen Stoyanchev
5cdc26770e
Correlated WebClient log messages
...
Issue: SPR-16966
2018-07-05 08:30:23 -04:00
Rossen Stoyanchev
82310660fd
Correlated encoding/decoding log messages via hints
...
Issue: SPR-16966
2018-07-05 08:28:15 -04:00
Rossen Stoyanchev
fd90b73748
Correlated WebFlux server log messages
...
Issue: SPR-16966
2018-07-05 08:27:13 -04:00
Juergen Hoeller
83faee67d5
HttpMessageNotReadableException provides access to HttpInputMessage
...
Issue: SPR-15588
2018-07-04 22:46:09 +02:00
Rossen Stoyanchev
43d6ceb6f0
Align settings for sameSite and secure flag
...
After this change sameSite still gets a default value of "Strict" in
CookieWebSessionIdResolver but for changes to either sameSite or secure
it is now expected to use
addCookieInitializer(Consumer<ResponseCookie.ResponseCookieBuilder>).
Issue: SPR-16418, SPR-16980
2018-07-03 12:44:29 -04:00
Juergen Hoeller
e485abbe56
Fix checkstyle violation (plus related polishing)
...
Issue: SPR-16913
2018-07-02 23:56:58 +02:00
Juergen Hoeller
d08b72a75a
Consistent throwing of HttpMessageNotReadableException vs IOException
...
Includes specific fine-tuning of ProtobufHttpMessageConverter and JAXB2 based message converters, as well as revised javadoc for abstract base classes.
Issue: SPR-16995
2018-07-02 22:37:29 +02:00
Arjen Poutsma
6bcf6ffb06
Add Basic Authentication Consumer
...
Issue: SPR-16913
2018-07-02 15:16:03 +02:00
Juergen Hoeller
4ff1e3e74b
Consistent abstract declaration for utility classes (plus polishing)
...
Issue: SPR-16968
2018-07-01 02:31:20 +02:00
Rossen Stoyanchev
e72f4ec501
Fix checkstyle error
2018-06-29 21:45:43 -04:00
Rossen Stoyanchev
d74e09a925
Polish MockClientHttpRequest
2018-06-29 17:37:45 -04:00
Rossen Stoyanchev
7f555785dd
Add getBodyAsString() to MockClientHttpRequest
...
Issue: SPR-16988
2018-06-29 17:34:23 -04:00
Rossen Stoyanchev
51ec7c6b4a
Add hook for customizing response cookie
...
Issue: SPR-16980
2018-06-29 18:15:52 -03:00
Rossen Stoyanchev
5ec8db1adc
Polish CookieWebSessionIdResolver
2018-06-29 18:15:52 -03:00
Rossen Stoyanchev
907a306ee2
Fix locally failing test in FlushingIntegrationTests
2018-06-29 18:15:52 -03:00
Damiano Albani
3165b3c024
Fix typo in Java doc
2018-06-29 18:12:43 -03:00
Juergen Hoeller
e22466e9d5
Polishing
2018-06-29 19:44:15 +02:00
Juergen Hoeller
d34e6f7f70
Polishing
2018-06-28 18:02:07 +02:00
Juergen Hoeller
40efcc933c
Polishing
2018-06-28 14:51:33 +02:00
Juergen Hoeller
bac68c8d3f
StandardServletMultipartResolver accepts any HTTP method for multipart
...
Issue: SPR-16975
2018-06-28 14:15:16 +02:00
Phillip Webb
a89e716cc7
Use tabs rather than spaces in tests
...
Update tests to ensure that tabs are used instead of spaces. Also
consistently apply a new line at the end of each file.
Issue: SPR-16968
2018-06-28 10:28:44 +02:00
Phillip Webb
1c25cec44f
Polish test code
...
Polish a few issue identified when adding checkstyle to the
build. Although checkstyle is not enforcing rules on tests,
these are a few minor changes that are still worth making.
Issue: SPR-16968
2018-06-28 10:28:44 +02:00
Phillip Webb
81451aa800
Organize imports
...
Reorganize imports to ensure consistent ordering. This commit also
expands any `.*` static imports in favor of using fully-qualified
method references.
Issue: SPR-16968
2018-06-28 10:28:44 +02:00
Phillip Webb
5cedd0d5d4
Consistently use tabs rather than spaces
...
Update code that has accidentally used spaces instead of tabs.
Also remove all trailing whitespace.
Issue: SPR-16968
2018-06-28 10:28:44 +02:00
Phillip Webb
9de3689f63
Never use 'this.' when accessing loggers
...
Ensure that `this.` is never used when accessing loggers.
Issue: SPR-16968
2018-06-28 10:28:44 +02:00
Phillip Webb
0b53c1096a
Always use 'this.' when accessing fields
...
Ensure that `this.` is used consistently when accessing class
fields.
Issue: SPR-16968
2018-06-28 10:28:44 +02:00
Phillip Webb
eeebd51f57
Use consistent class design
...
Update all classes so that inner classes are always last. Also
ensure that utility classes are always final and have a private
constructor and make exceptions final whenever possible.
Issue: SPR-16968
2018-06-28 10:28:44 +02:00
Phillip Webb
0ad0f341bd
Don't use single letter catch variables
...
Update existing catch blocks to ensure that `ex` is always used
in preference to `e` or `t` as the variable name.
Issue: SPR-16968
2018-06-28 10:28:44 +02:00
Phillip Webb
866e9d702e
Use consistent block style
...
Update all code to use a consistent block style.
Issue: SPR-16968
2018-06-28 10:28:44 +02:00
Phillip Webb
04a8c285df
Fix annotation styling issues
...
Update all annotations so that each is on its own line and
consistently use the short form (i.e. don't use `value=`) when
possible.
Issue: SPR-16968
2018-06-28 10:28:44 +02:00
Phillip Webb
e9d1b39aff
Apply consistent copyright header
...
Add copyright header to `package-info.java` files and fix a few
malformed headers on existing java files.
Issue: SPR-16968
2018-06-28 10:28:44 +02:00
Phillip Webb
c3a17dfd47
Ensure all files end with a newline
...
Update all files to ensure that they always end with a new line.
Issue: SPR-16968
2018-06-28 10:28:44 +02:00
Phillip Webb
e0480f75ac
Fix javadoc checkstyle issues
...
Fix checkstyle violations for javadoc.
Issue: SPR-16968
2018-06-28 10:28:44 +02:00
Rossen Stoyanchev
7ccd2b024d
Refine logging for async requests
...
Issue: SPR-16898
2018-06-25 14:42:29 -03:00
Juergen Hoeller
2a15962d7f
WebHttpHandlerBuilder retains ApplicationContext in copy constructor
...
Issue: SPR-16972
2018-06-25 18:12:12 +02:00
Rossen Stoyanchev
900bc8a2e3
Logging improvements for WebFlux
...
Issue: SPR-16898
2018-06-22 22:44:24 -04:00
Brian Clozel
4a26f93a0d
WebClient writes Content-Length for Mono bodies
...
In SPR-16892, the `EncoderHttpMessageWriter` has been improved to write
`"Content-Length"` HTTP response headers if the response body is of type
`Mono` (i.e. the actual content length is easily accessible without
buffering a possibly large response body). That change was relying on
the fact that the server side is using a `ChannelSendOperator` to delay
the writing of the body until the first signal is received.
This strategy is not effective on the client side, since no such channel
operator is used for `WebClient`. This commit improves
`EncoderHttpMessageWriter` and delays, for `Mono` HTTP message bodies
only, the writing of the body so that we can write the
`"Content-Length"` header information once we've got the body resolved.
Issue: SPR-16949
2018-06-19 11:51:45 +02:00
Rossen Stoyanchev
28a5c3009e
Improve DEBUG/TRACE logging for Spring MVC
...
Issue: SPR-16898
2018-06-18 18:33:11 -04:00
Juergen Hoeller
003d643adc
Consistent support for new JsonMappingException wording in Jackson 2.9
...
Issue: SPR-16947
2018-06-17 21:42:20 +02:00
Mark Chesney
e4666c17ec
Support new exception message wording since Jackson 2.9
...
The wording changed from "Can not find" to "Cannot find" via PR #1682
Issues: SPR-16947
2018-06-17 13:27:20 +02:00
Rossen Stoyanchev
ebdcc015a4
Correctly set maxAge and expires in ResponseCookie
...
Issue: SPR-16940
2018-06-14 13:07:17 -04:00
Brian Clozel
09d9450154
Add SameSite support in WebFlux SESSION cookies
...
This commit adds support for the "SameSite" attribute in response
cookies. As explained in rfc6265bis, this attribute can be used to limit
the scope of a cookie so that it can't be attached to a request unless
it is sent from the "same-site".
This feature is currently supported by Google Chrome and Firefox, other
browsers will ignore this attribute.
This feature can help prevent CSRF attacks; this is why this commit adds
this attribute by default for SESSION Cookies in WebFlux.
See: https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis
Issue: SPR-16418
2018-06-14 11:39:03 +02:00
Juergen Hoeller
1e5f8cc232
FilePart and MultipartFile provide transferTo(Path) variant
...
Also, ZeroCopyHttpOutputMessage provides writeWith(Path, int, int), enforcing that variant as the implementation target in 5.1 (analogous to FilePart).
Issue: SPR-16925
2018-06-14 00:42:36 +02:00
Rossen Stoyanchev
0b61c748f6
Protected methods for serializing form content
...
Issue: SPR-16855
2018-06-13 17:14:49 -04:00
Rossen Stoyanchev
278881b8df
Polish form writer and converter
2018-06-13 17:05:34 -04:00
Juergen Hoeller
0dc434b35e
Polishing
2018-06-13 22:04:10 +02:00
Juergen Hoeller
3fc8ec498c
MockHttpServletRequest returns a single InputStream or Reader
...
Issue: SPR-16505
Issue: SPR-16499
2018-06-13 22:03:16 +02:00
Juergen Hoeller
0b64bcd319
Remove outdated Servlet environment constraints from annotation javadoc
...
Issue: SPR-16936
2018-06-12 11:28:13 +02:00
Allon Mureinik
2573a543b2
SPR-16936 Fix PathVariable javadoc
...
@PathVariable's javadoc states that it supports MultiValueMap
parameters (introduced by commit df0902), but by reading through the
code, that does not seem to be the case (compare, e.g.,
PathVariableMapMethodArgumentResolver to
RequestParamMapMethodArgumentResolver).
Moreover, parsing MultipleValueMap is done according to the ";"
character, and placing such a character in a path (e.g., consider
something like "/app/{param}/show" would just break the path.
This patch fixes PathVariable's javadoc by removing the mention of
MultiValueMap.
2018-06-12 11:12:57 +02:00
Brian Clozel
05ff8b722d
Fix ResourceRegion HttpMessageConverter write checks
...
This commit fixes the write checks for
`ResourceRegionHttpMessageConverter`, which was previously not checking
properly the parameterized type (e.g. in case of a `List<Something>`).
Issue: SPR-16932
2018-06-11 22:53:55 +02:00
Brian Clozel
a5cd01a4c8
Restrict HTTP methods on Reactive HiddenHttpMethodFilter
...
This commit restricts the allowed HTTP methods on HiddenHttpMethodFilter
(Reactive variant) to the following: PUT, DELETE, PATCH.
This filter is meant to be used to simulate those methods from HTML
forms sent by browsers, so no other methods are allowed.
Issue: SPR-16836
2018-06-11 18:53:23 +02:00
Brian Clozel
f64fa3dea1
Restrict HTTP methods on Servlet HiddenHttpMethodFilter
...
This commit restricts the allowed HTTP methods on HiddenHttpMethodFilter
(Servlet variant) to the following: PUT, DELETE, PATCH.
This filter is meant to be used to simulate those methods from HTML
forms sent by browsers, so no other methods are allowed.
Issue: SPR-16836
2018-06-11 18:53:23 +02:00
Rossen Stoyanchev
86c861516d
Accept Predicate instead of HandlerTypePredicate
...
Issue: SPR-16336
2018-06-08 15:32:07 -04:00
Sebastien Deleuze
ac37b678a3
Remove JSONP support
...
CORS is now widely supported and should be used instead for cross-domain
requests.
Issue: SPR-16914
2018-06-08 12:15:48 +02:00
Rossen Stoyanchev
31159a8506
Extract HandlerTypePredicate from ControllerAdviceBean
...
Issue: SPR-16336
2018-06-07 18:18:42 -04:00
Rossen Stoyanchev
fd946b8157
Protected getContentType in DecoderHttpMessageReader
...
Issue: SPR-16856
2018-06-05 16:23:21 -04:00
Rossen Stoyanchev
010352163b
Eliminate the need for Encoder#getContentLength
...
Issue: SPR-16892
2018-06-04 15:48:47 -04:00
Rossen Stoyanchev
124d4c833c
Support for Servlet request params with HTTP DELETE
...
This commit adds FormContentFilter, which is the same as the
HttpPutFormContentFilter but also supports DELETE.
The HttpPutFormContentFilter is now deprecated.
Issue: SPR-16874
2018-06-04 15:48:47 -04:00
Rossen Stoyanchev
a3216432b5
Polish
...
Issue: SPR-16387
2018-05-31 15:38:30 -04:00
Violeta Georgieva
ffbc75ae47
Upgrade to Reactor Netty 0.8
...
Issue: SPR-16387
2018-05-31 15:37:39 -04:00
Juergen Hoeller
c75423216c
AbstractRequestLoggingFilter.isIncludeHeaders() declared as protected
...
Issue: SPR-16881
2018-05-29 21:52:31 +02:00
Juergen Hoeller
8593fec22c
Avoid ConstantConditions warnings suppression (plus related polishing)
...
Issue: SPR-15756
2018-05-29 21:47:10 +02:00
Rossen Stoyanchev
2acf91a438
Polish
2018-05-26 09:24:23 -04:00
Rossen Stoyanchev
3ede3a4b34
Extension point in HttpMessageConverterExtractor
2018-05-25 13:45:10 -04:00
Rossen Stoyanchev
c7c3e5585b
X-Forwarded-Ssl is listed in ForwardedHeaderFilter
...
Issue: SPR-16863
2018-05-25 13:39:37 -04:00
Rossen Stoyanchev
3eac2dd31e
Support X-Forwarded-Ssl
...
Issue: SPR-16863
2018-05-24 16:14:12 -04:00
Rossen Stoyanchev
72022899de
Polish Forwarded header support
2018-05-23 21:23:23 -04:00
Rossen Stoyanchev
1e4a3a2370
Return SslInfo only if X509Certificate[] present
...
Issue: SPR-16842
2018-05-23 21:23:23 -04:00
Rossen Stoyanchev
d035593562
Update @RequestParam Javadoc and remove Portlet mentions
2018-05-23 11:52:14 -04:00
Rossen Stoyanchev
9b496b1264
CodecConfigurer internal refactoring
...
Improve how HTTP message writers are obtained for general use vs for
multipart requests.
2018-05-21 21:10:44 -04:00
Rossen Stoyanchev
6e5273f08e
Polish CodecConfigurer support classes
...
Functionally equivalent updates to package private classes to improve
the code and make it easier to understand.
2018-05-21 21:09:42 -04:00
Rossen Stoyanchev
fbd12e9d16
Support for SslInfo in ServerHttpRequest#mutate
...
Issue: SPR-16830
2018-05-17 17:27:52 -04:00
Sebastien Deleuze
bdfee3417e
Polishing
2018-05-15 10:45:20 +02:00
Eddú Meléndez
48c3fa9908
Add visibility support to Jackson2ObjectMapperBuilder
...
Issue: SPR-16411
2018-05-15 10:45:20 +02:00
Rossen Stoyanchev
7fd0cac6f2
Include FormHttpMessageReader in client codecs
...
Issue: SPR-16804
2018-05-14 23:16:36 -04:00
Rossen Stoyanchev
3af5f00ee7
UnsupportedMediaType[Status]Exception reports body type
...
Issue: SPR-16805
2018-05-14 23:16:36 -04:00
Rossen Stoyanchev
f7d60b7f58
Add getResource to MultipartFile
...
Issue: SPR-16808
2018-05-14 09:04:33 -04:00
Rossen Stoyanchev
ab6a6f4e17
Merge multipart and query param values
...
DefaultMultipartHttpServletRequest always returned mulitpart parameter
values only rather than aggregating with query parameters, which
contradicts with Servlet spec, section 3.1, and is inconsistent with
StandardMultipartHttpServletRequest.
Issue: SPR-16590
2018-05-14 09:03:55 -04:00
Rossen Stoyanchev
15182b29a4
Add MockWebSession for use with MockServerWebExchange
...
Issue: SPR-16772
2018-05-11 10:53:28 -04:00
Rossen Stoyanchev
4da43de7e1
Remove individual detection of forwarded headers
...
This commit removes all places where forwarded headers are checked
implicitly, on an ad-hoc basis.
ForwardedHeaderFilter is expected to be used instead providing
centralized control over using or discarding such headers.
Issue: SPR-16668
2018-05-11 09:31:39 -04:00
Rossen Stoyanchev
d3f3b41f52
MockHttpServletResponse writer sets committed flag
...
Issue: SPR-16683
2018-05-10 16:22:54 -04:00
Rossen Stoyanchev
79e809be24
Public RequestCallback/ResponseExtractor factory methods
...
Issue: SPR-8604
2018-05-10 15:39:47 -04:00
Rossen Stoyanchev
eef592d901
Add builder to MockServerWebExchange
...
Issue: SPR-16772
2018-05-10 15:16:13 -04:00
Juergen Hoeller
c9f488363d
Fine-tuned assertions and related polishing
2018-05-05 14:39:43 +02:00
Sebastien Deleuze
af0cb53742
Support decoding Mono in Jaxb2XmlDecoder
...
Issue: SPR-16759
2018-05-02 12:10:46 +02:00
Juergen Hoeller
f8c2d7ab51
Nullable HttpMethod parameter only on internal doExecute delegate
...
Issue: SPR-15540
2018-05-01 23:52:12 +02:00
Juergen Hoeller
21fad8e205
SimpleClientHttpResponse catches any Exception on close
...
Issue: SPR-16773
2018-05-01 23:51:05 +02:00
Rossen Stoyanchev
8d157cb5b5
Consistent handling of URISyntaxException
...
Issue: SPR-16778
2018-04-30 21:02:36 -04:00
Rossen Stoyanchev
85ee36b385
Uncomment tests that now work
2018-04-30 19:47:14 -04:00
Juergen Hoeller
9bff5b48cf
Fine-tuned assertions and related polishing in WebFlux builders
2018-04-27 23:36:58 +02:00
Johnny Lim
6519e7b22a
Polish
2018-04-27 14:06:48 -04:00
Juergen Hoeller
a683472daa
Support for non-standard HTTP status in reactive ClientHttpResponse
...
Issue: SPR-16748
2018-04-27 18:25:11 +02:00
Juergen Hoeller
44cf002c00
Null-safe handling of response type in AcceptHeaderRequestCallback
...
Issue: SPR-16690
2018-04-27 18:24:59 +02:00
sdeleuze
75a41db071
Fine tune WebFlux server logging verbosity
...
With this commit, WebFlux server uses warning instead of error log level
for request handling, and also just print the message instead of the
stacktrace which is mostly meaningless in reactive world.
Complementary to this change, Reactor Netty removed additional logging
as part of https://github.com/reactor/reactor-netty/issues/339 .
Issue: SPR-16688
2018-04-27 10:40:48 +02:00
sdeleuze
b5dfdbaa65
Reuse PartBodyStreamStorageFactory in SynchronossPartGenerator
...
Issue: SPR-16727
2018-04-26 10:59:11 +02:00
Rossen Stoyanchev
9bc4e70e93
Better assertion message in MockPart
...
Issue: SPR-16767
2018-04-25 09:59:06 -04:00
Rossen Stoyanchev
da98ff72d2
Use StringDecoder to split SSE stream
...
ServerSentEventHttpMessageReader had logic to split on new lines
and buffer until an empty new line (start of a new event). To account
for random data chunking, it later re-assembled the lines for each
event and split again on new lines. However bufferUntil was still
unreliable a chunk may contain nothing but a newline, which doesn't
necessarily mean an empty newline in the overall SSE stream.
This commit simplifies the above by delegating the splitting of the
stream along newlines to StringDecoder.
Issue: SPR-16744
2018-04-19 11:29:12 -04:00
Rossen Stoyanchev
586be50109
Fix typo
2018-04-16 10:02:47 -04:00
Rossen Stoyanchev
551505bd93
Restore handling of 0 bytes read
...
Issue: SPR-16728
2018-04-16 09:59:34 -04:00
Brian Clozel
69e3fde295
Avoid duplicate Accept header values in RestTemplate
...
Prior to this commit, the various `HttpMessageConverter` instances
configured for a given `RestTemplate` instance could all contribute
`MediaType` values to the "Accept:" request header.
This could lead to duplicate media types in that request header,
cluttering for the HTTP request for no reason.
This commit ensures that only distinct values are added to the request.
Issue: SPR-16690
2018-04-12 22:28:31 +02:00
Rossen Stoyanchev
224589ea74
Remove write pausing in Undertow response
...
Using the simple example shown in the ticket but switching from
Mono<String> to Flux<String> (and 5,000,000 onNext calls) shows that
constant pausing causes significant overhead and is not worth the
trouble vs ignoring the onWritePossible in REQUESTED state.
Issue: SPR-16702
2018-04-11 14:27:27 -04:00
Rossen Stoyanchev
3549745e37
Avoid inifinite recursion in UndertowServerHttpResponse
...
Undertow does not provide a way to check if we can write so with the
current implementation of isWritePossible, deep recursion can occur
when writing slows down. We now use a flag to keep track of write
ChannelListener callbacks.
This commit also addresses a related issue in
AbstractListenerWriteProcessor that went undected since #3c2d186
where after a large (single) buffer that is not written fully, the
completion signal is processed before the all data is written.
Issue: SPR-16702
2018-04-11 14:27:27 -04:00
sdeleuze
89d069b09d
Add default ctor to Reactive UrlBasedCorsConfigurationSource
...
Issue: SPR-16712
2018-04-11 14:38:42 +02:00
sdeleuze
27e87e5593
Document why "charset=UTF-8" is specified for JSON
...
Issue: SPR-14715
2018-04-09 12:03:17 +02:00
Brian Clozel
2dde000475
Document socket timeout config limitations for HttpClient
...
This commit documents the difference between configuring the socket
timeout on the `RequestConfig` and on the `SocketConfig`.
The first one does not affect timeouts when establishing an SSL
connection or sending a CONNECT request to a proxy. For these use cases,
it is required to configure `SocketConfig` on the `HttpClient` instance
directly.
Issue: SPR-16697
2018-04-06 16:35:17 +02:00
Juergen Hoeller
66a3a82fb3
Avoid reference to HandlerMethod class in ServerErrorException
...
This breaks the package dependency cycle between web.server/web.method and makes ServerErrorException more generally applicable. Includes deprecation of the plain reason constructor variant, in favor of providing a Method or MethodParameter context (which MatrixVariableMethodArgumentResolver does now).
2018-04-01 00:21:15 +02:00
Rossen Stoyanchev
d9e17a62ce
Refine SyncInvocableHandlerMethod error handling
...
Ensure the error is wrapped as ServerErrorException
2018-03-31 12:06:24 -04:00
Juergen Hoeller
912c270f2b
Polishing
2018-03-31 17:49:21 +02:00
Rossen Stoyanchev
4454ffd2b1
Replace remaining use of block operator
2018-03-31 11:18:38 -04:00
Stephane Maldini
b8d32095a9
workaround multipart integration test using blocking receive inside netty thread
2018-03-30 15:43:11 -07:00
Juergen Hoeller
0bc01fcd55
Polishing
2018-03-30 13:42:23 +02:00
Rossen Stoyanchev
240d6f52c9
Replaces rather than prepend contextPath
...
Issue: SPR-16650
2018-03-29 18:17:29 -04:00
Juergen Hoeller
d553ddc5b3
Nullability refinements (based on IntelliJ IDEA 2018.1 introspection)
...
Issue: SPR-15756
2018-03-29 23:50:17 +02:00
igor-suhorukov
93abe0e94b
All branches in a conditional structure should not have exactly the same implementation
2018-03-29 23:33:50 +02:00
Rossen Stoyanchev
dd96c873e3
Improve docs on forwarded headers
...
Issue: SPR-16660
2018-03-29 16:11:01 -04:00
Rossen Stoyanchev
a546cf0a3b
Reject invalid forwarded headers
...
Issue: SPR-16660
2018-03-29 15:28:34 -04:00
Juergen Hoeller
b165475eb6
Polishing
2018-03-29 16:05:52 +02:00
Rossen Stoyanchev
f9e6ea5482
MvcResult returns asyncResult after asyncDispatch
...
Issue: SPR-16648
2018-03-28 22:15:16 -04:00
Juergen Hoeller
d95bbb6b1b
Test for hasError keeping body available in case of unknown status code
...
Issue: SPR-16604
2018-03-28 12:16:03 +02:00
Juergen Hoeller
b2d87abcbb
Polishing
2018-03-28 12:06:38 +02:00
Rossen Stoyanchev
5861e9685b
Always specify charset for form data requests
...
Issue: SPR-16613
2018-03-27 19:56:09 -04:00
igor-suhorukov
4aae6a6dda
Use Map.forEach instead of manual Map.Entry iteration wherever possible SPR-16646
2018-03-28 01:09:03 +02:00
Rossen Stoyanchev
f3994467c4
Refine ContentNegotiationStrategy contract
...
Consistently return "*/*" if no media types were requested rather than
an empty list. Existing code has to check for both in any case to see
if nothing was requested.
Issue: SPR-16624
2018-03-27 16:54:19 -04:00
Juergen Hoeller
e3d0ef6015
Use Map.forEach instead of manual Map.Entry iteration wherever possible
...
Issue: SPR-16646
2018-03-27 00:38:32 +02:00
Juergen Hoeller
10cb2ccaef
Avoid triggering lazy resolution in MultipartResolver.cleanupMultipart
...
Issue: SPR-16640
2018-03-27 00:25:05 +02:00
Rossen Stoyanchev
a989ea0867
Polish Synchronoss message reader
...
Issue: SPR-16639
2018-03-24 08:59:16 -04:00
Rossen Stoyanchev
0af847c01c
ServerSentEventHttpMessageReader internal refactoring
...
Eliminate use of .block() which Reactor now flags as illegal on
schedulers where that's not expected.
2018-03-23 19:01:11 -04:00
Juergen Hoeller
ba5ef6456f
WebFluxResponseStatusExceptionHandler for @ResponseStatus introspection
...
The web.server package is quite low-level and should not depend on web.bind in order to avoid a dependency cycle. Extracting the introspection of the ResponseStatus annotation into a WebFlux-level subclass resolves the cycle.
Issue: SPR-16567
2018-03-21 16:12:32 +01:00
Rossen Stoyanchev
f9df8c738a
Avoid inifinite recursion in UndertowServerHttpRequest
...
Undertow does not provide a way to check if data is available to read
but instead we have to try to read and see if any data is returned.
This makes it impossible to implement checkOnDataAvailable without
trying to read and that can lead to infinite recursion like this:
...
UndertowServerHttpRequest$RequestBodyPublisher.checkOnDataAvailable(UndertowServerHttpRequest.java:156)
AbstractListenerReadPublisher.changeToDemandState(AbstractListenerReadPublisher.java:177)
AbstractListenerReadPublisher.access$900(AbstractListenerReadPublisher.java:47)
AbstractListenerReadPublisher$State$4.onDataAvailable(AbstractListenerReadPublisher.java:319)
AbstractListenerReadPublisher.onDataAvailable(AbstractListenerReadPublisher.java:85)
UndertowServerHttpRequest$RequestBodyPublisher.checkOnDataAvailable(UndertowServerHttpRequest.java:156)
This commit prevent the call to checkOnDataAvailable() when switching
states from READING->DEMAND which implies we exited the readAndPublish
loop because there was no more data to read.
Issue: SPR-16545
2018-03-20 17:21:33 -04:00
Juergen Hoeller
442ddb0845
Correct documentation of default HttpMessageConverters in RestTemplate
...
Issue: SPR-7885
2018-03-19 20:38:14 +01:00
Rossen Stoyanchev
26bb3a0893
Improve docs on enabling Servlet 3 multipart
2018-03-19 11:20:08 -04:00
Rossen Stoyanchev
8651b8d4c1
Show use of RequestEntity rather than HttpEntity
...
Issue: SPR-16608
2018-03-19 08:57:01 -04:00
Rossen Stoyanchev
30583a62cf
Fix Class isAssignableFrom checks for Resource conversion
...
Issue: SPR-16606
2018-03-16 16:18:05 -04:00
Rossen Stoyanchev
842c29103f
MultipartBodyBuilder supports PublisherEntity as input
...
Issue: SPR-16601
2018-03-16 16:18:05 -04:00
Rossen Stoyanchev
313c6cef32
Polish
2018-03-16 16:18:05 -04:00
Juergen Hoeller
f8588e364a
AcceptHeaderLocaleResolver keeps language match among supported locales
...
Issue: SPR-16599
2018-03-16 14:17:50 +01:00
Rossen Stoyanchev
7de2650a70
Drop @WebServlet annotation
...
Issue: SPR-16591
2018-03-16 00:14:54 -04:00
Rossen Stoyanchev
72bbb2619d
Commit actions are (properly) deferred
...
Issue: SPR-16597
2018-03-15 23:17:57 -04:00
Juergen Hoeller
d4a8f76bf9
Consistent volatile access to running flag in Lifecycle implementations
...
Issue: SPR-16488
2018-03-15 15:17:55 +01:00
Rossen Stoyanchev
b8d94f8a20
Improve WebFlux support for response status exceptions
...
Support @ResponseStatus annotated exceptions.
Supported root cause exceptions with response status information.
Issue: SPR-16567
2018-03-14 20:07:00 -04:00
Juergen Hoeller
58011f71e9
Consistent assertions for template method result vs servlet registration
2018-03-14 18:55:50 +01:00
Juergen Hoeller
41730220f4
InterceptingClientHttpRequest adapts to StreamingHttpOutputMessage
...
Issue: SPR-16582
2018-03-12 22:31:48 +01:00
sdeleuze
36a222acd5
Take into account the MimeType's charset in Jackson encoder
...
Notice that per specification, only Unicode is supported
(UTF8, UTF16_BE, UTF16_LE, UTF32_BE, UTF32_LE).
Issue: SPR-16539
2018-03-12 21:54:53 +01:00
Juergen Hoeller
cf74b1b8be
Consistent result synchronization in WebAsyncManager
...
Issue: SPR-16571
2018-03-09 09:03:15 +01:00
igor-suhorukov
58a5138f26
simplify lambda expression
2018-03-08 23:44:32 +01:00
igor-suhorukov
d89f9af22d
parentheses should be removed from a single lambda input parameter when its type is inferred
2018-03-08 21:55:45 +01:00
Juergen Hoeller
139dc1d373
Polishing (collapsed if checks, consistent downcasts, refined javadoc)
2018-03-08 18:11:57 +01:00
igor-suhorukov
0f7485b01d
Polish: reorder the modifiers to comply with the Java Language Specification.
2018-03-08 17:57:47 +01:00
Violeta Georgieva
030bc224e3
Invert the check for ServletInputStream.isReady()
...
When checking whether there is still request body the first method
that should be checked is ServletInputStream.isReady() and then
ServletInputStream.isFinished(). ServletInputStream.isReady() is the active
method whereas the ServletInputStream.isFinished() is not.
It is important to call ServletInputStream.isReady() because if it returns
false it will schedule a dispatch and if the request body is already read it will
send onAllDataRead event.
Issue: SPR-16521
2018-03-07 11:23:10 -05:00
Rossen Stoyanchev
27815847b1
content-length support in EncoderHttpMessageWriter
...
EncoderHttpMessageWriter checks explicitly for Mono publishers and sets
the content length, if it is known for the given data item.
Issue: SPR-16542
2018-03-06 19:04:02 -05:00
Rossen Stoyanchev
7a8e0ff3c3
Update ServerWebExchangeTests
2018-03-06 18:12:37 -05:00
Juergen Hoeller
90d768bb7f
Overloaded convenience setters: setCacheControl(CacheControl), setExpires(ZonedDateTime)
...
Issue: SPR-16562
2018-03-06 23:06:04 +01:00
Rossen Stoyanchev
e48def2d35
Set readyToWrite flag after cached signals emitted
...
Issue: SPR-16555
2018-03-05 23:23:39 -05:00
Juergen Hoeller
c543368aad
Polishing
2018-03-03 17:33:48 +01:00
igor-suhorukov
06fef1e5a4
Polish: assertion arguments should be passed in the correct order
2018-03-03 16:14:45 +01:00
Stephane Nicoll
38ebb6c982
Restore includes and isCompatibleWith
...
See gh-1713
2018-03-03 12:41:58 +01:00
igor-suhorukov
129530f792
Polish
...
Closes gh-1715
2018-03-03 12:12:15 +01:00
Rossen Stoyanchev
cef98e1125
FilePart uses correct flags when opening files
...
Issue: SPR-16546
2018-03-02 10:42:50 -05:00
igor-suhorukov
ed936cbd89
Polish: Overriding methods should do more than simply call the same method in the super class
2018-03-02 00:06:27 +01:00
Juergen Hoeller
478162741d
WebApplicationContextFacesELResolver.isReadOnly returns true for WAC
...
Issue: SPR-16543
2018-03-01 01:32:11 +01:00
igor-suhorukov
8080f56db8
Polish: "@Override" should be used on overriding and implementing methods
2018-03-01 00:15:18 +01:00
Juergen Hoeller
9962df6527
Polishing
2018-02-28 00:09:15 +01:00
igor-suhorukov
7bce04c06c
Polish: combine catches block with same body
2018-02-27 12:51:28 +01:00
Rossen Stoyanchev
e0e90ed006
SSE writer respects charset in MediaType
...
Issue: SPR-16516
2018-02-26 16:42:00 -05:00
Juergen Hoeller
15c97b753e
Revised URI building in http.server (consistently use raw attributes)
...
Issue: SPR-16434
2018-02-26 13:00:38 +01:00
Juergen Hoeller
2a379e099c
Polishing
2018-02-25 21:24:38 +01:00
Juergen Hoeller
8a56cd0e8b
Revised URI building in http.server (avoid package cycle with web.util)
...
Issue: SPR-16434
2018-02-25 21:24:10 +01:00
igor-suhorukov
b202205d77
Polish: String.valueOf() should not be appended to a String
2018-02-25 21:10:19 +01:00
igor-suhorukov
49fd724d8f
Polish: String function use should be optimized for single characters
2018-02-25 20:48:47 +01:00
igor-suhorukov
c782075a13
Polish: Array designators "[]" should be on the type, not the variable
2018-02-25 13:14:20 +01:00
Juergen Hoeller
3531c104b0
Prefer Collections.addAll call with array over Set.addAll(Arrays.asList)
2018-02-25 00:21:39 +01:00
Juergen Hoeller
eeecbaef2c
Gson/JsonbHttpMessageConverter keeps output stream open (for SseEmitter)
...
Issue: SPR-16529
2018-02-23 10:49:38 +01:00
Juergen Hoeller
578c078082
Polishing
2018-02-22 15:14:20 +01:00
Juergen Hoeller
1278459ad5
ReactorHttpHandlerAdapter logs bad request at warn level only
...
Issue: SPR-16524
2018-02-22 15:12:51 +01:00
Juergen Hoeller
a5cbf5fe24
Consistent use of Collection.toArray with zero-sized array argument
...
Includes consistent use of ClassUtils.toClassArray (as non-null variant)
Issue: SPR-16523
2018-02-22 11:29:46 +01:00
Rossen Stoyanchev
3bfa56dff2
Polish
2018-02-21 10:29:46 -05:00
Rossen Stoyanchev
6959e66b25
JsonEOFException is wrapped as DecodingError
...
Jackson2Tokenizer now also wraps JsonProcessingException's on
endOfInput(), as it also does in tokenize(DataBuffer). This ensures
treating those errors as 400 vs 500.
Issue: SPR-16521
2018-02-21 10:12:33 -05:00
Rossen Stoyanchev
a6d527e57a
Call onAllDataRead when read() returns -1
...
When read returns -1, we know we've reached the end of input. Instead
of waiting for the onAllDataRead container callback, this commit
proactively calls onAllDataRead.
Issue: SPR-16521
2018-02-21 09:44:24 -05:00
Juergen Hoeller
0de36d2883
Consistent HttpMethod identity comparisons
2018-02-18 22:01:22 +01:00
Juergen Hoeller
d7cab23e6d
Consistent use of StringUtils.toStringArray
...
(cherry picked from commit 6d11b40
)
2018-02-16 20:49:17 +01:00
Rossen Stoyanchev
9c679fccdf
Fix intdentation
2018-02-16 12:34:25 -05:00
Rossen Stoyanchev
ac495d7380
Polish ForwardedHeaderFilter and related code
...
Issue: SPR-16506
2018-02-16 12:17:23 -05:00
Rossen Stoyanchev
6920a1f958
ForwardedHeaderFilter handles query+fragment correctly
...
Issue: SPR-16506
2018-02-16 11:10:50 -05:00
Rossen Stoyanchev
dcf5c646be
Use correct X509 certificate attribute name
...
Issue: SPR-16507
2018-02-16 09:45:17 -05:00
Juergen Hoeller
8d3264f680
Prefer List.sort(Comparator) over Collections.sort(List, Comparator)
2018-02-16 10:23:18 +01:00
Rossen Stoyanchev
4db0d999af
Polish UriBuilderFactory and implementation
...
Issue: SPR-16422
2018-02-15 15:44:44 -05:00
Rossen Stoyanchev
3d20db1e49
Polish UriUtils, UriComponents
...
Issue: SPR-16422
2018-02-15 15:44:37 -05:00
Juergen Hoeller
cd8a1bdb8b
AcceptHeaderLocaleContextResolver leniently handles invalid header value
...
Also falls back to language-only match among its supported locales now.
Issue: SPR-16500
Issue: SPR-16457
2018-02-15 13:14:49 +01:00
Juergen Hoeller
7baf33fea0
Avoid multiple warnings related to jackson-module-kotlin
...
Issue: SPR-16497
2018-02-14 21:19:57 +01:00
Rossen Stoyanchev
1aeae5d40d
Fix compiler error
2018-02-14 12:23:52 -05:00
Rossen Stoyanchev
0ead0503eb
AbstractJackson2Encoder uses private fields
...
Make the protected fields in AbstractJackson2Encoder private plus
minor refactoring to the way streaming separators are applied.
The current (5.0.3) behavior is to always use '\n', but in 5.0.4 the
newly supported "application/stream+x-jackson-smile" needs to be
excluded from that. For now, separator determination remains private
in the abstract base class, but current behavior remains which is to
apply '\n' by default.
Issue: SPR-15424
2018-02-14 12:15:01 -05:00
Sam Brannen
24adc7d3c6
Delete unused imports
2018-02-14 16:55:57 +01:00
igor-suhorukov
7826567df6
Polish: lamdbas containing only one statement should not nest this statement in a block
2018-02-14 01:22:01 +01:00
Juergen Hoeller
99662bc702
Polishing
2018-02-13 23:32:10 +01:00
igor-suhorukov
45e520ed86
Polish: remove unused private fields, remove empty operator
2018-02-13 23:00:18 +01:00
Rossen Stoyanchev
8c37ad7ac5
Startup/shutdown log messages for AbstractHttpServer
...
Issue: SPR-16494
2018-02-13 14:58:10 -05:00
Juergen Hoeller
0c78c9c6f7
Refined javadoc and exception messages
2018-02-13 15:25:42 +01:00
Vladimir Sitnikov
659f13be1c
Avoid creating message arguments to Assert.isABC calls
...
See 67f184293b
2018-02-13 12:31:49 +01:00
igor-suhorukov
0ee505b73e
Polish: assertion arguments should be passed in the correct order,
...
use assertNull instead of assertEquals(null, value),
declare delta as double value in assertEquals
2018-02-10 17:17:28 +01:00
Juergen Hoeller
39201adca4
Consistent handling of InterruptedException
...
Issue: SPR-16479
2018-02-10 13:03:33 +01:00
igor-suhorukov
6ea0af3540
Polish: Lambdas should be replaced with method references
2018-02-10 12:09:46 +01:00
igor-suhorukov
9a6fbf59c5
Polish: follow name convention - make immutable fields final
2018-02-10 12:09:19 +01:00
Stephane Nicoll
991eb4858e
Update copyright header
2018-02-09 10:16:58 +01:00
igor-suhorukov
c0b4b5787f
Change this "try" to a try-with-resources
...
Closes gh-1671
2018-02-09 10:12:55 +01:00
igor-suhorukov
e381514b07
Collection.isEmpty() should be used to test for emptiness
...
Closes gh-1670
2018-02-09 10:11:44 +01:00
igor-suhorukov
4c888d0f32
Polish
...
Closes gh-1669
2018-02-09 10:10:05 +01:00
Arjen Poutsma
fb61af1882
Allow "release on close" for DataBuffer.asInputStream
...
This commit introduces DataBuffer.asInputStream(boolean), that can
release the underlying buffer when the stream is closed.
Furthermore, this commit adds additional javadoc.
Issue: SPR-16444
2018-02-08 10:11:53 +01:00
Rossen Stoyanchev
1b98d09855
Fix copy+paste error
2018-02-06 15:43:05 -05:00
Rossen Stoyanchev
efdfe9ad8d
Minor Javadoc update
2018-02-06 11:23:53 -05:00
Rossen Stoyanchev
1653a32a04
Stabilize Flux.interval emissions in integration tests
...
After this commit the use of interval in tests is combined with
take(n).onBackpressureBuffer(n) to ensure emissions don't fail if the
fixed rate is exceeded (e.g. on slow CI server).
Tests that verify N number of items followed by verifyOnComplete()
should set the number of emissions to N.
Tests that verify N number of items followed by thenCancel() should
set the number of buffered to an arbitrary number greater than N.
2018-02-06 11:01:19 -05:00
Juergen Hoeller
5c813a366b
Consistent use of @throws instead of @exception
2018-02-05 22:51:51 +01:00
Juergen Hoeller
817a836960
Consistent object type exposure for JSON rendering (workaround for Gson)
...
Issue: SPR-16461
2018-02-05 22:51:33 +01:00
sdeleuze
196f3f8cc1
Improve WebFlux exception logging
...
This commit updates HttpWebHandlerAdapter and
ResponseStatusExceptionHandler in order to specify the method/uri in the
logged message.
It also logs a WARN message for bad request (400) HTTP responses in
order to get some logs when an exception is thrown due to client error
(unable to deserialize request body for example).
Issue: SPR-16447
2018-02-05 16:08:22 +01:00
Arjen Poutsma
609f173ebc
StringDecoder shouldn't chop off strings randomly
...
Issue: SPR-16337
2018-02-02 15:59:21 +01:00
Juergen Hoeller
c5a33d62dd
TypeVariablesVariableResolver compares variables by full equality again
...
Issue: SPR-16456
2018-02-02 12:41:43 +01:00
Juergen Hoeller
b3e21ec737
MockHttpServletRequest leniently handles invalid Accept-Language header
...
Issue: SPR-16454
2018-02-02 11:34:22 +01:00
Juergen Hoeller
4a1cc9ced7
Constructor-provided field values get recorded for failed binding result
...
Also, TypeMismatchExceptions get registered via BindingErrorProcessor.
Issue: SPR-16449
2018-02-02 11:33:56 +01:00
Rossen Stoyanchev
6d909b013e
Do not commit response on access to content
...
MockHttpServletResponse no longer calls flushBuffer on calls to
getContentAsByteArray and getContentAsString. The flushing doesn't
actually do anything useful but does commit the response leading to
unexpected side effects.
Issue: SPR-16430
2018-01-30 16:19:08 -05:00
sdeleuze
d02e4fb545
Add Vary:Access-Control-Request-Method/Headers CORS headers
...
This commit adds these 2 Vary headers in addition to the existing
Origin one to avoid caching of Access-Control-Request-Method and
Access-Control-Request-Headers headers which can be an issue
when allowed methods or headers are unbounded and only the
requested method or headers are returned in the response.
Issue: SPR-16413
2018-01-30 17:00:32 +01:00
Rossen Stoyanchev
f4de8615aa
Fix encoding issue in ServerHttpRequest.mutate()
...
Issue: SPR-16434
2018-01-30 10:23:02 -05:00
Rossen Stoyanchev
4f28c28287
Update Javadoc on uriTemplateHandler property
...
Issue: SPR-16419
2018-01-29 21:53:22 -05:00
sdeleuze
32f6ccece8
Add WebFlux support for Smile streaming
...
The commit brings following changes:
- Move getDecodableMimeTypes() to AbstractJackson2Decoder
- Move getEncodableMimeTypes() to AbstractJackson2Encoder
- Add support for application/stream+x-jackson-smile
- Avoid streaming line separator when Smile encoder is used
- Use double null token in Jackson2Tokenizer to identify documents
Issue: SPR-16151
2018-01-29 18:56:25 +01:00
Juergen Hoeller
e49198d49f
Polishing
2018-01-25 22:12:29 +01:00
Juergen Hoeller
ef3f93e84a
Language tag parsing support in StringUtils and StringToLocaleConverter
...
Issue: SPR-16188
2018-01-25 19:10:31 +01:00
Juergen Hoeller
c6b0d85a7c
Consistent available() support in DelegatingServletInputStream
...
Issue: SPR-16416
2018-01-25 19:06:20 +01:00
Rossen Stoyanchev
b948e7cf75
Polish
2018-01-24 19:58:14 -05:00
Rossen Stoyanchev
84cc7ffdf6
Fix test failure
2018-01-24 19:55:46 -05:00
Juergen Hoeller
0e6f8df0a8
ServletServerHttpRequest.getURI() ignores malformed query string
...
The resolved URI instance is also being cached now. This should not make a difference in a real Servlet environment but does affect tests which assumed they could modify an HttpServletRequest path behind a pre-created ServletServerHttpRequest instance. Our WebSocket test base class has been revised accordingly, re-creating the ServletServerHttpRequest in such a case.
Issue: SPR-16414
2018-01-24 22:13:40 +01:00
Stephane Nicoll
42a2081e8c
Polish "Remove an unnecessary intermediate variable"
...
Closes gh-1650
2018-01-24 09:18:46 +01:00
Johnny Lim
826db88509
Remove an unnecessary intermediate variable
...
See gh-1650
2018-01-24 09:18:24 +01:00
Arjen Poutsma
b47491695e
Support array of scalar values in Jackson2Tokenizer
...
Issue: SPR-16407
2018-01-22 17:08:08 +01:00
Juergen Hoeller
9d0e62ef68
Javadoc format and related polishing
2018-01-22 11:43:21 +01:00
Arjen Poutsma
0befc60c8f
Renamed DataBufferUtils/DataBufferFactory.compose to join
...
Issue: SPR-16365
2018-01-22 10:51:07 +01:00
Arjen Poutsma
646fcc5c2f
Support Custom Headers for Multipart Async Data
...
This commit makes sure there is no custom Content-Disposition header
before setting one automatically.
This commit also adds a headers(Consumer<HttpHeaders>) method, so that
one can user the nicer methods of HttpHeaders, as opposed to basic
strings.
Issue: SPR-16376
2018-01-20 15:18:20 +01:00
Juergen Hoeller
395c9bd723
Consistently call HttpURLConnection.setFixedLengthStreamingMode(long)
...
Issue: SPR-16404
2018-01-20 14:29:40 +01:00
andrm
142f1ab42f
Removed unnecessary cast to int
...
Since Java7 HttpURLConnection offers setFixedLengthStreamingMode method with long parameter which should be prefered over version with int argument, therefore casting ContentLength to int is no longer needed. Moreover it makes impossible to stream payload larger than Integer.MAX_VALUE
2018-01-20 14:11:15 +01:00
Rossen Stoyanchev
283811b16b
Ensure filename is written
...
Now that SPR-16307 makes it possible to write a part with a Publisher
we need to ensure we get the filename correctly when writing with
Publisher<Resource>.
Issue: SPR-16376
2018-01-19 22:12:53 -05:00
Rossen Stoyanchev
afd248da8a
MultipartHttpMessageWriter consumes source once only
...
The previous fix #09f1f7 did not actually address the issue but only
moved it further down, so instead of the subscribe(), it was consuming
it inside the MultipartHttpMessageWriter#write method which returned
this.body.then(), and then again for the actual request body writing.
In this commit MultipartHttpMessageWriter#write returns Mono.empty()
since we don't actually want to write the part content from there, but
only want to access it as soon as it is availabele, for writing to
the request body.
Issue: SPR-16402
2018-01-19 20:55:22 -05:00
Juergen Hoeller
572c668726
Polishing
2018-01-19 21:30:37 +01:00
Arjen Poutsma
5520e730f1
DataBufferUtils.read should not take input stream/channel as parameter
...
Fixed by creating `Callable`-based variants, as explained in the JIRA
issue.
Issue: SPR-16403
2018-01-19 17:38:14 +01:00
Rossen Stoyanchev
09f1f727a7
Remove explicit subscribe in MultipartHttpMessageWriter
...
Issue: SPR-16402
2018-01-19 10:41:08 -05:00
Juergen Hoeller
40127bd9ad
Polishing
2018-01-19 12:30:10 +01:00
Juergen Hoeller
9623cdec48
Functional response builders allow for non-standard HTTP status codes
...
Issue: SPR-16366
2018-01-14 17:45:58 +01:00
Juergen Hoeller
06e6386dc9
CollectionUtils.lastElement for common Set/List extraction
...
Issue: SPR-16374
2018-01-12 18:23:52 +01:00
Juergen Hoeller
93f645800b
Test for non-equality after URI normalization
...
Issue: SPR-16364
2018-01-12 16:46:06 +01:00
Arjen Poutsma
67e7c784e8
Use DataBufferUtils.compose and remove writeAggregator
...
Use DataBufferUtils.compose instead of writeAggregator to combine
multiple data buffers into one, as the write aggregator would not work
when the initial data buffer did not have enough capacity to contain
all subsequent buffers.
Removed writeAggregator, as it is no longer needed.
Issue: SPR-16365
2018-01-12 10:36:09 +01:00
Rossen Stoyanchev
c60313de3f
Refine UriTemplate match pattern
...
The match/matches methods of UriTemplate use a regex with (.*) in place
of URI variables, which work fine except in the end where such a
pattern can match greedily more than one segment.
This commit updates the regex to use ([^/]*) instead since URI
variables are only meant to be used within a single path segment.
Issue: SPR-16169
2018-01-11 16:36:35 -05:00
Arjen Poutsma
8a129ef3da
Use write aggregator from DataBufferUtils
...
This commit uses the newly introduced write aggregator from
DataBufferUtils throughout WebFlux.
Issue: SPR-16351
2018-01-10 11:15:47 +01:00
Rossen Stoyanchev
5ed0cf9027
Fix init issues in AbstractReactiveWebInitializer
...
Issue: SPR-16290
2018-01-09 17:32:40 -05:00
Rossen Stoyanchev
018469286d
Polish
2018-01-09 16:39:40 -05:00
Jeff Nelson
30e40210a8
Extract protected method in AbstractRequestLoggingFilter
...
Issue: SPR-16245
2018-01-09 16:38:21 -05:00
sdeleuze
9c7de232b8
Polishing
...
Optimize same origin check when the request is an instance of
ServletServerHttpRequest and when there is no forwarded headers.
This commit also optimizes the getPort methods and ForwardedHeaderFilter
forwarded headers checks.
Issue: SPR-16262
2018-01-09 14:33:54 +01:00
sdeleuze
c326e44488
Refine forwarded protocol support
...
This commit refines forwarded protocol support in order to support
proxies that only set "X-Forwarded-Proto" header and not
"X-Forwarded-Port" by performing a reset of the port in such case.
"Forwarded" header support has been updated accordingly since it
also supports similar use case, as described in SPR-15504.
Issue: SPR-16262
2018-01-09 14:33:54 +01:00
Rossen Stoyanchev
446e7ed25c
Links from @RequestMapping to reference docs
...
Issue: SPR-16266
2018-01-08 09:29:52 -05:00
Juergen Hoeller
4a57e26d76
Polishing
2018-01-07 23:33:35 +01:00
Rossen Stoyanchev
37f0e8c6e5
Access to ApplicationContext via ServerWebExchange
...
Issue: SPR-16298
2018-01-05 15:46:45 -05:00
sdeleuze
d2616b7996
Fix RestOperations extensions parameters nullability
...
Issue: SPR-16328
2017-12-27 17:54:38 +01:00
sdeleuze
deac8e556e
Improve Kotlin extensions doc about type erasure
...
Since type erasure can be fixed only when using
ParameterizedTypeReference based Java methods, RestOperations and
WebFlux API documentation should be updated to specify which extensions
are subject to type erasure, and which are not.
Issue: SPR-16273
2017-12-27 17:49:18 +01:00
Arjen Poutsma
6c3a64578c
Move ResolvableType from HttpEntity to PublisherEntity
...
This commit moves the ResolvableType field from HttpEntity to
PublisherEntity, a new entity type defined in MultipartBodyBuilder.
With this change, the scope of the ResolvableType is limited to
multipart-related code, instead of becoming part of the complete
HttpEntity hierarchy.
Issue: SPR-16307
2017-12-22 13:44:01 +01:00
Arjen Poutsma
f23612c3a3
Add ResolvableType to HttpEntity for multipart Publishers
...
This commit adds a ResolvableType field to HttpEntity, in order to
support Publishers as multipart data. Without the type, the
MultipartHttpMessageWriter does not know which delegate writer to use to
write the part.
Issue: SPR-16307
2017-12-21 17:40:27 +01:00
sdeleuze
0075f13126
Improve CORS list properties combination logic
...
This commit allows CorsConfiguration#combine()
to differentiate permit default values set by
CorsConfiguration#applyPermitDefaultValues()
from values configured explicitly by the user.
Those permit default values will be overridden
by any user-provided ones while user-provided values
will be combined in an additive way, including
when "*" is specified.
Documentation has been improved accordingly.
Issue: SPR-15772
2017-12-20 22:38:01 +01:00
Rossen Stoyanchev
a8cf275aed
MockServerHttpRequest builder supports query params
...
Issue: SPR-16280
2017-12-19 15:38:12 -05:00
Rossen Stoyanchev
6df1a7874a
MockHttpServletResponse uses correct language header
...
Issue: SPR-16311
2017-12-19 13:56:16 -05:00
Arjen Poutsma
8e253a316d
Support top-level scalar values in Jackson2Tokenizer
...
Issue: SPR-16166
2017-12-14 16:44:40 +01:00
sdeleuze
6a7b197af7
Improve Jackson codecs documentation
2017-12-13 12:07:43 +01:00
sdeleuze
73a81f98d4
Allow interceptors to add existing header values
...
Additional commit to provide support of requests
that have a body.
Issue: SPR-15066
2017-12-13 10:08:24 +01:00
Rossen Stoyanchev
f05175586e
Refine behavior on error after response committed
...
If the response is set and we can't change the status through
ServerHttpResponse any more, allow the error signal to propagate and
let the individual server adapters handle it. Ultimately that should
result in closing the connection.
On Servlet containers, we check one last time if the response is
committed (we may not have filled the buffer). If not then save
the exception as a request attribute, dispatch, and re-throw it on the
container thread.
On Undertow access the connection and close it.
On Netty just let the error through to Reactor Netty.
Issue: SPR-16051
2017-12-12 14:51:24 -05:00
Christoph Dreis
260ebeca3a
Improve performance of some string operations
...
Issue: SPR-16293
2017-12-12 17:14:24 +01:00
sdeleuze
554662ebab
Allow interceptors to add existing header values
...
Provide a fully mutable HttpHeaders to ClientHttpRequestInterceptors
of a RestTemplate when headers are set using HttpEntity. This avoids
UnsupportedOperationException if both HttpEntity and
ClientHttpRequestInterceptor add values for the same HTTP header.
Issue: SPR-15066
2017-12-11 15:01:20 +01:00
Rossen Stoyanchev
203370a810
Handle absolute URI in Reactor request.uri()
...
The request URI returned from HttpServerRequest.uri() typically
contains contains an absolute path but could also contain an
absolute URI. This commit adds handling for the latter, effectively
taking only the absolute path portion.
Issue: SPR-16243
2017-12-01 23:34:35 -05:00
Rossen Stoyanchev
b9a1168580
Consistently return null if certificates not available
...
Issue: SPR-16244
2017-12-01 21:38:40 -05:00
Rossen Stoyanchev
e99b0038a0
Polish
2017-12-01 21:18:13 -05:00
Rossen Stoyanchev
dd0d270ba2
Improve error handling when response is committed
...
ResponseStatusExceptionHandler lets the error through if it can't
change the status while HttpWebHandlerAdapter logs a more helpful
message (including status code) but without a full stack trace.
Issue: SPR-16231
2017-11-29 12:39:06 -05:00
Juergen Hoeller
873cb4e58b
Remove unnecessary deprecation suppression
2017-11-29 15:44:08 +01:00
Sam Brannen
2b68212c20
Fix grammar
2017-11-29 14:44:21 +01:00
Rossen Stoyanchev
3650ecc3bb
Polish
2017-11-28 22:16:07 -05:00
Rossen Stoyanchev
dc3d834026
Refinements related to a committed response
...
1. setComplete checks the isCommitted flag to avoid an unnecessary
debug message. This method is meant to be safe to call many times.
2. setStatusCode lowers log message to TRACE, since the return value
communicates the outcome it's arguably much less critical.
3. Add comment and test case for ResponseStatusExceptionHandler.
A ResponseStatusException is clearly meant to be handled by this
handler so don't let it pass through even if the respones is
committed.
Issue: SPR-16231
2017-11-27 16:31:49 -05:00
sdeleuze
3b96690e69
Add missing RestOperations extensions
...
Issue: SPR-16229
2017-11-23 22:12:03 +01:00
Rossen Stoyanchev
01a82b5291
Improve semantics writing currentData
...
Before this commit, the return value from write was interpreted as the
data being fully written and ready to be released via releaseData().
This is not true for WebSocketSession implementations where a true
return value simply means the message was sent with the full payload
but releas is not appropriate until a send confirmation.
Technically not an issue since WebSocketSession's extending this do
not use pooled buffers. Nevertheless this commit refines the semantics
of write, removes the releaseData() method, and makes sub-classes
responsible for releasing the buffer when fully written (and they
know best when that is). As a bonus currentData is now private.
Issue: SPR-16207
2017-11-23 10:55:03 -05:00
Rossen Stoyanchev
102a0ad792
Polish
2017-11-23 10:22:35 -05:00
Rossen Stoyanchev
c1b191edb0
Polish and improve logging
2017-11-22 23:25:36 -05:00
Rossen Stoyanchev
afdca285e5
Avoid resume-suspend race condition
...
This commit turns suspendReading() into a readingPaused() notification
that is invoked after a succession of reads stops because there is no
more demand. Sub-classes can use this notification to suspend, if that
applies to them.
Most importantly the notification is guaranteed not to overlap with
checkOnDataAvailable() which means that suspend does not need to be
atomic and guarded against resume. The two can and do compete all the
time when reading ends with no demand, and a request for demand arrives
concurrently.
Issue: SPR-16207
2017-11-22 17:48:03 -05:00
sdeleuze
4a87d3da7b
Set Vary: Origin on CORS unauthorized response
...
Issue: SPR-16224
2017-11-22 22:46:53 +01:00
sdeleuze
652e5c5584
Disable CORS credentials by default
...
Access-Control-Allow-Credentials CORS header, used to
allow cookies with CORS requests, is not set to true
anymore by default when enabling CORS with
@CrossOrigin or global CORS configuration in order to
provide a more secured default CORS configuration.
The related allowCredentials property now requires to
be set to true explicitly in order to support cookies
with CORS requests.
Issue: SPR-16130
2017-11-22 22:46:44 +01:00
Rossen Stoyanchev
b7c924cac1
Polish
2017-11-21 23:20:13 -05:00
Rossen Stoyanchev
06b2ab3908
Use volatile for subscriber in base publishers
...
Issue: SPR-16207
2017-11-21 22:57:15 -05:00
Rossen Stoyanchev
3c2d1862f1
Light refactoring/polish in reactive read/write bridge
...
Issue: SPR-16207
2017-11-21 21:46:30 -05:00
Violeta Georgieva
2a481c5411
Fix race conditions in AbstractListenerReadPublisher
...
Transition from DEMAND->NO_DEMAND:
Two concurrent threads enter DEMAND.request and DEMAND.onDataAvailable.
And DEMAND.onDataAvailable finishes before DEMAND.request to be able to
update the demand field then a request for reading will be lost.
Transition from READING->NO_DEMAND:
readAndPublish() returns false because there is no demand but before
switching the states READING.request is invoked again a request for
reading will be lost.
Changing READING->DEMAND/NO_DEMAND is made conditional so that the
operations will be executed only if changing states succeeds.
When in READING state detect completion before each next item in order
to exit sooner, if completed.
Issue: SPR-16207
2017-11-21 14:44:46 -05:00
Violeta Georgieva
b814875211
Fix race condition in transition from UNSUBSCRIBED->COMPLETED
...
- Ensure completion signal (normal/exception) will be delivered to
the subscriber when transition from UNSUBSCRIBED->COMPLETED
- According to the specification "Publisher.subscribe MUST call onSubscribe
on the provided Subscriber prior to any other signals to that Subscriber" so
ensure onComplete/onError signals will be called AFTER onSubscribe signal.
Issue: SPR-16207
2017-11-21 14:44:01 -05:00
Violeta Georgieva
41b13a4e8a
Ensure onComplete/onError events will be delivered
...
Issue: SPR-16207
2017-11-21 14:42:05 -05:00
Juergen Hoeller
0cc644f61f
Polishing
2017-11-21 16:34:08 +01:00
sdeleuze
9f1d8517ba
Polish Kotlin source code style
2017-11-21 15:59:23 +01:00
Juergen Hoeller
40dacd3c1c
Polishing
2017-11-20 22:27:07 +01:00
Andy Clement
508aea8a47
Rework implementation of PathPattern.extractPathWithinPattern
...
This commit changes the implementation of the PathPattern
extractPathWithinPattern method that used an old AntPathMatcher
derivative to a new version that integrates more closely with
PathContainer.
It also introduces consistency in a couple of areas. The javadoc
is updated to specify this but basically:
- the response from the extra method will have all leading
and trailing separators removed.
- the response will have multiple adjacent separators within the
reponse reduced to just one. (For example response would be
aaa/bb/cc and not aaa///bbb//cc)
If your response would start or finish with multiple separators, they
are all removed.
Issue: SPR-16120
2017-11-17 12:03:17 -08:00
Violeta Georgieva
0fbfa64385
UndertowServerHttpRequest: suspend reading when no demand
...
- When there is no demand for reading, the implementation
should suspend reading otherwise useless events will be
send by Undertow to the registered read listener.
- There is not need to wait for an event for reading/writing after calling
resumeReads/resumeWrites
2017-11-16 16:15:55 +01:00
Rossen Stoyanchev
19a9bc4747
Remove unnecessary assertion
...
Issue: SPR-16201
2017-11-15 16:04:32 -08:00
Rossen Stoyanchev
e818b904ad
Polish WebSocket-related
2017-11-13 23:20:01 -05:00
Juergen Hoeller
72f20e8d4f
Polishing
2017-11-11 00:37:50 +01:00
Rossen Stoyanchev
87375fe6f8
ServerHttpRequest exposes SSL certificates
...
Issue: SPR-15964
2017-11-10 16:43:12 -05:00
Juergen Hoeller
780993ce75
Polishing
2017-11-10 20:21:26 +01:00
Juergen Hoeller
de782026c4
Explicitly document UriTemplate as thread-safe
...
Issue: SPR-16173
2017-11-10 20:20:23 +01:00
Rossen Stoyanchev
a5103307c6
Polish ErrorArgumentResolver
2017-11-10 10:15:46 -05:00
Rossen Stoyanchev
807297f173
Remove RxNetty (from test sources)
...
Practically no changes to RxNetty for a year and efforts underway to
rebuild 0.6.x based on a current Reactor Netty base.
Aside from the extra time to run integration tests having two
Netty-based servers can also cause false alarms such as ByteBuf leaks
related to RxNetty.
2017-11-09 15:56:56 -05:00
Rossen Stoyanchev
369d33c3d0
Support charset config by (static) resource location
...
This commit adds support for configuring static resource locations
with a charset to be applied to relative paths.
2017-11-09 13:15:06 -05:00
Rossen Stoyanchev
840ef46a9f
Polish
...
Also remove ErrorDeferredResultProcessingInterceptor which was meant
to be package private to begin with as its peer
ErrorCallableProcessingInterceptor (also removed).
2017-11-08 23:15:31 -05:00
Rossen Stoyanchev
9786750b5a
Improve @RequestAttribute WebFlux resolver
...
The resolver now takes into account the possibility the attribute
itself may be a reactive type.
Issue: SPR-16158
2017-11-06 21:44:45 -05:00
Rossen Stoyanchev
14f02d7192
Update reference with examples of multipart requests
...
Issue: SPR-16118
2017-11-06 16:33:58 -05:00
Arjen Poutsma
af2e296ff3
Javadoc
2017-11-06 16:00:18 +01:00
Arjen Poutsma
2d1f87501c
Add MultipartBodyBuilder
...
This commit introduces the MultipartBodyBuilder, a builder for multipart
form bodies.
Issue: SPR-16134
2017-11-06 10:42:11 +01:00
Juergen Hoeller
e5c1deea63
Polishing
2017-11-05 16:23:30 +01:00
Juergen Hoeller
80a0cf71f4
MockHttpServletResponse.getDateHeader returns -1 for non-existent header
...
Includes consistent getDateHeader results in both MockHttpServletResponse variants (spring-test and spring-web)
Issue: SPR-16160
2017-11-05 16:12:21 +01:00
Juergen Hoeller
0edf4d6509
MockHttpServletRequest.getRequestURL aligns with getServerName/Port
...
Issue: SPR-16138
2017-11-05 16:11:21 +01:00
Juergen Hoeller
996d747aed
Upgrade to Mockito 2.11
...
Includes fixes for invalid exception declarations in Mockito-based unit tests. Also includes FreeMarker 2.3.27, Commons Pool 2.4.3, JSON-P 1.1.2.
Issue: SPR-16157
2017-11-04 01:06:59 +01:00
Rossen Stoyanchev
ef39092b3b
UriUtils#encodUriVariables methods are now public
2017-11-03 08:21:55 -04:00
Rossen Stoyanchev
4534c5fbfc
AbstractReactiveWebInitializer supports Servlet mapping
...
Issue: SPR-16155, SPR-16144
2017-11-02 21:03:09 -04:00
Rossen Stoyanchev
8c33ed02b3
ServletHttpHandlerAdapter supports Serlvet path mapping
...
Issue: SPR-16155
2017-11-02 20:53:26 -04:00
Rossen Stoyanchev
aa653b23bc
Add AbstractReactiveWebInitializer
...
This commit introduces a new AbstractReactiveWebInitializer in
spring-web that relies on WebHttpHandlerBuilder to detect request
processing infrastructure beans from an ApplicationContext.
This eliminates the need to create a DispatcherHandler, since it is
expected to be a Spring bean, and as a result the initializers in
spring-webflux have been deprecated.
Issue: SPR-16144
2017-11-02 14:57:06 -04:00
Norman Soetbeer
4dee333a75
Allow empty usernames for BasicAuth
...
The RFCs around basic authentication don't explicitly disallow empty
usernames. On the other hand usernames containing colons are, as colons
are used to separate the username from the password.
2017-11-02 09:59:14 -05:00
Rossen Stoyanchev
579328bd7a
MockClientHttpRequest|Response support cookie headers
...
Issue: SPR-16124
2017-10-31 12:08:18 -04:00
Juergen Hoeller
d06129debd
InterceptingHttpAccessor uses internal ArrayList for sorting
...
Also caches InterceptingClientHttpRequestFactory (if applicable)
Issue: SPR-16137
2017-10-31 16:33:38 +01:00
Rossen Stoyanchev
8083eaae54
syncBody better differentiates plain vs multipart forms
...
FromHttpMessageWriter and MultipartHttpMessageWriter both support
MultiValueMap except the former supports String values only. This
presents an issue since either full generic type information must be
provided, which is cumbersome on the client side, or if left out there
is no good way to order the writers to make a proper decision.
This commit:
- refines the canWrite behavior of to not a
accept MultiValueMap without proper generic information unless the
MediaType is explicitly set providing a strong hint.
- modifies MultipartHttpMessageWriter to be configured with a
FormHttpMessageWriter so it can write both plan and multipart data with
the ability to properly differentiate based on actual map values.
Issue: SPR-16131
2017-10-31 09:12:05 -04:00
Arjen Poutsma
49787493a6
Proper Undertow PooledByteBuffer release
...
This commit changes the way Undertow's PooledByteBuffers are dealt with.
Previously, these buffers where closed as soon as all data was read. As
of this commit, the UndertowServerHttpRequest returns PooledDataBuffers
from getBody(), so that the buffers are released when release() is
called.
2017-10-30 10:39:18 +01:00
Juergen Hoeller
d963597ec0
Test with hasError for unknown status code
...
Issue: SPR-16108
2017-10-24 15:51:29 +02:00
Sebastien Deleuze
1c256a112b
Parse correctly ContentDisposition header with semicolons
...
Issue: SPR-16091
2017-10-23 23:09:14 +02:00
Juergen Hoeller
ecea82d3a5
Polishing
2017-10-23 17:14:09 +02:00
Rossen Stoyanchev
1cc5afe24b
Fix lines over 120 characters
...
https://github.com/spring-projects/spring-framework/wiki/Spring-Framework-Code-Style#line-wrapping
2017-10-20 16:42:26 -04:00
Andy Wilkinson
07eee05d1d
Add missing "be" in Part's javadoc
...
Closes gh-1570
2017-10-20 16:43:48 +02:00
Rossen Stoyanchev
ab92754a2e
@MatrixVariable resolvers for WebFlux
...
The information was already parsed and available in a request attribute
but until now there were no argument resolvers to expose it.
Issue: SPR-16005
2017-10-19 21:01:38 -04:00
Arjen Poutsma
c7a15260d6
Various DataBuffer improvements
...
This commit introduces various improvements in DataBuffer:
- DataBuffer now exposes its read and write position, as well as its
capacity and writable byte count.
- Added DataBuffer.asByteBuffer(int, int)
- DataBufferUtils.read now reads directly into a DataBuffer, rather than
copying a ByteBuffer into a DataBuffer
- TomcatHttpHandler now reads directly into a DataBuffer
Issues: SPR-16068 SPR-16070
2017-10-19 10:38:52 +02:00
Juergen Hoeller
9df6f3e6b8
Polishing
2017-10-18 20:21:49 +02:00
Juergen Hoeller
bec1fc1852
ModelAttributeMethodProcessor detects re-enabled binding declaration
...
Issue: SPR-16083
2017-10-18 12:31:22 +02:00
Juergen Hoeller
ea00c7c6c8
Explicit notes on ExceptionHandler root vs cause resolution
...
Issue: SPR-16074
2017-10-18 12:18:30 +02:00
Rossen Stoyanchev
94c4a7f941
Shortcut factory method in MockServerWebExchange
...
MockServerWebExchange now has a second factory method that accepts a
MockServerHttpRequest.BaseBuilder.
Issue: SPR-16079
2017-10-17 12:23:12 -04:00
Rossen Stoyanchev
2d05e538fb
Set path in CookieWebSessionIdResolver
...
Issue: SPR-16030
2017-10-16 09:55:58 -04:00
Rossen Stoyanchev
4831d38db2
Lower log level for ResponseStatusException
...
Issue: SPR-16049
2017-10-16 09:55:58 -04:00
Juergen Hoeller
3890d4c9eb
AbstractServerHttpResponse stores HTTP status code as integer value
...
Issue: SPR-16073
2017-10-16 15:34:09 +02:00
Juergen Hoeller
43b5e21947
Consistent alias declarations for value attribute on stereotypes
...
Issue: SPR-16066
2017-10-13 18:18:12 +02:00
Juergen Hoeller
682186a20d
Refactored CodecConfigurer creation for clearer subpackage interdependencies
...
Includes redeclaration of CodecConfigurer.DefaultCodecs without concrete Jackson decoder/encoder references in order to avoid hard Jackson dependency.
Issue: SPR-16064
2017-10-13 14:23:22 +02:00
Sebastien Deleuze
2962f085e5
Relax type check in FormHttpMessage(Reader|Writer)
...
Issue: SPR-16055
2017-10-12 17:48:42 +02:00
Juergen Hoeller
cc6e6490d2
Polishing
2017-10-09 13:59:29 +02:00
Rossen Stoyanchev
48c41049b1
Correct package for MockServerWebExchange
...
Discovered late, but not too late. MockServerWebExchange is now in the
proper package matching to the location of ServerWebExchange.
2017-09-29 17:03:23 -04:00
Rossen Stoyanchev
223e27d53d
Package private request and response implementations
...
Concrete server and client, reactive request and response
implementations should not have to be accessed outside their package.
They could be seen as private to their HttpHandler adapters and
ClientHttpConnector's respectively.
The one exception, WebSocket upgrades in spring-webflux, is an internal
framework use case, accommodated via downcast + accessors in the
abstract base classes.
2017-09-29 13:04:03 -04:00
Rossen Stoyanchev
13c959296a
Polish
2017-09-27 22:04:07 -04:00
Brian Clozel
126ac849e5
Fix behavior of ClientResponse#bodyTo** with Void
...
Prior to this commit, asking for a `Void` type using any of the
`ClientResponse#bodyTo*` methods would immediately return an empty
`Publisher` without consuming the response body.
Not doing so can lead to HTTP connection pool inconsistencies and/or
memory leaks, since:
* a connection that still has a response body being written to it cannot
be properly recycled in the connection pool
* incoming `DataBuffer` might not be released
This commit detects when `Void` types are asked as body types and in
those cases does the following:
1. Subscribe to the response body `Publisher` to allow the connection to
be returned to the connection pool
2. `cancel()` the body `Publisher` if the response body is not empty; in
that case, we choose to close the connection vs. consume the whole
response body
Those changes imply that `ClientHttpResponse` and other related
contracts don't need a `close()` method anymore.
Issue: SPR-16018
2017-09-28 00:58:38 +02:00
Juergen Hoeller
ec345bf162
Revised handling of missing data class arguments
...
Includes unified detection of Kotlin's optional parameters in MethodParameter.isOptional(), reduces BeanUtils.findPrimaryConstructor to Kotlin semantics (for reuse in AutowiredAnnotationBeanPostProcessor), and finally introduces a common KotlinDetector delegate with an isKotlinType(Class) check.
Issue: SPR-15877
Issue: SPR-16020
2017-09-28 00:31:12 +02:00
Rossen Stoyanchev
6ee1af27c6
WebFlux supports HTTP HEAD
...
Issue: SPR-15994
2017-09-27 15:25:29 -04:00
Juergen Hoeller
a1a7c62127
Consistent configurer access in WebMvcConfigurationSupport
...
Issue: SPR-16017
(cherry picked from commit 40ba95f
)
2017-09-27 19:52:48 +02:00
Brian Clozel
10139d42fc
Revisit meaning of response.close() in HTTP client
...
Prior to this issue, SPR-15920 added this new `close()` method which was
supposed to be called to clean resources after response processing.
This commit changes the meaning of that method: calling `close()` will
close the underlying HTTP connection. This has to be called if the
response body is not consumed by the application, since at that point
the underlying connection might be in an inconsistent state if shared in
a connection pool.
Issue: SPR-15993
2017-09-27 14:03:55 +02:00
Rossen Stoyanchev
ec5969c578
InMemoryWebSession cleans up expired sessions
...
Issue: SPR-15963
2017-09-27 01:43:11 -04:00
Rossen Stoyanchev
15cc44e6e8
Add WebSession.invalidate()
...
Issue: SPR-15960
2017-09-27 00:10:38 -04:00
Rossen Stoyanchev
6da3518a66
WebSessionStore updates lastAccessTime on retrieve
...
Now that WebSessionStore is in charge of expiration checks on retrieve
it makes sense to also update the lastAccessTime on retrieve at the
same time, saving the need to call it after a retrieve.
Issue: SPR-15963
2017-09-26 23:12:58 -04:00
Rossen Stoyanchev
cb2deccb2d
WebSessionStore performs expiration check on retrieve
...
Issue: SPR-15963
2017-09-26 23:12:12 -04:00
Juergen Hoeller
efce7902c4
Polishing
2017-09-27 01:34:11 +02:00
Rossen Stoyanchev
eb6bd2d7b8
Remove args and return value lists from @RequestMapping
...
It is no longer adequate to list supported arguments and return values
-- between Web MVC and WebFlux, directly on the annotation.
Instead we have tables in the respective chapters in the reference with
cross references to each other.
Issue: SPR-15149
2017-09-26 15:29:58 -04:00
Eddú Meléndez
6f2d58fac6
Remove jackson-datatype-jdk7 auto registration
...
`jackson-datatype-jdk7` is not provided anymore. It's handlers are
incorporated in core databind.
2017-09-26 14:48:34 +02:00
Brian Clozel
95b83fe1ba
Add zero copy support in reactor-based WebClient
...
This commit makes Reactor Netty `WebClient` instances
support zero-copy requests by implementing `ZeroCopyHttpOutputMessage`.
The implementation leverages the optimized `sendFile` mechanism if
available.
2017-09-26 11:05:48 +02:00
Andy Clement
07b961caa6
Empty path should match the "/" PathPattern
...
This commit makes both slash "/" and empty "" request paths match the
"/" `PathPattern`.
Issue: SPR-15653
2017-09-26 10:59:13 +02:00
Sebastien Deleuze
74120ef00f
Add custom deserializers support to AbstractJackson2Decoder
...
Issue: SPR-15975
2017-09-25 23:21:50 +02:00
Stephane Maldini
21203921f0
sync with reactor-core snapshot
2017-09-22 13:56:39 -07:00
Juergen Hoeller
7ae59d0c2a
Nullability refinements on private and static methods
...
Based on IntelliJ IDEA 2017.3 introspection results.
Issue: SPR-15756
2017-09-22 18:22:14 +02:00
Brian Clozel
60f47f4489
Fix memory leak in reactive multipart parser
2017-09-22 17:03:38 +02:00
Andreas Ahlenstorf
b30f6fd991
Ensure that JSON is written to response body
...
Issue: SPR-15988
2017-09-21 12:19:35 +02:00
Juergen Hoeller
15c82afc1c
Consistent conversion of Optional array/list arrangements
...
Issue: SPR-15918
Issue: SPR-15919
Issue: SPR-15676
2017-09-20 18:28:49 +02:00
Juergen Hoeller
ea01c4113a
Revisit MockPart constructors
...
Issue: SPR-15854
2017-09-20 10:55:06 +02:00
Juergen Hoeller
4cbef27f90
Consistent tolerance of unknown HTTP status codes behind RestTemplate
...
Issue: SPR-15978
2017-09-20 10:54:58 +02:00
Juergen Hoeller
3bd2154046
Polishing
2017-09-19 00:02:40 +02:00
areshetnikov
0f0b8dc745
Fix class name in javadoc
...
Closes gh-1530
2017-09-18 14:28:37 +02:00
Sebastien Deleuze
1bc93e3d0f
Revisit nullability annotations
...
This commit introduces the following changes.
1) It adds a new Spring @NonNull annotation which allows to apply
@NonNullApi semantic on a specific element, like @Nullable does.
Combined with @Nullable, it allows partial null-safety support when
package granularity is too broad.
2) @Nullable and @NonNull can apply to ElementType.TYPE_USE in order
to be used on generic type arguments (SPR-15942).
3) Annotations does not apply to ElementType.TYPE_PARAMETER anymore
since it is not supported yet (applicability for such use case is
controversial and need to be discussed).
4) @NonNullApi does not apply to ElementType.FIELD anymore since in a
lot of use cases (private, protected) it is not part for the public API
+ its usage should remain opt-in. A dedicated @NonNullFields annotation
has been added in order to set fields default to non-nullable.
5) Updated Javadoc and reference documentation.
Issue: SPR-15756
2017-09-15 13:26:41 +02:00
Violeta Georgieva
ec2218c967
AbstractListenerWriteFlushProcessor: Ensure the last flush will be performed
...
When writing Publisher<Publisher<T>>, a flush operation is performed onComplete
for every Publisher. If the flush operation is not able to be performed immediately
it will be retried before starting to process data provided by the next Publisher.
For the last Publisher the implementation needs to ensure that the flush will
be performed only then whole operation will complete.
Issue: SPR-15949
2017-09-15 08:53:00 +02:00
Arjen Poutsma
2510db0683
Javadoc
2017-09-14 17:23:25 +02:00
Arjen Poutsma
e70210a1da
Introduce ForwardedHeaderFilter for WebFlux
...
This commit introduces a ForwardedHeaderFilter for WebFlux, similar to
the existing Servlet version. As part of this the
DefaultServerHttpRequestBuilder had to be changed to no longer use
delegation, but instead use a deep copy at the point of mutate().
Otherwise, headers could not be removed.
Issue: SPR-15954
2017-09-14 16:27:12 +02:00
Arjen Poutsma
4a0784bea8
Test HTTPS in ReactorServerHttpRequest URI
...
This commit adds a test for ReactorServerHttpRequest.getUri() to check
whether it returns a HTTPS scheme when configured with SSL.
Issue: SPR-15931
2017-09-12 15:14:54 +02:00
Juergen Hoeller
4371350b5d
Polishing
2017-09-10 21:56:31 +02:00
Rossen Stoyanchev
bc470fca30
Polish
2017-09-09 17:40:59 -04:00
Juergen Hoeller
fd0132c7e6
Polishing
2017-09-08 16:56:22 +02:00
Yi EungJun
cf106ec99e
Fix typo
2017-09-08 10:48:27 +02:00
Brian Clozel
1a883b863d
Remove temporary workaround for reactor-netty client
...
Now that https://github.com/reactor/reactor-netty/issues/138 is solved,
this commit removes the temporary workaround introduced in SPR-15784
but leaves the general mechanism for detecting empty responses.
2017-09-08 10:27:35 +02:00
Andy Clement
3956423afe
Polish
...
The high level matchStarting API was removed a few commits ago.
This change tidies up by removing the supporting infrastructure
for that from the PathElements.
2017-09-07 14:03:46 -07:00
Arjen Poutsma
ec6475a24c
Expose scheme in ReactorServerHttpRequest URI
...
This commit determines fixes ReactorServerHttpRequest.getUri() so that
it includes a URL scheme.
Issue: SPR-15931
2017-09-07 12:29:28 +02:00
Rossen Stoyanchev
2fc2dab230
Fold DefaultWebSession within InMemoryWebSessionStore
...
InMemoryWebSessionStore is very closely associated to DefaultWebSession
passing it to it several fields and functions. Now that the store also
creates the session, it makes sense to bring the latter in as an inner,
nested class.
Issue: SPR-15875, 15876
2017-09-06 11:47:43 -04:00
Rossen Stoyanchev
c7d54c8b52
Polish
2017-09-06 11:47:43 -04:00
Rob Winch
8ad14ae95c
DefaultWebSessionManager decoupled from DefaultWebSession
...
DefaultWebSessionManager no longer requires the WebSessionStore
to use DefaultWebSession.
Removed explicit start() in save(). This seemed unnecessary since at
that point isStarted is guaranteed to return true. The status can
be updated through the copy constructor.
DefaultWebSessionTests added.
Issue: SPR-15875
2017-09-06 11:47:43 -04:00
Rob Winch
86912475af
Refactor WebSessionStore
...
- Add WebSessionStore.createWebSession.
- Remove remove WebSessionStore.changeSessionId
- Add WebSessionStore updateLastAccessTime which allows updating the
WebSession lastAccessTime without exposing a method on WebSession in
an implementation independent way.
- Remove WebSessionStore.storeSession. This method is not necessary
since the WebSession that is returned allows saving the WebSession.
Additionally, it is error prone since the wrong type might be passed
into it.
Issue: SPR-15875, 15876
2017-09-06 11:47:43 -04:00
Rob Winch
b7280472d6
Improve WebSession related tests
...
Add missing DefaultWebSessionManagerTests .block(). Previously
session.save() was invoked, but we did not ensure it was completed.
This commit makes it block on session.save()
Fix existingSessionIsExpired. This test is actually broken and is
testing a new session is created because the session id returned
by the idResolver does not match the existing WebSession.
This commit ensures that the id of the WebSession found by idResolver
matches the existing WebSession.
DefaultWebSessionManagerTests use Mockito. To ensure we test with
independence from InMemoryWebSessionStore we use Mockito for the
DefaultWebessionManager collaborators.
Add test for response.setComplete(). We want to ensure that when the
response is completed, it saves the WebSession and writes it to the
response using idResolver
2017-09-06 11:47:43 -04:00
Rob Winch
167ddc7cfc
Polish HeaderWebSessionIdResolver
...
Use constant for default header name and make getHeaderName private.
Also switch HeaderWebSessionIdResolverTests to unit tests rather than
testing with DefaultWebSessionManager.
Issue: SPR-15917
2017-09-06 11:47:43 -04:00
Brian Clozel
16f3f8d28f
Add close() method on HTTP client response
...
Before this commit, there was no way to signal the HTTP client that we
were done consuming the response. Without that, the underlying client
library cannot know when it is safe to release the associated resources
(e.g. the HTTP connection).
This commit adds new `close()` methods on both `ClientHttpResponse`
and `ClientResponse`. This methods is non-blocking and its behavior
depends on the library, its configuration, HTTP version, etc.
At the `WebClient` level, `close()` is called automatically if we
consume the response body through the `ResponseSpec` or the
`ClientResponse` itself.
Note that it is *required* to call `close()` manually otherwise; not
doing so might create resource leaks or connection issues.
Issue: SPR-15920
2017-09-06 17:29:18 +02:00
Arjen Poutsma
02a2c400c7
Move URL transform methods from ServerHttpResponse to ServerWebExchange
...
This commit moves `encodeUrl` and `registerUrlEncoder` from
ServerHttpResponse to ServerWebExchange.
It also renames `encodeUrl` to `transformUrl` and `registerUrlEncoder`
to `addUrlTransformer` to make it clearer that these methods do not
perform actual URL encodings (i.e. they do not replaceinvalid
characters).
The `add` prefix (instead of `register`) makes it clearer that each
function is added in addition to the previous one.
Issue: SPR-15924
2017-09-06 14:39:09 +02:00
Sebastien Deleuze
5d4ee09d53
Fix AbstractJackson2Encoder#canEncode
...
This commit ensures that the Jackson encoder is selected only
with supported mime types.
Issue: SPR-15910
2017-09-06 08:26:15 +02:00
Rossen Stoyanchev
320bfdf413
Polish
2017-09-05 17:47:02 -04:00
Greg Turnquist
c98e01ad1f
Create session-based WebSessionIdResolver
...
Introduces HeaderSessionIdResolver, which reads session ids from a session header and generates a session response header when new session are created.
Related issue: SPR-15917
2017-09-05 17:37:50 -04:00
Rossen Stoyanchev
fc0841c60f
Adapt to method name change in Mono
2017-09-05 13:57:20 -04:00
Brian Clozel
bff54788e8
Enable HTTP compression Reactor ClientHttpConnector
...
`ReactorClientHttpConnector` provides an adapter layer to `WebClient`
for using Reactor-Netty's `HttpClient`.
This commit enables HTTP compression support by default for this client
Connector.
Another constructor is still available for providing a custom
`HttpOptions` configuration.
Issue: SPR-15908
2017-09-01 23:14:58 +02:00
Rossen Stoyanchev
3d61f7ba60
Polish
2017-09-01 16:57:35 -04:00
Brian Bohl
81dfadcb16
Fix StringIndexOutOfBoundsException in RestTemplate.doExecute IOException handler when query string is an empty string
2017-09-01 16:48:53 -04:00
Juergen Hoeller
2b44e6e21c
Strong references to mapped exception handler methods
...
Issue: SPR-15907
2017-08-29 15:07:23 +02:00
Sebastien Deleuze
9abe77670c
Sync with reactor-core when() -> zip() change
2017-08-21 19:54:08 +02:00
Juergen Hoeller
b61c055e43
Polishing
2017-08-21 01:37:33 +02:00
Juergen Hoeller
3991ab4a23
Efficient Kotlin metadata detection
...
Issue: SPR-15673
2017-08-21 01:33:20 +02:00
Stephane Nicoll
f6e7fef236
Polish
2017-08-19 10:50:41 +02:00
Juergen Hoeller
9aa369f402
Data class construction supports field default/marker parameters
...
Issue: SPR-15871
2017-08-18 17:59:06 +02:00
Juergen Hoeller
47a7475898
Resolve remaining nullability warnings
...
Issue: SPR-15869
2017-08-18 00:15:46 +02:00
Juergen Hoeller
b94302b5bd
Enforce non-null value from getBean and at injection points
...
Bean-derived null values may still get passed into bean properties and injection points but only if those are declared as non-required. Note that getBean will never return null; a manual bean.equals(null) / "null".equals(bean.toString()) check identifies expected null values now. This will only ever happen with custom FactoryBeans or factory methods returning null - and since all common cases are handled by autowiring or bean property values in bean definitions, there should be no need to ever manually check for such a null value received from getBean.
Issue: SPR-15829
2017-08-18 00:11:35 +02:00
Sebastien Deleuze
73cf07e9a4
Fix overridden methods nullability
...
Issue: SPR-15869
2017-08-17 15:02:59 +02:00
Juergen Hoeller
61cdc842e0
BindingResult support for constructor argument mismatch on immutable data object
...
Issue: SPR-15542
2017-08-17 11:02:40 +02:00
Rossen Stoyanchev
e433d8b66a
Polish
2017-08-16 15:45:14 +02:00
rlindooren
5b29555d88
Jackson encoder and decoder should use provided mime types
...
Instead of always using the default JSON mime types
2017-08-16 15:25:18 +02:00
Rossen Stoyanchev
645e3492db
Use URLDecoder for query params in WebFlux
...
Issue: SPR-15860
2017-08-16 13:34:31 +02:00
Rossen Stoyanchev
8b7a670821
Cancel WebAsyncManager thread on request timeout
...
Issue: SPR-15852
2017-08-16 09:26:21 +02:00
Rossen Stoyanchev
280c64ba35
Polish
2017-08-14 18:55:39 +03:00
Rossen Stoyanchev
8c4b1ab781
Functional PathPattern comparator
2017-08-14 16:33:39 +03:00
Rossen Stoyanchev
631b546d1c
Proper null handling in PathPattern comparator
2017-08-14 11:45:27 +03:00
Juergen Hoeller
adeb521ce4
Polishing
2017-08-08 17:27:28 +02:00
Stephane Maldini
2677bab560
Use Bismut-BUILD-SNAPSHOT
...
Sync 3.1.0.BUILD-SNAPSHOT changes to Operators.checkRequest (removed)
2017-08-03 14:30:08 -07:00
Rossen Stoyanchev
08dfce2cb5
Dedicated specificity comparator in PathPattern
...
The PathPattern compareTo method is now consistent with equals when
two patterns are of the same specificity but otherwise different.
Separately PathPattern now exposes a Comparator by specificity that
offers the current functionality of compareTo. This can be used for
actual sorting where we only care about specificity.
2017-08-02 18:11:36 +02:00
Rossen Stoyanchev
62fa20fd6f
PathPattern#matchAndExtract minor refactoring
...
Consistent behavior with matches(PathContainer), the two had slightly
different logic for handling of empty paths.
Make matchAndExtract independantly usable without the need to call
matches(PathContainer) first. Essentially no longer raising ISE if the
pattern doesn't match but simply returning null.
2017-08-02 16:31:06 +02:00
Rossen Stoyanchev
dccedd5ad5
Minor refactoring in PathPattern
...
Rename getPathRemaining to matchStartOfPath since the method does
match and to be more clear about what the method and the return value
intuitively follows.
Remove matchStart which matches the start of the pattern (rather than
the start of the path). It is a use case that does not come up in
request mapping.
2017-08-02 15:05:28 +02:00
Rossen Stoyanchev
c060f4f615
Polish PathPattern and parser
...
Updates to Javadoc
Consistent and separator type neutral naming for trailing slash
PathPattern extracts options from the parser instance
2017-08-02 14:21:16 +02:00
Arjen Poutsma
5394cc0c63
WebClientException should allow access to status code of the response
...
This commit changes the WebClient so that it now throws a
`WebClientResponseException` for `ResponseSpec.bodyTo`. This newly
introduces exception contains the status code, headers, and body of the
response message.
As a consequence of the above, we had to change `onStatus` so that the
`exceptionFunction` now returns a `Mono<Throwable>` rather than a
`Throwable`, which it was before. The Mono allows for asynchronous
operations, such as reading the contents of the body.
Issue: SPR-15824
2017-08-02 10:20:58 +02:00
Rossen Stoyanchev
b6d1fd9d22
Minor refactoring in PathPatternParser
...
Remove the separator constructor argument (but preserve internal
functionality) now that PathPatternParser is more explicitly purposed
for URL paths and in any case the use of an alternate separator would
also requires a similar input option on the PathContainer parsing side.
2017-08-01 22:52:18 +02:00
Rossen Stoyanchev
1794f1cea4
Polish path pattern parsing javadoc
...
Emphasize specific purpose for URL path matching.
2017-08-01 22:31:21 +02:00
Rossen Stoyanchev
b1440b6816
Remove ParsingPathMatcher
...
Now that we also have RequestPath and PathContainer with the latter as
the required input, the ParsingPathMatcher adapter can be removed.
2017-08-01 13:35:21 +02:00
Juergen Hoeller
ca0983cd85
Polishing
2017-08-01 12:08:57 +02:00
Rossen Stoyanchev
f813a63fd8
PathContainer parses URL paths only
...
Collapse non-URL vs URL based path parsing into one essentially
supporting URL paths only.
2017-07-31 22:10:08 +02:00
Rossen Stoyanchev
af83d2332a
Fix regression in HttpPutFormContentFilter
...
Re-arrange the checks so that if there is no form parameter, then
immediately and unconditionally delegate to super.getParameterValues().
Or reversely if there is no super.getParameterValues() then return the
form parameter.
So the only remaining case is when combining values present in both.
In that case we'll take both only if a queryString exists.
One extra fix is to not even wrap the request if we did not parse any
form parameters at all which can happen with HttpHiddenMethodFilter.
Issue: SPR-15828, 15835
2017-07-31 17:30:22 +02:00
Stephane Nicoll
1a9cfefcbb
Fix test failure
...
Issue: SPR-15548
Closes gh-1488
2017-07-31 10:45:18 +02:00
Rossen Stoyanchev
dbe25cf717
Add RequestPath tests for modifying the contextPath
2017-07-28 12:26:34 +02:00
Rossen Stoyanchev
6855a85c41
Move RequestPath to parent server package
2017-07-28 12:26:34 +02:00
Sebastien Deleuze
6583f9f754
Use ParameterizedTypeReference instead of Class in Kotlin extensions
...
This commit also removes WebFlux non-extension functions in favor of
regular Kotlin extensions leveraging ParameterizedTypeReference parameter.
Issue: SPR-15818
2017-07-28 00:22:00 +02:00
Rossen Stoyanchev
7e232f989b
Improve check for "Broken pipe" error message
...
Issue: SPR-15802
2017-07-25 10:30:11 +02:00
Sebastien Deleuze
ed6fe2b723
Upgrade to Kotlin 1.1.4-eap-33
...
Issue: SPR-15814
2017-07-24 17:29:02 +02:00
Rossen Stoyanchev
14ccb38523
Handle nested w/o top-level array in Jackson2JsonTokenizer
...
Issue: SPR-15803
2017-07-21 13:43:38 +02:00
Rossen Stoyanchev
bd0de7086e
Jackson2JsonTokenizer unwraps top level array only
...
When the input stream is a JSON array the tokenizer skips over the
start and end array tokens in order to decode into an array of
top-level objects. However in this mode it also skips over nested
start and end array tokens which prevents proper parsing of JSR-310
dates (represented with an array syntax) as well as any fields that
are collections.
Issue: SPR-15803
2017-07-21 12:41:20 +02:00
Rossen Stoyanchev
c3e3df57f8
Polish
2017-07-21 12:08:06 +02:00
Rossen Stoyanchev
3009e29489
Remove contentDispositionFormData with charset method
...
The method was orginally added under SPR-14547 but the example in it
was probably intended for use with Content-Disposition server response
header (file dowonload) and not for a Content-Disposition header
within the body of a multipart request.
In a Spring application a multipart request is typically serialized
by the FormHttpMessageConverter and hence the Content-Disposition is
not explicitly set by the application.
Issue: SPR-15205
2017-07-20 17:49:59 +02:00
Brian Clozel
f1abcba4eb
Support ipV6 Host addresses in HttpHeaders
...
This commit parses the "Host" HTTP request header as an
`InetSocketAddress`, while supporting IPv6 addresses like `[::1]`.
This host string contains `:` chars even though it has no port
information.
Issue: SPR-15799
2017-07-20 15:21:46 +02:00
Rossen Stoyanchev
bb684ce60b
Improve decoding support for multipart filename
...
StandardMultipartHttpServletRequest now properly decodes RFC-5987
encoded filenames (i.e. filename*) by delegating to ContentDisposition
and also support RFC-2047 syntax through javax.mail MimeUtility.
Issue: SPR-15205
2017-07-20 14:26:20 +02:00
Juergen Hoeller
e4651d6b50
XmlEventDecoder uses common defensive XMLInputFactory (now in StaxUtils)
...
Issue: SPR-15797
2017-07-20 13:17:27 +02:00
Sebastien Deleuze
fa4d139684
Support instantiating Kotlin classes with optional parameters
...
This commit updates BeanUtils class in order to add Kotlin optional
parameters with default values support to the immutable data classes
support introduced by SPR-15199.
Issue: SPR-15673
2017-07-20 10:44:06 +02:00
Brian Clozel
5cac619e23
Fix host+port resolution in ReactorServerHttpRequest
...
Prior to this commit, the host+port information of the incoming request
where taken from the remoteAddress, which is actually the socket address
of the HTTP client (i.e. not the server).
This commit resolves this information from the "Host" HTTP request
header, if available, or the actual local address of the channel if no
header is available.
Issue: SPR-15084
2017-07-20 01:45:13 +02:00
Juergen Hoeller
6d6d772f31
Polishing
2017-07-20 00:14:56 +02:00
Rossen Stoyanchev
378c72e9b6
Polish + minor refactoring of ResourceUrlProvider
2017-07-19 23:04:39 +02:00
Juergen Hoeller
13080f04f4
UriUtils.extractFileExtension properly handles all fragments
...
Issue: SPR-15786
2017-07-19 22:40:24 +02:00
Juergen Hoeller
ac1d3b22c9
Polishing
2017-07-19 22:22:27 +02:00
Juergen Hoeller
46eba3dbfa
Nullability fine-tuning around declaration inconsistencies
...
Issue: SPR-15720
Issue: SPR-15792
2017-07-19 22:22:20 +02:00
Rossen Stoyanchev
68e6b148cb
Refactor relative redirect filter support
...
Issue: SPR-15717
2017-07-19 18:46:16 +02:00
Rob Winch
fadf04e4b4
Add RelativeRedirectFilter
2017-07-19 17:15:33 +02:00
Rob Winch
5f868b493a
Add ForwardedHeaderFilter requestOnly
...
Add an option for ForwardedHeaderFilter to only process the
HttpServletRequest. This means that HttpServletResponse.sendRedirect will
only work when the application is conifgured to use relative redirects
using Servlet Container specific setup.
Issue: SPR-15717
2017-07-19 17:15:33 +02:00
Rossen Stoyanchev
147368eccc
Proactively reject URLs without target address
...
Issue: SPR-15782
2017-07-19 12:37:32 +02:00
Rossen Stoyanchev
cbe5a67687
Polish
2017-07-19 12:37:32 +02:00
Juergen Hoeller
9fc4fb10b0
Nullability fine-tuning around bean properties
...
Issue: SPR-15720
Issue: SPR-15792
2017-07-19 11:43:58 +02:00
Sebastien Deleuze
fb4ddb0746
Make getters and setters null-safety consistent
...
This commit ensure that null-safety is consistent between
getters and setters in order to be able to provide beans
with properties with a common type when type safety is
taken in account like with Kotlin.
It also add a few missing property level @Nullable
annotations.
Issue: SPR-15792
2017-07-19 09:07:56 +02:00
Juergen Hoeller
c292a89b24
Http(Async)Client not actually nullable, plus MethodInterceptor nullability
...
Issue: SPR-15720
2017-07-19 00:15:37 +02:00
Rossen Stoyanchev
43f2de4671
Defensive checks in WebClient and Reactor connector
...
Since there is no reason for an exchange to ever complete without a
ClientResponse I've added a switchIfEmpty check at the WebClient level.
Also, temporarily a second check closer to the problem in the
ReactorClientHttpConnector suggesting a workaround and providing a
reference to the Reactor Netty issue #138 .
Issue: SPR-15784
2017-07-18 18:13:47 +02:00
Rossen Stoyanchev
7a0e5a378a
Update for reactor-core change
2017-07-18 04:09:25 +02:00
Juergen Hoeller
12114a9d4c
Consistent use of NIO.2 for file read/write interactions
...
Issue: SPR-15748
2017-07-18 00:54:41 +02:00
Rossen Stoyanchev
ee91e52c3a
Polish
2017-07-17 11:39:32 +02:00
Rossen Stoyanchev
e2ee23bfc5
WebSession supports changeSessionId
...
Issue: SPR-15571
2017-07-17 11:09:38 +02:00
Rossen Stoyanchev
47b63150d1
Refactor DefaultWebSession
...
Use copy constructor to refresh a session with lastAccessTime and a
save function referencing the current exchange. As a result both fields
are now final and ConfigurableWebSession is no longer needed.
2017-07-14 22:55:56 +02:00
Rossen Stoyanchev
bf712957f6
Polish WebSession support code
2017-07-14 22:55:56 +02:00
Rossen Stoyanchev
e37af83459
Improve docs on on use of urlDecode=false
...
Issue: SPR-15643
2017-07-14 16:52:02 +02:00
Juergen Hoeller
301e2ea493
Nullability fine-tuning and related polishing
...
Issue: SPR-15720
2017-07-13 21:20:42 +02:00
Sebastien Deleuze
f46520e6e8
Add Jackson Smile support to WebFlux
...
This binary format more efficient than JSON should be useful for server
to server communication, for example in micro-services use cases.
Issue: SPR-15424
2017-07-13 17:57:07 +02:00
Rossen Stoyanchev
d9eafce266
Polish
2017-07-13 06:10:29 +02:00
Juergen Hoeller
5f767a86f5
Always invoke Jackson serialization with AtomicReference cause
...
Issue: SPR-15760
2017-07-12 19:13:03 +02:00
Rossen Stoyanchev
8359201a0d
Improve write completion handling in ChannelSendOperator
...
Avoid re-using the WriteBarrier as the Subscription to both the
completionSubscriber and the writeSubscriber.
Instead DownstreamBridge is now called WriteCompletionBarrier and is
both a Subscriber and Subscription, i.e. handles all signals to and
from the completion Subscriber.
This frees the request method implementation in WriteBarrier to assume
it can only be called by the writeSubscriber and hence it's safe to
pass on request signals to the write source outside the synchronized
block.
2017-07-12 18:49:28 +02:00
Arjen Poutsma
6329ccb327
Read-Only HttpHeaders only created when necessary
...
This commit introduces a boolean `readOnly` flag in `HttpHeaders`,
which is used to check if creating a new `HttpHeaders` instance is
necessary in `readOnlyHttpHeaders`.
2017-07-12 18:13:24 +02:00
Arjen Poutsma
f4180eb359
Removed faulty test
2017-07-12 15:02:50 +02:00
Rossen Stoyanchev
9ac71afbda
Fix one failing test and @Ignore another
...
The failures look like older failures possibly exposed by recent
changes in Reactor.
The one in ViewResolutionResultHandler is very old test error.
The one in Jackson2JsonDecoderTests is more recent but went unreported.
2017-07-12 13:16:51 +02:00
Rossen Stoyanchev
89a5c857ac
Fix recently intorduced bug in ChannelSendOperator
...
WriteBarrier acts as Subscription to both completionSubscriber and
writeSubscriber so the request method needs to be careful not to
pass on the request outside of readyToWrite or writeSubscriber checks.
2017-07-12 12:40:51 +02:00
Rossen Stoyanchev
fbcd554f42
Fix method order in ChannelSendOperator
...
1. Group by contract
2. Follow lifecycle -- Subscriber 1st, Subscription 2nd, Publisher last
3. Order of declaration in implemented contracts
2017-07-12 12:29:38 +02:00
Rossen Stoyanchev
42188020b4
Polish ChannelSendOperator
2017-07-12 12:21:04 +02:00
Stephane Maldini
b3a05ebac9
Inline super SubscriberAdapter with ChannelSendOperator
...
Add support for CoreSubscriber context passing
2017-07-11 13:12:07 -07:00
Rossen Stoyanchev
134ceac58e
Set all strategies in CNM factory bean
...
ContentNegotiationManagerFactoryBean now provides an option to
explicitly set the strategies to use vs customizing a fixed
list of default strategies.
Issue: SPR-11114
2017-07-11 21:00:57 +02:00
Rossen Stoyanchev
befacf4a35
ParameterContentNegotiationStrategy uses MediaTypeFactory
...
Issue: SPR-15649
2017-07-11 17:54:16 +02:00
Arjen Poutsma
2f9bd6e075
Add local error handling in WebClient.retrieve
...
This commit introduces a way to customize the WebClientExceptions, as
thrown by WebClient.ResponseSpec.bodyTo[Mono|Flux]. The first
customization will override the defaults, additional customizations are
simply tried in order.
Issue: SPR-15724
2017-07-11 16:36:40 +02:00
Rossen Stoyanchev
eb84547894
Fix MockMvc + HttpPutFormContentFilter issue
...
Issue: SPR-15753
2017-07-11 11:43:48 +02:00
Rossen Stoyanchev
c93792b8c9
Allow custom separator in PathContainer
2017-07-11 10:56:19 +02:00
Rossen Stoyanchev
0e370e0703
Separate out URL path parsing in PathContainer
...
PathContainer now has separate parsePath and parseUrlPath methods each
creating PathSegment and UrlPathSegment respectively.
2017-07-11 10:56:19 +02:00
Rossen Stoyanchev
1d201a55db
Refine PathContainer.Segment value representation
...
Segment.value() now returns the actual original path segment value
including path parameters while semicolonContent() is removed.
valueDecoded() is renamed to valueToMatch() to reflect it is the value
for pattern matching which is not only decoded but also has path
parameters removed.
2017-07-11 10:54:42 +02:00
Rossen Stoyanchev
2f17c5f3b6
From static to instance-based PathContainer#subPath
2017-07-11 06:05:36 +02:00
Rossen Stoyanchev
9f7d57f933
Encapsulate choice of URI encoding within RequestPath
...
Currently the URI path is always treated as UTF-8 so we can eliminate
the encoding parameter from RequestPath#parse.
2017-07-11 06:05:36 +02:00
Rossen Stoyanchev
9640cedeae
Removing remaining use of PathPattern with String path
2017-07-07 19:20:36 +02:00
Juergen Hoeller
00f4c36d7a
Nullability fine-tuning (RequestContext, LocaleResolver)
...
Includes page-level JSTL time zone support for JSP tags.
Issue: SPR-15720
Issue: SPR-15746
2017-07-07 18:46:19 +02:00
Arjen Poutsma
e458862849
Reflect recent Reactor changes
2017-07-07 15:24:15 +02:00
Rossen Stoyanchev
e0de7754cc
Polish
2017-07-07 09:44:02 +02:00
Renato Soppelsa
3dd6069578
Add UTF8 problem+json media type constant
...
Issue: SPR-15742
2017-07-07 09:42:50 +02:00
Arjen Poutsma
b0ab84657b
Disable "failOnServerError" in ReactorClientHttpRequest
...
This commit disables the "failOnServerError" feature on the
`HttpClientRequest`, as wrapped by ReactorClientHttpRequest. 5xx errors
are supposed to be dealt with in the WebClient, not in the lower-level
components.
Issue: SPR-15739
2017-07-06 13:37:21 +02:00
Arjen Poutsma
625855c00f
Add comment indicating path segment combining in UriComponents.normalize
...
Issue: SPR-15734
2017-07-06 11:45:13 +02:00
Juergen Hoeller
45d376b6af
Polishing
2017-07-05 10:55:30 +02:00
Brian Clozel
9c93521512
Leverage PathPatternParser in CORS configuration source
...
Previously `UrlBasedCorsConfigurationSource` was relying on
`PathMatcher` implementations for matching incoming request lookup paths
with the configured path patterns for CORS configuration.
This commit replaces the use of `PathMatcher` with a `PathPatternParser`
that parses the string patterns into `PathPattenr` instances and allows
for faster matching against lookup paths.
Issue: SPR-15688
2017-07-04 16:01:18 +02:00
Violeta Georgieva
fd1859c34c
Adapt to the changes in Reactor Netty ClientOptions
...
ClientOptions/HttpClientOptions are now created via Builder
2017-07-04 15:26:29 +02:00
Brian Clozel
baaa84e90f
Include port info in HTTP headers for Netty client
...
This commit adds the port information in the "Host" HTTP request header
for the Netty-based HTTP client.
Issue: SPR-15706
2017-07-04 12:13:06 +02:00
Sebastien Deleuze
7a171c6ae9
Fix Kotlin return types to match @Nullable annotations
2017-07-04 11:27:54 +02:00
Arjen Poutsma
de9196bbdc
Change from flatMap to map
...
Changed main tokenbuffer decoding loop from using flatMap to using map.
2017-07-04 10:51:43 +02:00
Brian Clozel
839b6c18d4
Optimize Flux pipeline in ClientHttpRequest
2017-07-04 10:11:56 +02:00
Arjen Poutsma
2ccbc55ffd
Use PathContainer in web.reactive.function.server
...
This commit uses the newly introduced `PathContainer` and `RequestPath`
support in the functional web framework. It exposes the path container
as property in `ServerRequest`, and uses that in the path-based
`RequestPredicates`.
2017-07-03 13:36:30 +02:00
Sebastien Deleuze
727ca4514a
Stream custom types in Jackson2JsonEncoder
...
Issue: SPR-15727
2017-07-03 10:25:59 +02:00
Sebastien Deleuze
9901c38f9d
Improve logging of DefaultCorsProcessor for rejected headers
...
Issue: SPR-15708
2017-07-03 09:47:43 +02:00
Sebastien Deleuze
1fa8410995
Leverage RFC_1123_DATE_TIME formatter in tests
...
Issue: SPR-15661
2017-07-02 22:33:43 +02:00
Rossen Stoyanchev
15cf9c1d78
Switch to ContainerPath variants in HandlerMapping's
2017-07-01 20:05:17 -04:00
Rossen Stoyanchev
a5e54788cc
Remove PathPatternComparator
...
Direct comparison of a pattern (as a String) to the path does not make
much sense now that we deal with URL encoding through PathContainer
which exposes (safely) decoded path segments.
Removing the PathPatternComparator also means we can keep patterns
pre-sorted instead of sorting them all the time. That probably offsets
any benefits from comparing to the lookup path for direct matches and
patterns are still sorted according to specificity.
2017-06-30 18:19:35 -04:00
Rossen Stoyanchev
850083ca6c
Polish
2017-06-30 18:19:35 -04:00
Rossen Stoyanchev
8581afa621
WebFlux compiles after PathPattern/Container changes
2017-06-30 18:19:35 -04:00
Andy Clement
26448a0ebc
Rework matching to use PathContainer
2017-06-30 18:19:35 -04:00
Rossen Stoyanchev
fc3fcf05fd
Refactor PathSegmentContainer -> PathContainer
...
The new PathContainer represent the path as a series of elements
including separators. This naturally represents leading/trailing
slashes and empty path segments which in turn makes it easier to match
in PathPattern as well as to reconstruct the path.
2017-06-30 18:19:35 -04:00
Violeta Georgieva
5f020d1ee7
Polish - the flag continueProcessing is not needed
2017-06-30 09:59:32 +03:00
Juergen Hoeller
cc74a2891a
@Nullable all the way: null-safety at field level
...
This commits extends nullability declarations to the field level, formalizing the interaction between methods and their underlying fields and therefore avoiding any nullability mismatch.
Issue: SPR-15720
2017-06-30 01:54:16 +02:00
Juergen Hoeller
c4694c3f5c
WebAsyncManager defensively ignores attribute type mismatch
...
Issue: SPR-15709
2017-06-30 01:53:30 +02:00
Rossen Stoyanchev
8f4eb23540
Remove use of Optional in SyncHandlerMethodArgumentResolver
...
... and a couple more protected methods in WebFlux
Issue: SPR-15718
2017-06-29 17:19:48 -04:00
Rossen Stoyanchev
7de6cfa1df
Refactor WebSession#getAttribute options
...
Issue: SPR-15718
2017-06-29 15:23:36 -04:00
Rossen Stoyanchev
9253facf02
Refactor ServerWebExchange#getAttribute options
...
Issue: SPR-15718
2017-06-29 14:55:30 -04:00
Stephane Maldini
cd643704ad
Update to reactor core 3.1.0.B-S with context update for monoSendOperator
...
Explicit typing for older jvm compilation in BodyExtractor
2017-06-29 10:47:28 -07:00
Arjen Poutsma
58a5e7f17b
Proper closing of resources
...
This commit introduces a `doFinally` block that properly signals the
end of input for the non-blocking XML and JSON parsers.
2017-06-29 16:48:53 +02:00
Arjen Poutsma
9d7b8503d0
Delay DataBuffer release until stream is closed
...
This commit changes the release of data buffers from a finally block
into a `doFinally()` lambda on the returned `Flux<XMLEvent>` stream.
Issue: SPR-15707
2017-06-29 16:19:03 +02:00
Stephane Nicoll
b1f06fddd2
Polish
...
Issue: SPR-14528
2017-06-29 10:26:50 +02:00
Arjen Poutsma
31e0e53750
Leverage Jackson non-blocking parser
...
This commit introduces the Jackson2Tokenizer as a replacement for the
JsonObjectDecoder. The latter was dropped because of its complexity, and
hard dependency on Netty's ByteBuf.
The new Jackson2Tokenizer leverages the new non-blocking JSON parser,
using it to parse the incoming data buffers into TokenBuffers, each
token buffer representing one JSON object. As with JsonObjectDecoder,
it also supports streaming individual JSON array elements.
Issue: SPR-14528
2017-06-28 16:19:01 +02:00
Arjen Poutsma
b778f94a07
Made ObjectMapper field private with protected accessor
2017-06-28 16:19:01 +02:00
Rossen Stoyanchev
667437e300
Polish
2017-06-27 18:48:45 -04:00
Sebastien Deleuze
d728d597f2
Add missing license headers in Kotlin files
2017-06-27 14:39:26 +02:00
Juergen Hoeller
87430f3cd3
ListenableFuture provides CompletableFuture adaptation via completable()
...
Issue: SPR-15696
2017-06-27 00:43:37 +02:00
Rossen Stoyanchev
5b8f7f503f
Deprecate adapter classes for async interceptors
2017-06-26 15:34:51 -04:00
Rossen Stoyanchev
eb0479dee8
Polish
2017-06-26 14:50:11 -04:00
Violeta Georgieva
e0678ba583
Add onError callback to DeferredResult
...
Issue: SPR-15614
2017-06-26 14:12:56 -04:00
Juergen Hoeller
098ff6f0f8
Compatibility with JDK 9 release candidate build (175)
...
Includes upgrade to Objenesis 2.6, Gradle 3.5.1, RxJava 2.1.1, JSON Binding API 1.0 final.
Issue: SPR-15686
Issue: SPR-15600
2017-06-26 18:58:59 +02:00
Sebastien Deleuze
ba3a12e4cc
Use fixed GMT time-zone for WebSession Clock
...
Issue: SPR-15675
2017-06-26 18:01:21 +02:00
Rossen Stoyanchev
97390fd939
Polish
2017-06-23 17:05:57 -04:00
Rossen Stoyanchev
8fc3b3bc37
Add WebTestClientConfigurer
...
Issue: SPR-15674
2017-06-23 14:45:46 -04:00
Rossen Stoyanchev
c37c59f578
Consumer methods for WebHttpHandlerBuilder
...
Replace the more limited List-based methods to add filtes and exception
handlers with Consumer<List<?>> variants.
2017-06-23 07:12:10 -04:00
Sebastien Deleuze
5c1d8c7c59
Leverage ZonedDateTime in HttpHeaders
...
This commit introduces 2 new public methods in HttpHeaders in order
to leverage Java 8 ZonedDateTime in addition to the existing long
(with GMT time zone implied) variants:
- ZonedDateTime getFirstZonedDateTime(String headerName)
- void setZonedDateTime(String headerName, ZonedDateTime date)
This commit also leverages Java 8 thread-safe DateTimeFormatter for
HttpHeader implementation instead of SimpleDateFormat. As a consequence
of the usage of DateTimeFormatter.RFC_1123_DATE_TIME, HTTP date header
serialization could change slightly for single digit days from for
example "Thu, 01 Jan 1970 00:00:00 GMT" to
"Thu, 1 Jan 1970 00:00:00 GMT".
Issue: SPR-15661
2017-06-23 00:15:51 +02:00
Arjen Poutsma
0a4d3c14db
Jackson2JsonDecoder should support empty JSON array
...
Before this commit, the Jackson2JsonDecoder was not able to decode an
empty JSON array (`[]`). After this commit, it is.
Issue: SPR-15685
2017-06-21 11:14:34 +02:00
Sebastien Deleuze
1e04cdfa7e
Add CorsWebFilter
...
This new WebFilter implementation is designed to allow initial
CORS support when using WebFlux functional API. More high-level
API may be introduced later.
Issue: SPR-15567
2017-06-21 10:50:09 +02:00
Sebastien Deleuze
59e90943e4
Rename CorsProcessor#processRequest to process
2017-06-21 10:50:09 +02:00
Juergen Hoeller
03133630cb
Missing @Nullable annotations in WebFlux, in particular around locale resolution
...
Issue: SPR-15036
Issue: SPR-15540
2017-06-20 18:08:42 +02:00
Juergen Hoeller
535103cd52
Fine-tune HTTP/RMI Invoker exception handling
...
Issue: SPR-15684
2017-06-20 16:50:35 +02:00
Juergen Hoeller
c244f33f84
Polishing
2017-06-20 16:50:02 +02:00
Sebastien Deleuze
38db64e0d8
Warn when Jackson + Kotlin are used without jackson-module-kotlin
...
Issue: SPR-15658
2017-06-17 00:07:59 +02:00
Rossen Stoyanchev
4a21fb27fc
Fix root path test and add more test cases
2017-06-15 16:14:12 -04:00
Rossen Stoyanchev
67e482aaf8
Fix ROOT_PATH constant to match recent changes
...
"/" should be 0 segments, isAbsolute=true, hasTrailingSlash=false
2017-06-15 15:40:32 -04:00
Rossen Stoyanchev
53e8ebe6a6
Fix failing test (after previous commit)
2017-06-15 11:07:39 -04:00
Rossen Stoyanchev
97917aa57d
Add PathSegmentContainer subPath extracting method
2017-06-14 17:44:56 -04:00
Rossen Stoyanchev
1018bf771b
Separate DefaultRequestPath/DefaultPathSegmentContainer
2017-06-14 17:44:56 -04:00
Rossen Stoyanchev
97a97f9bba
RequestPath improvements
...
Static parse methods on PathSegmentContainer and PathSegment plus:
isEmpty() on PathSegmentContainer and PathSegment
isAbsolute() and hasTrailingSlash() on PathSegmentContainer
char[] alternative for valueDecoded() on PathSegment
2017-06-14 17:44:56 -04:00
Juergen Hoeller
7b5f96c804
HttpComponentsAsyncClientHttpRequestFactory supports plain HttpAsyncClient as well
...
Issue: SPR-15664
2017-06-14 17:10:44 +02:00
Juergen Hoeller
137fc48cc2
Polishing
2017-06-13 20:59:26 +02:00
Sebastien Deleuze
97909f2258
Support date properties in Content-Disposition HTTP header
...
Issue: SPR-15555
2017-06-13 15:17:48 +02:00
Sebastien Deleuze
e0e6736bc5
Introduce LocaleContextResolver in WebFlux
...
This commit introduces LocaleContextResolver interface, which is used
at ServerWebExchange level to resolve Locale, TimeZone and other i18n
related informations.
It follows Spring MVC locale resolution patterns with a few differences:
- Only LocaleContextResolver is supported since LocaleResolver is less
flexible
- Support is implemented in the org.springframework.web.server.i18n
package of spring-web module rather than in spring-webflux in order
to be able to leverage it at ServerWebExchange level
2 implementations are provided:
- FixedLocaleContextResolver
- AcceptHeaderLocaleContextResolver
It can be configured with both functional or annotation-based APIs.
Issue: SPR-15036
2017-06-13 15:10:18 +02:00
Juergen Hoeller
a0cea9a86f
Polishing
2017-06-13 14:20:33 +02:00
Juergen Hoeller
779deb0fa7
Cleanup of duplicate semicolons
...
Issue: SPR-15654
2017-06-13 11:38:05 +02:00
Stephane Nicoll
58242f2249
Polish
2017-06-13 10:13:14 +02:00
Stephane Nicoll
fc64b8040f
Polish "Replace relevant code with lambda"
...
Closes gh-1454
2017-06-13 09:42:20 +02:00
diguage
4b1478d830
Replace relevant code with lambda
...
See gh-1454
2017-06-13 08:55:38 +02:00
Brian Clozel
233c15b80e
Add PathPatternRegistry for handler mapping matching
...
Previously `HandlerMapping` implementation were heavily relying on
`String` path patterns, `PathMatcher` implementations and dedicated maps
for matching incoming request URL to an actual request handler.
This commit adds the `PathPatternRegistry` that holds `PathPattern`
instances and the associated request handler — matching results are then
shared as `PathMatchResult` instances. `AbstractUrlHandlerMapping` will
use this registry directly, but other components dealing with request
matching (like `PatternsRequestCondition`) will directly use ordered
`PathPattern` collections since ordering is important there.
This opens the door for faster request matching and simplifies the
design of this part.
Issue: SPR-15608
2017-06-12 18:53:05 +02:00
Brian Clozel
1f0d107d37
Enable trailing slash matching by default
...
This commit enables trailing slash matching in `PathPatternParser` by
default - this mirrors the default configuration in `PathMatcher`
implementations in MVC.
2017-06-12 16:17:18 +02:00
Juergen Hoeller
3ae84d6dd8
Consistent support for Charset/StandardCharsets in UriUtils etc
...
Issue: SPR-15613
2017-06-12 15:51:45 +02:00
diguage
2efa06237a
Use Map#forEach instead of Map#entrySet#forEach
...
See gh-1449
2017-06-12 14:37:33 +02:00
Arjen Poutsma
9bf82dc18f
Add addAll(MultiValueMap)
...
This commit introduces a new method for MultiValueMap: addAll, which
adds all values of a given map (cf putAll, which replaces existing
values).
2017-06-12 14:12:12 +02:00
diguage
c1d44d9a34
Use the diamond syntax
...
Closes gh-1450
2017-06-12 09:19:06 +02:00
Rossen Stoyanchev
38a12ed4ba
Expose RequestPath in ServerHttpRequest
...
The new structured getPath() method replaces the existing
getContextPath() + getPathWithinApplication().
Issue: SPR-15648
2017-06-11 21:59:24 -04:00
Rossen Stoyanchev
2d17411ec4
Add RequestPath to http/server/reactive
...
Issue: SPR-15648
2017-06-11 21:59:24 -04:00
Juergen Hoeller
e2e0410570
Method-level javadoc on XmlReaderContext etc
2017-06-11 12:03:05 +02:00
Rossen Stoyanchev
b65bfdb979
Remove HttpRequestPathHelper
...
The use of the undecoded URL path by default and the removal of suffix
pattern matching effectively means HttpRequestPathHelper is no longer
needed.
Issue: SPR-15640, SPR-15639
2017-06-09 16:15:38 -04:00
Rossen Stoyanchev
95196e1aee
Use undecoded pathWithinApplication in WebFlux
...
Introduce pathWithinApplication() in ServerHttpRequest and use it for
request mapping purposes instead of LookupPath.
In turn this means that for request mapping purposes:
1) the path is not decoded
2) suffix pattern matching is not supported
Issue: SPR-15640
2017-06-09 16:15:38 -04:00
Andy Clement
ff2af660cf
PathPatternParser encodes patterns as it parses them
...
Before this commit there was no special handling for URL encoding
of the path pattern string coming into the path pattern parser. No
assumptions were made about it being in an encoded form or not.
With this change it is assumed incoming path patterns are not
encoded and as part of parsing the parser builds PathPattern
objects that include encoded elements. For example parsing "/f o"
will create a path pattern of the form "/f%20o". In this form
it can then be used to match against encoded paths.
Handling encoded characters is not trivial and has resulted in
some loss in matching speed but care has been taken to
avoid unnecessary creation of additional heap objects. When
matching variables the variable values are return in a
decoded form. It is hoped the speed can be recovered, at least
for the common case of non-encoded incoming paths.
Issue: SPR-15640
2017-06-09 13:08:07 -07:00
Sebastien Deleuze
86580b2358
Polishing
2017-06-09 01:49:56 +03:00
Sebastien Deleuze
8579ae66fc
Add comprehensive tests of Kotlin extensions
...
This commit also removes extensions hidden by Java API (varargs).
2017-06-09 01:01:16 +03:00
Juergen Hoeller
fd53d2a51a
Consistent use of @Nullable in spring-test
...
This commit also removes nullability from two common spots: ResolvableType.getType() and TargetSource.getTarget(), both of which are never effectively null with any regular implementation. For such scenarios, a non-null empty type/target is the cleaner contract.
Issue: SPR-15540
2017-06-08 22:52:59 +02:00
Juergen Hoeller
7eaedf2916
Debug-level log entry for any Jackson exception during canConvert
...
Issue: SPR-15582
2017-06-07 18:33:19 +02:00
Juergen Hoeller
f813712f5b
Consistent use of @Nullable across the codebase (even for internals)
...
Beyond just formally declaring the current behavior, this revision actually enforces non-null behavior in selected signatures now, not tolerating null values anymore when not explicitly documented. It also changes some utility methods with historic null-in/null-out tolerance towards enforced non-null return values, making them a proper citizen in non-null assignments.
Some issues are left as to-do: in particular a thorough revision of spring-test, and a few tests with unclear failures (ignored as "TODO: NULLABLE") to be sorted out in a follow-up commit.
Issue: SPR-15540
2017-06-07 14:19:15 +02:00
Andy Clement
77576ed6fe
Fix PathPattern comparator result for wildcard suffix usage
...
Without this change the comparator thinks "/{foo}"
is more specific than "/{foo}.*". The minimal fix here
to address it is to copy what the AntPathMatcher
comparator does which is to consider '.*' as *not*
a usage of a wildcard. See PatternInfo#initCounters()
for the AntPathMatcher handling of this.
This change ensures the PathPattern comparator now produces
the expected result but suffix usage in general needs more
thought at some point.
Issue: SPR-15597
2017-06-02 15:40:16 -07:00
Rossen Stoyanchev
4244df740b
Consolidate matrix vars parsing in HttpRequestPathHelper
...
Restore matrix variable parsing code not resorting to the use of
WebUtils which brings Servlet API dependencies with it.
Instead the parsing logic is now exposed through HttpRequestPathHelper
which already contained the decoding logic and also the knowledge of
whether to decode the parsed variables or not.
Issue: SPR-15397
2017-06-02 15:52:44 -04:00
Rossen Stoyanchev
d2685dfe67
Add static factory/accessor methods to LookupPath
...
Issue: SPR-15397
2017-06-02 15:15:42 -04:00
Rossen Stoyanchev
a7020e419a
Polish use of LookupPath
2017-06-02 14:46:34 -04:00
Brian Clozel
74fb2645fd
Fix LookupPath parsing
...
Issue: SPR-15397
2017-06-02 09:26:35 +02:00
Rossen Stoyanchev
4d52590964
Improve docs on forwarded headers
...
Issue: SPR-15612
2017-06-01 22:36:12 -04:00
Rossen Stoyanchev
895fa2ea7b
Add removeOnly mode to ForwardedHeaderFilter
...
Issue: SPR-15610
2017-06-01 15:39:19 -04:00
Brian Clozel
cf1bc81199
Introduce LookupPath in WebFlux request routing
...
This commit adds the `LookupPath` class that contains the full
request path relative to the web context; the application can
get from it various information, including the file extension
and path parameters (if any).
Since that operation is done multiple times for each request, this
object is stored as an attribute at the `ServerWebExchange` level.
Issue: SPR-15397
2017-06-01 18:31:04 +02:00
Brian Clozel
0557404715
Throw exception for illegal PathMatch configurations
...
With the new `ParsingPathMatcher` implementation, new patterns are now
allowed, such as `"/foo/{*bar}". The `"{*bar}"` segment will capture
everything until the end of the given path. Adding other elements after
that segment is illegal and will throw exceptions.
One can configure on a `PathMatchConfigurer` various options like
`useTrailingSlashMatch` and `useSuffixPatternMatch`; those options, when
enabled, will try to append suffixes like `".*"` and `"/"` to existing
path patterns. In case of a "capture the rest" pattern segment, those
options won't be honored.
This is why this commit ensures that an exception is thrown at the start
of the application if an illegal configuration is applied to the
`PathMatchConfigurer`.
Issue: SPR-15303, SPR-15558
2017-06-01 18:30:18 +02:00
Rossen Stoyanchev
b93579a43e
Polish
2017-06-01 09:28:55 -04:00
Violeta Georgieva
e8d2c6c74b
AbstractListenerWriteProcessor/AbstractListenerWriteFlushProcessor error handling
...
When an exception happens while writing/flushing, the exception handling
for Servlet 3.1 based implementation will happen when
WriteListener#onError and AsyncListener#onError events are received
2017-06-01 09:19:45 -04:00
Violeta Georgieva
23a052c160
Clear the buffer provided by Undertow before reading the request
...
When reading more that once for a given request, the position/limit of
the buffer provided by Undertow should be reset in order to use the
full capacity of the buffer.
2017-06-01 15:14:25 +03:00
Arjen Poutsma
7894efdd1e
Allow for null values in ExtractingResponseErrorHandler.hasError
...
This commit fixes the implementation of
ExtractingResponseErrorHandler.hasError to allow for null values,
indicating an override of the behavior inherited from
DefaultResponseErrorHandler.
Issue: SPR-15544
2017-06-01 11:44:08 +02:00
Rossen Stoyanchev
e81651b657
Ignore empty Accept-Language header value
...
Issue: SPR-15603
2017-05-31 21:10:08 -04:00
Sebastien Deleuze
1f28825f9d
Add more @Nullable parameters based on null usage
...
Issue: SPR-15540
2017-05-31 21:42:23 +02:00
Sebastien Deleuze
c3e6afb879
Improve null-safety to fix some Spring Boot warnings
...
Issue: SPR-15540
2017-05-31 17:14:49 +02:00
Sebastien Deleuze
b47d713e14
Add missing @Nullable annotations on parameters
...
Issue: SPR-15540
2017-05-31 16:56:08 +02:00
Rossen Stoyanchev
5dcfd84d3b
MockServerHttpRequest and Response set cookie headers
...
Issue: SPR-15522
2017-05-30 11:00:15 -04:00
Rossen Stoyanchev
67bcef22e4
Polish MockServerHttpRequest|Response
2017-05-30 11:00:15 -04:00
Arjen Poutsma
4b0dedc45e
Add ExtractingResponseErrorHandler
...
This commit introduces ExtractingResponseErrorHandler: an alternative
ResponseErrorHandler that uses `HttpMessageConverter`s to convert HTTP
error responses to `RestClientException`.
Issue: SPR-15544
2017-05-30 13:17:25 +02:00
Rossen Stoyanchev
1383ad5f91
Reasonable defaults for MultipartHttpMessageWriter
...
MultipartHttpMessageWriter is now configured to handle JSON and XML
out of the box.
2017-05-27 20:41:07 -04:00
Rossen Stoyanchev
03b344b579
Refactor DefaultCodecs implementation
...
Simplify the internals of the DefaultCodecs implementation favoring
explicit fields per override vs a generic list of readers and writers
for overrides.
2017-05-27 20:41:07 -04:00
Rossen Stoyanchev
1328c8f46e
Simplify CodecConfigurer related type names
...
Essentially drop "Configurer" suffix from nested interfaces.
2017-05-27 20:41:07 -04:00
Sebastien Deleuze
87598f48e4
Introduce null-safety of Spring Framework API
...
This commit introduces 2 new @Nullable and @NonNullApi
annotations that leverage JSR 305 (dormant but available via
Findbugs jsr305 dependency and already used by libraries
like OkHttp) meta-annotations to specify explicitly
null-safety of Spring Framework parameters and return values.
In order to avoid adding too much annotations, the
default is set at package level with @NonNullApi and
@Nullable annotations are added when needed at parameter or
return value level. These annotations are intended to be used
on Spring Framework itself but also by other Spring projects.
@Nullable annotations have been introduced based on Javadoc
and search of patterns like "return null;". It is expected that
nullability of Spring Framework API will be polished with
complementary commits.
In practice, this will make the whole Spring Framework API
null-safe for Kotlin projects (when KT-10942 will be fixed)
since Kotlin will be able to leverage these annotations to
know if a parameter or a return value is nullable or not. But
this is also useful for Java developers as well since IntelliJ
IDEA, for example, also understands these annotations to
generate warnings when unsafe nullable usages are detected.
Issue: SPR-15540
2017-05-27 08:57:01 +02:00
Rossen Stoyanchev
2d37c966b2
Support for decoding @RequestPart content
...
Issue: SPR-15515
2017-05-26 18:03:01 -04:00
Rossen Stoyanchev
be0b671191
Upgrade nio-multipart-parser to 1.1.0
...
Issue: SPR-15515
2017-05-26 09:19:10 -04:00
Juergen Hoeller
e7b41bc30a
Use Apache Johnzon 1.1 for JSON-B integration tests
...
Issue: SPR-15590
2017-05-25 23:37:14 +02:00
Rossen Stoyanchev
805fcc6a05
ResponseErrorHandler provides access to URI and method
...
Issue: SPR-15511
2017-05-24 15:34:40 -04:00
Arjen Poutsma
630fc194f0
Add HttpRequest.getMethodValue
...
This commit introduces a new method in HttpRequest:
`String getMethodValue`, which returns the HTTP method as a String.
Furthermore, HttpRequest.getMethod() has been given a default
implementation using this String value in combination with
`HttpMethod.resolve`.
Issue: SPR-15545
2017-05-24 16:36:58 +02:00
Juergen Hoeller
0183576215
Polishing
2017-05-23 22:05:22 +02:00
Juergen Hoeller
db69a082d9
Avoid java.util.Optional signatures for simple field access
...
Issue: SPR-15576
2017-05-23 22:05:15 +02:00
Juergen Hoeller
ce5e2b94c4
ProtobufJsonFormatHttpMessageConverter for configurable JSON processing
...
Issue: SPR-15550
2017-05-23 21:59:23 +02:00
Juergen Hoeller
113f0fb13f
Javadoc suggests Jackson 2.9
...
Issue: SPR-14925
2017-05-23 21:59:16 +02:00
Andrey Kaipov
9c226aa742
Minor typo fix: form -> from
...
Closes gh-1411
2017-05-20 14:49:54 +02:00
Rossen Stoyanchev
11075f12bc
Fix URI parsing in Reactor Netty request
...
Issue: SPR-15560
2017-05-19 21:47:27 -04:00
Juergen Hoeller
67881a5726
Polish PathPattern parser (including package change to web.util.pattern)
...
Issue: SPR-15531
2017-05-17 17:40:25 +02:00
Juergen Hoeller
eaac348c05
Close InputStreams in writeResourceRegionCollection (analogous to writeResourceRegion)
...
Issue: SPR-15559
2017-05-17 14:34:50 +02:00
Rossen Stoyanchev
5ac7955de9
More qualified "request-id" header in WebTestClient
...
Issue: SPR-15501
2017-05-15 15:52:50 -04:00
Juergen Hoeller
f985f71daf
Polishing
2017-05-12 12:50:17 +02:00
Sebastien Deleuze
285fa1cc2c
Fix typos in Kotlin extensions documentation
2017-05-10 17:22:27 +02:00
Arjen Poutsma
b649041976
Add ServerHttpResponse.addCookie method
...
This commit adds a `addCookie(ResponseCookie)` method to the reactive
`ServerHttpResponse` interface.
Issue: SPR-15523
2017-05-09 10:18:39 +02:00
Rossen Stoyanchev
add1305252
Re-add vararg options in WebHttpHandlerBuilder
...
WebHttpHandlerBuilder is low level not expected to appear frequently
but they might be repeated more in tests (e.g. of WebFilter's).
Issuse: SPR-15499
2017-05-08 15:50:27 -04:00
Rossen Stoyanchev
459457e1aa
WebFilterChain delegation nested in Mono.defer()
...
Issue: SPR-15520
2017-05-08 15:36:31 -04:00
Rossen Stoyanchev
47d6e4a332
Immutable DefaultWebFilterChain
...
Issue: SPR-15517
2017-05-08 15:04:38 -04:00
Juergen Hoeller
5497416c2d
Polishing
2017-05-08 09:10:36 +02:00
Juergen Hoeller
f25c6ba9bc
Polishing
2017-05-07 22:59:25 +02:00
Juergen Hoeller
25aef4d3cc
ResponseStatusException reason is optional (with lazily constructed message)
...
Issue: SPR-15524
2017-05-06 12:53:03 +02:00
Juergen Hoeller
39f8bd663e
Polishing
2017-05-05 23:19:08 +02:00
Juergen Hoeller
4fdd85324d
Aligned exception handling in Jackson and JAXB codecs
...
Issue: SPR-15516
2017-05-05 23:19:01 +02:00
Rossen Stoyanchev
4d962a1793
Remove HttpStatus from HttpMessageConversionException
...
HttpMessageConverter's are client and server and arguably shouldn't
contain a server-side concept such a response status.
The status field is recent, it was added to differentiate 400 vs 500
errors with Jackson 2.9+ but there is no need for it since the same
distinction is reflected in raising an HttpMessageNotReadableException
vs a general HttpMessageConversionException.
Issue: SPR-15516
2017-05-05 14:44:08 -04:00
Rossen Stoyanchev
83e0e1604a
Refine encoding/decoding exception handling
...
Starting with removing a package cycle on the use of
ResponseStatusException in the codec package, this commit generally
refines codec exception handling.
The new [Encoding|Decoding]Exception mirror the existing
HttpMessageNot[Readable|Writable]Exception and are used similarly
especially to differentiate betwen 400 and 500 errors when parsing
server request body content.
The commit also aligns some of the exception handling of JSON and XML
on the WebFlux side with that on the Spring MVC side.
Issue: SPR-15516
2017-05-05 14:29:43 -04:00
Rossen Stoyanchev
d7e54cea84
Test commit
2017-05-05 09:41:54 -04:00
Rossen Stoyanchev
8231812a3c
Jackson Encoder/Decoder accept custom MimeType's
...
Issue: SPR-15474
2017-05-04 18:05:55 -04:00
Rossen Stoyanchev
afa1c93585
Fix error in mock server test code
2017-05-04 17:24:46 -04:00
Juergen Hoeller
652266bcc2
Polishing
2017-05-04 22:27:36 +02:00
Rossen Stoyanchev
75117f42b8
Use the configured charset for part headers
...
This comment extends the use of the charset property in
FormHttpMessageConverter to also include multipart headers with a
default of UTF-8.
We now also set the charset parameter of the "Content-Type" header to
indicate to the server side how to decode correctly.
Issue: SPR-15205
2017-05-04 15:59:54 -04:00
Rossen Stoyanchev
bda2723933
Correct charset determination in Synchronoss reader
2017-05-04 13:30:56 -04:00
Rossen Stoyanchev
bb744574e5
Remove optional javax.mail dependency from WebFlux
...
The MultipartHttpMessageWriter now directly encodes part header values
defaulting to UTF-8 and also specifies the charset in the
Content-Type header for the entire request.
This should work with something commonly used like Apache Commons
FileUpload which checks request.getCharacterEncoding() and uses it
for reading headers.
2017-05-04 13:12:44 -04:00
Rossen Stoyanchev
a56f735edd
Polish
2017-05-04 12:25:19 -04:00
Rossen Stoyanchev
ac1db169a4
Drop "get" prefix from Part accessor methods
2017-05-04 10:13:16 -04:00
Rossen Stoyanchev
6f3051c677
Support for @RequestPart with reactive type wrapper
...
Issue: SPR-14546
2017-05-03 23:03:47 -04:00
Rossen Stoyanchev
fc7bededd0
Support data binding for multipart requests in WebFlux
...
Issue: SPR-14546
2017-05-03 22:36:04 -04:00
Rossen Stoyanchev
b5089ac092
Support @RequestBody Flux<Part> in WebFlux
...
This commit turns the Synchronoss NIO Multipart HttpMessageReader into
a reader of Flux<Part> and creates a separate reader that aggregates
the parts into a MultiValueMap<String, Part>.
Issue: SPR-14546
2017-05-03 18:46:41 -04:00
Arjen Poutsma
cf7dfc7b17
Properly close channel in SynchronossPart
...
This commit properly closes the opened channels in the SynchronossPart,
and also makes sure that the entire contents is copied, not just the
first batch.
2017-05-03 14:51:22 +02:00
Juergen Hoeller
9d8e9cf243
Common root cause introspection algorithm in NestedExceptionUtils
...
Issue: SPR-15510
2017-05-03 11:31:28 +02:00
Rossen Stoyanchev
056284b407
Polish
2017-05-02 16:58:19 -04:00
Gregory Vandenbroucke
ec55e429f0
Full "Forwarded" header support including port number
...
Issue: SPR-15504
2017-05-02 16:47:32 -04:00
Rossen Stoyanchev
2ccf78743a
Move 500 error handling to HttpWebHandlerAdapter
...
Issue: SPR-15506
2017-05-02 16:44:37 -04:00
Rossen Stoyanchev
1881727b37
Remove ServerWebExchange#getRequestParams
...
Issue: SPR-15508
2017-05-02 16:09:55 -04:00
Juergen Hoeller
7f19e57d9d
Polishing
2017-05-02 21:38:09 +02:00
Juergen Hoeller
b709c77329
Multipart file tests reliably pass on Windows as well
...
Issue: SPR-14546
2017-05-02 21:26:31 +02:00
Stephane Nicoll
3b8b3502a8
Update copyright header
2017-05-02 16:39:28 +02:00
Phillip Webb
90477b40a4
Defer Charset.availableCharsets() call
...
Change the `StringHttpMessageConverter` to defer calling
Charset.availableCharsets() until absolutely necessary to help improve
startup times.
Issue: SPR-15502
2017-05-02 16:39:04 +02:00
Rossen Stoyanchev
2390748fd7
WebFlux multpart support polish + minor refactoring
2017-05-01 18:00:08 -04:00
Sebastien Deleuze
4bfd04b3c5
Add multipart support to ServerWebExchange
...
Issue: SPR-14546
2017-04-28 16:42:23 +02:00
Sebastien Deleuze
8e272bc5b0
Expose ServerCodecConfigurer as a bean
...
With this commit, ServerCodecConfigurer is now exposed as a bean in
order to be provided to DefaultServerWebExchange via
WebHttpHandlerBuilder and HttpWebHandlerAdapter. This allows
DefaultServerWebExchange to get configured codecs for reading form or
multipart requests.
Issue: SPR-14546
2017-04-28 16:42:23 +02:00
Sebastien Deleuze
a712c19661
Add multipart support to WebFlux functional API
...
Issue: SPR-14546
2017-04-28 16:42:23 +02:00
Sebastien Deleuze
852dc84d38
Add MultipartHttpMessageWriter
...
This commit adds a reactive HttpMessageWriter that allows
to write multipart HTML forms with multipart/form-data
media type.
Issue: SPR-14546
2017-04-28 16:42:23 +02:00
Sebastien Deleuze
23e4dd6d3d
Add reading reactive multipart request support
...
This commit introduces reactive multipart support by adding a new
MultipartHttpMessageReader interface (with default methods) and a
SynchronossMultipartHttpMessageReader implementation based on
the Synchronoss NIO Multipart implementation
(https://github.com/synchronoss/nio-multipart ).
Issue: SPR-14546
2017-04-28 16:42:23 +02:00
Juergen Hoeller
1ea54eb2c6
GenericFilterBean lazily initializes its default environment
...
Alignment with HttpServletBean; consistent use of EnvironmentCapable.
Issue: SPR-15469
2017-04-27 21:38:30 +02:00
Juergen Hoeller
c668d9a473
Polishing
2017-04-26 18:20:19 +02:00
Rossen Stoyanchev
4f3db9b822
Disable Servlet async request timeout in WebFlux
...
Issue: SPR-15463
2017-04-25 16:28:25 -04:00
Rossen Stoyanchev
6e71828a35
Add space before cookie attributes
...
According to RFC-6265 that there should be a space between the ; and
the attribute name, i.e. the header should be something like
name=value; Domain=localhost; HttpOnly rather than
name=value;Domain=localhost;HttpOnly
Issue: SPR-15225
2017-04-25 16:07:25 -04:00
Violeta Georgieva
4d058ceef4
Resume Undertow writes only when data is available
2017-04-24 11:17:37 +02:00
Rossen Stoyanchev
cc102c2fcd
Properly handle Flux<?> and Flux<Object> in WebFlux
...
Issue: SPR-15464
2017-04-20 09:19:38 -04:00
Arjen Poutsma
03861df0ba
Polishing
2017-04-20 11:02:02 +02:00
Andy Clement
cd86558811
Support optional trailing separator on path pattern matching
...
This commit adds the ability for path patterns to automatically
match a trailing separator (so there is no need to add two
variants of a pattern, one with and one without). This behaviour
is currently turned off but a simple tweak in PathPatternParser
can make it the default. If made default other parts of Spring
may need altering (simplifying hopefully) to cope with this.
Issue: SPR-15260
2017-04-19 11:59:21 -07:00
Andy Clement
316a680577
Modify getPathRemaining to return remaining path and bound variables
...
Without this change it was necessary to call getPathRemaining and
then chop up the path and make a call to matchAndExtract to get the
bound variables for the path part that matched. With this change
this is all done in the call to getPathRemaining which returns
an object holding the remaining path and the bound variables.
Issue: SPR-15419
2017-04-18 16:17:44 -07:00
Brian Clozel
88f8df4dce
Update Mono.then(Supplier) deprecated calls
...
Reactor Core has now deprecated the `Mono.then(Supplier)`.
This is now replaced with `Mono.then(Mono.defer(Supplier))`.
2017-04-18 21:11:19 +02:00
Rossen Stoyanchev
3efb76c852
Jackson encoder skips String.class
...
Jackson2Encoder explicitly disables String from the supported types
consistent with the same change on the decoder side:
0662dbf044
Issue: SPR-15443
2017-04-14 17:21:26 -04:00
Brian Clozel
a8d785b87f
Move RxNetty support to test scope
...
The RxNetty runtime support is not meant to be officially supported and
should be restricted to testing purposes only.
Issue: SPR-15444
2017-04-14 19:18:42 +02:00
Sebastien Deleuze
005e85b0f5
Update to latest Reactor 3.1 API changes
...
Issue: SPR-15318
2017-04-14 13:18:20 +02:00
Juergen Hoeller
0b118322b0
Polishing
2017-04-13 16:17:05 +02:00
Sebastien Deleuze
e3fae2716e
Rename Mono#otherwise[Empty] to switch[onError/IfEmpty]
...
Issue: SPR-15318
2017-04-13 15:36:34 +02:00
Arjen Poutsma
908d16904f
Refactor CodecConfigurer
...
This commit refactors the CodecConfigurer, with it's subtypes
ServerCodecConfigurer and ClientCodecConfigurerTests, into interfaces
instead of classes.
2017-04-13 11:02:17 +02:00
Rossen Stoyanchev
fce8ed62ce
Update @ControllerAdvice Javadoc
...
Issue: SPR-15432
2017-04-12 17:51:36 -04:00
Juergen Hoeller
9e55e8f8a6
Polishing
2017-04-12 18:07:14 +02:00
Sebastien Deleuze
4d9144132e
Upgrade to Reactor Core 3.1
...
Issue: SPR-15318
2017-04-11 18:13:04 +02:00
Rossen Stoyanchev
043c7070e3
Polish default content type change
...
Issue: SPR-15367
2017-04-11 11:54:40 -04:00
Ryan O'Meara
4a890226ea
Support for multiple default content types
...
Enhance FixedContentNegotiationStrategy and places where it is exposed
to also accept a list of media types.
Issue: SPR-15367
2017-04-11 11:54:40 -04:00
Juergen Hoeller
7f162a033b
AbstractGenericHttpMessageConverter calls two-arg variants of canRead/canWrite again
...
Issue: SPR-15434
2017-04-11 15:37:56 +02:00
Sebastien Deleuze
9a501fac46
Fix failing tests
...
Issue: SPR-14925
2017-04-11 14:00:31 +02:00
Rossen Stoyanchev
e33f603f68
Revert (recently added) cookie set header flags
...
Issue: SPR-15225
2017-04-11 07:19:07 -04:00
Rossen Stoyanchev
5d92a85fcb
Mock Servlet request/response support Accept-Language
...
Issue: SPR-15209
2017-04-11 07:19:07 -04:00
Rossen Stoyanchev
3393c10d79
Refactor HttpHeaders "Accept-Language" with Locale
2017-04-11 07:19:07 -04:00
Sebastien Deleuze
23e35c0e1a
Handle Jackson InvalidDefinitionException with 5xx status in WebFlux
...
Issue: SPR-14925
2017-04-11 12:39:09 +02:00
Arjen Poutsma
870e1897b6
Javadoc
2017-04-11 11:01:27 +02:00
Arjen Poutsma
82e864b217
Polishing
...
- Renamed `defaultCodec` to `defaultCodecs`, and `customCodec` to
`customCodecs`
- Added `@Override` annotations where necessary
- Fixed non-parameterized usage for parameterized types.
2017-04-11 11:01:27 +02:00
Rossen Stoyanchev
e5fc40a9de
MockHttpSevlet[Request|Response] set cookie headers
...
Issue: SPR-15225
2017-04-10 17:37:11 -04:00
Rob Winch
e92e65f8c3
Fix ForwardedHeaderFilter preserves semicolon content
...
Previously a requestURI that contained ';' would have the value incorrectly stripped out when using
ForwardedHeaderFilter.
This commit ensures that the ';' is preserved when using ForwardedHeaderFilter.
Issue: SPR-15428
2017-04-10 09:50:44 -05:00
Rob Winch
96bfe7d197
Polish
...
Group all contextPath tests together
2017-04-10 09:50:44 -05:00
Rob Winch
1f289b7580
Add test to ensure ForwardedHeaderFilter contextPath preserves encoding
...
Add a test to verify that the ForwardedHeaderFilter contextPath override preserves URL encoding
as it should.
Issue SPR-15422
2017-04-10 09:50:43 -05:00
Rob Winch
84db06ec0b
ForwardedHeaderFilter requestURI preserve encoding
...
Previously ForwardedHeaderFilter would override the requestURI with a URL decoded value. This would cause
problems when using a URL encoded requestURI since downstream Filters would not see the URL encoded
value as they should.
This commit resolves this issue by ensuring that the requestURI is properly encoded.
Issues SPR-15422
2017-04-10 09:50:43 -05:00
Sebastien Deleuze
d098a4b96b
Make CodecException handling consistent
...
This commit makes CodecException handling consistent between functional
and annotation-based APIs. It now returns by default 4xx status code
for decoding error and 5xx for encoding error + print the error reason
in logs without the full stack trace in both variants.
Issue: SPR-15355
2017-04-10 16:07:56 +02:00
Juergen Hoeller
15b5dd9f12
Polishing
2017-04-10 15:36:45 +02:00
Juergen Hoeller
cf306037b5
Support for JSON Binding API (JSON-B)
...
Issue: SPR-14923
2017-04-10 15:36:38 +02:00
Juergen Hoeller
e5fdd4cd1d
Extracted AbstractJsonHttpMessageConverter from GsonHttpMessageConverter
...
Generic type resolution algorithm in GenericTypeResolver shared between Jackson and Gson.
Issue: SPR-15381
2017-04-10 15:36:29 +02:00
Juergen Hoeller
5986f881d0
HandlerMethod evaluates ResponseStatus annotation for early caching
...
Issue: SPR-15227
2017-04-08 15:56:05 +02:00
Violeta Georgieva
ff03b4a4ad
Init subscriber before switching the states
...
Issue: SPR-15418
2017-04-07 18:14:30 -04:00
Rossen Stoyanchev
3780d040ee
Polish and minor fixes in ViewResolutionResultHandler
2017-04-07 17:15:07 -04:00
Rossen Stoyanchev
e4c62cc029
Controller API for view rendering
...
Issue: SPR-15211
2017-04-07 17:15:07 -04:00
Bryan Kelly
9a9166622e
Fix ForwardedHeaderFilter getRequestURL()
...
Previously ForwardedHeaderFilter would return the same StringBuffer for every invocation. This
meant that users that modified the StringBuffer changed the state of the HttpServletRequest.
This commit ensures that a new StringBuffer is always returned for ForwardedHeaderFilter.
Issue: SPR-15423
2017-04-07 15:51:11 -05:00
Andy Clement
584b290dff
Introduce method to allow a pattern to partially consume a path
...
With this change there is a new getPathRemaining() method on
PathPattern objects. It is called with a path and returns
the path remaining once the path pattern in question has
matched as much as it can of that path. For example if the
pattern is /fo* and the path is /foo/bar then getPathRemaining
will return /bar. This allows for a set of pathpatterns
to work together in sequence to match a complete entire path.
Issue: SPR-15336
2017-04-06 12:21:32 -07:00
Juergen Hoeller
67ea4b3a05
package-info for repackaged libraries (and other polishing)
2017-04-06 14:10:46 +02:00
Arjen Poutsma
aa3573b2bc
Polishing
2017-04-06 11:37:21 +02:00
Rossen Stoyanchev
e83fdaa2dd
Revert recent change causing issue in Boot on WildFly
2017-04-05 12:41:41 -04:00
Sebastien Deleuze
ed8565894a
Return 5xx HTTP status for invalid target types with Jackson
...
InvalidDefinitionException has been introduced in Jackson 2.9 to be
able to differentiate invalid data sent from the client (should still
generate a 4xx HTTP status code) from server side errors like beans with
no default constructor (should generate a 5xx HTTP status code).
Issue: SPR-14925
2017-04-05 11:31:26 +02:00
Rossen Stoyanchev
f293c4d84b
Doc use of reactive types in Spring MVC controllers
...
Issue: SPR-15365
2017-04-04 17:32:24 -04:00
Rossen Stoyanchev
f716c8e9bc
Consistently check if AsyncContext already completed
...
Related to SPR-15412
2017-04-04 16:30:54 -04:00
Rossen Stoyanchev
c0f2017262
Polish
2017-04-04 15:33:47 -04:00
Violeta Georgieva
ece4815459
Ensure ISE will not be thrown when the client disconnects
...
- ServletServerHttpResponse.ResponseAsyncListener#onError/onTimeout
must complete the async operation
- ServletHttpHandlerAdapter.HandlerResultSubscriber#onComplete must
check that the async operation is not completed
Issue: SPR-15412
2017-04-04 14:45:00 -04:00
Juergen Hoeller
e9627a10c7
Deprecate ObjectUtils.hashCode for primitives in favor of JDK 8's hashCode methods
...
Issue: SPR-15395
2017-04-04 17:16:50 +02:00
Rossen Stoyanchev
ae1ed16cb8
Async return values refactoring in Spring MVC
...
Revise Javadoc on AsyncHandlerMethodReturnValueHandler to clarify its
main purpose is to prioritze custom async return value handlers ahead
of built-in ones. Also replace the interface from built-in handlers
which are prioritized already.
Remove DeferredResultAdapter and ResponseBodyEmitterAdapter --
introduced in 4.3 for custom async return value handling, since for
5.0 we will add built-in support for reactive types and the value of
these contracts becomes very marginal.
Issue: SPR-15365
2017-04-03 09:01:49 -04:00
Sebastien Deleuze
dd5a73b2e1
Remove deprecated usage of Reactor Loopback interface
2017-03-30 14:36:23 +02:00
Sebastien Deleuze
9f321e8d56
Suppress warnings in tests
2017-03-30 14:28:10 +02:00
Sebastien Deleuze
e2fd398bad
Specify explicitly Kotlin extensions return type
...
The main purpose is to specify nullability.
2017-03-30 14:25:13 +02:00
Rossen Stoyanchev
d1db249584
Fix regression in client codecs
...
Restore the correct client-side default for whether StringDecoder
should split on new lines. It is true forthe server and false for the
client by default.
The regression was introduced in the recent refactoring:
f8a21ab11b (diff-0175d58138b2e8b2bec087ffe0495340)
2017-03-29 16:10:53 -04:00
Sebastien Deleuze
cbd98d5247
Switch back to Reactor BOM Aluminium-BUILD-SNAPSHOT
2017-03-29 16:41:54 +02:00
Arjen Poutsma
81430caa43
Deprecated AsyncRestTemplate and related types
...
This commit deprecates `AsyncRestTemplate` and related types
(`AsyncClientHttpRequestFactory` etc.) in favor of the Spring 5.0
`WebClient`.
Issue: SPR-15294
2017-03-29 15:54:06 +02:00
Violeta Georgieva
2556178422
Ensure NPE will not be thrown when cancelling a subscription
...
Issue: SPR-15393
2017-03-29 15:10:36 +02:00
Rossen Stoyanchev
525f30ad5e
Remove dated references on URI template RFC
2017-03-27 15:49:20 -04:00
Rossen Stoyanchev
0479e3eefc
Fix typo
2017-03-27 15:16:59 -04:00
Rossen Stoyanchev
9e96cfa7cd
Polish
2017-03-27 15:15:45 -04:00
Rossen Stoyanchev
f8a21ab11b
Add ClientCodecConfigurer
...
Issue: SPR-15247
2017-03-27 14:57:55 -04:00
Rossen Stoyanchev
dc3851df00
Extract AbstractCodecConfigurer base class
...
Issue: SPR-15247
2017-03-27 14:57:49 -04:00
Sebastien Deleuze
3598addc0e
Use FormHttpMessageReader by default in ServerCodecConfigurer
2017-03-26 03:21:05 +02:00
Rossen Stoyanchev
ec5b5c8578
Rename Http[Encoder|Decoder] to HttpMessage[Encoder|Decoder]
2017-03-24 17:48:40 -04:00
Rossen Stoyanchev
5414cd0cf8
Collape ServerHttpMessage[Reader|Writer]
...
This commit folds ServerHttpMessage[Reader|Writer] into its parent
HttpMessage[Reader|Writer] with the server methods pre-implemented
by default to be simple pass-through delegates.
2017-03-24 17:48:40 -04:00
Rossen Stoyanchev
4a7218f54f
Introduce ServerCodecConfigurer
...
Issue: SPR-15247
2017-03-24 17:47:44 -04:00
Juergen Hoeller
65ba865d70
Support for populating model attributes through data class constructors
...
Includes a new overloaded ModelAndView constructor with an HttpStatus argument, as well as a HandlerMethodArgumentResolverSupport refactoring (revised checkParameterType signature, actually implementing the HandlerMethodArgumentResolver interface).
Issue: SPR-15199
2017-03-24 12:15:45 +01:00
Juergen Hoeller
2236262fc6
Up-to-date guidelines for serialization-based endpoints
...
Issue: SPR-15317
2017-03-24 11:09:57 +01:00
Juergen Hoeller
15bff8f911
HeaderValueHolder.toString() exposes underlying list of header values
...
Issue: SPR-15375
2017-03-24 11:07:01 +01:00
Juergen Hoeller
5ea4abdb85
Revised supportedMethods null handling in HttpRequestMethodNotSupportedException
...
Issue: SPR-15377
2017-03-24 11:06:47 +01:00
Juergen Hoeller
b73153cd7c
StandardMultipartFile.transferTo falls back to manual copy
...
Issue: SPR-15257
2017-03-24 11:06:39 +01:00
Rossen Stoyanchev
0662dbf044
String decoding for text only vs any MIME type
...
Follow-up to:
3d68c496f1
StringDecoder can be created in text-only vs "*/*" mode which in turn
allows a more intuitive order of client side decoders, e.g. SSE does
not have to be ahead of StringDecoder.
The commit also explicitly disables String from the supported types in
Jackson2Decoder leaving it to the StringDecoder in "*/*" mode which
comes after. This does not change the current arrangement since the
the StringDecoder ahead having "*/*" picks up JSON content just the
same.
From a broader perspective this change allows any decoder to deal with
String if it wants to after examining the content type be it the SSE
or another, custom decoder. For Jackson there is very little value in
decoding to String which works only if the output contains a single
JSON string but will fail to parse anything else (JSON object/array)
while StringDecoder in "*/*" mode will not fail.
Issue: SPR-15374
2017-03-23 16:53:06 -04:00
Arjen Poutsma
a287e67992
Introduce 'useRegisteredExtensionsOnly' property in classes using MediaTypeFactory
...
This commit introduces a `useRegisteredExtensionsOnly` property that
indicates whether classes that use the `MediaTypeFactory` for supplying
default media types can do so.
- In classes that were introduced in Spring 5.0, the
`useRegisteredExtensionsOnly` property takes the place of the
`useJaf` property that was removed in 0aaa652
- In classes that existed before Spring 5.0, the
`useRegisteredExtensionsOnly` property is added in addition to the
deprecated `useJaf`, the latter delegating to the former, but with
flipped behavior.
Issue: SPR-14908
2017-03-23 17:16:46 +01:00
Arjen Poutsma
e2aa880301
Return null from MockServletContext.getMimeType for unknown type
...
ServletContext.getMimeType() returns `null` for unknown mime types; not
`application/octet-stream`.
Issue: SPR-14908
2017-03-23 12:45:48 +01:00
Arjen Poutsma
fd1db57e05
Change MediaTypeFactory to return Optional
...
This commit changes the `MediaTypeFactory` to return
`Optional<MediaType>` (instead of a plain `MediaType`) for the
`getMediaType` methods.
Issue: SPR-14908
2017-03-23 10:14:43 +01:00
Rossen Stoyanchev
3d68c496f1
String encoding for any MIME type
...
CharSequenceEncoder now supports all MIME types, however since encoding
Flux<String> can overlap with other encoders (e.g. SSE) there are now
two ways to create a CharSequenceEncoder -- with support for text/plain
only or with support for any MIME type.
In WebFlux configuration we insert one CharSequenceEncoder for
text/plain (as we have so far) and a second instance with support for
any MIME type at the very end.
Issue: SPR-15374
2017-03-22 18:01:32 -04:00
Rossen Stoyanchev
2896c5d2ab
Revise "streaming" MediaType support
...
Push the knowledge of what media types represent "streaming" down to
the Encoder level where knowledge is required (e.g. to encode a
JSON array vs a stream of JSON elements).
2017-03-22 18:01:32 -04:00
Arjen Poutsma
290e9bea14
Change MethodNotAllowedException to use HttpMethod
...
Changed the MethodNotAllowedException to use HttpMethod, instead of
Strings.
2017-03-22 16:38:41 +01:00
Sebastien Deleuze
4db2daae5c
Add class level @JsonView tests
...
Issue: SPR-14925
2017-03-22 13:28:04 +01:00
Rossen Stoyanchev
a999f40daa
Polish + minor refactoring of SSE reader and writer
...
Instead of accepting List<Encoder|Decoder> and then look for the first
to support JSON, always expect a single JSON [Encoder|Decoder] and use
that unconditionally.
When writing use the nested ResolvableType instead of the Class of the
actual value which should better support generics.
Remove the SSE hint and pass "text/event-stream" as the media type
instead to serve as a hint. We are expecting a JSON encoder and using
it unconditionally in any case so this should be good enough.
2017-03-21 17:32:14 -04:00
Rossen Stoyanchev
d0e0b6c8c9
Minor Jackson encoder/decoder refactoring
...
Consolidate JsonView hint extraction in shared base class.
Rename base class from AbstractJackson2Codec to Jackson2CodecSupport
since the class mainly provides support methods.
2017-03-21 14:51:46 -04:00
Rossen Stoyanchev
35805995c2
Polish EncoderHttpMessageWriter
2017-03-21 14:51:46 -04:00
Juergen Hoeller
e892e02f41
Polishing
2017-03-21 17:44:47 +01:00
Rossen Stoyanchev
124cdb5c58
Polish Javadoc of [Server]HttpMessage[Reader|Writer]
2017-03-21 10:57:21 -04:00
Rossen Stoyanchev
c8671041f1
EncoderHttpMessageWriter supports streaming MediaTypes
...
Support for flushing in EncoderHttpMessageWriter is now driven from a
configurable list of "streaming" media types with the list including
"application/stream+json" by default.
As a result Jackson2ServerHttpMessageWriter is no longer needed.
2017-03-21 10:15:56 -04:00
Rossen Stoyanchev
f65544c192
Introduce ServerHttp[Encoder|Decoder]
...
ServerHttpEncoder and ServerHttpDecoder are HTTP-specific
specializations that can prepare encoding and decoding hints from
extra information available on the server side.
As a result Jackson2ServerHttpMessageReader is no longer needed.
2017-03-21 10:15:56 -04:00
Rossen Stoyanchev
5f8bc4552f
[Encoder|Decoder]HttpMessageWriter server support
...
There is a natural way to implement ServerHttpMessage[Reader|Writer]
from [Encoder|Decoder]HttpMessageWriter by resolving hints first via
a protected method and then delegating to the regular read or write.
There is no downside either since it does not prevent
[Encoder|Decoder]HttpMessageWriter from being used for both client and
server scenarios while they're more useful.
As a positive side effect AbstractServerHttpMessage[Reader|Writer] can
be removed further simplfications can be made (in a future commit) to
accept ServerHttpMessageWriter for configuration purposes on the server
side and remove instanceof checks for ServerHttpMessageWriter.
2017-03-21 10:15:56 -04:00
Arjen Poutsma
d414718467
Update MockServletContext to MediaTypeFactory
...
This commit changes the `MockServletContext.getMimeType` method to use
`MediaTypeFactory` instead of JAF. It also adds a `addMimeType(String,
MediaType)` method to customize the mime types returned from said
method.
Issue: SPR-14908
2017-03-21 09:39:22 -04:00
Rossen Stoyanchev
1329ccf1bc
Update tests to new mime types
...
This commit updates the test code base to conform to changes in media
types returned by the MediaTypeFactory.
Issue: SPR-14908
2017-03-21 09:39:16 -04:00
Arjen Poutsma
0aaa6528dc
Remove JAF references
...
This commit updates the main code base to conform to the dropped JAF
dependency in MediaTypeFactory. Specifically, it
- Removes JAF detection (JAF_PRESENT constants)
- Deprecated useJaf properties, with no direct replacement.
- Updated docs to remove JAF references, in favor of MediaTypeFactory.
Issue: SPR-14908
2017-03-21 09:11:10 -04:00
Arjen Poutsma
f0a43e5d5c
Drop JAF dependency from MediaTypeFactory
...
This commit drops the Java Activation Framework dependency from the
MediaTypeFactory, in favor of parsing our own `mime.types` file, which
was obtained from Apache HTTPD.
Issue: SPR-14908
2017-03-21 09:06:27 -04:00
Rossen Stoyanchev
76fe5f6fce
ResourceHttpMessageWriter refactoring
...
Fold ResourceRegionHttpMessageWriter into ResourceHttpMessageWriter.
The latter was a private helper (not meant to be exposed) and the two
have much in common now sharing a number of private helper methods.
The combined class does not extend AbstractServerHttpMessageConverter
from which it was not using anything.
Internally the combined class now delegates directly to ResourceEncoder
or ResourceRegionEncoder as needed. The former is no longer wrapped
with EncoderHttpMessageWriter which is not required since "resource"
MediaType determination is a bit different.
The consolidation makes it easy to see the entire algorithm in one
place especially for server side rendering (and HTTP ranges). It
also allows for consistent determination of the "resource" MediaType
via MediaTypeFactory for all use cases.
2017-03-20 09:21:35 -04:00
Rossen Stoyanchev
c735ffb39b
Fix content type issue in ResourceRegionHttpMessageWriter
...
ResourceRegionHttpMessageWriter no longer extends from
EncoderHttpMessageWriter freeing it to pass the correct content type
into the encoder.
Considering that the main benefit of EncoderHttpMessageWriter is to
deal with content type fallback cases, there is nothing to be missed.
Furthermore ResourceRegionHttpMessageWriter is a package private class
that is used internally within ResourceHttpMessageWriter and never
exposed externally as a an actual HttpMessageWriter.
Issue: SPR-15358
2017-03-17 17:29:05 -04:00
Rossen Stoyanchev
2979b37ae3
Consistent use of Mediatype in EncoderHttpMessageWriter
...
EncoderHttpMessageWriter now consistently uses the same MediaType to
set on the response and to pass to the encoder.
Issue: SPR-15357
2017-03-17 16:33:33 -04:00
Rossen Stoyanchev
91a75ed772
Polish EncoderHttpMessageWriter Content-Type handling
2017-03-17 12:46:29 -04:00
Rossen Stoyanchev
ad91b94249
Require Encoder & Decoder in Reader & Writer wrappers
...
When CodecHttpMessageConverter was split into DecoderHttpMessageReader
and EncoderHttpMessageWriter the null checks were never removed.
This commit makes the Encoder and Decoder instances provided to their
respective wrappers required.
2017-03-17 12:46:22 -04:00
Rossen Stoyanchev
a99fe3eda4
Polish HttpHiddenMethodFilter
2017-03-16 15:01:23 -04:00
Rossen Stoyanchev
37592ea07c
DefaultWebFilterChain is a top-level, public class
...
Issue: SPR-15348
2017-03-16 15:01:23 -04:00
Juergen Hoeller
ab7db413c6
DefaultResponseErrorHandler delegate methods declared as protected
...
Also revises copyToByteArray/String in FileCopyUtils/StreamUtils for lenient null handling.
Issue: SPR-15329
2017-03-16 18:57:13 +01:00
Rossen Stoyanchev
f6e2c585c8
Refactor tests to use toExchange() shortcuts
...
Issue: SPR-15350
2017-03-16 11:55:09 -04:00
Rossen Stoyanchev
41c413a748
Add MockServerWebExchange and toExchange shortcuts
...
Issue: SPR-15350
2017-03-16 11:55:09 -04:00
Arjen Poutsma
45aa1edf87
Fix Undertow zero-copy-support
...
This commit fixed the exception that occurs when a larger file is
transfered using zero-copy on Undertow.
Issue: SPR-15343
2017-03-16 12:35:51 +01:00
Rossen Stoyanchev
d39da1d06d
Polish + minor HttpHandler refactoring
...
CompositeHttpHandler is public and called ContextPathCompositeHandler.
Also an overhaul of the Javadoc on HttpHandler, WebHttpHandlerAdapter,
and ContextPathCompositeHandler.
2017-03-15 17:05:20 -04:00
Phillip Webb
57d2fcef55
Extract CompositeHttpHandler functionality
...
Extract CompositeHttpHandler to a package private class and add direct
support via `HttpHandler.of(...)`. This removes the need for the
`HttpHandlerAdapterSupport` class.
2017-03-15 17:05:20 -04:00
Rossen Stoyanchev
1c9d4deba2
Add methods to prepend WebFilter + WebExceptionHandler
2017-03-10 17:04:11 -05:00
Rossen Stoyanchev
2cd6240dab
Polish WebHttpHandlerBuilder
2017-03-10 17:04:11 -05:00
Brian Clozel
b799013567
Update to Reactor Aluminium SNAPSHOT
...
Currently the BOM versions are:
* reactor-core 3.0.6.BUILD-SNAPSHOT
* reactor-netty 0.6.2.BUILD-SNAPSHOT
This commit fixes as well a few deprecations in reactor-core.
2017-03-10 15:20:40 +01:00
Rossen Stoyanchev
a1c24d2122
SSE reader support to read full content as a String
...
The SSE reader is ordered ahead of StringDecoder because with
response.decodeToFlux(String.class) we actually want the SSE reader
to get involved first based on the content-type.
At the same time with response.decodeToMono(String.class) there is
nothing the SSE reader can do while the StringDecoder could read the
entore content as one String, as long as the server does terminate
the stream which can happen in a testing scenario.
This commit updates ServerSentEventHttpMessageReader#readMono in
to support String.class by delegating to StringDecoder. Since
reading to a Mono is an explicit choice there is not much possibility
for interfering with decoding to Flux.
Issue: SPR-15331
2017-03-08 17:13:40 -05:00
Rossen Stoyanchev
8c36d3c4d9
Refactor use of DataBufferFactory in SSE reader
...
This commit simplifies the use of DataBufferFactory in the SSE reader
which is used only to wrap a byte[] as a DataBuffer. There is no actual
benefit to use anything other than a DefaultDataBufferFactory.
2017-03-08 16:56:37 -05:00
Rossen Stoyanchev
9aa25c3982
Polish ServerSentEventHttpMessageReader
2017-03-08 16:38:58 -05:00
Juergen Hoeller
94a7624c1f
Polishing
2017-03-07 15:42:04 +01:00
Juergen Hoeller
f30c498162
Retrieve newly created attribute from underlying request (marking it for update)
...
Issue: SPR-15300
2017-03-07 15:41:23 +01:00
Juergen Hoeller
9aaed2bcef
Polishing
2017-03-07 11:02:26 +01:00
Juergen Hoeller
eeb01db888
Support for new ServletContext methods in Servlet 4.0 b03
...
Issue: SPR-12674
2017-03-06 21:42:41 +01:00
Juergen Hoeller
47c4cf7abf
Drop support for Jetty 9.3 and OkHttp 2.x
...
Issue: SPR-15038
2017-03-06 17:54:02 +01:00
Rossen Stoyanchev
37726f4214
Improved annnotation support in ResolvableMethod
2017-03-06 09:19:57 -05:00
Rossen Stoyanchev
0296d003af
Improved generics support in ResolvableMethod
2017-03-06 09:19:57 -05:00
Rossen Stoyanchev
cdf19d1db1
@RequestParam tests use ResolvableMethod
2017-03-03 23:43:01 -05:00
Rossen Stoyanchev
6950cc0e64
Move ResolvableMethod
...
From spring-webflux to spring-web test sources since it is perfectly
usable for testing Spring MVC annotation method support.
Potentially to be promoted further up for use in any module that has
annotation method support. It has spring-core dependencies only
2017-03-03 22:12:33 -05:00
Rossen Stoyanchev
ce69855274
Fix failing tests
2017-03-02 11:13:47 -05:00
Rossen Stoyanchev
ccb2c6530e
Support for @ControllerAdvice in WebFlux
...
Issue: SPR-15132
2017-03-02 03:30:34 -05:00
stonio
7d062df992
Use String#isEmpty()
...
Closes gh-1335
2017-02-22 11:55:17 +01:00
Juergen Hoeller
d2cc97af47
Polishing
2017-02-21 22:41:40 +01:00
Brian Clozel
babd5517aa
Revert ParsingPathMatcher concurrency checks
...
`PathPatternParser` is now thread-safe and creates a new internal parser
for each `parse` call, since this operation is cheap.
This commit removes the `ThreadLocal` based instances of
`PathPatternParser` in `ParsingPathMatcher` which are not required
anymore.
Issue: SPR-15246
2017-02-21 11:44:59 +01:00
Andy Clement
a0505bf1e7
Make PathPatternParser multi-threaded
...
With this change the original PathPatternParser is renamed
InternalPathPatternParser and a new PathPatternParser class is added.
This new PathPatternParser class is a very simple thread-safe wrapper for
the InternalPathPatternParser. It achieves this by creating a new
InternalPathPatternParser for each new parse request. This follows the
model used for SpEL parsing.
2017-02-21 11:44:59 +01:00
Rossen Stoyanchev
71b021c7cc
Add decorators for ClientHttpRequest & Response
2017-02-20 18:29:30 -05:00
Juergen Hoeller
1ddf8ec625
Polishing
2017-02-21 00:04:08 +01:00
Juergen Hoeller
73493bc490
Revised imports in tests (org.jetbrains.annotations.NotNull etc)
2017-02-20 23:00:22 +01:00
Juergen Hoeller
370e3d683a
Polishing
2017-02-20 23:00:12 +01:00
Brian Clozel
b732251b09
Ignore HEAD requests in ShallowEtagHeaderFilter
...
Prior to this commit, the `ShallowEtagHeaderFilter` could participate in
the response and set its ETag/Content-Length headers, even for HEAD
requests. Since the response body is empty, the filter implementation
would set a `"Content-Length: 0"`.
The RFC states that responses to HEAD requests should exhibit identical
response headers to GET (with the possible exception of payload related
headers such as Content-Length.
With this commit, `ShallowEtagHeaderFilter` now ignores HEAD requests
since the proper values may be set already for payload related headers
by the handler. The filter has no way to generate a proper ETag value
nor calculate the content length without the actual body.
Issue: SPR-15261
2017-02-20 11:58:22 +01:00
Andy Clement
d924538211
Fix RegexPathElement when matching variables against a root path
...
The first fix for issue 15264 covered the case of using a single
variable (the case mentioned in the bug report). However, when
more than one variable is used a different PathElement is built.
This RegexPathElement needs a similar change that checks the
path includes data to bind.
Issue: SPR-15264
2017-02-19 17:11:31 -08:00
Andy Clement
f1653cc21c
Fix PathPattern incorrectly matching variable against root path
...
Issue: SPR-15264
2017-02-17 17:37:12 -08:00
Juergen Hoeller
45df1d9fea
Javadoc fixes
2017-02-18 01:43:30 +01:00
Juergen Hoeller
214d0d76a5
Polishing
2017-02-18 01:01:35 +01:00
Juergen Hoeller
1ee0626c94
Polishing
2017-02-17 21:06:58 +01:00
Andy Clement
f98ea11e5e
Fix string handling to avoid exceptions when doing path extraction
...
Issue: SPR-15259
2017-02-15 16:37:43 -08:00
Juergen Hoeller
5f531a7a7d
Comparators entry point with generically typed factory methods
...
Issue: SPR-14779
2017-02-15 18:05:32 +01:00
Brian Clozel
4ff17676d3
Avoid duplicate Content-Length headers in Netty client
...
This commit checks that a "Content-Length" request header isn't already
present before adding one in `Netty4ClientHttpRequestFactory`.
`HttpMessageConverter` implementations can write that request header so
the Netty request factory should only write that value when the header
is missing.
If that header is not written (and since we're not dealing with
the HTTP exchange in a chunked-based fashion), the HTTP client might not
send the request body at all.
Issue: SPR-15241
2017-02-13 21:07:35 +01:00
Juergen Hoeller
44ec6e0037
Polishing
2017-02-13 15:07:07 +01:00
Juergen Hoeller
199aa776c9
Support for Servlet 4.0 (PushBuilder argument, MockServletContext)
...
Issue: SPR-12674
2017-02-13 15:06:59 +01:00
Brian Clozel
2ac08afab5
Threadsafe use of pattern parser in ParsingPathMatcher
...
This commit ensures that the `PathPatternParser` and the associated
cache map are used in a threadsafe fashion, since the PathMatcher
instance can be used for concurrent requests.
Issue: SPR-15246
2017-02-13 14:34:49 +01:00
Sebastien Deleuze
ef550c43d6
Flush JSON stream after each element
...
Issue: SPR-15104
2017-02-13 14:20:19 +01:00
Brian Clozel
1901cc65fd
Use ParsingPathMatcher by default in WebFlux
...
Issue:
2017-02-10 18:30:28 +01:00
Brian Clozel
fa4202f1bd
Revert Path Pattern changes in WebFlux
...
Issue: SPR-14544
2017-02-10 18:30:01 +01:00
Juergen Hoeller
ed85337901
MockHttpServletRequest exposes "HTTP/1.1" as default protocol
...
Issue: SPR-15232
2017-02-10 10:47:36 +01:00
Brian Clozel
5488906d0c
Polish
...
Issue: SPR-15206
2017-02-09 22:36:28 +01:00
Greg Turnquist
e4be7131ca
Implement reactive HiddenHttpMethodFilter
...
Provides the ability to embed an HTTP verb inside a hidden form field
(like Thymeleaf's th:method operator).
Issue: SPR-15206
2017-02-09 22:35:57 +01:00
Brian Clozel
8d43f45515
Reduce API Surface in PathPatternRegistry
...
This commit reduces the exposition of `PathPattern` instances throughout
the `HandlerMapping` API and removes some methods from its public API.
Issue: SPR-14544
2017-02-09 22:09:46 +01:00
Brian Clozel
09d18f2ef5
Refactor HandlerMapping path match configuration
...
Since the introduction of `PathPatternRegistry`, the various path match
configuration flags are no longer needed in several places and that
configuration can live in the registry itself.
Issue: SPR-14544
2017-02-09 15:58:16 +01:00
Brian Clozel
47ac3379ea
Do not use ParsingPathMatcher by default in Spring MVC
2017-02-09 11:21:33 +01:00
Brian Clozel
18c04815a7
Add PathPatternRegistry
...
This commit adds the new `PathPatternRegistry`, which holds a
sorted set of `PathPattern`s and allows for searching/adding patterns
This registry is being used in `HandlerMapping` implementations and
separates path pattern parsing/matching logic from the rest. Directly
using `PathPattern` instances should improve the performance of those
`HandlerMapping` implementations, since the parsing and generation of
pattern variants (trailing slash, suffix patterns, etc) is done only
once.
Issue: SPR-14544
2017-02-09 11:21:33 +01:00
Brian Clozel
a4da313a0a
Polish
...
Issue: SPR-14544
2017-02-09 11:21:32 +01:00
Andy Clement
f786feb5e1
Ensure correct recognition for start of match-the-rest path elements
...
Without this change the /{*foobar} and /** path elements were
not correctly enforcing that the first character they encounter
must be a separator. This problem was introduced when adjusting
the generated path element chains for these constructs. Originally
the generated chain included a SeparatorPathElement but in order for
these to match 'nothing' (i.e. /foo matches /foo/{*foobar}) the separator
path element was removed, so the separator enforcement needed moving
into the CaptureTheRestPathElement and WildcardTheRestPathElement.
Issue: SPR-14544
2017-02-09 11:09:38 +01:00
Andy Clement
f58ffad939
Introduce PathPatternParser for optimized path matching
...
This commit introduces a PathPatternParser which parses request pattern
strings into PathPattern objects which can then be used to fast
match incoming string paths. The parser and matching supports the syntax
as described in SPR-14544. The code is optimized around the common usages
of request patterns and is designed to create very little transient
garbage when matching.
Issue: SPR-14544
2017-02-09 11:09:38 +01:00
Violeta Georgieva
706c72e1c7
Simplify the calculation of UndertowServerHttpRequest.uri
2017-02-08 16:55:58 -05:00
Rossen Stoyanchev
f2967467e0
Improve writing in mock reactive request and response
...
Before this change the write Publisher was saved and Mono.empty()
returned from the write metohd which did not properly implement
the write contract since no writing ("consuming") was done.
This can be a problem in some cases. For example the request may appear
to succeed even if the publisher produces an error later when
subscribed to later after request handling completes.
This commit introduces a writeHandler function in the mock request and
response. By default it "writes" by consuming the content immediately,
which allows it to return a Mono<Void> that properly reflects when
writing is done, and it also caches the data so it may be replayed
later for test assertions.
For streaming scenario a custom writeHandler may be registered which
allows the custom handling to determine how long to stream before
cancelling so request handling may complete.
Issue: SPR-14590
2017-02-07 21:57:38 -05:00
Sebastien Deleuze
6b9b0230c4
Introduce JSON streaming support
...
This commit introduces JSON streaming support which
consists of serializing HTTP request with
application/stream+json media type as line delimited JSON.
It also optimize Flux serialization for application/json by
using flux.collectList() and a single Jackson invocation
instead of one call per element previous strategy.
This change result in a x4 throughput improvement
for collection with a lot of small elements.
Issues: SPR-15095, SPR-15104
2017-02-06 18:14:53 +01:00
Stephane Nicoll
48e834dfd1
Update copyright header
2017-02-03 07:34:39 +01:00
Eitan Adler
938c6a2acd
Polish javadoc
...
Closes gh-1312
2017-02-03 07:29:50 +01:00
Ryan Pickett
654e14a86a
Fix Javadoc in UriComponentsBuilder
2017-02-02 17:29:20 -05:00
Rossen Stoyanchev
1466c82f53
Better support for overriding base URI in WebClient
...
The base URI is ignored for requests that include a host.
WebClient exposes UriBuilder (rather than UriBuilderFactory) for
per-request URI building based on the base URI. That provides
full control to add or replace components of the base URI.
2017-02-02 17:24:18 -05:00
Juergen Hoeller
acf511ac0e
Polishing
2017-02-02 20:11:06 +01:00
Juergen Hoeller
9b3131ffba
Skip default Content-Length if Transfer-Encoding header has been set
...
Issue: SPR-15212
2017-02-02 20:01:10 +01:00
Juergen Hoeller
0da964f0a7
MockHttpServletRequest returns empty BufferedReader in case of no content
...
Issue: SPR-15215
2017-02-02 19:55:42 +01:00
Rossen Stoyanchev
c79092f0f9
Refactor random port in reactive module tests
...
This commit removes the use of SocketUtils#findAvailableTcpPort in
favor of letting servers pick a dynamic port by specifying port 0.
This should make integration tests more stable because the port is
chosen at the place where it needs to be used. It gives servers a
chance to try to open a socket on some port and start using the socket
if successful.
2017-01-31 16:19:19 -05:00
Rossen Stoyanchev
1fb0b0b786
Expose remoteAddress from ServerHttpRequest
...
Issue: SPR-15200
2017-01-31 15:04:24 -05:00
Rossen Stoyanchev
9142427c4d
Add committed flag to ReactiveHttpOutputMessage
...
Issue: SPR-15135
2017-01-31 12:50:27 -05:00
Juergen Hoeller
f84907a1fc
Polishing
2017-01-31 12:00:13 +01:00
Juergen Hoeller
9243a14794
Test for correct handling of multiple header values
...
Issue: SPR-15166
2017-01-31 11:59:41 +01:00
Juergen Hoeller
1b2dc3638f
Revisit Assert to avoid single-arg assert methods (with refined messages)
...
Issue: SPR-15196
2017-01-30 22:15:55 +01:00
Juergen Hoeller
768802fa96
ResourceHttpMessageConverter reads Content-Disposition header to expose filename through Resource
...
Issue: SPR-15191
2017-01-30 22:15:30 +01:00
Rossen Stoyanchev
cd476832cc
Add check for Long.MAX_VALUE
...
Issue: SPR-15203
2017-01-30 10:03:20 -05:00
Rossen Stoyanchev
74a3013174
Replace use of deprecated Reactor Operators#getAndAdd
2017-01-30 09:14:05 -05:00
Arjen Poutsma
69c16f3821
Add headers in InterceptingClientHttpRequest
...
This commit *adds* the "intercepted" headers to the ClientHttpRequest,
as opposed to replacing them, which is what happened before this commit.
Issue: SPR-15166
2017-01-30 14:18:50 +01:00
Rossen Stoyanchev
b487ed6748
Fix trailing slash issue
...
Issue: SPR-15201
2017-01-28 12:38:44 -05:00
Rossen Stoyanchev
ee861e8001
Fix compiler deprecation-related errors
2017-01-27 17:26:14 -05:00
Rossen Stoyanchev
d057c3d981
Deprecate DefaultUriTemplate handler
...
Following on the introduction of the UriBuilderFactory and its
DefaultUriBuilderFactory implementation, this commit deprecates
DefaultUriTemplate (and AbstractUriTemplateHandler).
The new DefaultUriBuilderFactory has comparable functionality and is
more flexible but cannot be merged into the existing hierarchy and
be backwards compatible with regards to protected methods.
Issue: SPR-15124
2017-01-27 16:38:16 -05:00
Rossen Stoyanchev
7b67b5bc2a
Introduce UriBuilderFactory and UriBuilder
...
Issue: SPR-15124
2017-01-27 14:07:55 -05:00
Rossen Stoyanchev
cb0d992303
Refactor test HttpServer implementations
...
Due to the static nature of JUnit parameterized test inputs, an
HttpServer instance is re-used for all tests per test class.
This commit adds lifecycle handling to AbstractHttpServer with a
lifecycle monitor to ensure test server fields are properly
initialized and reset after each test .
2017-01-27 10:31:08 -05:00
Stephane Nicoll
d550eb152c
Polish contribution
...
Closes gh-1307
2017-01-27 14:17:13 +01:00
Ruben Dijkstra
f1c7e0f5b2
Check for null on the argument instead of the message
...
See gh-1307
Issue: SPR-15196
2017-01-27 14:15:24 +01:00
Rossen Stoyanchev
4aac7c2ee2
Minor refactoring in Tomcat/Jetty adapters
2017-01-26 07:37:46 -05:00
Rossen Stoyanchev
a2aaa05592
Polish
2017-01-26 07:25:22 -05:00
Violeta Georgieva
383375c35f
Use separate reactive HttpHandler for Tomcat/Jetty
...
Introduce separate adapters TomcatHttpHandlerAdapter/JettyHttpHandlerAdapter
so that each adapter can use the Tomcat/Jetty APIs for reading/writing
with ByteBuffer.
2017-01-26 06:21:44 -05:00
Rossen Stoyanchev
ae034e9afe
Polish content disposition
2017-01-25 17:19:30 -05:00
Rossen Stoyanchev
c8f98ecd8d
Add MockPart to spring-test
...
Issue: SPR-14252
2017-01-25 17:05:25 -05:00
Juergen Hoeller
8038fb9c8b
HandlerMethod pre-resolves parameter types at construction time
...
Issue: SPR-15186
2017-01-25 11:09:43 +01:00
Juergen Hoeller
5e946c2700
Consistent type variable resolution for arrays/collections (in particular at field level)
...
Dropping GenericCollectionTypeResolver in favor of direct ResolvableType usage.
Issue: SPR-15160
2017-01-24 18:00:17 +01:00
Juergen Hoeller
a0df36ddda
HiddenHttpMethodFilter defensively proceeds with original request in case of error dispatch
...
Issue: SPR-15179
2017-01-23 21:25:21 +01:00
Juergen Hoeller
54e2d63d6f
Polishing
2017-01-19 21:21:01 +01:00
Kazuki Shimizu
053ac64101
Add "Problem Details for HTTP APIs" media types
...
See RFC 7807: Problem Details for HTTP APIs
* application/problem+json
* application/problem+xml
Issue: SPR-15110
2017-01-19 15:14:35 +01:00
Rossen Stoyanchev
bb3b1f2fe2
Additional convenience methods in UriUtils
...
The generic encode method in UriUtils that encodes any character
outside the reserved character set for a URI is meant for "strict"
encoding of URI variable values. This commit adds a couple more
conveninence methods that accept a Map or array of URI variable
values to encode.
This facilitates the use case where the URI template is assumed to
be encoded while URI variables are encoded strictly to avoid any
possibility for unwanted reserved characters:
Map<String, ?> encodedUriVars = UriUtils.encodeUriVariables(uriVars);
uriComponentsBuilder.build(true).expand(encodedUriVars).toUri();
Issue: SPR-14970
2017-01-18 21:45:33 -05:00
Rossen Stoyanchev
f2e293aadf
UriComponents allows "+" in a query param
...
Issue: SPR-14828
2017-01-18 21:04:37 -05:00
Rossen Stoyanchev
b609f3a546
WebHttpHandlerBuilder supports @Order on beans
...
Issue: SPR-15074
2017-01-18 20:55:29 -05:00
Rossen Stoyanchev
9faaa22fd4
Enable reactive web integration tests
2017-01-18 20:55:29 -05:00
Brian Clozel
a0427209d8
Upgrade to Reactor Aluminium SNAPSHOT
2017-01-18 22:30:28 +01:00
Arjen Poutsma
7b341ae5e2
Moved UnsupportedMediaTypeException
...
Moved UnsupportedMediaTypeException next to Body[Inserters|Extractors],
as that is where they are used. This move should have been done as part
of the inserter and extractor move, but was forgotten.
2017-01-18 16:16:26 +01:00
Juergen Hoeller
ee71e7bae1
Polishing
2017-01-18 01:00:02 +01:00
Juergen Hoeller
bea934b5bd
Polishing
2017-01-18 00:43:17 +01:00
Juergen Hoeller
d21b6e596f
Revised Charset handling and common StringUtils.uriDecode delegate
...
Issue: SPR-14492
2017-01-18 00:09:06 +01:00
Rossen Stoyanchev
8417831602
Add accessor methods to HttpPutFormContentFilter
...
Issue: SPR-14503
2017-01-17 17:19:04 -05:00
Juergen Hoeller
99dc96b1a4
Polishing
2017-01-17 20:42:40 +01:00
Juergen Hoeller
ad5386773e
ContentCachingRequestWrapper supports content cache limit
...
Issue: SPR-14829
2017-01-17 20:42:19 +01:00
Rossen Stoyanchev
9819558cba
Support encoded query string in reactive requests
...
In addition to the updates from PR#1297 this commit adds an integration
test and fixes for the resulting failures with RxNetty, Reactor Netty,
and Undertow.
Also replaced use of URLDecoder which is not for decoding URIs with use
of UriUtils for decoding query parameters.
Issue: SPR-15140
2017-01-17 12:46:05 -05:00