Commit Graph

3242 Commits

Author SHA1 Message Date
Johnny Lim 87fa2c3b97
Avoid unnecessary String instantiation in StringUtils.deleteAny()
This commit avoids unnecessary String instantiation in
StringUtils.deleteAny() if nothing was deleted from the
input string.

Closes gh-24924
2020-04-17 18:44:16 +02:00
Brian Clozel 39536acf9f Fix potential leak in MimeTypeUtils LRUCache
Prior to this commit, the `MimeTypeUtils` LRUCache would maintain a
queue to track least recently used cached values. In some cases,
concurrent access could create more entries in that unbounded queue than
expected and spend a significant amount of time removing entries in that
queue (i.e. iterating over a long list of elements).

This commit ensures that recently used entries are only added to the
queue if they've been removed by the current thread, in case of
concurrent access.

Fixes gh-24886
2020-04-09 15:38:01 +02:00
Сергей Цыпанов e1951a098b Improve performance of StringUtils.deleteAny() 2020-04-09 11:36:32 +02:00
Sam Brannen 8c0aaf4863 Delete meaningless "performance" test
The test deleted in this commit didn't even assert anything to begin
with.

See gh-24830
2020-04-08 15:21:32 +02:00
Juergen Hoeller 8595f01e44 Polishing 2020-04-03 21:08:45 +02:00
Moran Avigdor 7d5e474e0d Recursively copy directory with symbolic link
The following modification will also recursively traverse the directory that the symbolic link points to.
This modification is not proposed for deleteRecursively, since it can be harmful if not intended.

This modification relates to the following commit:
Consistent use of NIO.2 for file read/write interactions
Issue: SPR-15748
12114a9
2020-04-03 21:05:26 +02:00
Sam Brannen e26764d249 Remove duplicate words in documentation and polish Javadoc 2020-03-31 12:17:58 +02:00
Sam Brannen ee42e3e730 Polish StreamUtils 2020-03-30 13:57:09 +02:00
Sam Brannen 9e30620ac2 Polish contribution
See gh-24805
2020-03-30 13:47:00 +02:00
Сергей Цыпанов e63d1cf12d Improve usage of ByteArrayOutputStream/ByteArrayInputStream
Closes gh-24805
2020-03-30 13:22:21 +02:00
Qimiao Chen f8ff4e42b9
Use try-with-resource to close resources
Closes gh-24807
2020-03-30 12:05:29 +02:00
Qimiao Chen 7c831d2ef4
Replace anonymous inner classes with lambdas in tests
Closes gh-24808
2020-03-30 12:02:23 +02:00
Rossen Stoyanchev 3175f0771e Remove dumpString from DataBufferTestUtils
See gh-24786
2020-03-26 21:42:12 +00:00
Rossen Stoyanchev 7aa06b8610 Polishing contribution
See gh-24786
2020-03-26 21:42:12 +00:00
Сергей Цыпанов f17b0125ff Simplify conversion of DataBuffer to String
See gh-24786
2020-03-26 21:42:12 +00:00
Juergen Hoeller 593a2ade91 Expose context class for interface-based CGLIB proxies as well
Closes gh-24657
2020-03-26 17:30:37 +01:00
Sam Brannen 6222efc54b Polish contribution
See gh-24785
2020-03-26 16:52:24 +01:00
Сергей Цыпанов 65aa2d03f0 Simplify conversion of ByteArrayOutputStream to String
Closes gh-24785
2020-03-26 16:52:14 +01:00
Brian Clozel d97eabba2f Do not cache multipart MIME types in cache
Prior to this commmit, "mutipart/*" MIME types would be cached by the
`MimeTypeUtils` LRU cache. Since those MIME types are likely to have
random boundaries in them, they can waste space in the LRU cache.
This is not improving things since we're parsing them anyway.

This commit skips the caching step for all "multipart" MIME types.

Fixes gh-24767
2020-03-24 10:59:05 +01:00
Juergen Hoeller 2209e7cb92 Reuse empty class array constant in ClassUtils
Closes gh-24221
2020-03-24 00:08:43 +01:00
Christoph Dreis 1c6dda3ca4 Improve performance of StringUtils#cleanPath 2020-03-23 23:25:15 +01:00
Juergen Hoeller 2e23cf32ce Clarify name generation responsibility for PropertySourceFactory impls
Closes gh-24757
2020-03-23 18:02:05 +01:00
Juergen Hoeller 10d47d4d21 Enable ASM8_EXPERIMENTAL for Java 14 record support
Closes gh-24722
2020-03-23 18:00:59 +01:00
Brian Clozel 831a95154e Polish ConcurrentLruCache
This commit improves the performance of the `ConcurrentLruCache` and
applies a consistent style to the code:

* separating read/write locks into different variables does not help
performance, so this change is reverted
* apply a consistent style for read/write locks and try/cactch calls
* the reordering of recently used keys is only done when the cache is
full

Fixes gh-24671
2020-03-22 21:49:07 +01:00
Kwangyong Kim 713a112812 Improve ConcurrentLruCache performance
- manage collection size manually
- check cache hit first before size check
- reduce read-lock scope
- use `map.get` to test cache instead of `queue.remove`

Closes gh-24469
See gh-24671
2020-03-22 21:48:55 +01:00
Qimiao Chen 09b36380cd
Fix typos in source files
Closes gh-24746
2020-03-20 20:06:52 +01:00
Sam Brannen 116a256e81 Fix typos in AnnotationsScannerTests 2020-03-20 15:03:01 +01:00
Qimiao Chen 2c5781473c
Improve Javadoc in AnnotatedElementUtils
Closes gh-24740
2020-03-20 15:00:17 +01:00
Qimiao Chen d85a6c0bea
Fix typos in MergedAnnotationsCollectionTests
Closes gh-24701
2020-03-15 11:48:29 +01:00
陈其苗 c5b8406def Add some test cases in StringUtilsTests 2020-03-13 12:35:04 +00:00
陈其苗 6013591fac Polish containsAny of CollectionUtils by reusing findFirstMatch 2020-03-13 12:32:43 +00:00
Juergen Hoeller 7f26e8cfc6 Short-circuit interface visibility check in case of same ClassLoader
Closes gh-24664
2020-03-11 14:55:08 +01:00
Sam Brannen 787b09b202 Relax GraalVM check in DefaultParameterNameDiscoverer
Prior to this commit, DefaultParameterNameDiscoverer did not register
any discovers when compiling or running as a GraalVM native image.

This commit relaxes the GraalVM check so that it is only applied to the
registration of KotlinReflectionParameterNameDiscoverer.

Consequently, StandardReflectionParameterNameDiscoverer and
LocalVariableTableParameterNameDiscoverer are once again always
registered by DefaultParameterNameDiscoverer.

Closes gh-24600
2020-02-26 14:18:56 +01:00
Rossen Stoyanchev 2f12351292 Refine BlockHound support
- disable for Java 14/15 for now until BlockHound support
- targeted installation of required integrations only
2020-02-25 10:07:29 +00:00
Rossen Stoyanchev 2ae91404d1 BlockHoundIntegration for spring-core 2020-02-24 17:19:32 +00:00
Sam Brannen 7778508e69 Fix typos in ResolvableTypeTests
See gh-24529

Co-authored-by: Qimiao Chen <chenqimiao1994@126.com>
2020-02-24 15:37:42 +01:00
Sam Brannen d1a6e49475 Reset SecurityManager in finally-block and polish 2020-02-23 18:33:56 +01:00
Sam Brannen 809ed9d469 Rename PropertyResolverExtensionsTests to Kotlin* 2020-02-23 18:21:53 +01:00
Qimiao Chen f78c21e40b
Fix typos in tests
Closes gh-24566
2020-02-22 18:32:02 +01:00
Sam Brannen 8ff1ac59e0 Polishing 2020-02-19 11:29:51 +01:00
Rossen Stoyanchev 87f866b688 Update DigestUtils Javadoc with regards to InputStream
Closes gh-24534
2020-02-18 19:56:25 +00:00
Sam Brannen 5d4f1d9e09 Extract ValueExtractor functional interface
See gh-24375
2020-02-12 10:49:36 +01:00
Sam Brannen 974cacac31 Support nested annotations in ASM-based processing again
Spring Framework 5.0 introduced a regression in ASM-based annotation
processing. Specifically, nested annotations were no longer supported,
and component scanning resulted in an exception if a candidate
component was annotated with an annotation that contained nested
annotations.

This commit fixes this regression by introducing special handling in
AnnotationTypeMapping that supports extracting values from objects of
type TypeMappedAnnotation when necessary.

Closes gh-24375
2020-02-12 10:36:54 +01:00
Rossen Stoyanchev d552105516 Eliminate windowUntil from StringDecoder
This is a follow-up on the earlier commit
28a95e89f3 eliminating windowUntil
entirely which generates a BubblingException wrapper. This also keeps
the chain a little simpler.

See gh-24355
2020-02-11 16:49:21 +00:00
Rossen Stoyanchev 28a95e89f3 Upgrade to Dysprosium SR5 snapshots
See gh-24355
2020-02-11 12:52:04 +00:00
Rossen Stoyanchev 7d1d989535 Minor polishing in ConcurrentReferenceHashMap
Closes gh-24494
2020-02-11 10:49:28 +00:00
Rossen Stoyanchev e4a530efac Minor refactoring in CommonsLogWriter
Closes gh-24495
2020-02-11 10:40:24 +00:00
Rossen Stoyanchev df706f4c7c Restore use of Flux-based encode method in HTTP
Closes gh-24441
2020-02-07 21:44:44 +00:00
Sam Brannen 2b6117c0c2 Fix Checkstyle violation
See gh-24393
2020-02-04 13:45:02 +01:00
Sam Brannen 72685b1d81 Polish contribution
See gh-24393
2020-02-04 13:41:31 +01:00
Hyunjin Choi d624dc084f
Add close() method in FileCopyUtils to reduce duplication
Closes gh-24393
2020-02-04 13:36:24 +01:00
Hyunjin Choi 550f13e8ed
Simplify GenericConversionService.getMatchableConverters()
Closes gh-24403
2020-02-04 12:59:57 +01:00
Rossen Stoyanchev f5df422de9 Polishing contribution
See gh-24470
2020-02-03 20:32:36 +00:00
Hyunjin Choi 273812f9c5 Remove unnecessary escapes in regular expressions
See gh-24470
2020-02-03 20:22:40 +00:00
Sam Brannen cf9a052e3a Polish contribution
See gh-24428
2020-02-03 15:39:00 +01:00
Hyunjin Choi 1b39f138eb
Test ObjectUtils.containsElement()
This commit introduces a unit test for the containsElement() method
in ObjectUtils.

Closes gh-24428
2020-02-03 15:34:47 +01:00
Hyunjin Choi 14a32d13d0
Fix typo in StringUtils class
Closes gh-24471
2020-02-03 15:23:32 +01:00
Sam Brannen d77a28aac3 Support optional command line arguments with empty values
Spring Framework provides two implementations of the
CommandLinePropertySource API: SimpleCommandLinePropertySource and
JOptCommandLinePropertySource.

Prior to this commit, JOptCommandLinePropertySource supported empty
values for optional arguments; whereas, SimpleCommandLinePropertySource
did not.

This commit modifies the implementation of SimpleCommandLinePropertySource
to allow empty values for optional arguments.

Closes gh-24464
2020-02-03 15:03:43 +01:00
Sam Brannen daebbf1960 Polishing 2020-01-31 14:34:50 +01:00
Сергей Цыпанов 64440a5f04 Some trivial improvements to reduce allocation pressure
Closes gh-24447
2020-01-28 11:07:40 +01:00
Juergen Hoeller 75abd9fc7e Upgrade to ASM 7.3
Closes gh-24438
2020-01-27 18:18:16 +01:00
Kalmesh Sambrani d085577e0a Solve ReflectPermission Issue in Sandbox Security Policy Model 2020-01-24 14:15:39 +01:00
Sam Brannen b34404916a Update copyright date 2020-01-17 18:15:16 +01:00
Сергей Цыпанов 3adc7c3059 Hoist concatenation of two constant Strings out of loops
Closes gh-24388
2020-01-17 16:59:39 +01:00
Sam Brannen daa30a9f0b Consistent use of AnnotationUtils.rethrowAnnotationConfigurationException()
Closes gh-24379
2020-01-16 18:19:11 +01:00
Sam Brannen 6c2cb8ecf5 Polish contribution
See gh-24351
2020-01-14 17:33:02 +01:00
hyeonisism f1827cb1f9 Add tests for StringUtils split() method
Closes gh-24351
2020-01-14 17:20:38 +01:00
Sam Brannen 33ffdd865d Update copyright date 2020-01-13 16:29:23 +01:00
Qimiao Chen c84dd55863 Fix typo in ReflectionUtilsTests
Closes gh-24344
2020-01-13 16:27:05 +01:00
Rossen Stoyanchev cbc57460b7 Support for maxInMemorySize in SSE reader
Closes gh-24312
2020-01-13 14:57:14 +00:00
Rossen Stoyanchev a741ae422b Improve limit handling in StringDecoder
The case of one data buffer containing multiple lines can could cause
a buffer leak due to a suspected issue in concatMapIterable. This
commit adds workarounds for that until the underlying issue is
addressed.

Closes gh-24339
2020-01-13 14:57:14 +00:00
Sam Brannen cb8db1e6df Polish Javadoc 2020-01-10 16:05:33 +01:00
Juergen Hoeller 4936a637fe Polishing 2020-01-09 17:03:17 +01:00
Juergen Hoeller c39ed52f97 Add since tag to hasMethod(Class, Method)
See gh-24282
2020-01-08 19:05:03 +01:00
stsypanov 8e5cad2af3 Add fast path for ClassUtils.hasMethod() 2020-01-08 18:52:15 +01:00
Rossen Stoyanchev 01827389ef Polishing contribution
See gh-24292
2020-01-08 16:19:25 +00:00
Oleh Faizulin e96b71acf3 contentLength support for Resource decoding
Expose the known content length, if known, in the InputStreamResource returned by ResourceHttpMessageConverter or
ResourceDecoder.

See gh-24292
2020-01-08 16:19:11 +00:00
Sam Brannen 3299793c8a Polish [Simple]AliasRegistry[Tests] 2020-01-06 11:30:05 +01:00
Qimiao Chen d0c2812dad Optimize SimpleAliasRegistry hasAlias implementation
This commit reduces the number of loops and recursions in
the implementation of SimpleAliasRegistry#hasAlias().

Closes gh-24295
2020-01-06 11:28:24 +01:00
Sam Brannen 081b3d304d Move JavaUtilLoggingConfigurer to spring-core test fixtures
See gh-23550
2020-01-03 14:34:29 +01:00
Sam Brannen 94f8ef08e2 Move common TestPrincipal to spring-core test fixtures
See gh-23550
2020-01-02 16:01:35 +01:00
Sam Brannen 4260c34b47 Rename test fixture package in spring-core
See gh-23550
2020-01-02 16:01:34 +01:00
Sam Brannen 5718bf424b Use Gradle test fixture support for spring-core
See gh-23550
2020-01-02 16:01:34 +01:00
Rossen Stoyanchev 0eacb443b0 Reuse InputStream in ResourceRegionHttpMessageConverter
The converter now tries to keep reading from the same InputStream which
should be possible with ordered and non-overlapping regions. When
necessary the InputStream is re-opened.

Closes gh-24214
2019-12-18 16:22:53 +00:00
Juergen Hoeller 0711e58a5f Un-deprecate PathResource (for NIO Path resolution in createRelative)
Includes aligned createRelative signature and dedicated java.io.File test.

Closes gh-24211
2019-12-16 16:50:04 +01:00
Juergen Hoeller f353bc0c25 ConcurrentReferenceHashMap cache for getInterfaceMethodIfPossible results
Closes gh-24206
2019-12-16 16:49:39 +01:00
Sam Brannen 17edbec035 Polishing 2019-12-13 16:30:03 +01:00
Sam Brannen 49ddf798e0 Polish ClassUtils.resolvePrimitiveClassName()
See gh-24192
2019-12-13 15:47:05 +01:00
Juergen Hoeller fa8f08391f Consistent use of annotation-api dependency instead of tomcat-embed-core 2019-12-12 17:21:41 +01:00
Sam Brannen d757f73902 Handle exceptions in annotation searches again
Prior to Spring Framework 5.2, most annotation search algorithms made
use of AnnotationUtils.handleIntrospectionFailure() to handle exceptions
thrown while attempting to introspect annotation metadata. With the
introduction of the new MergedAnnotation API in Spring Framework 5.2,
this exception handling was accidentally removed.

This commit introduces the use of handleIntrospectionFailure() within
the new MergedAnnotation internals in order to (hopefully) align with
the previous behavior.

Closes gh-24188
2019-12-12 11:29:06 +01:00
Sam Brannen 6e21b19999 Make TYPE_HIERARCHY_AND_ENCLOSING_CLASSES annotation search strategy defensive
Prior to this commit, when searching for annotations using the
TYPE_HIERARCHY_AND_ENCLOSING_CLASSES strategy an exception could be
thrown while attempting to load the enclosing class (e.g., a
NoClassDefFoundError), thereby halting the entire annotation scanning
process.

This commit makes this search strategy defensive by logging exceptions
encountered while processing the enclosing class hierarchy instead of
allowing the exception to halt the entire annotation scanning process.

The exception handling is performed by
AnnotationUtils.handleIntrospectionFailure() which only allows an
AnnotationConfigurationException to propagate.

See gh-24136
2019-12-10 22:38:55 +01:00
Sam Brannen 16ed7e2a19 Only load enclosing class for TYPE_HIERARCHY_AND_ENCLOSING_CLASSES strategy
Prior to this commit, the enclosing class was always eagerly loaded
even if the annotation search strategy was not explicitly
TYPE_HIERARCHY_AND_ENCLOSING_CLASSES.

See gh-24136
2019-12-10 22:08:26 +01:00
Sam Brannen 76bc581528 Polishing 2019-12-10 22:06:22 +01:00
Sam Brannen 2bd821c909 Improve exception for mixed explicit/implicit aliases with @AliasFor
Given the following improperly configured composed @RequestMapping
annotation:

@Retention(RetentionPolicy.RUNTIME)
@RequestMapping
@interface PostApi {

	@AliasFor("value")
	String[] path() default {};

	@AliasFor(annotation = RequestMapping.class, attribute = "path")
	String[] value() default {};
}

Prior to this commit, an attempt to process the above annotation
resulted in an exception similar to the following, which is not
especially helpful to discern the problem.

> Attribute 'value' in annotation [PostApi] must be declared as an
> @AliasFor 'path', not 'path'.

This commit improves the exception message for such scenarios,
resulting in an exception message similar to the following.

> Attribute 'value' in annotation [PostApi] must be declared as an
> @AliasFor attribute 'path' in annotation [PostApi], not attribute
> 'path' in annotation [RequestMapping].

Closes gh-24168
2019-12-10 14:36:11 +01:00
Sam Brannen 4466114cfa Polishing 2019-12-10 14:26:48 +01:00
Juergen Hoeller 2c03246f00 Polishing 2019-12-09 15:58:21 +01:00
Juergen Hoeller 2d2993dffb Cleanup of "varaible" typos in ResolvableTypeTests 2019-12-09 14:03:56 +01:00
Juergen Hoeller a4f75e9c6a Polishing 2019-12-09 13:29:00 +01:00
stsypanov ebbb562cb9 Hoist constant result of SerializableTypeWrapper.unwrap() out of loop 2019-12-09 13:14:10 +01:00
PyvesB e15ccdb35d Polish DataBufferUtils javadoc
See gh-24160
2019-12-08 14:01:55 +01:00
stsypanov 484006ce90 Hoist Class.getName() from String concatenation to dodge an issue related to profile pollution 2019-12-06 17:36:07 +01:00
Phillip Webb 7c84695333 Support variable resolution of wildcard types
Update `ResolvableType` so that variable referenced can be resolved
against wildcard types. Prior to this commit, given a type:

	Map<String, ? extends List<? extends CharSequence>>

Calling `type.getGeneric(1).asCollection().resolveGeneric()` would
return `null`. This was because the `List` variable `E` referenced a
wildcard type which `resolveVariable` did not support.

Closes gh-24145
2019-12-06 13:38:46 +01:00
Sam Brannen a4fa6a7a31 Test status quo for @Inherited annotation support in AnnotationMetadata 2019-12-05 23:30:14 +01:00
Sam Brannen 3b9d1a00b0 Polishing 2019-12-05 22:37:00 +01:00
Juergen Hoeller c2141e2e93 Add @since tags to firstElement methods 2019-12-05 16:36:55 +01:00
Vitalii Rastvorov d503bc2804 Add firstElement to CollectionUtils 2019-12-05 16:26:25 +01:00
Sam Brannen fb13f6f0bc Add integration test for gh-24110 2019-12-03 16:48:30 +01:00
wanxiangming1994 6f15f32be3 Honor default values for implicit aliases in composed annotations
Spring Framework 5.2 introduced a regression for implicit aliases
declared via @AliasFor. Specifically, Spring's merged annotation
algorithms stopped honoring default values for implicit alias pairs if
the composed annotation was used without specifying the aliased
attributes.

This commit fixes this regression.

Closes gh-24110
2019-12-03 16:14:49 +01:00
Sam Brannen 279777b2f3 Polishing 2019-12-02 16:22:40 +01:00
Sam Brannen d9ebc3bbc4 Polish StringArrayPropertyEditor[Tests] 2019-11-29 14:55:18 +01:00
Sam Brannen 7cedffc707 Support @Inherited again in reflection-based AnnotationMetadata
Spring Framework 5.2 introduced a regression in reflection-based
AnnotationMetadata. Specifically, as of 5.2, StandardAnnotationMetadata
no longer found @Inherited annotations from superclasses.

This commit fixes this regression by switching to the INHERITED_ANNOTATIONS
SearchStrategy when creating the MergedAnnotations used within
StandardAnnotationMetadata,

Note, however, that the discrepancy between StandardAnnotationMetadata
and SimpleAnnotationMetadata (i.e., reflection-based vs. ASM-based)
regarding @Inherited support still remains as it was prior to Spring
Framework 5.2.

Closes gh-24077
2019-11-29 00:07:44 +01:00
Sam Brannen 85016aef30 Test status quo for @Inherited annotations in AnnotationMetadata
This commit introduces failing assertions that are currently disabled
via a boolean reproduceGh24077 flag.

Setting that flag to true demonstrates the regression for
StandardAnnotationMetadata and inconsistencies for SimpleAnnotationMetadata.

See gh-24077
2019-11-28 18:45:58 +01:00
Sam Brannen d1f544209e Test status quo for AnnotatedTypeMetadata.getAnnotationAttributes()
See gh-24077
2019-11-28 13:50:35 +01:00
Sébastien Deleuze 712eac2915 Refine Coroutines annotated controller support
This commit refines Coroutines annotated controller support
by considering Kotlin Unit as Java void and using the right
ReactiveAdapter to support all use cases, including suspending
functions that return Flow (usual when using APIs like WebClient).

It also fixes RSocket fire and forget handling and adds related tests
for that use case.

Closes gh-24057
Closes gh-23866
2019-11-22 14:13:17 +01:00
Juergen Hoeller 06b1f31cdd SynthesizedMergedAnnotationInvocationHandler does not pre-load values
Closes gh-24029
2019-11-19 14:54:12 +01:00
Juergen Hoeller 4af6039359 Avoid substring allocation in StringUtils.replace
Closes gh-24023
2019-11-19 14:53:30 +01:00
Juergen Hoeller 830f81210f Revise getElementTypeDescriptor javadoc (no IllegalStateException)
Closes gh-23996
2019-11-14 18:31:32 +01:00
Sébastien Deleuze 029e61f54a Refine MethodParameter#isOptional Kotlin implementation
This commit adds support for Continuation parameter that is now
considered as an optional parameter since it is never provided by
the user.

It also simplifies and optimizes the implementation.

Closes gh-23991
2019-11-14 15:28:06 +01:00
Juergen Hoeller 22211a01ce Polishing 2019-11-13 17:23:23 +01:00
Rossen Stoyanchev f2b9264674 Remove Jetbrains annotations 2019-11-13 14:42:32 +00:00
Sébastien Deleuze 7646895fd4 Support Kotlin synthetic classes in MethodParameter and SpEL
Closes gh-23812
2019-11-13 14:22:53 +01:00
stsypanov f2b3953d76 Use array.clone() instead of manual array creation 2019-11-13 13:53:42 +01:00
Juergen Hoeller 9cc06454aa Restore findAnnotation superclass traversal for java.lang annotations
Closes gh-23929
2019-11-12 11:51:44 +01:00
Arjen Poutsma 789f6fc188 Add @Nullable annotation to decode method taking DataBuffer
Javadoc indicates the returned value can be null.
2019-11-11 16:48:30 +01:00
Andy Wilkinson b5fb28284e Upgrade to Shadow Plugin 5.2.0
Closes gh-23971
2019-11-11 14:56:40 +01:00
Juergen Hoeller 6a48bb7b4d Polishing 2019-11-07 22:08:29 +01:00
stsypanov f5ae3c77c6 Use Method::getParameterCount where possible 2019-11-07 18:00:15 +01:00
Sam Brannen 29b31cad48 Align implementations of StringToUUIDConverter and UUIDEditor
Closes gh-23940
2019-11-06 14:21:52 +01:00
Sam Brannen 01fb35bd2d Remove TestGroup.CI enum constant
Prior to this commit, the TestGroup.CI enum constant was only used in a
single test method in spring-core. In order to enable that test, the
`testGroups` JVM system property was configured for the
Publication-master CI build plan; however, the `testGroups` system
property is not set when executing local builds. Consequently, there
has been a Gradle cache miss for every `test` task when building
something locally that's already been built on the CI server.

This commit addresses this issue by removing the `TestGroup.CI` enum
constant. The `-PtestGroups=ci` command line configuration for the
Publication-master CI build plan has also been removed on the CI server.

Closes gh-23918
2019-11-04 15:44:53 +01:00
François Guillot 2411b657ae Fix spring-core jar task 'up-to-date'-ness
See gh-23729
2019-11-04 10:29:58 +01:00
Sam Brannen 95af079906 Document unidirectional @AliasFor attribute mapping support
See gh-23834
2019-10-31 15:27:27 +01:00
Sam Brannen 9f00eb68e9 Clean up warnings 2019-10-30 19:14:58 +01:00
Christoph Dreis 3c17178b16 Fix Mockito deprecations 2019-10-30 18:30:05 +01:00
Juergen Hoeller 19ff7d84ab Polishing 2019-10-30 14:31:46 +01:00
Juergen Hoeller 42e7ade110 Tolerate unidirectional alias declaration for annotation attribute pair
Closes gh-23834
2019-10-30 14:31:09 +01:00
Juergen Hoeller dba7bf7ec1 Avoid unnecessary setAccessible call in AttributeMethods
Closes gh-23829
2019-10-30 14:30:26 +01:00
Juergen Hoeller dc59e50561 Avoid unnecessary use of ResolvableType within MethodParameter
Closes gh-23792
2019-10-30 01:04:26 +01:00
Juergen Hoeller d51ab24a1b Latest dependency updates (Tomcat 9.0.27, Undertow 2.0.27, RxJava 2.2.13, Gson 2.8.6, Apache Johnzon 1.2.1, Hibernate ORM 5.4.8, EclipseLink 2.7.5, H2 1.4.200, POI 4.1.1, Quartz 2.3.2, WebJars Locator 0.42, HtmlUnit 2.36, Checkstyle 8.26, Mockito 3.1, Objenesis 3.1) 2019-10-30 00:26:45 +01:00
Rossen Stoyanchev 5abf24e7d7 Expose maxInMemorySize via CodecConfigurer
Centralized maxInMemorySize exposed via CodecConfigurer along with
ability to plug in an instance of MultipartHttpMessageWrite.

Closes gh-23884
2019-10-29 12:33:16 +00:00
Brian Clozel 69bcdfc17f Polishing 2019-10-29 12:33:16 +00:00
Rossen Stoyanchev 89d053d7f4 Limits on input stream in codecs
- Add maxInMemorySize property to Decoder and HttpMessageReader
  implementations that aggregate input to trigger
  DataBufferLimitException when reached.

- For codecs that call DataBufferUtils#join, there is now an overloaded
  variant with a maxInMemorySize extra argument. Internally, a custom
  LimitedDataBufferList is used to count and enforce the limit.

- Jackson2Tokenizer and XmlEventDecoder support those limits per
  streamed JSON object.

See gh-23884
2019-10-29 12:33:16 +00:00
Phillip Webb 013ec6abdb Support customer repeatable containers in type map
Update `AnnotationTypeMappings` so that a custom `RepeatableContainers`
instances can be used. Prior to this commit, only standard repeatables
were used when reading the annotations. This works in most situations,
but causes regressions for some `AnnotationUtils` methods.

Fixed gh-23856
2019-10-24 13:20:11 -07:00
Sam Brannen f8b875d2d8 Introduce failing @Disabled test for gh-23856 2019-10-24 16:15:59 +02:00
Sam Brannen 71400ea604 Polish MergedAnnotation internals 2019-10-22 13:58:13 +02:00
Sam Brannen 2146bc816a Fix Checkstyle violations
See gh-23767
2019-10-22 12:40:38 +02:00
Phillip Webb ad543dbee3 Use mapped annotation values when resolving mirrors
Update `TypeMappedAnnotation` mirror resolution logic so that mapped
annotation values are also considered. Prior to this commit, mirrors
in more complex meta-annotation scenarios would not resolve correctly.

Specifically, given the following:

 @interface TestAliased {

 	@AliasFor(attribute = "qualifier")
 	String value() default "";

 	@AliasFor(attribute = "value")
 	String qualifier() default "";
 }

 @TestAliased
 @interface TestMetaAliased {

 	@AliasFor(annotation = Aliased.class, attribute = "value")
 	String value() default "";
 }

 @TestMetaAliased("test")
 @interface TestComposed {
 }

A merged `@TestAliased` annotation obtained from a `@TestComposed`
root annotation would return a `value` and `qualifier` of "".

This was because the "value" and "qualifier" mirrors needed to be
resolved against the `@TestMetaAliased` meta-annotation. They cannot be
resolved against the declared `@TestComposed` annotation because it
does not have any attributes. Our previous tests only covered a single
depth scenario where `@TestMetaAliased` was used directly on the
annotated element.

Closes gh-23767
Co-authored-by: Sam Brannen <sbrannen@pivotal.io>
2019-10-21 21:57:30 -07:00
Sam Brannen b1a938fa24 Polishing 2019-10-21 13:51:37 -07:00
Stephane Nicoll 29f0d1b25e Remove TODO in AnnotationUtils
Closes gh-23727
2019-09-30 07:57:12 +02:00
Juergen Hoeller 2861fc65bd Polishing 2019-09-27 10:17:56 +02:00
Sam Brannen 2526553ecd Document terms and units in DataSize and DataUnit
Prior to this commit, it was not readily apparent what terms and units
such as kilobyte/KB and megabyte/MB represented numerically in DataSize
and DataUnit.

This commit clarifies that such terms and units are based on binary
prefixes for data (i.e., powers of 2 instead of powers of 10).

Closes gh-23697
2019-09-26 16:05:12 +02:00
Sam Brannen 77b896ca28 Polishing 2019-09-26 11:58:45 +02:00
Sebastien Deleuze 091c512f0d Upgrade to Coroutines 1.3.2
Closes gh-23663
2019-09-25 21:51:04 +02:00
Juergen Hoeller bd70f10d2b Merge branch '5.1.x'
# Conflicts:
#	build.gradle
#	spring-aop/src/main/java/org/springframework/aop/framework/CglibAopProxy.java
#	spring-aspects/spring-aspects.gradle
#	spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java
#	spring-beans/src/main/java/org/springframework/beans/factory/support/GenericBeanDefinition.java
#	spring-beans/src/test/java/org/springframework/beans/factory/DefaultListableBeanFactoryTests.java
#	spring-orm/spring-orm.gradle
#	spring-test/spring-test.gradle
2019-09-25 12:43:24 +02:00
Juergen Hoeller bb6f9bb6d4 Polishing 2019-09-25 12:14:48 +02:00
Sam Brannen e6678f40e8 Make DataSize constants final 2019-09-24 15:32:26 +02:00
Sam Brannen 402046f3c7 Polish data buffer allocation tests 2019-09-24 14:24:36 +02:00
Sam Brannen bba3553dfb Polish SpringVersion 2019-09-24 12:43:10 +02:00
Sam Brannen 4acd180fa3 Document that setting static final fields is unsupported
This commit updates the documentation for ReflectionUtils and
ReflectionTestUtils to point out that setting static final fields is
not supported.
2019-09-21 15:42:09 +02:00
Sam Brannen fccdb8cf60 Polish ReflectionUtils
This commit removes dead code in ReflectionUtils and improves the
exception message for field access errors.
2019-09-21 15:29:03 +02:00
Juergen Hoeller 4882dfcc0d Consistent relative path treatment (no accidental URL fragment symbol)
Closes gh-23532
2019-09-20 21:55:27 +02:00
Juergen Hoeller 957924ace2 Avoid early log provider initialization (and LogAccessor dependency)
Closes gh-23655
2019-09-20 21:54:53 +02:00
Stephane Nicoll 37d950c5d6 Merge branch '5.1.x' 2019-09-16 14:37:15 +02:00
Stephane Nicoll b65984a078 Consume getProtocolResolvers() rather than internal list
This commit makes sure that DefaultResourceLoader consistently use
getProtocolResolvers() to access additional protocol resolvers. This
allows subclasses to define how the list is provided.

Closes gh-23564
2019-09-16 14:35:00 +02:00
Phillip Webb d945ae9191 Add blank line between java and javax imports
See gh-23539

Co-authored-by: Sam Brannen <sbrannen@pivotal.io>
2019-09-16 13:41:59 +02:00
Sam Brannen d09f537699 Annotate Object#equals parameter with @nullable
See gh-23093

Co-authored-by: Sebastien Deleuze <sdeleuze@pivotal.io>
2019-09-16 12:43:13 +02:00
Juergen Hoeller c8f20815ef Revise LinkedCaseInsensitiveMap's lazy key/value/entry collections
Closes gh-22926
2019-09-16 12:38:46 +02:00
Juergen Hoeller 60976e4116 Add missing nullable declarations
See gh-22821
2019-09-16 12:37:49 +02:00
Phillip Webb aa69703f3b 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-09-16 12:36:05 +02:00
Sam Brannen 957f0fac7a Polishing 2019-09-13 12:55:59 +02:00
Sam Brannen 30cff46e7f Prevent improper use of testing framework APIs
Prior to this commit, a lot of work had been done to prevent improper
use of testing Framework APIs throughout the codebase; however, there
were still some loopholes.

This commit addresses these loopholes by introducing additional
Checkstyle rules (and modifying existing rules) to prevent improper use
of testing framework APIs in production code as well as in test code.

- Checkstyle rules for banned imports have been refactored into
  multiple rules specific to JUnit 3, JUnit 4, JUnit Jupiter, and
  TestNG.
- Accidental usage of org.junit.Assume has been switched to
  org.junit.jupiter.api.Assumptions.
- All test classes now reside under org.springframework packages.
- All test classes (including abstract test classes) now conform to the
  `*Tests` naming convention.
  - As an added bonus, tests in the renamed
    ScenariosForSpringSecurityExpressionTests are now included in the
    build.
- Dead JUnit 4 parameterized code has been removed from
  DefaultServerWebExchangeCheckNotModifiedTests.

Closes gh-22962
2019-09-12 11:20:56 +02:00
Sam Brannen 333711fd36 Convert XmlValidationModeDetectorTests to JUnit Jupiter and AssertJ
See gh-23605
2019-09-09 16:29:00 +02:00
Sam Brannen 22c88d7126 Merge branch '5.1.x' 2019-09-09 16:25:20 +02:00
Sam Brannen 961010055e Support trailing comment in DTD declaration in XML config
Prior to this commit, Spring failed to determine that an XML config file
was DTD-based if the DTD declaration was followed by a comment.

This commit fixes this by modifying the consumeCommentTokens(String)
algorithm in XmlValidationModeDetector so that both leading and trailing
comments are properly consumed without losing any XML content.

Closes gh-23605
2019-09-09 16:18:21 +02:00
Sam Brannen 591995ecc8 Polish and revive disabled tests
This commit revives some previously disabled tests and converts
some usage of @Disabled to @EnabledForTestGroups(...).
2019-09-06 15:57:27 +02:00
Phillip Webb deba2ed1b3 Add blank line between java and javax imports
See gh-23539
2019-09-04 22:05:46 -07:00
Sam Brannen 07d4104f2f Polishing 2019-09-04 14:12:44 +02:00
Rossen Stoyanchev 310f0bfb6c Remove unnecessary code from prior commit 2019-09-04 12:59:19 +01:00
Rossen Stoyanchev dfc7540106 Add generic type bounds to DataBufferUtils methods
Closes gh-23459
2019-09-04 12:14:32 +01:00
Juergen Hoeller 3bc27e8d14 Streamline AnnotationFilter usage with the MergedAnnotations API
MergedAnnotations provides 'from' variants with RepeatableContainers but without AnnotationFilter argument now, avoiding the need to refer to AnnotationFilter.PLAIN as a default at call sites.
2019-09-04 12:18:49 +02:00
Rossen Stoyanchev c8f430ee91 Change package used to test path matching
The org.reactivestreams has 13 instead of 4 classes in 1.0.3 with the
addition of Java 9 Flow adapters. This commit switches to using a
different package reactor.util.annotation, also with a small number of
classes, for this test.
2019-09-04 10:37:57 +01:00
Sebastien Deleuze 9b33b0ad58 Rename CoroutinesUtils#invokeHandlerMethod to invokeSuspendingFunction 2019-09-03 23:41:53 +02:00
Sam Brannen aeb857c3ba Polish ClassUtilsTests
See gh-23572
2019-09-03 17:58:54 +02:00
Sam Brannen c78960a1ba Merge branch '5.1.x' 2019-09-03 14:21:39 +02:00
Sam Brannen f37ec90f2f Consider Void.class a primitive wrapper in ClassUtils
Prior to this commit, ClassUtils.isPrimitiveOrWrapper() and
ClassUtils.isPrimitiveWrapper() did not return true for Void.class.
However, ClassUtils.isPrimitiveOrWrapper() did return true for
void.class. This lacking symmetry is inconsistent and can lead to bugs
in reflective code.

See: https://github.com/spring-projects/spring-data-r2dbc/issues/159

This commit addresses this by adding an entry for Void.class -> void.class
in the internal primitiveWrapperTypeMap in ClassUtils.

Closes gh-23572
2019-09-03 14:02:24 +02:00
Brian Clozel d4089747b8 Use dependency management in Framework build
Prior to this commit, the Spring Framework build would partially use the
dependency management plugin to import and enforce BOMs.

This commit applies the dependency management plugin to all Java
projects and regroups all version management declaration in the root
`build.gradle` file (versions and exclusions).

Some versions are overridden in specific modules for
backwards-compatibility reasons or extended support.

This commit also adds the Gradle versions plugin that checks for
dependency upgrades in artifact repositories and produces a report; you
can use the following:

    ./gradlew dependencyUpdates
2019-09-02 18:01:09 +02:00
Sebastien Deleuze ca02cc1194 Migrate to AssertJ in Kotlin tests
Closes gh-23475
2019-09-02 15:59:26 +02:00
Arjen Poutsma 3fcf4233a2 Merge branch '5.1.x' 2019-09-02 15:19:30 +02:00
Arjen Poutsma f748b1e68d Fix timing bug in DataBufferUtils::readAsynchronousFileChannel
This commit makes sure that reading is enabled after the current
signal has been processed, not while is is being processed. The bug
was only apparent while using the JettyClientHttpConnector, which
requests new elements continuously, even after the end of the
stream has been signalled.
2019-09-02 15:13:22 +02:00
Arjen Poutsma 702dad6cec Fix ConcurrentModificationException 2019-09-02 12:42:21 +02:00
Arjen Poutsma 67d48ed821 Merge branch '5.1.x' 2019-08-29 17:18:22 +02:00
Arjen Poutsma 2c5958e191 Support back pressure in DataBufferUtils::readAsynchronousFileChannel
This commit adds support for back pressure in the ReadCompletionHandler,
as used by DataBufferUtils::readAsynchronousFileChannel.

See gh-23518
2019-08-29 16:34:36 +02:00
OLPMO ed64a10c38 Use Collections.addAll where feasible
Closes gh-23478
2019-08-29 13:59:14 +02:00
Sam Brannen c004ef888c Configure index in @ParameterizedTest display names
This commit prepends "[{index}] " to all custom display names
configured via @ParameterizedTest.

This provides better diagnostics between the "technical names" reported
on the CI server vs. the "display names" reported within a developer's
IDE.

See gh-23451
2019-08-28 17:06:23 +02:00
Sam Brannen b173a93e72 Verify PathMatchingResourcePatternResolver finds local files with # in name
This commit introduces a test that verifies that
PathMatchingResourcePatternResolver can find files in the filesystem
that contain hashtags (#) in their names.

See gh-23532
2019-08-28 16:21:07 +02:00
Sebastien Deleuze 77da40f006 Upgrade to Coroutines 1.3.0
Closes gh-23535
2019-08-28 13:30:40 +02:00
stsypanov 78d56dc61b Use Arrays.copyOf and Arrays.copyOfRange where possible
Closes gh-23393
2019-08-27 19:18:39 +02:00
Сергей Цыпанов 6ef75d76cd Simplify String concatenation
Closes gh-23470
2019-08-27 18:22:44 +02:00
Sam Brannen bfbe84d1c6 Apply fudge factor on both ends of the spectrum in StopWatchTests
This is an attempt to solve a build issue on Microsoft Windows.

See gh-23507
2019-08-23 16:50:27 +02:00
Sam Brannen ad6231ad29 Add missing @Override annotations 2019-08-23 13:50:58 +02:00
Brian Clozel 86c734785d Apply Artifactory Gradle plugin
Instead of relying on the CI server to apply and configure this plugin,
this commit does it directly in the Spring Framework build.
This allows us to take full control over which projects are published
and how.

See gh-23282
2019-08-21 20:15:35 +02:00
Brian Clozel 7ce1f5e652 Configure Maven publications with Gradle
Prior to this commit, the build would use a custom task to create a BOM
and manually include/exclude/customize dependencies. It would also use
the "maven" plugin to customize the POM before publication.

This commit now uses a Gradle Java Platform for publishing the Spring
Framework BOM. We're also now using the "maven-publish" plugin to
prepare and customize publications.

This commit also tells the artifactory plugin (which is currently
applied only on the CI) not to publish internal modules.

See gh-23282
2019-08-21 15:39:51 +02:00
Brian Clozel e45a3f4738 Rename non-Framework project modules
Prior to this commit, the Spring Framework build would mix proper
framework modules (spring-* modules published to maven central) and
internal modules such as:
* "spring-framework-bom" (which publishes the Framework BOM with all
modules)
* "spring-core-coroutines" which is an internal modules for Kotlin
compilation only

This commit renames these modules so that they don't start with
"spring-*"; we're also moving the "kotlin-coroutines" module under
"spring-core", since it's merged in the resulting JAR.

See gh-23282
2019-08-21 14:32:25 +02:00
Brian Clozel e9523161f0 Revert "Revert "Refactor Gradle tasks in Spring Framework build""
This reverts commit fb0d618751.
2019-08-20 20:26:43 +02:00
Stephane Nicoll fb0d618751 Revert "Refactor Gradle tasks in Spring Framework build"
This reverts commit 1539ba8991.
2019-08-20 20:07:11 +02:00
Brian Clozel 1539ba8991 Refactor Gradle tasks in Spring Framework build
This commit reorganizes tasks and scripts in the build to only apply
them where they're needed. We're considering here 3 "types" of projects
in our build:
* the root project, handling documentation, publishing, etc
* framework modules (a project that's published as a spring artifact)
* internal modules, such as the BOM, our coroutines support and our
integration-tests

With this change, we're strealining the project configuration for all
spring modules and only applying plugins when needed (typically our
kotlin support).

See gh-23282
2019-08-20 18:17:02 +02:00
Sam Brannen aa6e762dcf Re-enable shadowed, overridden @Test methods
Due to a bug (or "unintentional feature") in JUnit 4, overridden test
methods not annotated with @Test are still executed as test methods;
however, JUnit Jupiter does not support that. Thus, prior to this
commit, some overridden test methods in spring-core were no longer
executed after the migration from JUnit 4 to JUnit Jupiter.

This commit addresses this issue for such known use cases, but there
are likely other such use cases within Spring's test suite.

See gh-23451
2019-08-20 15:30:32 +02:00
Sam Brannen fab96cad67 Use default visibility for test classes and methods in spring-core
See gh-23451
2019-08-20 15:30:24 +02:00
Sam Brannen 4386bf05de Delete obsolete interface 2019-08-19 15:35:02 +02:00
Sam Brannen 74ccfe3533 Polish Spring's internal TestGroup support 2019-08-19 15:21:16 +02:00
Sebastien Deleuze 4d10249b70 Update to Coroutine 1.3.0-RC2
This updates brings full interoperability between Reactor and
Coroutines contexts.

Closes gh-22986
2019-08-19 10:03:01 +02:00
Andrey Kolchanov 6937d95e69 Remove unnecessary semicolon in AnnotatedElementUtils
Closes gh-23477
2019-08-17 15:07:39 +02:00
Sam Brannen 288461a541 Introduce @EnabledForTestGroups in Spring's test suite
Closes gh-23476
2019-08-17 14:47:24 +02:00
Sam Brannen 979508a7f3 Remove JUnit 4 dependency from all modules except spring-test
This commit removes the JUnit 4 dependency from all modules except
spring-test which provides explicit JUnit 4 support.

This commit also includes the following.

- migration from JUnit 4 assertions to JUnit Jupiter assertions in all
  Kotlin tests
- migration from JUnit 4 assumptions in Spring's TestGroup support to
  JUnit Jupiter assumptions, based on org.opentest4j.TestAbortedException
- introduction of a new TestGroups utility class than can be used from
  existing JUnit 4 tests in the spring-test module in order to perform
  assumptions using JUnit 4's Assume class

See gh-23451
2019-08-17 11:37:21 +02:00
Sam Brannen 3df85c783f Migrate parameterized tests in spring-core
This commit migrates parameterized tests in spring-core using the
"composed @ParameterizedTest" approach. This approach is reused in
follow-up commits for the migration of the remaining modules.

For a concrete example, see AbstractDataBufferAllocatingTests and its
subclasses (e.g., DataBufferTests).

Specifically, AbstractDataBufferAllocatingTests declares a custom
@ParameterizedDataBufferAllocatingTest annotation that is
meta-annotated with @ParameterizedTest and
@MethodSource("org.springframework.core.io.buffer.AbstractDataBufferAllocatingTests#dataBufferFactories()").

Individual methods in concrete subclasses are then annotated with
@ParameterizedDataBufferAllocatingTest instead of @ParameterizedTest or
@Test.

The approach makes the migration from JUnit 4 to JUnit Jupiter rather
straightforward; however, there is one major downside. The arguments
for a @ParameterizedTest test method can only be accessed by the test
method itself. It is not possible to access them in an @BeforeEach
method (see https://github.com/junit-team/junit5/issues/944).
Consequently, we are forced to declare the parameters in each such
method and delegate to a custom "setup" method. Although this is a bit
cumbersome, I feel it is currently the best way to achieve fine grained
parameterized tests within our test suite without implementing a custom
TestTemplateInvocationContextProvider for each specific use case.

Once https://github.com/junit-team/junit5/issues/878 is resolved, we
should consider migrating to parameterized test classes.

See gh-23451
2019-08-17 11:36:47 +02:00
Sam Brannen 32cc32f9a7 Migrate test suite from JUnit 4 to JUnit Jupiter
This first commit for this issue:

- allows JUnit Jupiter to be used for all tests
- adds a dependency on mockito-junit-jupiter
- migrates tests in spring-core to JUnit Jupiter, except parameterized
  tests

The following script was developed in order to semi-automate the
migration process.

https://github.com/sbrannen/junit-converters/blob/master/junit4ToJUnitJupiter.zsh

See gh-23451
2019-08-17 11:36:25 +02:00
Juergen Hoeller 9bd3a535cd Avoid UndeclaredThrowableStrategy with 1.8 bytecode level (CGLIB 3.3)
ClassLoaderAwareUndeclaredThrowableStrategy fails with a VerifyError on recent JDKs after the CGLIB 3.3 upgrade. The alternative is to replace it with a plain ClassLoaderAwareGeneratorStrategy (extracted from CglibSubclassingInstantiationStrategy) and custom UndeclaredThrowableException handling in CglibMethodInvocation.

See gh-23453
2019-08-14 00:14:14 +02:00
Juergen Hoeller 4123910d3d Upgrade to CGLIB 3.3
Closes gh-23453
2019-08-12 19:36:06 +02:00
Sam Brannen fcbca7d569 Remove obsolete references to JUnit 4's ArrayComparisonFailure
See gh-23451
2019-08-12 12:45:14 +02:00
Sam Brannen 6c0e550b86 Polish contribution
See gh-23445
2019-08-10 14:07:15 +02:00
zhuzhuman978 849bbf00b5 Simplify if statements and replace try-finally with try-with-resources
Closes gh-23445
2019-08-10 14:03:18 +02:00
Sam Brannen 56c1e8ffd2 Polishing 2019-08-09 11:08:30 +02:00
Sam Brannen a532afb15d Use System.nanoTime() in StopWatch
Prior to this commit, StopWatch used System.currentTimeMillis() to
track and report running time in milliseconds.

This commit updates the internals of StopWatch to use System.nanoTime()
instead of System.currentTimeMillis(). Consequently, running time is
now tracked and reported in nanoseconds; however, users still have the
option to retrieve running time in milliseconds or seconds.

Closes gh-23235
2019-08-07 17:39:42 +02:00
Sam Brannen 24f8d30935 Remove deprecated MergedAnnotations.SearchStrategy.EXHAUSTIVE constant
Closes gh-23391
2019-08-07 12:34:17 +02:00
Sam Brannen a43ba052e9 Remove unnecessary loop in SerializableTypeWrapper
Since arbitrary levels of proxies do not occur, this commit replaces
the `while` loop in SerializableTypeWrapper.unwrap() with a simple
`if` statement.

Closes gh-23415
2019-08-07 12:24:48 +02:00
Sam Brannen 83956f8e8b Overhaul StopWatchTests 2019-08-07 12:13:18 +02:00
Sam Brannen 03dd45fbd6 Use AssertJ in AnnotationAttributesTests 2019-08-06 18:18:16 +02:00
Sam Brannen 34767b14da Merge branch '5.1.x' 2019-08-06 18:11:47 +02:00
Sam Brannen 30ebc3b8e2 Remove superfluous AnnotationAttributes#putIfAbsent implementation
Since Java 8, putIfAbsent() is a standard method in java.util.Map. We
therefore no longer need the custom implementation that overrides the
standard implementation in HashMap.
2019-08-06 18:10:13 +02:00
Sam Brannen a092dc055e Check for instanceof Throwable in AnnotationAttributes#assertNotException
Prior to this commit, AnnotationAttributes#assertNotException checked if
the attribute value was an instance of Exception. Although this was
typically sufficient, the scope was not always broad enough -- for
example, if AnnotationReadingVisitorUtils#convertClassValues stored a
Throwable in the map (such as a LinkageError).

This commit fixes this by checking for an instance of Throwable in
AnnotationAttributes#assertNotException.

Closes gh-23424
2019-08-06 18:06:00 +02:00
Sam Brannen 4d6e359e25 Add missing @deprecated tags for ASM-based annotation search classes 2019-08-05 15:30:06 +02:00
Sam Brannen 82f301f42f Polishing 2019-08-05 15:29:04 +02:00
Sam Brannen e6ab6c9fe9 Add missing @deprecated tag for AnnotationMetadataReadingVisitor 2019-08-05 14:39:20 +02:00
Sam Brannen c2f5dabeee Polishing 2019-08-03 00:13:30 +02:00
Sam Brannen 9be327985b Polishing 2019-08-01 23:15:40 +02:00
Sam Brannen ee2041388b Fix typo in Javadoc for MergedAnnotations 2019-08-01 23:15:39 +02:00
Juergen Hoeller aebc485eda MethodParameter.equals properly checks overridden containing class
Closes gh-23352
2019-08-01 14:34:39 +02:00
Juergen Hoeller b67dbe66ef Revise use of ResolvableType in MethodParameter
Includes consistent use of getContainingClass()
2019-08-01 14:25:26 +02:00
Juergen Hoeller 4612544505 Nullability refinements and related polishing 2019-08-01 13:04:46 +02:00
Phillip Webb 1e830f725c Polish firstRunOf javadoc 2019-08-01 08:29:02 +01:00
Phillip Webb 62a3e41473 Deprecate mutable methods of MethodParameter
Deprecate all mutation methods in `MethodParameter` in favor of factory
methods that return a new instance. Existing code that previously relied
on mutation has been updated to use the replacement methods.

Closes gh-23385
2019-08-01 08:05:14 +01:00
Sam Brannen de3c115614 Fix bug in TYPE_HIERARCHY_AND_ENCLOSING_CLASSES strategy
Prior to this commit, the new `TYPE_HIERARCHY_AND_ENCLOSING_CLASSES`
annotation search strategy failed to find annotations on enclosing
classes if the source class was a nested class that itself had no
annotations present.

This commit fixes this by adding special logic to AnnotationsScanner's
isWithoutHierarchy() method to properly support nested classes.

Closes gh-23378
2019-07-31 22:05:46 +02:00
Sam Brannen b03dd47598 Remove duplicate assertion 2019-07-31 22:01:18 +02:00
Phillip Webb 17518ecbbe Add TYPE_HIERARCHY_AND_ENCLOSING_CLASSES strategy
Add a `TYPE_HIERARCHY_AND_ENCLOSING_CLASSES` annotation search strategy
that can be used to search the full type hierarchy as well as any
enclosing classes.

Closes gh-23378
2019-07-31 14:40:40 +01:00
Phillip Webb a6021cc968 Rename SearchStrategy.EXHAUSTIVE to TYPE_HIERARCHY
Rename `SearchStrategy.EXHAUSTIVE` from `MergedAnnotations` to
`SearchStrategy.TYPE_HIERARCHY`

See gh-23378
2019-07-31 13:52:53 +01:00
Juergen Hoeller e6f86c5c75 Nullability refinements and related polishing 2019-07-31 13:45:48 +02:00
Phillip Webb cca32a56a4 Use shared zero length array constants
Update code that's often called so that zero length array results use
a single shared static constant, rather than a new instance for each
call.

Closes gh-23340
2019-07-31 12:22:03 +02:00
Juergen Hoeller 4f3b89e907 Adapt MethodParameterTests to AssertJ usage on master
See gh-23352
2019-07-30 17:36:02 +02:00
Juergen Hoeller 8ef557df2f Merge branch '5.1.x' 2019-07-30 17:34:29 +02:00
Juergen Hoeller 9a36027ae1 MethodParameter.equals checks nesting level and containing class
Closes gh-23352
2019-07-30 16:58:45 +02:00
Johnny Lim bccc7a62f4 Remove duplicate assertion in matchWithNullPath()
See gh-23382
2019-07-30 09:37:50 +02:00
Sam Brannen a3c7ae2c58 Polish contribution
See gh-23300
2019-07-24 10:13:29 +02:00
stsypanov 1d6e44ab04 Use StringJoiner where possible to simplify String joining
Closes gh-23300
2019-07-24 10:05:38 +02:00
Sebastien Deleuze c006a83584 Upgrade to Coroutines 1.3.0-RC
This commit upgrades Coroutines support to kotlinx.coroutines
1.3.0-RC, leverages the new Coroutines BOM and refine Coroutines
detection to avoid false positives.

Only Coroutines to Mono context interoperability is supported
for now.

CLoses gh-23326
2019-07-21 11:27:43 +02:00
Juergen Hoeller 45136aabd4 Upgrade to Protobuf 3.9 (plus consistent XMLUnit declarations) 2019-07-20 19:06:54 +02:00
Juergen Hoeller 8ea3aa512f Merge branch '5.1.x' 2019-07-20 16:35:05 +02:00
Juergen Hoeller 209c8505e6 Align forRawClassAssignableFromTypeVariable with 5.1 assertion style
See gh-23321
2019-07-20 16:10:49 +02:00
Juergen Hoeller 69d3e89814 Polishing 2019-07-20 15:05:49 +02:00
Phillip Webb be65bef91b Merge branch '5.1.x' 2019-07-20 13:23:37 +01:00
Phillip Webb e5bef10d85 Fix ResolvableType raw class isAssignable checks
Fix `isAssignable` for `ResolvableType.forRawClass` so that it can be
used with types backed by a `TypeVarible`. Prior to this commit the
rawClass value was used, which wouldn't always work.

Closes gh-23321
2019-07-20 13:23:21 +01:00
Arjen Poutsma 090bfa63a1 Add DataBuffer::toString(Charset)
Closes gh-23317
2019-07-19 12:45:24 +02:00
Arjen Poutsma c8704ce473 Introduce DataBufferWrapper
This commit introduces the DataBufferWrapper, a wrapper for DataBuffers,
and uses it in applicable use cases.
2019-07-19 12:45:24 +02:00
Sebastien Deleuze 095fd5bcb3 Use Kotlin BOM
Close gh-23316
2019-07-19 10:43:54 +02:00
Juergen Hoeller 7f33344784 Tracking ASM master
See gh-23156
2019-07-17 22:34:39 +02:00
Juergen Hoeller 94e3210ae7 Fix nullability warnings and javadoc-triggered package cycles 2019-07-17 22:34:07 +02:00
Sam Brannen 7779aa3487 Polish contribution
See gh-23297
2019-07-17 16:53:47 +02:00
Scheidter,Ryan 84200f3141 Treat null path as non-matching pattern in AntPathMatcher
Prior to this commit, a null path supplied to the isPattern(), match(),
and matchStart() methods in AntPathMatcher resulted in a
NullPointerException.

This commit addresses this by treating a `null` path as a non-matching
pattern.

Closes gh-23297
2019-07-17 16:53:47 +02:00
Sam Brannen 699d3f15e8 Simplify LocalVariableTableParameterNameDiscoverer implementation
This commit refactors the internals of
LocalVariableTableParameterNameDiscoverer to use
java.lang.reflect.Executable in order to simplify the implementation.
2019-07-12 12:02:49 +02:00
mfeng-ya 309b328719 Use computeIfAbsent in LocalVariableTableParameterNameDiscoverer
Closes gh-23281
2019-07-12 11:44:10 +02:00
Arjen Poutsma 09572e7b60 Removed DataBufferUtils::split
DataBuffers::split (and underlying algorithm) should not be returning
a Flux<DataBuffer>, but rather a Flux<Flux<DataBuffer>>. In other words,
it should not join all data buffers that come before a delimiter.

Providing an implementation of a such a fully reactive split method
proved to be beyond the scope of this release, so this commit removes
the method altogether.
2019-07-10 16:00:11 +02:00
Arjen Poutsma fdcf09dc2f Copied buffering split from DataBufferUtils to StringDecoder
Due to the imminent removal of DataBufferUtils.split, this commit copies
over the buffering split algortihm from DataBufferUtils, as it is still
sutable for the StringDecoder
2019-07-10 16:00:11 +02:00
Arjen Poutsma ef19a6bf8e Various DataBufferUtils improvements
- Made sure that takeUntilByteCount is usable in multiple subscriptions.
- Added composite Matcher
2019-07-10 16:00:11 +02:00
Sebastien Deleuze ca75c2843a Upgrade to Coroutines 1.3.0-M2 2019-07-09 11:36:26 +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
Sam Brannen fae75cb238 Polish contribution
See gh-23237
2019-07-07 16:29:03 +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
Juergen Hoeller d903b9acf5 Compatibility with RxJava 3.0
Closes gh-23208
2019-07-05 16:25:52 +02:00
Juergen Hoeller 6990504d17 Upgrade to ASM 7.2
Closes gh-23156
2019-07-05 16:24:45 +02:00
Rossen Stoyanchev 0d3e5db3ff Compare suffix patterns by length
Closes gh-23125
2019-07-05 07:36:35 +01:00
Phillip Webb b3d56ebf3b Restore StringUtils.hasLength check
Update `MimeTypeUtils` so that the  StringUtils.hasLength check is
performed immediately on the incoming argument, rather than in
`parseMimeTypeInternal`. This restores the `IllegalArgumentException`
rather than the `NullPointerException` which is thrown by the
`ConcurrentHashMap`.

Closes gh-23215
See gh-23211
2019-06-29 22:31:11 -07:00
Brian Clozel 5a308ad5bd Polish MimeTypeUtils LRU cache
This commit improves the cache implementation by skipping the ordering
of most recently used cached keys when the cache is at least half empty.

See gh-23211
2019-06-29 00:17:40 +02:00
Brian Clozel 1b93ea97ac Fix concurrent reads issue in MimeTypeUtils cache
As of gh-22340, `MimeTypeUtils` has a built-in LRU cache implementation
for caching parsed MIME types and avoiding excessive garbage creation at
runtime.
This implementation, when hit with highly concurrent reads on the same
media type (the cache key), can create multiple keys for the same MIME
type string. This duplication leads to the cache filling up and evicting
entries. When the cache fetches a duplicate key, it is then not
associated with a value and the cache can return a `null` value, which
is forbidden by the API contract.

This commit adds another cache check within the write lock: this avoids
creating duplicate entries in the cache and `null` return values.

Fixes gh-23211
2019-06-28 23:43:38 +02:00
Sam Brannen 33fa55e658 Update OrderComparatorTests based on clarified PriorityOrdered semantics
See gh-23187
2019-06-25 11:04:19 +03:00
Sam Brannen b2dc4debde Merge branch '5.1.x' 2019-06-25 10:42:14 +03:00
Sam Brannen dda4dfb44b Clarify semantics of the PriorityOrdered interface
This commit clarifies the semantics of the PriorityOrdered interface
with respect to sorting sets of objects containing both PriorityOrdered
and plain Ordered objects.

Closes gh-23187
2019-06-25 10:40:55 +03:00
Johnny Lim 1afc2be5aa Remove duplicate assertion in AnnotatedElementUtilsTests
Closes gh-23191
2019-06-25 10:00:12 +03:00
Sam Brannen 6cc6abd405 Test status quo for OrderComparator's PriorityOrdered support
See gh-23187
2019-06-24 14:13:46 +03:00
Sam Brannen 4357749a63 Document that OrderComparator honors PriorityOrdered
Prior to this commit, it was not clear that OrderComparator sorts
PriorityOrdered objects with higher priority than plain Ordered objects.
2019-06-24 13:32:54 +03:00
Sam Brannen e3b3481c19 Fix typo in Javadoc 2019-06-24 12:32:41 +03: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 f6a4595cef Polishing 2019-06-17 17:06:37 +03:00
Arjen Poutsma f08656c6cb Add methods to read/write from Path to DataBufferUtils
This commit adds two methods to DataBufferUtils:
- one that reads a Flux<DataBuffer> from a Path
- one that writes a Flux<DataBuffer> to a Path
2019-06-14 14:13:18 +02: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 1ccd99ebe7 Polishing 2019-06-12 14:11:39 +02:00
Juergen Hoeller 918ffacdf8 Polishing 2019-06-12 13:29:35 +02:00
Sam Brannen bee4fb0615 Polishing 2019-06-12 14:07:04 +03:00
Sam Brannen 049437e111 Log exception when closing InputStream in AbstractResource
Prior to this commit, exceptions thrown while closing an InputStream in
AbstractResource were silently ignored.

This commit improves diagnostics for such failure scenarios by logging
the exception at DEBUG level.

Closes gh-23116
2019-06-12 14:07:04 +03:00
Juergen Hoeller 33b5bc2aae Polishing 2019-06-11 23:50:29 +02:00
Juergen Hoeller a89bfffd8c Merge branch '5.1.x' 2019-06-11 23:16:03 +02:00
Phillip Webb 6ac68391c1 Polishing 2019-06-11 12:03:05 -07:00
Phillip Webb b21b27c5ac Add MultiValueMap.addIfAbsent method
Closes gh-23111
2019-06-11 12:03:05 -07:00
Juergen Hoeller 7dc92aa05d Polishing 2019-06-11 20:57:27 +02:00
Juergen Hoeller 4fc9747569 Defensive concurrent access to key set from java.util.Properties
Closes gh-23063
2019-06-11 20:56:57 +02:00
Juergen Hoeller b37390b8fe Restore javax meta-annotation lookup behavior
Closes gh-22957
2019-06-11 20:56:41 +02:00
Sebastien Deleuze 098ac0bbb8 Annotate Object#equals parameter with @Nullable
Closes gh-23093
2019-06-06 14:18:30 +02:00
Sebastien Deleuze 044ea17bf9 Polishing 2019-06-05 12:13:36 +02:00
Sebastien Deleuze 2a19b8f7a5 Refine Coroutines adapter registration activation
Closes gh-23087
2019-06-05 11:52:00 +02:00
Sam Brannen 3b37989774 Apply De Morgan's law for greater clarity of purpose 2019-06-05 10:29:24 +03:00
Sam Brannen 410f204168 Support consistent ordering of string adapting properties
This commit introduces support for consistent ordering of Properties
created by CollectionFactory.createStringAdaptingProperties().

Specifically, the created Properties instance sorts properties
alphanumerically based on their keys.

Closes gh-23081
2019-06-04 14:47:43 +03:00
Stephane Nicoll 0ef4349c4d Polish "Replace with 'Integer.compare()'"
See gh-23071
2019-06-03 08:31:57 +02:00
Issam El-atif 7ce3792672 Replace with 'Integer.compare()'
See gh-23071
2019-06-03 08:31:19 +02:00
Sam Brannen f66eef1f88 Fix SortedPropertiesTests on JDK 9+ 2019-05-30 10:41:49 +02:00
Sam Brannen 53597f90e9 Remove dependency on StringUtils in SortedProperties
See gh-23018, gh-22383
2019-05-28 18:31:54 +02:00
Sam Brannen c6818fe15b Polishing
See gh-23018
2019-05-28 14:53:24 +02:00
Sam Brannen d495902a9c Polish Javadoc 2019-05-28 12:37:50 +02:00
Sam Brannen c39c4211df Introduce support for sorted Properties
This commit introduces an internal SortedProperties class that is a
specialization of java.util.Properties which sorts properties
alphanumerically based on their keys.

This can be useful when storing a java.util.Properties instance in a
properties file, since it allows such files to be generated in a
repeatable manner with consistent ordering of properties.

Comments in generated properties files can also be optionally omitted.

An instance of SortedProperties can be created via two new
createSortedProperties() factory methods in
org.springframework.core.CollectionFactory.

Closes gh-23018
2019-05-28 12:23:56 +02:00
Phillip Webb 6f2f5bb8c1 Fix annotation exceptions in tight memory
Update `AnnotationTypeMapping` so that instance comparisons are no
longer used when checking attribute methods. Prior to this commit,
in an environment with tightly constrained memory, the method cache
could be cleared and different method instances would be returned.

Closes gh-23010
2019-05-26 14:59:33 -07:00
Phillip Webb e386e53f92 Use less confusing MergedAnnotation method names
Rename some `MergedAnnotation` methods to prevent using parent/child
terminology, specifically:

	`getDepth()` has been renamed `getDistance()`
	`getParent()` has been renamed `getMetaSource()`
	`getTypeHierarchy()` has been renamed `getMetaTypes()`

The parent child naming was particularly confusing given that the
parent/child relationships were inverted from the way that a lot of
users think about meta-annotations. For example, a `@RequestMapping`
having a parent of `@GetMapping` feels odd given that `@GetMapping`
is the thing declaring the meta-annotation relationship.

The new method names are designed to align more closely with existing
terms. For example, `getMetaSource` hints at the relationship with
`isMetaAnnotated` and `getSource`.

Closes gh-22946
2019-05-26 13:15:59 -07:00
Sam Brannen 43119deb08 Polishing 2019-05-26 14:28:09 +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
Rossen Stoyanchev 71396121a7 Merge branch '5.1.x' 2019-05-23 09:57:29 -04:00
Rossen Stoyanchev 99302fd6bd AntPathMatcher#isPattern also checks URI vars
Closes gh-22959
2019-05-23 09:56:11 -04:00
Juergen Hoeller 8a33ef2d14 Merge branch '5.1.x' 2019-05-21 21:06:38 +02:00
Juergen Hoeller 701b7b8a18 Align ReactiveTypeDescriptor accessor methods 2019-05-21 20:46:27 +02:00
Juergen Hoeller ff838fd011 Consistently support CompletionStage in ReactiveAdapterRegistry
Aligns ReactiveAdapterRegistry with MVC/messaging handler methods in terms of recognizing CompletionStage as well as CompletableFuture. Includes consistent use of ReactiveAdapter for reactive transactions.

Closes gh-23011
2019-05-21 19:26:12 +02:00
Juergen Hoeller 171e8f56a3 Merge branch '5.1.x' 2019-05-20 22:27:37 +02:00
Juergen Hoeller 55e601c322 Revise system property replacement tests
See gh-22959
2019-05-20 22:19:03 +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
Arjen Poutsma a30a134c23 Make StringDecoder use DataBufferUtils.split
* Added DataBufferUtils.split variant that takes multiple delimiters
  as argument (instead of 1).
* Use this new split() variant from within StringDecoder, replacing
  its inefficient algorithm with the Knuth-Morris-Pratt algorithm.
2019-05-15 16:07:28 +02:00
Rossen Stoyanchev b1912f6acc Fix checkstyle error 2019-05-15 08:29:41 -04:00
Rossen Stoyanchev 97c2de915a Add RouteMatcher
Closes gh-22642
2019-05-14 21:44:39 -04:00
Sam Brannen 785e8d8116 Polish MergedAnnotation support 2019-05-13 14:11:29 +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 64819bbc1d Clean up warnings 2019-05-10 18:00:29 +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
Phillip Webb 66eb86f055 Delete unused Matchers class
Delete the `Matches` class since it's no longer being used.
2019-05-08 09:52:39 -07:00
Juergen Hoeller fb29088670 Revise LinkedCaseInsensitiveMap's lazy key/value/entry collections
Closes gh-22926
2019-05-08 17:52:28 +02: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
Juergen Hoeller c5b3848357 Nullability refinements and related polishing
Includes fix for typo in visitor class names.

See gh-22909
2019-05-08 00:27:47 +02:00
Phillip Webb 7031964e49 Deprecate StandardMetadata constructors
Deprecate the public `StandardMetadata` constructors to make it clearer
that these classes should not be instantiated directly. A new
`AnnotationMetadata.introspect` factory method has been added which
can now be used to obtain instances.

This change will allow use to make the constructors package private
and drop the `nestedAnnotationsAsMap` parameter in a future release.

Closes gh-22906
2019-05-07 23:12:42 +02:00
Phillip Webb 7fbf3f97cd Add SimpleAnnotationMeta classes and readers
Replace the existing ASM based readers with new implementations that
also support MergedAnnotations. The meta-data classes themselves are
now immutable, and constructed via separate reader classes.

The `SimpleMetadataReader` class has been updated to return the new
classes, however the old ones remain since some of them are public
and might be being used directly.

Closes gh-22884
2019-05-07 23:12:42 +02:00
Phillip Webb 8c2ccfe6a3 Add MergedAnnotations support to meta-data classes
Add `AnnotatedTypeMetaData.getAnnotations()` that can be used to access
annotation details using the `MergedAnnotations` interface.

Where possible, the existing annotation methods have been migrated to
call `getAnnotation()`, rather than needing their own implementation.

The existing ASM based meta-data implementations have not been updated
since they will be deprecated and replaced in a subsequent commit.

See gh-22884
2019-05-07 23:12:42 +02:00
Phillip Webb 30ba80a3c3 Reduce meta-data code duplicate with default methods
Extract and pull-up some common method implementations and make them
default methods of the interface.

See gh-22884
2019-05-07 23:12:42 +02:00
Phillip Webb f592c1f211 Add additional class/method meta-data tests
Add some additional tests to provide more coverage of class and method
meta-data support.

See gh-22884
2019-05-07 23:12:42 +02:00
Phillip Webb 9738e4886c Use ReflectionUtils to get declared methods
Update `StandardAnnotationMetadata` to use `ReflectionUtils` when
obtaining declared methods. This update is primarily so that the common
method cache can be used.

Closes gh-22907
2019-05-07 23:12:42 +02:00
Phillip Webb 1fa5937834 Skip java.lang.annotations when reading metadata
Update `StandardAnnotationMetadata` and `AnnotationMetadataReadingVisitor`
so that `java.lang.annotation` annotations are consistently skipped.

Closes gh-22885
2019-05-07 23:12:42 +02:00
Phillip Webb 8a293f51a4 Don't expose RetentionPolicy.CLASS annotations
Update ASM based metadata readers so that only RetentionPolicy.RUNTIME
annotations are exposed. This aligned behavior with the reflection based
implementation.

Closes gh-22886
2019-05-07 23:12:42 +02:00
Phillip Webb 9d6cf57cb7 Add MergedAnnotations.of method
Add a factory method to `MergedAnnotation` that allows an instance to
be created for an explicit collection of root annotations. This method
will allow ASM based readers to expose a `MergedAnnotation` instance
that has root annotations loaded from bytecode, and meta-annotations
loaded using reflection.

See gh-22884
2019-05-07 23:12:42 +02:00
Phillip Webb daec3531b3 Support String->Class adaptation in MergedAnnotation
Update TypeMappedAnnotation so that Strings can be used to represent
Class attribute values. This will allow ASM annotation readers to
present a `MergedAnnotation` instance without necessarily having the
actual class values on the classpath.

When the underlying value is a String, any calls to
`getValue(name, String.class)` or `asMap(Adapt.CLASS_TO_STRING)` will
simply return the original String. Calls that need the actual Class
result (such as `getClass`) will use `Class.forName` and may throw
a `ClassNotFoundException` at that point.

This commit also allows an empty Object[] to be used to represent
any empty primitive array.

See gh-22884
2019-05-07 23:12:42 +02:00
Phillip Webb e11990e63d Polishing MergedAnnotation code 2019-05-07 23:12:42 +02:00
Phillip Webb d4a761abea Rename some MergedAnnotation `from` methods to `of`
Rename `from` to `of` for the `MergedAnnotation` factory methods that
work with Maps. The previous name was a little confusing, especially
when an annotation source parameter was specified. The new method name
helps to make it clearer when the user is explicitly defining the
attributes of the annotation, as opposed to picking them up from the
source.
2019-05-07 23:12:42 +02:00
Phillip Webb 3b145a5a73 Add MergedAnnotation.getTypeHierarchy method
Add a `getTypeHierarchy()` method to `MergedAnnotation` that can be used
to return the full type hierarchy information. This method is
specifically designed to be used in combination with
`MergedAnnotationPredicates.unique`.

This update also allows us to delete the `parentAndType` method
from `AnnotatedElementUtils`.

Closes gh-22908
2019-05-07 23:12:42 +02:00
Juergen Hoeller ba1c7192c9 Merge branch '5.1.x' 2019-05-07 13:09:44 +02:00
Juergen Hoeller 46e5dd6420 Consistent handling of empty List entries in LinkedMultiValueMap
Closes gh-22912
2019-05-07 13:08:42 +02:00
Juergen Hoeller 7e5aacf8a2
Merge pull request #22421 from olszewskimichal/LinkedMultiValueMap-OutOfBoundException-When-EmptyList
LinkedMultiValueMap.getFirst - check that values is not empty
2019-05-07 12:44:05 +02:00
Juergen Hoeller 8eb9782ca2 Polishing 2019-05-07 12:43:36 +02:00
Arjen Poutsma f747ba282a Add DataBufferUtils.matcher and split
Added two methods to DataBufferUtils:

* matcher(byte[]), which returns a Matcher object that can be used to
  find a delimiter in a data buffer.
* split(Publisher<DataBuffer>, byte[] delimiter), which splits a given
  stream of data buffers around a given delimiter.
2019-05-07 12:14:45 +02:00
Arjen Poutsma b74c09d12e Add DataBuffer.retainedSlice
Add method retainedSlice to the DataBuffer, defaulting to using
DataBufferUtils for retain, but allowing for ByteBuf specific override.
2019-05-07 12:14:45 +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
Juergen Hoeller 9eb095d921 Merge branch '5.1.x' 2019-05-04 12:04:48 +02:00
Juergen Hoeller 293188c797 Consistent non-use of firstIndex 0 in PatternMatchUtils
Closes gh-22837
2019-05-04 12:01:54 +02:00
Juergen Hoeller 9674ce4906 Avoid HashSet/StringBuilder allocation for non-placeholder values
Closes gh-22870
2019-05-04 12:00:22 +02:00
Juergen Hoeller f0f6af2926 Merge branch '5.1.x' 2019-05-03 18:13:12 +02:00
Juergen Hoeller a7949ac84a Consistent use of StringUtils.hasLength(String) vs isEmpty(Object) 2019-05-03 17:29:14 +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
Juergen Hoeller cee7d09e40 Add is*Enabled methods for log level checks to LogAccessor
Closes gh-22862
2019-05-02 11:57:48 +02:00
Juergen Hoeller 52657b68ea Merge branch '5.1.x' 2019-04-30 18:55:34 +02:00
Juergen Hoeller a8f845c944 Upgrade to Checkstyle 8.20 and CGLIB 3.2.11
Includes dependency management plugin 1.0.7.
2019-04-30 18:44:08 +02:00
Juergen Hoeller 3d502d90e2 Add missing nullable declarations
See gh-22821
2019-04-26 23:10:18 +02:00
Juergen Hoeller f8dc8523da Merge branch '5.1.x' 2019-04-26 23:00:40 +02:00
Phillip Webb 87dba5a4df Fix MergedAnnotations javadoc 2019-04-26 13:59:16 -07:00
Juergen Hoeller 1f473261a8 Polishing 2019-04-26 22:56:23 +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
Juergen Hoeller bdd9a557a5 Streamline ReactiveAdapterRegistry.getAdapter usage
Closes gh-22842
2019-04-26 16:49:16 +02:00
Phillip Webb 83cb51aec6 Add MergedAnnotation.getRoot() method
Update `MergedAnnotation` with a `getRoot()` method that allows the
root direct annotation to be retrieved easily.

Closes gh-22818
2019-04-25 14:14:03 -07:00
Christoph Dreis 29d021ae3c Avoid possible memory leak in ResolvableType 2019-04-23 21:07:35 +02:00
Sam Brannen dab90cb7cc Test status quo for MergedAnnotation.getParent()
See gh-22818
2019-04-21 16:32:09 +02:00
Сергей Цыпанов 18af3892dd Make inner classes static where possible
Closes gh-22804
2019-04-17 19:05:24 +02:00
Rossen Stoyanchev 261dcab8ce Merge branch '5.1.x' 2019-04-17 12:34:22 -04:00
Sam Brannen 52b6f9b56d Align Javadoc for Base64Utils.encodeToString() with implementation
Closes gh-22812
2019-04-17 12:33:22 -04:00
Rossen Stoyanchev de3238dbea Merge branch '5.1.x' 2019-04-16 21:08:54 -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
Juergen Hoeller 07738b9529 Recent fine-tuning from ASM master
See gh-22503
2019-04-12 10:26:42 +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 a912d8de1e Add option to decode from a DataBuffer
See gh-22782
2019-04-11 19:00:28 -04:00
Rossen Stoyanchev 6e7da62085 Switch to Reactor snapshots and remove workaround
Following the 5.2 M1 release we can switch back to Reactor snapshots
and remove the workaround for a fix coming in Reactor Core 3.2.9.
2019-04-10 16:09:28 -04:00
Rossen Stoyanchev bb28477587 Merge branch '5.1.x' 2019-04-10 15:37:02 -04:00
Rossen Stoyanchev bd2c213b47 Remove buffer release used as workaround
The extra buffer release was used as a workaround for a reactor core
issue and should have already been removed as part of
b3bc2d9253.
2019-04-10 15:36:36 -04:00
Rossen Stoyanchev 3ebbfa2191 Fix refCount issue in LeakAwareDataBuffer
LeakAwareDataBuffer was keeping its own refCount rather than checking
through the delegate. This leads to false leak reports in a sequence
where an allocated buffer is retained and then sliced since it is not
aware of the changes to the refCount through the slice.
2019-04-10 15:33:19 -04:00
Rossen Stoyanchev d707d382b4 Merge branch '5.1.x' 2019-04-09 22:38:15 -04:00
Rossen Stoyanchev b11e7feff6 Polish during review of DataBuffer handling 2019-04-09 22:19:05 -04:00
Juergen Hoeller dc14ea86eb Fix regression for nested AnnotationAttributes.annotationType() result
See gh-22738
2019-04-09 09:40:53 +02:00
Juergen Hoeller 4ec9aff01d Polishing 2019-04-08 19:59:06 +02:00
Sam Brannen bd414df944 Remove JMXMP from TestGroup
Due to the changes in a7425c81c0, we no
longer need to execute tests using the JMXMP protocol in PERFORMANCE
builds.

This commit removes the JMXMP constant from the TestGroup enum and
updates affected tests, thereby effectively including such tests in
the standard build from now on.

See gh-22757
2019-04-08 17:05:16 +02:00
Juergen Hoeller fd8fa301a6 Consistent non-exposure of inherited annotations in AnnotationMetadata
Closes gh-22766
2019-04-08 15:59:06 +02:00
Sebastien Deleuze 2e7ed915cd Merge branch '5.1.x' 2019-04-08 15:46:47 +02:00
Juergen Hoeller 43cb1af26a Polishing 2019-04-08 15:33:26 +02:00
Phillip Webb e905f1712e Refine MergedAnnotation.asMap
Add a convenience method that allows a `MergedAnnotation` to be
converted into an `AnnotationAttributes` instance. Also rename
the `MapValues` enum to `Adapt` which generally seems to read
better.

Closes gh-22738
2019-04-05 13:22:18 -07:00
Phillip Webb ef151f578d Polishing 2019-04-05 13:22:18 -07:00
Phillip Webb 1221b0650b Add MissingMergedAnnotation Tests
Add tests for `MissingMergedAnnotation`

See gh-21697
2019-04-05 13:21:46 -07:00
Phillip Webb 8bc74ad18d Delete AnnotationAttributeExtractor
Delete `AnnotationAttributeExtractor` which is package private and
no longer used.

Closes gh-22753
2019-04-05 13:20:47 -07:00
Sam Brannen e4525cf4c1 Modify ByteArrayEncoder so that it works in Eclipse IDE 2019-04-05 19:55:22 +02:00
Sebastien Deleuze a8d6ba9965 Add support for Coroutines Flow
Flow is a Kotlin Coroutines related cold asynchronous
stream of the data, that emits from zero to N (where N
can be unbounded) values and completes normally or with
an exception.

It is conceptually the Coroutines equivalent of Flux with
an extension oriented API design, easy custom operator
capabilities and some suspending methods.

This commit leverages Flow <-> Flux interoperability
to support Flow on controller handler method parameters
or return values, and also adds Flow based extensions to
WebFlux.fn. It allows to reach a point when we can consider
Spring Framework officially supports Coroutines even if some
additional work remains to be done like adding
interoperability between Reactor and Coroutines contexts.

Flow is currently an experimental API that is expected to
become final before Spring Framework 5.2 GA.

Close gh-19975
2019-04-04 19:06:32 +02:00
stsypanov 383f18e214 Use StringJoiner where possible to simplify String joining 2019-04-04 16:11:32 +02:00
Arjen Poutsma b3d3778269 Do not resolve DTDs in Stax Tests 2019-04-04 12:10:10 +02:00
Juergen Hoeller 52f90c303e Rename LogMessage.lazy(Supplier) to LogMessage.of(Supplier)
See gh-22726
2019-04-04 10:39:42 +02:00
Juergen Hoeller 9080ae24f9 First-class support for printf-style format strings in LogMessage
LogMessage is an abstract class now: with internal subclasses for Supplier bindings as well as printf-style format strings with a variable number of arguments (some fixed for efficiency, varargs array as fallback), created through corresponding static factory methods.

Closes gh-22726
2019-04-04 01:52:51 +02:00
Rossen Stoyanchev 88a7a68a71 Revert to Californium-SR6 for M1 release 2019-04-03 19:25:34 -04:00
Rossen Stoyanchev 2c28e4e972 Merge branch '5.1.x' 2019-04-03 16:29:28 -04:00
Rossen Stoyanchev b3bc2d9253 Remove workaround for reactor-core issue 2019-04-03 16:27:02 -04:00
Rossen Stoyanchev 72119ac076 ProducesRequestCondition caches accepted media types
Closes gh-22644
2019-04-03 14:56:30 -04:00
Juergen Hoeller 8f967129b9 Merge branch '5.1.x' 2019-04-03 19:05:42 +02:00
Juergen Hoeller 0cc6a9ef11 Avoid getDeclaredMethod check in ReflectionUtils.isObjectMethod
Closes gh-22730
2019-04-03 18:21:26 +02:00
Sam Brannen 807828b2b7 Polish Javadoc for MergedAnnotation support
See gh-21697
2019-04-03 16:55:34 +02:00
Sam Brannen a4279c5d00 Rename MergedAnnotations.SearchStrategy.SUPER_CLASS to SUPERCLASS
For consistency within the framework, this commit renames the SUPER_CLASS enum constant
to SUPERCLASS.

See gh-21697
2019-04-03 16:44:36 +02:00
Juergen Hoeller e2e91e2196 Switch LogAccessor argument order to have message supplier last
Closes gh-22726
2019-04-02 21:01:56 +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 3ac88bed23 Introduce LogAccessor and LogMessage as convenient logging utilities
Closes gh-22726
2019-04-02 19:13:05 +02:00
Sam Brannen 085cb1dd92 Clean up warnings 2019-03-31 14:36:35 +02:00
Rossen Stoyanchev 6c33af0a1c Merge branch '5.1.x' 2019-03-29 15:56:07 -04:00
Rossen Stoyanchev 85332c7a49 Polish 2019-03-29 15:53:45 -04:00
Rossen Stoyanchev 81f95efdbb Call onDispose before first read
The cancellation callback in asynchronousReadFileChannel must be called
before the first read I/O or otherwise if cancellation signals happens
immediately the onDispose callback may be missed.

The DefaultBufferFactory workaround however remains in place until an
expected additional fix arrives with Reactor Core 3.2.9.

See gh-22107
2019-03-29 15:43:06 -04:00
Rossen Stoyanchev 9a1bba5b67 NettyDataBufferFactory.wrap(ByteBuf) calls touch()
Closes gh-21960
2019-03-29 15:25:28 -04:00
Juergen Hoeller 57de2e0900 Deprecate ClassUtils.isCglibProxy methods in favor of AOP-level checks
Closes gh-22706
2019-03-29 11:12:49 +01:00
Phillip Webb f273fa990c Use RepeatableContainers.none() in AnnotationUtils
Update `AnnotationUtils` so that `RepeatableContainers.none()` is used
when performing an exhaustive search for merged annotations. These
parameters were accidentally removed in commit 210b1789 and weren't
caught earlier because we were missing a test.

Closes gh-22702
2019-03-28 14:39:29 -07:00
Phillip Webb 800cbf2524 Ignore 'value' attribute in AnnotationTypeMapping
Update `addConventionAnnotationValues` so that `value` attributes
do not override existing annotation values. The aligns the new
`MergedAnnotations` API with the previous `AnnotatedElementUtils`
logic.

Closes gh-22703
2019-03-28 14:39:29 -07:00
Rossen Stoyanchev 45e42214b2 Merge branch '5.1.x' 2019-03-28 17:37:21 -04:00
Rossen Stoyanchev 57d006b3ff Fix checkstyle warning 2019-03-28 17:37:12 -04:00
Rossen Stoyanchev 52b109ae68 Merge branch '5.1.x' 2019-03-28 17:19:51 -04:00
Rossen Stoyanchev beae1fbb12 Uncomment buffer leak tests in DataBufferUtils
Following a response on
https://github.com/reactor/reactor-core/issues/1634 apparently
FluxSink is respecting doOnDiscard but there is a race condition
in DataBufferUtils with file reading.

This commit makes two changes:
1) Add more checks for onDispose to detect cancellation signals
as well as to deal with potentially concurrent such signal.
2) Do not close the channel through the Flux.using callback but
rather allow the current I/O callback to take place and only then
close the channel or else the buffer is left hanging.

Despite this tests still can fail due to a suspected issue in Reactor
itself with the doOnDiscard callback for FluxSink. That's tracked under
the same issue https://github.com/reactor/reactor-core/issues/1634
and for now the use of DefaultDataBufferFactory is enforced as a
workaround until the issue is resolved.

See gh-22107
2019-03-28 17:18:40 -04:00
Sam Brannen 3f85530efd URL Cleanup - polishing 2019-03-28 17:23:13 +01:00
Juergen Hoeller 49fccfb158 Consistent retrieval of javax annotation types (e.g. JSR-305)
Closes gh-22696
2019-03-28 14:38:55 +01:00
Sam Brannen 025eaf688f Clean up warnings in Gradle build output 2019-03-28 12:32:58 +01:00
Sebastien Deleuze 811f315440 Refine PropertyResolver extensions null-safety
See gh-22687
2019-03-28 09:01:20 +01:00
Sam Brannen 3cf2c04406 URL Cleanup - polishing
See gh-22680
2019-03-27 22:05:38 +01:00
Sam Brannen c90b6ea0bb URL Cleanup - upgrade to more modern Xalan namespace
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&quot;,HttpMethod.GET (UnknownHostException) with 6 occurrences migrated to:
  https://example.com&quot;,HttpMethod.GET ([https](https://example.com&quot;,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&param2=value+2 (404) with 1 occurrences migrated to:
  https://example.com/example/?name=value&param2=value+2 ([https](https://example.com/example/?name=value&param2=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
Phillip Webb bf9dea4254 Defensively copy array returned from TypeDescriptor
Update the internal proxy used in `TypeDescriptor` so that it returns a
cloned array for calls to `getDeclaredAnnotations` or `getAnnotations`.

Closes gh-22695
2019-03-27 13:50:30 -07:00
Juergen Hoeller c9857702e4 Refined retrieval of plain annotations through direct presence checks
Shortcut checks apply for hasPlainJavaAnnotationsOnly types as well now.

Closes gh-22685
2019-03-27 12:56:11 +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 e3b6174b6d Merge branch '5.1.x' 2019-03-26 18:02:20 +01:00
Juergen Hoeller 699d75ec11 Polishing 2019-03-26 17:56:31 +01:00
Juergen Hoeller 635305647c Polishing 2019-03-26 16:13:51 +01:00
Juergen Hoeller 210b178922 Restore retrieval of plain annotations through direct presence checks
Includes deprecation of several AnnotationUtils methods and nullability refinements for passed-in function arguments at the MergedAnnotation API level... also, MergedAnnotation.getType() returns a Class now.

Closes gh-22663
Closes gh-22685
2019-03-26 16:13:41 +01:00
Phillip Webb 0ace0be29b Fix annotation value mapping regression
Refine `TypeMappedAnnotation.getValueFromMetaAnnotation` to correctly
account for aliases when finding values from meta-annotations. Prior
to this commit, only convention based mappings were considered when
searching for values on meta-annotations. This meant that declared
meta-annotations that used aliases could return the "default value"
rather than the merged value.

Closes gh-22654
2019-03-25 17:19:12 -07:00
Sebastien Deleuze 88a2729fba Introduce spring-core-coroutines module
This commit introduces the spring-core-coroutines module
in order to avoid referencing Kotlin code from Java one,
which is currently not supported by Eclipse.

During the build, spring-core-coroutines is merged into
spring-core, so this change is expected to have no impact
for end users.

This module contains functions accessible from Java via
the CoroutinesUtils class to adapt Coroutines and Deferred
instances to and from Mono.

See gh-19975
2019-03-25 21:57:53 +01:00
Phillip Webb cb7f997962 Defensively copy array returned from forAnnotations
Update the proxy used in `AnnotatedElementUtils.forAnnotations` so
that it returns a cloned array for calls to `getDeclaredAnnotations`
or `getAnnotations`. This matches the behavior of standard JDK
`AnnotatedElement` implementations.

Closes gh-22655
2019-03-25 07:53:42 -07:00
Juergen Hoeller 3c02331983 Merge branch '5.1.x' 2019-03-25 13:59:24 +01:00
Juergen Hoeller 507d4ba825 StringUtils.parseLocale consistently handles invalid locale values
Closes gh-22603
2019-03-25 13:53:54 +01:00
Tadaya Tsuyukubo 860ec44c50 Fix typo on MergedAnnotations
Closes gh-22649
2019-03-25 09:25:16 +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 9b7215e640 URL Cleanup - update remaining license headers
See gh-22617 gh-22622 gh-22635
2019-03-23 13:11:10 +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
Sam Brannen 8a61c56154 URL Cleanup - upgrade to more modern Xalan namespace
See gh-22617 gh-22622 gh-22635
2019-03-23 12:21:21 +01:00
Juergen Hoeller 5e15338a09 Nullability refinements (no IntelliJ warnings, fewer null checks)
Includes consistent ignoring of all java.lang (meta-)annotations.

Closes gh-22586
2019-03-23 12:13:38 +01:00
Phillip Webb f065abac93 Migrate AnnotationAwareOrderComparator to MergedAnnotations
Closes gh-22581
2019-03-22 20:40:05 +01:00
Phillip Webb 7244c9aea1 Add more aggressive annotation element filtering
Refine the element filtering performed by `AnnotationsScanner` to also
cover `org.springframework.util` and most `com.sun` classes which turn
out to be referenced quite frequently and which we know contain no
useful annotations.

See gh-21697
2019-03-22 20:40:05 +01:00
Phillip Webb db8eaec131 Cache BridgeMethodResolver results
Add a cache to `BridgeMethodResolver` to help with repeated calls to
resolve the same methods. Since bridge method resolution can be somewhat
expensive (especially when resolving generics), and the number of bridge
methods is quite small, a cache generally helps.

This commit also simplifies the code a little by calling `doWithMethods`
directly rather than relying on `ReflectionUtils.getAllDeclaredMethods`
to do so. The methods list is now always created, but we save the list
creation that `getAllDeclaredMethods` used to do.

Closes gh-22579
2019-03-22 20:40:05 +01:00
Phillip Webb a57d6ba5f3 Optimize StringUtils.cleanPath
Add an early exit to `StringUtils.cleanPath` to save array creating and
string concatenation. With a typical Spring application, the `cleanPath`
method can be called over 600 times, often with a path constructed by
a `ClassPathResource` that is likely to already be clean.

Closes gh-22568
2019-03-22 20:40:05 +01:00
Phillip Webb 19fb697d03 Add more empty array constants in ReflectionUtils
Add some additional empty array constants to `ReflectionUtils` to save
us creating new arrays for zero length results.

See gh-22567
2019-03-22 20:40:05 +01:00
Phillip Webb e3a86be122 Make ConcurrentReferenceHashMap more JIT friendly
Update `ConcurrentReferenceHashMap` to make some methods more inline
friendly, and to manually inline a few others. These minor optimizations
don't make a great deal of difference for most applications, but seem
worthwhile since we use `ConcurrentReferenceHashMap` for many internal
caches.

Closes gh-22566
2019-03-22 20:40:05 +01:00
Phillip Webb 37255afca4 Complete migration of annotation utility methods
Delete `InternalAnnotationUtils` and `InternalAnnotatedElementUtils` and
migrate exclusively to the new `MergedAnnotations` API.

Closes gh-22562
2019-03-22 20:40:05 +01:00
Phillip Webb a14bfe9a21 Migrate and verify annotation utility methods
Migrate all possible `AnnotationUtils` and `AnnotatedElementUtils`
method to the `MergedAnnotation` API, verify results against the old
implementations.

All migrated methods now call both the new API and the old version and
ensure that the same results or exceptions are raised. A full build of
both Spring Framework and Spring Boot has been executed to ensure, as
much as possible, that the migration does not cause unexpected
regressions.

See gh-22562
2019-03-22 20:40:05 +01:00
Phillip Webb b91ccf038f Start migration annotation utility methods
Create internal variants of the existing `AnnotationUtils` and
`AnnotatedElementUtils` classes and migrate the existing classes to
use them.

The internal variants will be used to check that the same results are
given as we migrate the utils methods to use the new `MergedAnnotations`
API.

See gh-22562
2019-03-22 20:40:05 +01:00
Phillip Webb 4972d85ae0 Create a new API for handling merged annotations
Add new `MergedAnnotations` and `MergedAnnotation` interfaces that
attempt to provide a uniform way for dealing with merged annotations.

Specifically, the new API provides alternatives for the static methods
in `AnnotationUtils` and `AnnotatedElementUtils` and supports Spring's
comprehensive annotation attribute `@AliasFor` features. The interfaces
also open the possibility of the same API being exposed from the
`AnnotationMetadata` interface.

Additional utility classes for collecting, filtering and selecting
annotations have also been added.

Typical usage for the new API would be something like:

	MergedAnnotations.from(Example.class)
		.stream(MyAnnotation.class)
		.map(a -> a.getString("value"))
		.forEach(System.out::println);

Closes gh-21697
2019-03-22 20:40:05 +01:00
Phillip Webb fdacda8b01 Add AnnotationIntrospectionFailureTests
Add a new test class to help cover annotation introspection failure
handling. These tests were previously missing and are important to
ensure that annotation util code changes don't introduce regressions.

See gh-21697
2019-03-22 20:40:05 +01:00
Phillip Webb 8ef609a1b7 Add public variant getDeclaredMethods method
Add a public variant of `getDeclaredMethods` that defensively copies the
cached methods array. This is often more faster and more convenient
for users than calling `doWithLocalMethods`. We still retain most of the
benefits of the cache, namely fewer security manager calls and not as
many `Method` instances being created.

Closes gh-22580
2019-03-22 20:40:05 +01:00
Phillip Webb 9c92b21af8 Polishing 2019-03-22 20:40:05 +01: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&quot;,HttpMethod.GET (UnknownHostException) with 6 occurrences migrated to:
  https://example.com&quot;,HttpMethod.GET ([https](https://example.com&quot;,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&param2=value+2 (404) with 1 occurrences migrated to:
  https://example.com/example/?name=value&param2=value+2 ([https](https://example.com/example/?name=value&param2=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
Rossen Stoyanchev 4a397f108a ResourceDecoder supports filename hint
Closes gh-22267
2019-03-19 17:50:06 -04:00
Sebastien Deleuze 1382220021 Add support for Deferred to ReactiveAdapterRegistry
See gh-19975
2019-03-15 18:22:19 +01:00
stsypanov 29f382b04e Simplify String concatenation 2019-03-14 17:24:33 +01:00
Juergen Hoeller fe56aa6fa4 Polishing 2019-03-13 15:32:24 +01:00
Juergen Hoeller 62c923711d Consistent use of empty array constants in ReflectionUtils
Closes gh-22567
2019-03-12 22:44:15 +01:00
Juergen Hoeller a7adafdb6a Larger initial size for ASM type descriptor StringBuilder
Closes gh-22565
2019-03-12 22:44:00 +01:00
Juergen Hoeller 40c62139ae Early resolution of unique factory methods in configuration classes
Includes consistent bean class resolution in the enhancement step as well as general reflection optimizations for user-declared methods.

Closes gh-22420
2019-03-12 17:17:24 +01:00
Сергей Цыпанов a35adc6ea6 Add missing break statements to stop looping when result is known
Closes gh-22573
2019-03-12 13:15:59 +01:00
Juergen Hoeller e3a9826e56 Bypass method traversal for annotation introspection if possible
The isCandidateClass mechanism is consistently used for a bypass check before method traversal attempts. While by default this is only bypassing standard java types, the same mechanism can be used with index metadata which indicates non-presence of certain annotations.

See gh-22420
2019-03-12 00:12:22 +01:00
Sam Brannen b09e6c8aaf Polishing 2019-03-09 16:53:09 +01:00
Tomasz Linkowski 8ddb1e7201 Fix a typo in @NonNullFields
Prior to this commit, `@NonNullFields` had a redundant `@see NonNullFields`
declaration instead of `@see NonNullApi` in its JavaDoc.

Closes gh-22553
2019-03-09 16:46:15 +01:00
Sam Brannen b109f140a7 Improve documentation for annotation filters with component scanning
Prior to this commit the documentation for annotation-based include and
exclude filters used with component scanning did not explicitly mention
the fact that annotations are considered a match if they are either
present or meta-present on candidate classes.

This commit improves the documentation in this regard.

See gh-22551
2019-03-09 16:30:30 +01:00
Juergen Hoeller c04eaf6b84 Merge branch '5.1.x' 2019-03-08 23:06:37 +01:00
Juergen Hoeller fe0c2d6b6e StringUtils.toStringArray/CollectionUtils.toIterator handle null input
Closes gh-22547
2019-03-08 22:40:18 +01:00
Juergen Hoeller f5248ff13f Upgrade to ASM 7.1
Closes gh-22503
2019-03-08 09:58:16 +01:00
Juergen Hoeller ac4c37d8e2 Merge branch '5.1.x' 2019-03-07 18:05:46 +01:00
Juergen Hoeller 6c87ef09c1 Polishing 2019-03-07 17:55:32 +01:00
stsypanov cb4d6f097c Use StringJoiner where possible to simplify String joining 2019-03-07 16:51:18 +01:00
Sam Brannen f087fd5a93 Report offending class in SpringFactoriesLoader in exception message
Prior to this commit, the exception message generated by
instantiateFactory() in SpringFactoriesLoader did not report the
offending class in the top-level exception message. The offending class
was in fact included in the message of the nested exception, but the
top-level exception message on its own was a bit misleading.

This commit improves the diagnostics for such failures by including the
offending class and the target factory type in the top-level exception
message.

Closes gh-22453
2019-03-06 16:44:41 +01:00
Konrad Kamiński 9302cb2f85 Support Kotlin suspending functions in MethodParameter
Before this commit, the return type for Kotlin suspending functions
(as returned by MethodParameter#getParameterType and
MethodParameter#getGenericReturnType methods) was incorrect.

This change leverages Kotlin reflection instead of Java one
to return the correct type.

Closes gh-21058
2019-03-06 10:14:34 +01:00
Rossen Stoyanchev 9e7f557b4a Updates for buffer management in RSocket
- Integration tests run with zero copy configuration.
- RSocketBufferLeakTests has been added.
- Updates in MessagingRSocket to ensure proper release

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
Brian Clozel 3ac1dddb9d Merge branch '5.1.x' 2019-03-04 13:58:41 +01:00
Andrew Tulloch 090aceb3ad Fix repeated calls to DataBuffer.write(CharSequence, Charset)
Prior to this commit, repeated calls to `DataBuffer.write(CharSequence,
Charset)` would not write the given chars to the expected position in
the original buffer.

This commit fixes that by writing to the `outBuffer.position()`, offset
by the current `DataBuffer.writePosition()`.

Fixes gh-22484
2019-03-04 13:37:06 +01:00
Juergen Hoeller a7db395d9b Merge branch '5.1.x' 2019-02-28 19:29:04 +01:00
Juergen Hoeller 5d8a34fee6 Only prefer JDK 9+ Lookup.defineClass API if ClassLoader matches
Closes gh-22416
2019-02-28 19:28:03 +01:00
Juergen Hoeller fc7948c96b Merge branch '5.1.x' 2019-02-27 17:34:46 +01:00
Juergen Hoeller e583da0725 Polishing 2019-02-27 17:26:53 +01:00
Sam Brannen 40da78e9df Polishing 2019-02-27 16:30:05 +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
Sebastien Deleuze dc8fb8bc5e Use StringJoiner where possible to simplify String joining 2019-02-25 12:11:57 +01:00
olszewskimichal 60a7909fca getFirst - check that values is not empty 2019-02-16 11:55:23 +01:00
Juergen Hoeller 6db75956b9 Merge branch '5.1.x' 2019-02-15 17:16:28 +01:00
Juergen Hoeller e307dd58db Polishing 2019-02-15 17:06:11 +01:00
stsypanov 5e29ea30a3 Use StringJoiner where possible to simplify String joining 2019-02-15 14:55:35 +01:00
stsypanov e7dc439f90 Simplify ConcurrentReferenceHashMap 2019-02-15 14:27:43 +01:00
stsypanov d2bfca7900 Extract duplicated code into a separate method 2019-02-15 14:26:44 +01:00
stsypanov 92053bb84e Some very simple improvements regarding ArrayList 2019-02-15 14:25:13 +01:00
Juergen Hoeller 5e0cd9fb60 Merge branch '5.1.x' 2019-02-14 13:39:58 +01:00
Juergen Hoeller ac0e5d8ec6 DefaultConversionService properly converts Object[] to int[]
Closes gh-22410
2019-02-14 13:38:29 +01:00
Juergen Hoeller 4e47006a17 Merge branch '5.1.x' 2019-02-12 09:09:19 +01:00
Juergen Hoeller 106a757098 Polishing 2019-02-12 09:07:58 +01:00
Juergen Hoeller 8637540678 Expose empty annotation array as empty AnnotationAttributes array
Closes gh-22405
2019-02-12 09:07:51 +01:00
Brian Clozel fb4a28f904 Polish
See gh-22340
2019-02-11 10:45:50 +01:00
Juergen Hoeller 783a7ca46b Merge branch '5.1.x' 2019-02-08 18:16:27 +01:00
Juergen Hoeller ba0c48b933 Polishing 2019-02-08 18:02:28 +01:00
Brian Clozel 05d7ab4328 Merge branch '5.1.x' 2019-02-06 20:00:02 +01:00
Brian Clozel ef8652615c Log exception at ERROR level in CompositeLog
Fixes gh-22364
2019-02-06 19:58:41 +01:00
Juergen Hoeller 34ddb1e3cd Merge branch '5.1.x' 2019-02-05 16:32:58 +01:00
Juergen Hoeller 9895e44d73 Polishing 2019-02-05 16:03:24 +01:00
Juergen Hoeller 643a68f81b Detect existing jar URLs from URLClassLoader.getURLs()
Closes gh-22346
2019-02-05 16:02:50 +01:00
Sebastien Deleuze 0b9522c84e Migrate Kotlin Mockito tests to Mockk
Closes gh-22345
2019-02-05 15:47:08 +01:00
Juergen Hoeller 4c9ae6494f Concurrency/nullability fine-tuning in MimeType(Utils)
See gh-22340
2019-02-05 15:38:41 +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
Brian Clozel 862fa557bd Avoid java.util.stream.Stream usage in hot paths
Prior to this commit, profiling sessions would show that using
`java.util.stream.Stream` in some hot code paths creates significant
garbage.

Where streams aren't really required, this commit turns those snippets
into imperative logic  because those are likely to be called once or
multiple times per request.

Closes gh-22341
2019-02-05 12:14:51 +01:00
Juergen Hoeller d27bae245a Polishing 2019-02-05 00:45:28 +01:00
Juergen Hoeller a27a6470f7 Polishing 2019-02-05 00:10:22 +01:00
stsypanov 248d3f8e8b Use AtomicInteger instead of unsafe increment on volatile fields 2019-02-04 23:22:20 +01:00
Juergen Hoeller 80385ced4c Remove java.sql dependency from ReflectionUtils/TransactionDefinition
Fixes gh-21996
2019-01-28 22:50:11 +01:00
Arjen Poutsma 4732f83d70 Fix Java 9 Build
Fix Java 9 build by replacing deprecated method.
2019-01-24 15:44:58 +01:00
Brian Clozel 2b65d0e51f Fix error when writing empty String to DataBuffer
Prior to this commit, `DataBuffer.write` would throw an
`IllegalStateException` when called with an empty `String`, since the
`CharsetEncoder` would be flushed on an incorrent state.

This commit skips entirely the encoding phase for empty `String`.

Fixes #22262
2019-01-17 11:09:48 -05:00
Juergen Hoeller 72dddfbc7b Polishing 2019-01-09 12:26:58 +01:00
Andrzej Leśkiewicz 952045c216 SPR-17606 @Profile mishandles "not" operand mixed with "&" (#2066)
Correct handling of not/and expressions in ProfilesParser

Issue: SPR-17606
2019-01-08 22:24:15 +01:00
Juergen Hoeller f56fa91430 Polishing 2019-01-08 17:11:34 +01:00
Juergen Hoeller 9cb5369cb9 DependencyDescriptor supports TypeDescriptor resolution for fields
This allows for proper nested type conversion in @Value Optional fields analogous to method parameters, through a new TypeDescriptor-based method in the TypeConverter SPI. As an additional and less involved measure that is worth backporting, DefaultListableBeanFactory defensively checks for pre-converted Optional wrappers.

Issue: SPR-17607
2019-01-08 17:11:27 +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 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
Sebastien Deleuze 78a6429c32 Document NumberUtils.parseNumber() trim behavior
Issue: SPR-9523
2018-12-28 09:58:25 +01:00
Juergen Hoeller 31a24720a6 Consistent support for EnumSet subclasses in CollectionFactory
Issue: SPR-17619
2018-12-25 13:20:31 +01:00
Arjen Poutsma 5a8b8b11e4 Add test for calculateCapacity
Issue: SPR-17558
Closes gh-2054
2018-12-20 21:34:15 +01:00
Arjen Poutsma a00be62b04 Calculating capacity before allocation.
This commit optimizes the `CharSequenceEncoder` to allocate `DataBuffer`
instances with a predicted capacity.

Issue: SPR-17558
2018-12-20 21:33:50 +01:00
Brian Clozel 4955d08f28 Use DataBuffer.write in CharSequenceEncoder
Since SPR-17558, `DataBuffer` now offers a new method to write Strings
to them. This commit makes `CharSequenceEncoder` use that.

Issue: SPR-17558
2018-12-20 21:33:44 +01: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
stsypanov 112cc70231 Improve performance of ConcurrentReferenceHashMap creation 2018-12-13 16:57:48 +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
Juergen Hoeller c48672c4c7 ParameterNameDiscoverer may return individual null entries in an array
Issue: SPR-17565
2018-12-12 21:56:17 +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
Juergen Hoeller 0ad35053fb Upgrade to CGLIB 3.2.10
Includes upgrade to JarJar 1.7.2 and Tomcat 9.0.14.

Issue: SPR-17595
2018-12-12 16:03:31 +01:00
Juergen Hoeller 6eb0a60df9 Polishing 2018-12-12 11:16:53 +01:00
Juergen Hoeller aaaf81ed99 Polishing 2018-12-06 15:53:57 +01:00
Juergen Hoeller 50e5bdb813 Clarified VfsResource constructor
Issue: SPR-17563
2018-12-04 22:09:06 +01:00
Juergen Hoeller 6d7827e36b Polishing 2018-12-03 23:53:00 +01:00
Juergen Hoeller d5dab12909 NettyDataBufferFactory.join returns single-element buffer as-is
Issue: SPR-17560
2018-12-03 23:52:35 +01:00
Sam Brannen a528407d0c Suppress warning 2018-11-23 18:05:47 +01:00
Sam Brannen 81fde5ec41 Ensure that MethodParameter.findParameterIndex() is thread-safe
Prior to this commit, parallel invocations of
MethodParameter.findParameterIndex() (invoked indirectly via
SynthesizingMethodParameter.forParameter() and
MethodParameter.forParameter()) could intermittently lead to an
IllegalArgumentException being thrown due to a race condition in the
internal implementation of the JDK's
java.lang.reflect.Executable.getParameters() method.

This commit addresses this issue by introducing a fallback for-loop
that iterates over the candidate parameters a second time using
equality checks instead of identity checks.

Issue: SPR-17534
2018-11-23 17:37:20 +01:00
Juergen Hoeller 56234fe877 Polishing 2018-11-22 22:03:36 +01:00
Juergen Hoeller 262c702da4 CachingMetadataReaderFactory releases shared cache Map on clearCache()
LocalResourceCache properly initializes cacheLimit on construction.

Issue: SPR-17527
2018-11-22 11:20:47 +01:00
Juergen Hoeller fef0e21d8b Remove unused LinkedList import 2018-11-20 22:16:51 +01:00
Juergen Hoeller 8c7579eba8 Polishing 2018-11-20 22:06:44 +01:00
stsypanov 02d3cfa42d Use ArrayList instead of LinkedList 2018-11-20 21:54:51 +01:00
Vojtech Janota 12f168290d SPR-17492: FastByteArrayOutputStream.read byte-to-int conversion 2018-11-20 17:08:01 +01:00
Arjen Poutsma 63275ae2b7 Add Test for LeakAwareDataBufferFactory 2018-11-19 16:56:25 +01:00
Juergen Hoeller ce5c65c0b0 Upgrade to JAXB 2.3.1, Groovy 2.5.4, Jetty 9.4.14, Tomcat 9.0.13
Includes JAX-WS 2.3.1, Awaitility 3.1.3, OkHttp 3.12, Woodstox 5.2.
2018-11-19 12:41:26 +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
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
Arjen Poutsma 4182935b7a Revert optimization in StringDecoder
This commit reverts the first optimizations listed in
fa096dc60f, as the default delimiters
do vary, namely by the charset given in the message mime type.
The mimetype charset might not be compatible with ASCII (i.e. anything
but UTF-8 or ISO-8859-1, for instance it might be UTF-16), and will not
successfully find the default delimiters as a consequence.

Added test to indicate the bug.
2018-11-13 13:38:13 +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
Arjen Poutsma 0c0de851f4 Add LeakAwareDataBufferFactory
Introduce a data buffer factory that can check for memory leaks in
@After methods.

Issue: SPR-17449
2018-11-13 13:35:37 +01:00
Arjen Poutsma e31914bada Polishing 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
Rossen Stoyanchev c187cb2fa1 Ensure client response is drained with onStatus hook
Issue: SPR-17473
2018-11-08 22:41:22 -05:00
Juergen Hoeller e26ae9853e Up-to-date version and link in ASM/CGLIB/Objenesis package javadoc
Issue: SPR-17267
Issue: SPR-17372
2018-11-08 16:56:48 +01:00
Juergen Hoeller d9c1811d21 Deprecate NON_BRIDGED_METHODS constant as of 5.0.11 as well
Issue: SPR-17464
2018-11-05 22:59:18 +01:00
Juergen Hoeller 2ac4355ec0 ASM ClassReader leniently handles label offset mismatch (again)
Issue: SPR-17467
2018-11-05 17:44:23 +01:00
Juergen Hoeller a3cd7af72d Polishing 2018-11-05 12:27:35 +01:00
Juergen Hoeller 0a7dcf14f9 Deprecate ReflectionUtils.invokeJdbcMethod (for removal in 5.2)
Issue: SPR-17464
2018-11-05 12:26:20 +01:00
Rossen Stoyanchev 133b8b0b5a Polish 2018-11-02 16:19:53 -04:00
Juergen Hoeller dc8f6f7177 Upgrade to CGLIB 3.2.9
This CGLIB upgrade literally does not make any difference to Spring users since its only purpose is a default ASM7 declaration in its AsmApi class (which we patched a month ago). We nevertheless leave our local AsmApi copy in place for the time being, allowing for an individual upgrade of the declared ASM API version in the future.

Issue: SPR-17267
Issue: SPR-17371
2018-11-02 19:55:13 +01:00
Rossen Stoyanchev fa096dc60f Minor refactoring in StringDecoder + polish
1. Avoid re-creating the List with delimited byte arrays on every
request if using the default delimiters which don't vary by charset.

2. Replace flatMap with flatMapIterable for splitOnDelimiter.

3. Avoid going through DataBufferUtils#join, and unnecessarily creating
Flux from the List, since the join method needs a list anyway.
2018-10-26 13:24:53 -04:00
Juergen Hoeller ffa032e78f Polishing 2018-10-24 20:46:26 +02:00
Arjen Poutsma 488a1d4561 Review DataBufferUtils for cancellation memory leaks
Issue: SPR-17408
2018-10-24 16:28:21 +02:00
Arjen Poutsma 51bb96db47 Fix ResourceRegionEncoder and tests
Fix ResourceRegionEncoder so that it checks for resource existance
before writing boundaries. Also defer data buffer allocation until
necessary.

Issue: SPR-17419
2018-10-23 16:41:48 +02:00
Arjen Poutsma eac9e66c46 Fix memory leak when canceling read from AsynchronousFileChannel
This commit fixes a memory leak that occurs when reading from a
AsynchronousFileChannel, and cancelling the subscription.

Issue: SPR-17419
2018-10-23 16:41:48 +02:00
Juergen Hoeller f68b1e0bce Upgrade to Objenesis 3.0.1
Issue: SPR-17372
2018-10-22 18:54:18 +02:00
Juergen Hoeller c3c2383b0d Align serialVersionUID declaration with ASM master
Issue: SPR-17267
2018-10-22 18:53:23 +02:00
Arjen Poutsma 946ec7e22e Fix memory leaks in ProtobufDecoder
Issue: SPR-17418
2018-10-22 16:00:32 +02:00
Arjen Poutsma a64e85fcc6 Javadoc 2018-10-22 16:00:32 +02:00
Arjen Poutsma f738273486 Fix buffering issue in StringDecoder
Issue: SPR-17418
2018-10-22 16:00:32 +02:00
Juergen Hoeller dd2ce20687 SpringFactoriesLoader tolerates whitespace around class names
Issue: SPR-17413
2018-10-22 15:13:58 +02:00
Juergen Hoeller 83a54dba7e Avoid stacktrace if root resource is not resolvable in file system
Issue: SPR-17417
2018-10-22 15:13:49 +02:00
Arjen Poutsma 149d416e8e Review DataBufferUtils for error/cancellation memory leaks
Issue: SPR-17408
2018-10-19 12:16:18 +02:00
Juergen Hoeller 7ff938b3ef LogFormatUtils.formatValue leniently handles toString() exceptions
Issue: SPR-17397
2018-10-18 18:04:32 +02:00
Sebastien Deleuze 2c5a1af236 Leverage Java reflection for Kotlin enums
As discussed in KT-25165, from a Kotlin POV enum constructors
have no parameter, this is an "implementation detail"
required for running on the JVM, so it seems relevant to skip
Kotlin reflection in that case and just delegate to Java
reflection.

Issue: SPR-16931
2018-10-16 16:40:02 +02:00
Juergen Hoeller b7e4a56e5c Mark PathResourceTests as deprecated (along with PathResource)
Issue: SPR-17320
2018-10-12 13:17:28 +02:00
Juergen Hoeller dcf2861db5 Upgrade to Objenesis 3.0
Includes jarjar upgrade since jarjar 1.3 fails to properly relocate Objenesis 3.0 classes into org.springframework.objenesis package.

Issue: SPR-17372
2018-10-12 13:17:01 +02:00
Juergen Hoeller 5474995288 Exclude original AsmApi class from CGLIB repack jar
Issue: SPR-17371
2018-10-12 12:14:00 +02:00
Juergen Hoeller a2ae5f6972 Force CGLIB to always specify ASM7 for its visitors
Issue: SPR-17371
2018-10-12 12:01:50 +02:00
Juergen Hoeller 053820c4ff Polishing 2018-10-09 23:14:49 +02:00
Juergen Hoeller 83909e6e1e Consistent exposure of empty attribute arrays in AnnotationMetadata
Issue: SPR-17347
2018-10-09 23:14:13 +02:00
Juergen Hoeller fdf340306d Defensively use Class.forName instead of ClassLoader.loadClass
Issue: SPR-17333
2018-10-09 23:14:05 +02:00
Juergen Hoeller cf3635b42d Resource.lastModified() propagates 0 value if target resource exists
Includes use of Files.getLastModifiedTime for NIO Paths, preservation of NIO-based resolution on createRelative, deprecation of PathResource, and consistent use of getContentLengthLong over getContentLength.

Issue: SPR-17320
2018-10-09 23:13:11 +02:00
Juergen Hoeller 1e0de072f9 Upgrade to ASM 7.0 beta release
Issue: SPR-17267
2018-10-09 23:13:02 +02:00
Rossen Stoyanchev c01f350abe Move MonoToListenableFutureAdapter to spring-core
This was a package private class in spring-messaging since 5.0, and was
recently made public in 5.1. This commit promotes it to spring-core
where it belongs next to all other ListenableFuture support classes.

Follow-up refactoring for SPR-17336
2018-10-09 16:26:24 -04:00
Sam Hubbard 80e7819d6f Fix construction of NullSafeComparator in nullsLow
Previously, both nullsLow(Comparator<T>) and
nullsHigh(Comparator<T>) returned a
NullSafeComparator which treated nulls as being
high. This commit corrects this typo.
2018-10-05 13:20:28 +02:00
www 9d5aced8c5 Fix formatting
Prefix the opening brace with a single space in some classes.
Replace tab character with space in javadoc of AttributeAccessor.
Also fix some other trivial formatting errors.

Closes gh-1979
2018-10-05 09:20:47 +02:00
Juergen Hoeller ad29f97a05 Polishing 2018-09-29 17:16:25 +02:00
Rossen Stoyanchev a6f9c4c599 LogFormatUtils is declared abstract 2018-09-19 11:54:05 -04:00
Arjen Poutsma 8a4835368d Use doOnDiscard to free internally queued data buffers
Issue: SPR-17246
2018-09-19 13:24:45 +02:00
Juergen Hoeller c634b2fae7 ResolvableType-based resolution uses BeanNamesByType cache if possible
Issue: SPR-17282
2018-09-18 15:30:43 +02:00
Juergen Hoeller 69e8bcdf40 Checkstyle updates from ASM master
Issue: SPR-17267
2018-09-17 19:09:07 +02:00
Juergen Hoeller 8e83f140d4 Polishing 2018-09-15 00:17:17 +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
Juergen Hoeller 41d4cb5cbf Ordered stream access on ObjectProvider with strong order guarantees
Issue: SPR-17272
2018-09-14 23:56:25 +02: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
Juergen Hoeller 65c8fa400f Consistent ordered list access and lazy streaming for ObjectProvider
Includes fallback match for collection/map dependency if qualified.

Issue: SPR-17272
Issue: SPR-17197
2018-09-13 18:23:19 +02:00
Arjen Poutsma cde677a1f4 Fixed DefaultDataBuffer.toString() 2018-09-13 16:12:13 +02:00
Juergen Hoeller 45936f0ddd ClassReader revision from ASM master
Issue: SPR-17267
2018-09-12 12:26:29 +02:00
Arjen Poutsma f35f7db29b Removed deprecated methods. 2018-09-11 13:36:44 +02:00
Arjen Poutsma 09af706af6 Use concatWith instead of mergeWith 2018-09-11 13:36:44 +02:00
Arjen Poutsma 1a0522b805 DataBufferUtils does not release DataBuffer on error cases
This commit makes sure that in DataBufferUtils.write, any received data
buffers are returned as part of the returned flux, even when an error
occurs or is received.

Issue: SPR-16782
2018-09-11 13:36:44 +02:00
Juergen Hoeller 1da4d504c4 Upgrade to ASM master (7.0 beta) and CGLIB 3.2.8
Issue: SPR-17267
2018-09-11 13:10:45 +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 e49896d95f Upgrade to Mockito 2.22, XMLUnit 2.6.2, JavaMail 1.6.2
Also includes Apache Johnzon 1.1.9.
2018-09-10 10:52:24 +02:00
Juergen Hoeller 84ec382201 XMLEventReader.getElementText() properly checks for start element
Issue: SPR-17233
2018-09-07 12:56:15 +02:00
Sebastien Deleuze 8d45e3e7ef Fix Kotlin inner class nested configuration handling
Before this commit, Kotlin inner class nested configuration
handling thrown an IndexOutOfBoundsException due to bogus filtering
of its constructor parameter reference to an instance of the outer
class.

This commit keep constructor parameter of type INSTANCE in order to
throw a more meaningful NoSuchBeanDefinitionException.

Issue: SPR-17222
2018-09-07 11:39:30 +02: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
Arjen Poutsma 196c0adf47 Fixed DataBufferUtils.join leak for error in source
This commit fixes an issue where DataBufferUtils.join() would not
release databuffers that preceded an error signal.

Issue: SPR-17025
2018-09-05 11:07:57 +02:00
Sam Brannen 326895246d Polishing 2018-09-04 13:55:22 +02:00
Stephane Nicoll 2c1dca5b5e Polish capitalisation of units on DataSize and javadoc of DataUnit
Issue: SPR-17240
2018-09-04 13:46:41 +02:00
stsypanov 7dba79c7c1 Use String::isEmpty instead of "".equals(arg) when arg is not null 2018-08-26 22:48:21 +02:00
Sam Brannen 08ba53dd0e Ensure SocketUtils can be instantiated
Issue: SPR-17215
2018-08-26 21:49:21 +02:00
Sam Brannen f6ee2508ef Clean up warning in AnnotatedElementUtils 2018-08-23 18:24:18 +02:00
Juergen Hoeller 6ef0938a92 Defensive URL cleaning (preserving the original URL if possible)
Issue: SPR-17198
2018-08-22 14:12:39 +02:00
Juergen Hoeller a6a6cf7d97 Upgrade to Java Activation Framework 1.2 as API dependency
Includes XMLUnit 2.6.1 and Undertow 2.0.13.

Issue: SPR-16115
2018-08-17 16:01:15 +02:00
Juergen Hoeller 2ac23badee SimpleAliasRegistry.hasAlias properly resolves multiple chained aliases
Issue: SPR-17191
2018-08-17 09:54:14 +02:00
Juergen Hoeller 109a2b49e5 Consistently skip unnecessary search on superclasses and empty elements
Includes caching of declared annotation arrays and combined searching for several annotation types (used in SpringCacheAnnotationParser).

Issue: SPR-16933
2018-08-15 17:30:14 +02:00
Juergen Hoeller ac544924c8 Polishing 2018-08-13 14:36:37 +02:00
Sam Brannen 8126ffbc8c Fix broken links in JavaDoc
Issue: SPR-17174
2018-08-13 12:22:52 +02:00
Marten Deinum 5322fa0fb7 Use an import instead of FQCN
javax.xml.stream.Location is already there as an import there is no need
to use the FQCN in the handleDtd method.
2018-08-13 10:38:23 +02:00
Juergen Hoeller df51ff0386 Revert to Map entry iteration for less expensive static initialization
Issue: SPR-17169
2018-08-12 20:52:55 +02:00
Stephane Nicoll 30b8d47814 Polish 2018-08-12 10:49:29 +02:00
Juergen Hoeller 2b2a5a414b Polishing 2018-08-10 19:23:44 +02:00
Stephane Nicoll f931a3fb59 Improve DataSize to support negative values
Issue: SPR-17154
2018-08-10 18:21:09 +02:00
Juergen Hoeller aebb2d52e0 Logging refinements for transaction and cache processing (debug/trace)
Issue: SPR-16946
2018-08-10 15:45:46 +02:00
Stephane Nicoll 282a4ad2f6 Fix checkstyle violations 2018-08-10 14:43:16 +02:00
Stephane Nicoll 8a1588ae29 Add support for DataSize
This commit provides a data type to represents a size in bytes and other
standard unit.

Issue: SPR-17154
2018-08-10 14:28:46 +02:00
Sam Brannen 8ea913392c Link to Eclipse bug for annotations on bridge methods 2018-08-09 18:49:24 +02:00
Juergen Hoeller 65f29a39ca AbstractAspectJAdvisorFactory uses AnnotationUtils.getValue 2018-08-09 02:26:28 +02:00
Juergen Hoeller 4521a79b2d Find annotations on implemented generic superclass methods as well
Includes Java 8 getDeclaredAnnotation shortcut for lookup on Class.

Issue: SPR-17146
2018-08-08 23:52:47 +02:00
Sergey Chupov a06e63f619 Polishing javadocs: IllegalStateException no longer thrown
The dependency to Apache Commons has been removed in 51252ebbca (diff-95dc9d8756aa91afb2ac28454f1b634c), but the javadoc still mentions it.
2018-08-08 15:51:05 +02:00
Sam Brannen 7b608ab995 Ensure AnnotationUtilsTests pass in Eclipse again 2018-08-08 13:23:51 +02:00
Kazuhiro Sera be211ceead Fix typos detected by github.com/client9/misspell 2018-08-08 12:50:46 +02:00
Juergen Hoeller b325c74216 Pruning of outdated JDK 6/7 references (plus related polishing) 2018-08-07 20:36:47 +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
Juergen Hoeller 2d05f2ed47 SerializableTypeWrapper detects Graal through system property as well
Issue: SPR-17136
2018-08-07 11:15:43 +02:00
Juergen Hoeller 6b82a6c38c Polishing 2018-08-07 02:47:00 +02:00
Juergen Hoeller d72d376f03 Avoid unnecessary annotation introspection on framework methods
Issue: SPR-16933
2018-08-07 01:35:32 +02:00
Juergen Hoeller 8a9d042320 Javadoc fix from ASM master (6.2.1)
Issue: SPR-16398
2018-08-06 18:33:41 +02:00
Juergen Hoeller 69c6a40c50 Consistent nullability for array/collection input parameters
Includes pre-sizing of LinkedHashSet for conversion from array.

Issue: SPR-17123
Issue: SPR-17074
2018-08-06 14:11:59 +02:00
Rossen Stoyanchev 5095ec40b5 takeUntilByteCount actually uses takeUntil
Issue: SPR-17188
2018-08-02 21:19:22 +03:00
Rossen Stoyanchev 542ed81d5c Polish 2018-08-02 21:19:22 +03:00
Juergen Hoeller 0001f87d59 Polishing 2018-08-01 12:52:50 +02:00
Juergen Hoeller 589b7048ec Avoid synthesizable annotation creation for @Bean/@Scope processing
Includes consistent (non-)use of AnnotationUtils/AnnotatedElementUtils.

Issue: SPR-16933
2018-08-01 11:43:28 +02:00
Juergen Hoeller 9b671f8408 Polishing 2018-07-31 23:57:19 +02:00
Juergen Hoeller 6cd9060183 Avoid synthesizable check for common annotation types
This revision considers any java/javax and org.springframework.lang annotations as not synthesizable upfront, checking not only in isSynthesizable but also at synthesizeAnnotation(Array) level.

Issue: SPR-16933
2018-07-31 20:54:10 +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
Juergen Hoeller c037e75f26 Improve debug logging at BeanDefinitionReader and BeanFactory level
Issue: SPR-17090
2018-07-27 17:46:05 +02:00
Juergen Hoeller e82efbc7e3 Declare ASM7_EXPERIMENTAL for full compatibility with JDK 11 bytecode
Issue: SPR-17096
2018-07-26 23:11:54 +02:00
Juergen Hoeller 9ab63b8494 ListBasedXMLEventReader uses defensive modifiable copy of given List 2018-07-25 19:03:13 +02:00
Juergen Hoeller 3881a4aded Polishing 2018-07-25 14:16:02 +02:00
Juergen Hoeller fd8e4abe5d Introduce ResolvableType.toClass() shortcut
Issue: SPR-17086
2018-07-25 14:15:19 +02:00
Juergen Hoeller fac2e35f96 Refactor util.log.LogUtils into core.log.LogDelegateFactory
Issue: SPR-17012
2018-07-24 14:44:34 +02:00
Sebastien Deleuze f8f8d28f08 Support running Kotlin apps without kotlin-reflect
This commit includes an optimization of BeansUtils#instantiateClass
that favors Java reflection for default constructors before leveraging
Kotlin one for finding primary constructors and avoids Kotlin related
conditions when running in Java.

Issue: SPR-17069
2018-07-23 09:54:48 +02:00
Juergen Hoeller bccff73e2b AspectJExpressionPointcut leniently ignores non-composable interfaces
Issue: SPR-17003
2018-07-22 22:28:48 +02:00
Juergen Hoeller cfbacfd89b Revise ResolvableType.as for introspection performance
This revision limits serializability of derived interfaces, superclasses and type parameters, optimizing for introspection performance instead.

Issue: SPR-17070
2018-07-22 17:49:53 +02:00
stsypanov 5051850fa9 SPR-17074 Replace iteration over Map::ketSet with Map::entrySet 2018-07-21 13:12:43 +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
Juergen Hoeller c4df335a1d ReflectiveMethodExecutor invokes interface method if possible
Issue: SPR-16845
2018-07-19 16:35:59 +02:00
Juergen Hoeller d0bbbf4cae OrderUtils caches order values (for AnnotationAwareOrderComparator)
Issue: SPR-17064
2018-07-19 11:58:42 +02:00
Rossen Stoyanchev 4d6f2df3cb Add LogUtils and HttpLogging
SPR-17012
2018-07-18 15:32:50 -04:00
Juergen Hoeller 23d4862017 Find annotations on implemented generic interface methods as well
Issue: SPR-16060
2018-07-18 19:44:30 +02:00
Sebastien Deleuze e8034f2f96 Adapt DefaultParameterNameDiscoverer to Graal constraints
When compiling or running as a Graal native image, no
ParameterNameDiscoverer is used.

Issue: SPR-17005
2018-07-18 17:17:47 +02:00
Juergen Hoeller cab35aa788 StringUtils.parseLocaleString detects variant without country
Includes tests for parsing all available locales on the JVM, checking toString/toLanguageTag equality between parsed and original locale.

Issue: SPR-7598
Issue: SPR-16651
2018-07-18 11:10:26 +02:00
Juergen Hoeller 88e4006790 CookieLocaleResolver is RFC6265 and language tag compliant by default
Like CookieLocaleResolver, LocaleChangeInterceptor parses both locale formats by default now. Since it does not need to render the locale, its languageTagCompliant property is not relevant anymore at all.

The parseLocale method in StringUtils validates the locale value now and turns an empty locale into null, compatible with parseLocaleString behavior and in particular aligned with web locale parsing needs.

Issue: SPR-16700
Issue: SPR-16651
2018-07-17 17:57:59 +02:00
Juergen Hoeller cacd14c805 Never return null from AnnotationMetadata.getMetaAnnotationTypes
Issue: SPR-17046
2018-07-16 18:05:10 +02:00
Juergen Hoeller f6fdffd663 Lazily retrieve delegate beans in AsyncConfigurer and CachingConfigurer
Introduces a configure method pattern for Supplier-style configuration and a common SingletonSupplier decorator for method reference suppliers. Also declares jcache.config and jcache.interceptor for non-null conventions.

Issue: SPR-17021
2018-07-14 19:29:32 +02:00
Rossen Stoyanchev 1b1bc7f5b5 Switch defaults and model for logging sensitive data
Issue: SPR-17029
2018-07-11 11:10:03 -04:00
Juergen Hoeller 6887802526 Fallback to ClassLoader.defineClass for Lookup.defineClass LinkageError
Issue: SPR-16902
2018-07-10 22:13:57 +02:00
Juergen Hoeller a1d209726c Upgrade to ASM master (6.2+) and CGLIB 3.2.7
Issue: SPR-16398
2018-07-10 18:51:01 +02:00
Juergen Hoeller 833343f17c Specifically rethrow IllegalAccessError in isPresent/resolveClassName
Issue: SPR-17018
2018-07-09 14:31:45 +02:00
Juergen Hoeller fd0220b85c Suppress rawtypes warning for createReferenceArray 2018-07-09 14:28:15 +02:00
stsypanov 6d6aa72e8f improve performance of projection instantiation 2018-07-09 13:39:23 +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
Juergen Hoeller d8c7270c00 Consistent Iterator/Stream support in PropertySources and PropertyValues
Issue: SPR-16894
2018-07-05 23:59:56 +02:00
Rossen Stoyanchev 82310660fd Correlated encoding/decoding log messages via hints
Issue: SPR-16966
2018-07-05 08:28:15 -04:00
Juergen Hoeller 5dc8b5de6d Polishing 2018-07-04 15:07:17 +02:00
Sebastien Deleuze 9b7a492bc9 Test RxReactiveStreams presence in ReactiveAdapterRegistry
Issue: SPR-17000
2018-07-03 18:00:47 +02:00
Sebastien Deleuze dcbaecea2a Perform explicit class checks in ReactiveAdapterRegistry
In order to allow Spring Framework applications running as GraalVM
native images, ReactiveAdapterRegistry should perform explicit class
checks instead of catching Throwable in order to avoid
UnsupportedFeatureError errors.

Issue: SPR-17000
2018-07-03 13:35:11 +02:00
Juergen Hoeller 779cf8d240 ConcurrentReferenceHashMap caches EntrySet in volatile field
Includes an efficient implementation of isEmpty(), not relying on a full entry count but rather backing out once a non-empty hash segment has been found.

Issue: SPR-16994
2018-07-02 22:32:57 +02:00
Juergen Hoeller 06f9fb9aeb Refine Class serializability check for actual Graal compatibility
Issue: SPR-16992
2018-07-02 22:32:29 +02:00
Juergen Hoeller e5a6711d29 Consistent final declaration for static delegate classes
Issue: SPR-16968
2018-07-02 13:55:18 +02:00
Juergen Hoeller 2ade122543 Bypass serializable type wrapping if java.lang.Class not serializable
Issue: SPR-16992
2018-07-02 13:55: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 907a306ee2 Fix locally failing test in FlushingIntegrationTests 2018-06-29 18:15:52 -03:00
Juergen Hoeller 40efcc933c Polishing 2018-06-28 14:51:33 +02:00
Juergen Hoeller b68e692854 Conventions lazily retrieves shared ReactiveAdapterRegistry
Issue: SPR-16981
2018-06-28 14:47:52 +02:00
Juergen Hoeller 7a02e438e7 StringUtils.cleanPath retains plain pointer to current directory
Issue: SPR-16908
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 b220d94cc2 Never use parenthesis for single lambda arguments
Update all lambdas that take a single argument so that parenthesis
are never used.

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 ad6d183a06 Remove unneeded conditional logic
Update `ConversionUtils` to remove conditional logic that isn't
necessary.

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 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
Juergen Hoeller 847202c8f8 MimeTypeUtils lazily initializes SecureRandom for multipart boundary
Issue: SPR-16974
2018-06-25 18:12:43 +02:00
Rossen Stoyanchev 900bc8a2e3 Logging improvements for WebFlux
Issue: SPR-16898
2018-06-22 22:44:24 -04:00
Sam Brannen cafb5033e2 Polishing 2018-06-19 13:50:13 +03:00
Sam Brannen bea0e399b8 Polish profile expression support
Issue: SPR-12458
2018-06-17 00:15:18 +03:00
Sam Brannen 4184ebe799 Polish profile expression support
Issue: SPR-12458
2018-06-16 21:40:22 +03:00
Juergen Hoeller 38f9a7b072 FileSystemResource supports java.nio.file.Path based setup
Issue: SPR-16833
2018-06-15 22:12:14 +02:00
Juergen Hoeller bb6ab5dc91 OS-independent alphabetical sorting of directory content
Issue: SPR-16838
2018-06-15 22:09:29 +02:00
Stephane Nicoll 1f3b4f1863 Polish "Add profile expression support"
Issue: SPR-12458
2018-06-15 16:01:16 +02:00
Phillip Webb e2623b7d35 Add profile expression support
Allow the `Environment` to accept a generic `Profiles` interface which
can support more complex matching rules. The previous
`acceptsProfiles(String...)` method now uses `Profiles.of` which
supports basic profile expressions such as "(a | b) & !c"

Issue: SPR-12458
2018-06-15 16:01:16 +02:00
Juergen Hoeller c38cb43527 MethodParameter strictly asserts parameter index -1 for return type
Issue: SPR-16889
2018-06-14 00:42:19 +02:00
Rossen Stoyanchev 0078f46779 Use reflection for JdkFlowAdapter
To avoid compiler issues on Eclipse.
2018-06-13 09:38:54 -04:00
Juergen Hoeller 0777a80efe Polishing
(cherry picked from commit a2765c0)
2018-06-11 19:17:57 +02:00
Brian Clozel 417354da8a Remove dependency management noise from POMs
Prior to this commit, the generated POMs for Spring Framework modules
would contain unneeded/harmful information from the Spring Framework
build:

1. The BOM imports applied to each module by the dependency
management plugin, for example for Netty or Reactor Netty.
Spring should not export that opinion to its POMs.

2. The exclusion of "org.slf4:jcl-over-slf4j" from *all* dependencies,
which made the POMs much larger than necessary and suggested to
developers that they should exclude it as well when using all those
listed dependencies. In fact, only Apache Tiles currently brings that
transitively.

This commit removes that information from the POMs.
The dependencyManagement Gradle plugin is disabled for POM generation
and we manually resolve the dependency versions during the generation
phase.
The Gradle build is streamlined to exclude "org.slf4:jcl-over-slf4j"
only when necessary.

Issue: SPR-16893
2018-06-11 15:57:54 +02:00
Juergen Hoeller b790bd1fd6 LinkedCaseInsensitiveMap explicitly implements put/computeIfAbsent
Issue: SPR-16926
2018-06-11 14:10:12 +02:00
Yun 28e402bc76 Prevent instantiation of AnnotatedElementUtils
Closes gh-1848
2018-06-11 08:32:03 +02:00
Rossen Stoyanchev 010352163b Eliminate the need for Encoder#getContentLength
Issue: SPR-16892
2018-06-04 15:48:47 -04:00
Sebastien Deleuze a7a29a8226 Revisit PropertyResolver Kotlin extensions
Issue: SPR-16883
2018-05-31 12:20:37 +02:00
Juergen Hoeller 616a40adb6 ClassPathResource.isReadable() returns false for content length 0
Issue: SPR-16832
2018-05-29 22:31:47 +02:00
Juergen Hoeller 74fcdea2d9 SimpleAliasRegistry logs info message for alias overriding
Issue: SPR-16871
2018-05-29 21:51:33 +02:00
Juergen Hoeller 46a89d9534 Restore lenient null return value for ConditionContext.getBeanFactory()
Includes nullable return value for getClassLoader() with corresponding notes in applicable javadoc.

Issue: SPR-16866
2018-05-29 21:51:06 +02:00
Juergen Hoeller 69f14a2038 ClassPathResource.isReadable() checks InputStream (for jar directories)
Resource.isReadable() is defined to semantically imply exists() now.

Issue: SPR-16832
2018-05-29 21:47:33 +02:00
Sebastien Deleuze 406f6ec74d Fix PropertyResolverExtensions.kt location 2018-05-28 15:51:22 +02:00
Juergen Hoeller 836a09d5c0 Upgrade to Woodstox 5.1, XMLUnit 2.6, Gson 2.8.5 2018-05-25 00:18:06 +02:00
Rossen Stoyanchev d58888777f Polish ReactiveAdapterRegisry 2018-05-18 21:32:46 -04:00
Sebastien Deleuze 2c85be333c Filter synthetic in ReflectionUtils#USER_DECLARED_METHODS
Issue: SPR-16823
2018-05-15 14:58:50 +02:00
Oleksandr Hasheniuk 6545cab42c Improve performance of StringUtils#trimWhitespace
Issue: SPR-16766
2018-05-01 11:16:34 +02:00
nkjackzhang fb0e3e9356 Fix a typo in @Nullable Javadoc 2018-04-18 11:53:09 +02:00
Juergen Hoeller 2f4010e8d3 Correctly delegate to OrderUtils.getPriority for DecoratingProxy
Issue: SPR-16739
2018-04-17 23:37:42 +02:00
Juergen Hoeller d78e27f1e9 Avoid repeated superclass introspection in findAnnotation(Method,...)
Issue: SPR-16730
2018-04-17 16:44:28 +02:00
Juergen Hoeller 51be8a7303 Workaround for generic parameter types on inner class constructors
Issue: SPR-16734
2018-04-17 14:32:54 +02:00
Juergen Hoeller 0754833b37 Local XMLUnit dependency declarations with consistent version 2.5.1 2018-04-14 21:03:20 +02:00
Juergen Hoeller b95e05db04 AspectJExpressionPointcut consistently resolves superinterface methods
Includes efficient check for same ClassLoader in ClassUtils.isVisible, efficient MethodMatchers check for IntroductionAwareMethodMatcher, and supertype method resolution in MethodMapTransactionAttributeSource.

Issue: SPR-16723
2018-04-14 15:10:05 +02:00
Juergen Hoeller 0efa7a05ad ClassUtils.isCacheSafe delegates to isVisible for resolving classes
Issue: SPR-16714
2018-04-12 20:55:26 +02:00
Juergen Hoeller 46e3a919fe Cache-safety check for sibling loaders resolving the same classes
Issue: SPR-16714
2018-04-12 18:50:32 +02:00
Andreas Asplund 6a34ca24ce Restore org.springframework.cglib.core.KeyFactoryCustomizer.class
Issue: SPR-15859
2018-04-11 15:41:40 +02:00
Juergen Hoeller da80502ea6 AnnotationUtils.getAnnotation non-null check for synthesizeAnnotation
Issue: SPR-16708
2018-04-11 12:50:27 +02:00
Juergen Hoeller 61c3db0869 MethodHandles.Lookup.defineClass for CGLIB class definition purposes
Spring's CGLIB fork is patched with local copies of affected files here, introducing the notion of a "contextClass" (e.g. the proxy superclass) which gets passed through to ReflectUtils.defineClass for delegating to MethodHandles.Lookup.defineClass eventually, against a privateLookupIn(contextClass) lookup context on JDK 9/10/11.

Issue: SPR-15859
2018-04-11 12:47:55 +02:00
Sam Brannen 8874427cf4 Clean up warnings in spring-core 2018-04-10 13:10:58 +02:00
Juergen Hoeller 5d0700b936 AnnotationUtils.annotatedInterfaceCache available as deprecated field
Issue: SPR-16675
2018-04-03 12:21:03 +02:00
Juergen Hoeller 6102715b8d Consistent treatment of proxy classes and interfaces for introspection
Issue: SPR-16675
Issue: SPR-16677
2018-04-03 02:42:41 +02:00
Juergen Hoeller cc379f1cc7 Polishing 2018-04-01 12:57:19 +02:00
Juergen Hoeller 912c270f2b Polishing 2018-03-31 17:49:21 +02:00
Juergen Hoeller 129c05bcff Comprehensively cache annotated methods for interfaces and superclasses
Issue: SPR-16675
2018-03-31 15:12:02 +02:00
Juergen Hoeller 4da27c2a73 Avoid unnecessary introspection on methods and meta-annotations
Issue: SPR-16667
2018-03-31 00:18:14 +02:00
Kazuki MATSUDA d232fffa63 Use whenComplete since (null) return value not needed 2018-03-30 11:07:46 -04:00
Juergen Hoeller 22a8a668c9 AnnotationTypeFilter assumes no custom annotations on common Java types
Issue: SPR-16667
2018-03-30 15:31:43 +02:00
Juergen Hoeller 7a8d41e5d6 Extended set of common classes and language interfaces in ClassUtils
Issue: SPR-16667
2018-03-30 13:41:22 +02:00
Sam Brannen a6c45f0cd9 Polishing 2018-03-30 11:45:28 +02:00
Juergen Hoeller d553ddc5b3 Nullability refinements (based on IntelliJ IDEA 2018.1 introspection)
Issue: SPR-15756
2018-03-29 23:50:17 +02:00
Sam Brannen 17703e5dde Polishing 2018-03-29 17:45:55 +02:00
Sam Brannen 7c28152c13 Introduce ClassUtils.isInnerClass() utility method 2018-03-29 17:45:25 +02:00
Juergen Hoeller b165475eb6 Polishing 2018-03-29 16:05:52 +02:00
Juergen Hoeller 08dad4e3ac Consistent references to primitive types (in alphabetical order) 2018-03-29 16:05:00 +02:00
Juergen Hoeller 53d01392d7 Workaround for inner class constructor parameter annotation bug in javac
Issue: SPR-16652
2018-03-29 15:45:02 +02:00
Juergen Hoeller 3ac46da22f Correct description for doWithLocalFields
Issue: SPR-16658
2018-03-29 15:42:30 +02:00
Sam Brannen 4b9e3a9211 Introduce failing test for SPR-16652
This commit introduces tests for looking up annotations on parameters
in constructors for nested and inner classes via Spring's
MethodParameter abstraction.

The test for an inner class is currently disabled since it fails on
JDK 8. See JIRA issue for details.

Issue: SPR-16652
2018-03-28 17:42:55 +02:00
Juergen Hoeller b2d87abcbb Polishing 2018-03-28 12:06:38 +02:00
Rossen Stoyanchev e00384a6fd MimeTypeUtils trims parameter names / values
Issue: SPR-16630
2018-03-27 19:56:09 -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
Rossen Stoyanchev ab2410c754 MimeTypeUtils uses SecureRandom
The prevailing current wisdom is to use the default constructor for
secure and let it pick the best algorithm for the OS.

On Java 8 (Oracle), Linux this results in "NativePRNG" which uses
/dev/random (potentially blocking) for the initial seed, and
/dev/urandom (non-blocking) for subsequent calls to nextInt.

Issue: SPR-16635
2018-03-23 21:45:41 -04:00
Juergen Hoeller f00afe3247 Use (Concurrent)Map.computeIfAbsent for lazy nested collection creation 2018-03-23 17:36:23 +01:00
Rossen Stoyanchev 94c525cdc8 Polish @RequestPart support 2018-03-21 18:26:13 -04:00
Rossen Stoyanchev 2ff35daf9b Add test case based on SPR-16615 2018-03-19 13:32:10 -04:00
Rossen Stoyanchev 30583a62cf Fix Class isAssignableFrom checks for Resource conversion
Issue: SPR-16606
2018-03-16 16:18:05 -04:00
Juergen Hoeller 356ef45e99 ConcurrentReferenceHashMap properly handles getOrDefault for null values
Issue: SPR-16584
2018-03-14 17:17:04 +01:00
Juergen Hoeller 967a2ef2d2 Validate Class attributes as well as Class array attributes
Issue: SPR-16564
2018-03-12 20:41:44 +01:00
Juergen Hoeller 50e980c02f Validate declared annotations before deciding between reflection and ASM
Issue: SPR-16564
2018-03-12 13:40:26 +01:00
Juergen Hoeller 1b1a69a144 SimpleAliasRegistry fully synchronizes registerAlias and removeAlias
Issue: SPR-16577
2018-03-12 13:27:48 +01:00
Sam Brannen 42b4f6e1ff Clean up warnings and dead code in spring-core module 2018-03-11 14:13:30 +01:00
igor-suhorukov 0c45c4c6a3 lamdbas containing only one statement should not nest this statement in a block 2018-03-08 21:49:04 +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
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
Juergen Hoeller eb9c43dcbc Reliably expose nested cause exception message for PersistenceException
Issue: SPR-16559
2018-03-06 23:06:14 +01:00
Juergen Hoeller c543368aad Polishing 2018-03-03 17:33:48 +01:00
Juergen Hoeller cd4f0935c5 Revised deprecation markers 2018-03-01 23:43:06 +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 6663d0ff07 Support for ResolvableType.getType().getTypeName() on Java 8
Issue: SPR-16535
2018-02-26 17:19:12 +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
igor-suhorukov 67a91cf6f9 Polish: redundant pairs of parentheses should be removed 2018-02-25 00:01:43 +01:00
Juergen Hoeller 0f740527c1 Deprecated StringUtils.mergeStringArrays 2018-02-22 15:13:57 +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
Juergen Hoeller f316f6a46a Remove unnecessary assertions from annotation resolution code paths
Issue: SPR-16514
2018-02-19 10:29:09 +01:00
Juergen Hoeller d7cab23e6d Consistent use of StringUtils.toStringArray
(cherry picked from commit 6d11b40)
2018-02-16 20:49:17 +01:00
Juergen Hoeller 8d3264f680 Prefer List.sort(Comparator) over Collections.sort(List, Comparator) 2018-02-16 10:23:18 +01:00
Juergen Hoeller 3b810f3544 Consistent Class array vs vararg declarations (and related polishing) 2018-02-14 14:44:00 +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
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
Juergen Hoeller b449928691 Avoid unused arguments for internal delegates 2018-02-13 11:40:28 +01:00
Juergen Hoeller b089ded5b0 Polishing 2018-02-12 15:55:18 +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
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
Juergen Hoeller e873b18f43 ResolvableType.forClassWithGenerics retains original TypeVariables
Issue: SPR-16456
2018-02-09 15:29:00 +01:00
Stephane Nicoll 991eb4858e Update copyright header 2018-02-09 10:16:58 +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
Arjen Poutsma 609f173ebc StringDecoder shouldn't chop off strings randomly
Issue: SPR-16337
2018-02-02 15:59:21 +01:00
Juergen Hoeller cfe7ff1c81 MimeType.compareTo uses case-insensitive Charset (analogous to equals)
Issue: SPR-16458
2018-02-02 13:44:07 +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 30f6e447d5 TypeVariablesVariableResolver compares variables by name
Issue: SPR-16456
2018-02-02 11:34:36 +01:00
Juergen Hoeller ef3f93e84a Language tag parsing support in StringUtils and StringToLocaleConverter
Issue: SPR-16188
2018-01-25 19:10:31 +01:00
Arjen Poutsma 0befc60c8f Renamed DataBufferUtils/DataBufferFactory.compose to join
Issue: SPR-16365
2018-01-22 10:51:07 +01:00
sdeleuze 3f3141cdda Add additional test for SPR-16210
Issue: SPR-16210
2018-01-22 10:29:21 +01:00
Juergen Hoeller b2ce98e881 Upgrade to CGLIB 3.2.6
Issue: SPR-16267
2018-01-20 14:29:56 +01: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
Juergen Hoeller 4c7414833b ResolvableType returns clone for cached state with original local source
Issue: SPR-16210
2018-01-19 12:30:03 +01:00
Juergen Hoeller ea5f8f5a7c Consistently handle NoClassDefFoundError in BeanUtils and related places
Issue: SPR-16369
2018-01-17 20:24:57 +01:00
Juergen Hoeller 4c9ed0d87e Polishing 2018-01-12 18:24:00 +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 347c2daa2c Test for multiple interfaces at BridgeMethodResolver level
Issue: SPR-16288
2018-01-12 16:45:38 +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
Arjen Poutsma 384a399fd2 Add DataBufferUtils.compose
Added a utility method that composes data buffers into a single buffer.
Depending on the `DataBuffer` implementation, the returned buffer may be
a single buffer containing all data of the provided buffers, or it may
be a true composite that contains references to the buffers.

Issue: SPR-16365
2018-01-12 10:36:09 +01:00
Juergen Hoeller 121f9e3734 BridgeMethodResolver properly resolves all declared interfaces
Issue: SPR-16288
2018-01-11 10:18:27 +01:00
Arjen Poutsma 5adaa1030c Javadoc 2018-01-10 17:54:51 +01: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
Arjen Poutsma 69ccba30e9 Introduce write aggregator to DataBufferUtils
As a consequence of dropping CompositeByteBuf (see prior commit),
DataBuffers fluxes that are aggregated with Flux.reduce(BiFunction) are
now required to be released, as the composite no longer holds a
reference to subsequent data buffers.

For this purpose, DataBufferUtils now has a writeAggregator that can be
used with Flux.reduce, and that released the subsequent buffers
properly.

Issue: SPR-16351
2018-01-10 11:14:02 +01:00
Arjen Poutsma e6893da971 Remove use of CompositeByteBuf in NettyDataBuffer
Prior to this commit, NettyDataBuffer had a optimization in
write(ByteBuf...), where it used a CompositeByteBuf to hold the original
and the parameter buffer.
Unfortunately, this procedure has nasty consequences when splicing
buffers (see https://stackoverflow.com/a/48111196/839733).

As of this commit, NettyDataBuffer stopped using CompositeByteBuf, and
 simply does ByteBuf.write().

Issue: SPR-16351
2018-01-10 11:05:41 +01:00
Juergen Hoeller 45828cb934 Check BeanInfoFactory for interface introspection as well
Issue: SPR-16322
2018-01-08 18:05:02 +01:00
Juergen Hoeller 7ad69bfc20 Avoid extra existence check in SimpleMetadataReaderFactory
Issue: SPR-16281
2018-01-07 23:18:52 +01:00
Juergen Hoeller 1a154c3e4c Consistently throw FileNotFoundException even for NIO access
Issue: SPR-16334
2018-01-07 23:18:28 +01:00
Rossen Stoyanchev f4d8c7cc2b Improve decodeToMono support
This commit ensures uniform support for decodeToMono across the various
byte and String related decoders.

Issue: SPR-16253
2017-12-14 16:59:34 -05:00
Christoph Dreis 260ebeca3a Improve performance of some string operations
Issue: SPR-16293
2017-12-12 17:14:24 +01:00
Sam Brannen 767ea9db83 Fix minor logic error in SocketUtils 2017-12-06 17:00:29 -08:00
Tony Mitchell 9f36d170be Support identical minPort and maxPort in SocketUtils (#1612)
This commit fixes a bug where an IllegalStateException was
thrown if the minPort and maxPort values supplied to
SocketUtils.findAvailableTcpPort(int, int) were identical.
2017-12-06 16:38:46 -08:00
Sam Brannen f9689dfe48 Polishing 2017-12-06 15:54:02 -08:00
Sam Brannen 773cd3241b Polishing 2017-11-28 14:11:21 +01: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 5843173567 Polishing 2017-11-21 13:42:57 +01:00
jianglei 4b614dc1de Fix copy/paste in Javadoc
Closes gh-1601
2017-11-21 06:58:14 +01:00
Rossen Stoyanchev bc8e525e60 Add shared instance of ReactiveAdapterRegistry
Issue: SPR-16218
2017-11-20 17:02:22 -05:00
Juergen Hoeller 84699c8b9b Document common use cases for @Order vs @Priority vs @DependsOn
Issue: SPR-16213
2017-11-20 12:53:37 +01:00
Arjen Poutsma e4d405271a Document DataBuffer/PooledDataBuffer and codecs
Issue: SPR-16156
2017-11-16 11:36:26 +01:00
diesieben07 0e49e32188 Handle parameters of Kotlin extension methods correctly
The EXTENSION_RECEIVER parameter of Kotlin's extension
methods appear as normal method parameters to Java and
thus require a name. The synthetic name "$receiver" is
used here, as it is not a valid Kotlin identifier,
but valid in Java.

Issue: SPR-16119
2017-11-13 15:42:32 +01:00
Sam Brannen 2be2aa7b96 Add missing word to JavaDoc 2017-11-13 00:46:20 +01:00
Arjen Poutsma 8223809455 Use existing CompositeByteBuf if possible
This commit uses the existing CompositeByteBuf if present, as opposed
to creating a new composite for every call to
NettyDataBuffer.write(ByteBuf...)

Issue: SPR-16180
2017-11-10 15:09:14 +01:00
Juergen Hoeller 9b7af8b5aa Polishing 2017-11-05 21:07:26 +01:00
Juergen Hoeller 07b479e264 FileUrlResource creates same class from createRelative
Issue: SPR-16140
2017-11-05 21:01:29 +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
Juergen Hoeller d00e4f17ec ClassPathResource uses specific constructors in createRelative
Issue: SPR-16146
2017-11-02 16:05:57 +01:00
Juergen Hoeller b921d564d2 DefaultResourceLoader resolves writable FileUrlResource for "file:" URL
Issue: SPR-16140
2017-11-02 16:05:40 +01:00
Juergen Hoeller a2f5e1254e Drive letter case alignment in addClassPathManifestEntries
Issue: SPR-16117
2017-10-26 15:28:27 +02:00
Juergen Hoeller 7e8c8f0b76 Polishing 2017-10-25 19:23:48 +02:00
Juergen Hoeller 2d0ab4740c Consistent hasText checks for CharSequence vs String
Directly inlined hasLength implementations for proper nullability detection in IntelliJ, assuming a hasText checked value is never null afterwards. Since the JVM is going to do this at runtime anyway, this is effectively equivalent but more indicative for source code introspection algorithms.

Issue: SPR-15540
2017-10-24 13:16:47 +02:00
Juergen Hoeller 182da15908 BridgeMethodResolver properly resolves interface hierarchies
Issue: SPR-16103
2017-10-24 01:01:49 +02:00
Juergen Hoeller 55b0c2f243 Polishing 2017-10-24 01:01:42 +02:00
Juergen Hoeller ecea82d3a5 Polishing 2017-10-23 17:14:09 +02:00
Juergen Hoeller 75ec973bae Refined tests for StringUtils.starts/endsWithIgnoreCase
Issue: SPR-16095
2017-10-22 20:29:46 +02:00
Juergen Hoeller 5d41e0f012 Avoid temporary String creation in StringUtils.starts/endsWithIgnoreCase
Issue: SPR-16095
2017-10-22 14:31:17 +02:00
Juergen Hoeller 9a88ebdeba Consistent hasText checks for CharSequence vs String
Issue: SPR-15540
2017-10-22 12:12:32 +02: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 3d1023be8c Polishing 2017-10-17 11:56:30 +02:00
Rossen Stoyanchev b4c95bf278 ReactiveAdapterRegistry uses Reactor's JdkFlowAdapter
Issue: SPR-16052
2017-10-16 20:49:22 -04:00
Juergen Hoeller c29b6f5b55 Consistent handling of null array for arguments
Issue: SPR-16075
2017-10-16 15:34:18 +02:00
Sam Brannen 8a94077da0 Clean up warnings in spring-core 2017-10-15 18:28:08 +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 dc3299152c Polishing 2017-10-09 16:06:03 +02:00
Juergen Hoeller 53091c76bf Convenient forType methods for ParameterizedTypeReference
Issue: SPR-16054
2017-10-09 13:59:01 +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
Juergen Hoeller efce7902c4 Polishing 2017-09-27 01:34:11 +02:00
Juergen Hoeller 9d8e3d4185 Explicit check for duplicates in addClassPathManifestEntries
Issue: SPR-15989
2017-09-26 11:49:49 +02:00
Sebastien Deleuze 3996f33399 Support non-standard classes in Kotlin reflection discovery methods
Issue: SPR-15999
2017-09-24 23:10:40 +02:00
Juergen Hoeller e2882fe1db Build against EE 8 API level wherever possible
Upgrade to JAXB 2.3, JAX-WS 2.3, Annotations 1.3.1, Interceptor 1.2.1.
Also includes Log4J 2.9.1 and Asciidoctor 1.5.6.
2017-09-24 17:18:21 +02:00
Juergen Hoeller 9190b76ab9 Latest dependency updates (POI 3.17, Rome 1.8, EhCache 3.4, Caffeine 2.5.6, RxJava 2.1.4, Tomcat 8.5.21, JRuby 9.1.13, Rhino 1.7.7.2) 2017-09-23 11:28:19 +02: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
Sebastien Deleuze 6c4a103f70 Remove support for generics nullability for now
See https://github.com/Kotlin/KEEP/issues/79
2017-09-21 18:44:27 +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 185c2bf5b6 Upgrade to ASM 6.0
Issue: SPR-14514
2017-09-19 13:49:32 +02:00
Juergen Hoeller 346d2edce1 Revised org.springframework.lang javadoc
Issue: SPR-15756
2017-09-18 23:59:11 +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
Sebastien Deleuze 5ae35f606c Leverage kotlin-reflect to determine parameter names
This is especially useful to determine interface parameter names
without requiring Java 8 -parameters compiler flag.

Issue: SPR-15541
2017-09-06 15:56:45 +02:00
Juergen Hoeller 204ddebd68 SimpleAsyncTaskExecutor properly respects NO_CONCURRENCY
Issue: SPR-15895
2017-09-01 13:44:49 +02:00
Brian Clozel 397fd24849 Revert "Leverage Kotlin plugin dependency management"
This reverts commit 3e2f6c848a.
2017-08-22 21:29:39 +02:00
Sebastien Deleuze 3e2f6c848a Leverage Kotlin plugin dependency management 2017-08-22 17:35:57 +02:00
Sebastien Deleuze ab6430569d Efficient Kotlin metadata detection
Follow-up of 3991ab4a23.

Issue: SPR-15673
2017-08-22 16:22:25 +02:00
Brian Clozel cc3d7d2d48 Apply dependency management to selected modules
This commit applies the Dependency Management Plugin to modules that
require it; right now Spring Framework is importing BOMs for Netty and
Reactor dependencies only.

Instead of applying those BOMs to all modules, they're applied only
where they're needed.

Issue: SPR-15885
2017-08-21 14:42:03 +02:00
Brian Clozel 2eeb428e95 Move modules to independent build files
The main `build.gradle` file contains now only the common build
infrastructure; all module-specific build configurations have
been moved to their own build file.

Issue: SPR-15885
2017-08-21 14:41:55 +02:00
Juergen Hoeller 3991ab4a23 Efficient Kotlin metadata detection
Issue: SPR-15673
2017-08-21 01:33:20 +02:00
Sebastien Deleuze 73cf07e9a4 Fix overridden methods nullability
Issue: SPR-15869
2017-08-17 15:02:59 +02:00
Juergen Hoeller fabc9c28d7 Align new FileSystemUtils NIO implementation with original behavior
Issue: SPR-15845
Issue: SPR-15846
2017-08-03 14:21:00 +02:00
Juergen Hoeller 26de6268aa Polishing 2017-07-27 16:06:56 +02:00
Juergen Hoeller fac83b2e7c Consistent logging in Environment and PropertySource implementations
Issue: SPR-15825
2017-07-27 16:02:18 +02:00
Juergen Hoeller c5fc400534 (AnnotationAware)OrderComparator supports null values again
Issue: SPR-15823
2017-07-27 11:39:05 +02:00
Arjen Poutsma d5da823482 Fix race condition for AsynchronousFileChannel
This commit fixes an issue in the DataBufferUtils.write variant that
takes a AsynchronousFileChannel.

Issue: SPR-15798
2017-07-26 14:10:48 +02:00
Rossen Stoyanchev d7a7b08b08 Find the last plus for suffix MediaType
Issue: SPR-15795
2017-07-25 10:45:59 +02:00
Sebastien Deleuze 2437500cfe Ignore DataBufferUtilsTests#writeAsynchronousFileChannel
Issue: SPR-15798
2017-07-20 13:51:13 +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
Juergen Hoeller 46eba3dbfa Nullability fine-tuning around declaration inconsistencies
Issue: SPR-15720
Issue: SPR-15792
2017-07-19 22:22:20 +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
Sebastien Deleuze e2fd04dff3 Add a [] Kotlin extension for PropertyResolver#getRequiredProperty 2017-07-19 08:12:32 +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 d56fedc226 Methods for reading a Resource in DataBufferUtils
Currently ResourceEncoder and ResourceRegionEncoder use DataBufferUtils
to read resource with an AsynchronousFileChannel if it is a file or
otherwise fallback on getting the channel from the resource.

The same is now required in other places where a Resource needs to be
read and is also generally useful.

Issue: SPR-15773
2017-07-17 12:25:25 +02:00
Rossen Stoyanchev d3749bc1ec Add timeout to DataBufferUtilsTests to avoid hanging 2017-07-14 23:07:48 +02:00
Arjen Poutsma c802827f0f Change write methods to return Flux<DataBuffer>
This commit changes the write methods to return `Flux<DataBuffer>`
instead of `Mono<Void>`, giving access to the original buffers,
so that they can decided whether the buffers need to be closed or not.

Issue: SPR-15726
2017-07-14 18:55:25 +02:00
Arjen Poutsma 83051b06b8 Add write methods to DataBufferUtils
This commit adds an overloaded write method to `DataBufferUtils`. There
are three parameter variants: `OutputStream`, `WritableByteChannel`, and
`AsynchronousFileChannel`.

Issue: SPR-15726
2017-07-14 17:13:59 +02:00
Rossen Stoyanchev dfcc9af938 Lazy registration in ReactiveAdapterRegistry
Issue: SPR-15747
2017-07-11 13:04:43 +02:00
Juergen Hoeller 3714e7b044 Deprecate FileSystemUtils
Issue: SPR-15748
2017-07-10 14:25:13 +02:00
Juergen Hoeller 9b5132ce53 LinkedCaseInsensitiveMap exposes its locale for key conversion
Issue: SPR-15752
2017-07-10 14:24:28 +02:00
Juergen Hoeller 398322139a StringUtils.uncapitalize is not actually nullable
Issue: SPR-15540
2017-07-05 17:56:37 +02:00
Arjen Poutsma 621df7c978 Add ByteBuf leak detection @Rule
This commit introduces a JUnit rule that detects ByteBuf leaks in
subclasses of AbstractDataBufferAllocatingTestCase.
2017-06-30 10:52:00 +02: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 87430f3cd3 ListenableFuture provides CompletableFuture adaptation via completable()
Issue: SPR-15696
2017-06-27 00:43:37 +02:00
Juergen Hoeller 41eaf03bc8 Compatibility with covariant return type on JDK 9's ByteBuffer
Issue: SPR-15686
2017-06-26 23:22:28 +02: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
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
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
Arjen Poutsma 7085a30382 Improve capacity calculcation in DefaultDataBuffer
This commit improves the capacity calculation for the DefaultDataBuffer,
so that the capacity typically doubles instead of improving by the
minimal required amount.

Issue: SPR-15647
2017-06-12 11:04:19 +02:00
Stephane Nicoll 27aabb15f9 Polish "Refact iterator of Map with Java 8 forEach"
Closes gh-1451
2017-06-12 08:53:56 +02:00
diguage dab7a7f0ee Refact iterator of Map with Java 8 forEach
See gh-1451
2017-06-12 08:11:32 +02: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 e6f1950952 Missing @Nullable annotations for findAnnotation/getValue/getDefaultValue
Note that synthesizeAnnotation has an assertion now, keeping its non-null policy.

Issue: SPR-15642
2017-06-08 10:35:54 +02:00
Phillip Webb 72cd24446d Make resolvePropertyName available to subclasses
Change `SystemEnvironmentPropertySource.resolvePropertyName` to a
protected final method so that subclasses may call it.

Issue: SPR-15617
2017-06-07 17:03:31 -07:00
Phillip Webb c675424189 Restore AnnotationUtils null argument support
Update AnnotationUtils to restore support for `null` arguments in
certain methods. Some existing upstream projects were relying on this
behavior.

Issue: SPR-15642
2017-06-07 16:59:24 -07: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
Stephane Nicoll 6e3a9cbbb4 Polish "Refactor duplicated code"
Closes gh-1445
2017-06-04 13:06:09 +02:00
diguage 5288641c50 Refactor duplicated code
See gh-1445
2017-06-04 13:01:03 +02:00
diguage eae63786c2 Fixed reference 2017-06-03 15:19:36 +08:00
Sebastien Deleuze 90df7dd279 Add missing @Nullable annotation
Issue: SPR-15540
2017-06-02 14:16:19 +02:00
Sebastien Deleuze b494c53b40 Avoid defining nullability for non-relevant API
Defining nullability of some API like EnvironmentCapable
or ConditionContext causes issues in Spring Boot because
in the context where they are used, it is known for sure
they will return non-null values even if their API can in
other context return null values.

It is better in this case for both Java and Kotlin to
not define at all the nullabity of such API.

In practice, this is achieved by removing the package level
@NonNullApi annotation and adding it only on the
relevant classes.

Issue: SPR-15540
2017-05-31 22:51:33 +02: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
Sebastien Deleuze ad2c0f8410 Improve @Nullable annotation
This commit makes Spring @Nullable annotation leveraging
JSR 305 @TypeQualifierNickname + @Nonnull(when= When.MAYBE)
instead of directly using @javax.annotation.Nullable which
seems not designed to be used as a meta-annotation.

It also removes @TypeQualifierDefault since the purpose of
this annotation when applied at method level is to only
change return value nullability, not parameters one.

Issue: SPR-15540
2017-05-31 16:56:08 +02: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
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 7b3f5fd855 ResourceUtils.extractArchiveURL properly deals with top-level war URLs
Issue: SPR-15556
2017-05-17 14:22:43 +02:00
Rossen Stoyanchev 0d28a1c32b Polish 2017-05-05 15:02:09 -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
Juergen Hoeller 652266bcc2 Polishing 2017-05-04 22:27:36 +02:00
Juergen Hoeller d43dfc7bae Properly extract jar file from Tomcat war URL
Issue: SPR-15485
2017-05-03 21:58:59 +02:00
Juergen Hoeller 4d86515fa5 Overridable Commons Logging bridge in separate spring-jcl jar
Issue: SPR-14512
2017-05-03 20:29:05 +02:00
Juergen Hoeller 27057889f8 Polishing 2017-05-03 13:45:29 +02:00
Phillip Webb 07ef7a97c7 Cache SpringFactoriesLoader loads
Update `SpringFactoriesLoader` to cache property file loads. This helps
reduce the number of garbage objects created as each load uses an 8K
char buffer.

Issue: SPR-15509
2017-05-03 12:51:52 +02:00
Arjen Poutsma ed4bd43cac Add writableChannel to WritableResource
This commit introduces a `writableChannel()` method to
`WritableResource`, defaulting to `Channels.newChannel`, but with
overrides for file-based resources.
2017-05-03 11:44:01 +02:00
Juergen Hoeller 9d8e9cf243 Common root cause introspection algorithm in NestedExceptionUtils
Issue: SPR-15510
2017-05-03 11:31:28 +02:00
Juergen Hoeller 817e80c56b Property actually throws exception for no write method found
Issue: SPR-15507
2017-05-02 21:16:31 +02:00
Juergen Hoeller 7ca0094fa1 ResolvableType.clearCache() clears SerializableTypeWrapper cache as well
Issue: SPR-15503
2017-05-02 21:13:55 +02:00
Stephane Nicoll 1b9e12f52f Polish "Use Java 8 forEach method on Map"
Closes gh-1404
2017-04-28 11:07:08 +02:00
Jon Borenstein 13dc0cd828 Use Java 8 forEach method on Map 2017-04-28 11:07:08 +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 baa7b1c6c8 Simplified match condition checks
Issue: SPR-15477
2017-04-27 21:31:50 +02:00
Juergen Hoeller 17f274fd6a Debug log messages for value retrieval exceptions
Issue: SPR-15481
2017-04-27 21:31:39 +02:00
Juergen Hoeller cd95f34666 Merge pull request #1399 from dreis2211/SPR-15477
Optimize AntPathMatcher when checking for potential matches
2017-04-27 20:26:37 +02:00
Christoph Dreis 13b39521d8 Optimize AntPathMatcher when checking for potential matches
Issue: SPR-15477
2017-04-27 19:04:36 +02:00
Sam Brannen c855182e03 Polishing 2017-04-26 18:59:43 +02:00
Juergen Hoeller c668d9a473 Polishing 2017-04-26 18:20:19 +02:00
Juergen Hoeller 3daf626842 Defensive fallback for file system resolution in lastModified()
Issue: SPR-15485
2017-04-26 18:17:00 +02:00
Oleg Zhurakousky 299b9d60fd SPR-15481 Fixed AnnotationUtils.getValue() operation
- Fixed AnnotationUtils.getValue() operation to ensure it re-throws AnnotationConfigurationException instead of swallowing it (as it is done in few other operations in AnnotationUtils)
- Added test
- Removed unnecessary '@SuppressWarnings("unchecked")'
2017-04-26 15:05:32 +02:00
Rossen Stoyanchev cc102c2fcd Properly handle Flux<?> and Flux<Object> in WebFlux
Issue: SPR-15464
2017-04-20 09:19:38 -04:00
Rossen Stoyanchev 7d8dda9a5a Polish reactive type support in Conventions 2017-04-18 23:25:44 -04:00
Rossen Stoyanchev 5c502b87ca Support for reactive types in Conventions
Issue: SPR-14915
2017-04-18 23:00:43 -04:00
Rossen Stoyanchev 71966b0777 Polish Conventions 2017-04-18 23:00:43 -04:00
Juergen Hoeller 91df0653fe Polishing 2017-04-17 15:05:34 +02:00
Juergen Hoeller d50dab6ea9 Suppress deprecation warning on JDK 9 (for LogRecord.setMillis)
Includes revised Log methods in log level order, with consistent delegation of fatal->error for log level checks in SLF4J and JUL, a JavaUtilDelegate for defensive access to java.logging on JDK 9, support for LogRecord message objects, as well as revised log setup recommendations.

Issue: SPR-15453
Issue: SPR-14512
2017-04-14 22:43:44 +02:00
Rossen Stoyanchev 1e8c7e55de WebTestClient assert response body with Consumer<B>
Issue: SPR-15421
2017-04-14 16:39:30 -04:00
Juergen Hoeller 0b118322b0 Polishing 2017-04-13 16:17:05 +02:00
Juergen Hoeller 4838f06d5d ASM annotation visitor logs IllegalAccessException at debug level only
Issue: SPR-15442
2017-04-12 18:05:30 +02:00
Juergen Hoeller 093e573ace ASM annotation visitor defensively accesses enum constants
Issue: SPR-15442
2017-04-12 15:36:18 +02:00
Sebastien Deleuze 4d9144132e Upgrade to Reactor Core 3.1
Issue: SPR-15318
2017-04-11 18:13:04 +02:00
Juergen Hoeller b061556f68 LogFactory enforces lazy resolution of non-String messages for SLF4J as well
Issue: SPR-14512
2017-04-11 15:39:17 +02:00
Sebastien Deleuze 23e35c0e1a Handle Jackson InvalidDefinitionException with 5xx status in WebFlux
Issue: SPR-14925
2017-04-11 12:39:09 +02:00
Juergen Hoeller c4e0d6c2a2 UnknownHostException as resource-not-found for properties files
Plus first-class declaration of FileNotFoundException in Resource javadoc.

Issue: SPR-15433
2017-04-11 11:45:30 +02:00
Juergen Hoeller ce4eff321c Optimize StringUtils.replace for larger replacement pattern
Issue: SPR-15430
2017-04-11 11:40:50 +02:00
Juergen Hoeller 3a1d431c7d Optimize StringUtils.replace/deleteAny for common no-op case
Issue: SPR-15430
2017-04-11 10:11:54 +02:00
Juergen Hoeller 7fbc20e225 Undeprecate TypeVariableMap methods on GenericTypeResolver
Issue: SPR-15429
2017-04-11 10:09:09 +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 ea5cb26d75 LogFactory obtains ClassLoader-specific LoggerContext for Log4J
Issue: SPR-14512
2017-04-07 16:34:12 +02:00
Juergen Hoeller 8cb24e0d93 SettableTask.checkCompletingThread() only resets marker after match
Issue: SPR-15409
2017-04-07 13:39:58 +02:00
Juergen Hoeller 2566d6f5c8 LogFactory differentiates between SLF4J API and SPI presence
Issue: SPR-14512
2017-04-06 17:10:37 +02:00
Juergen Hoeller 702e01ad52 UrlResource applies StringUtils.getFilename against cleaned URL path
Issue: SPR-15411
2017-04-06 14:27:00 +02:00
Juergen Hoeller 67ea4b3a05 package-info for repackaged libraries (and other polishing) 2017-04-06 14:10:46 +02:00
Juergen Hoeller 75dd8d9c06 UrlResource applies StringUtils.getFilename against URL path
Issue: SPR-15411
2017-04-06 14:07:22 +02:00
Juergen Hoeller 3037277d0e Minimize reflective interaction with annotation instances during retrieval
Issue: SPR-15387
2017-04-06 14:07:17 +02:00
Juergen Hoeller 45e7b350bd LogFactory provides getFactory() with getInstance methods as well
Issue: SPR-14512
2017-04-05 22:24:09 +02:00
Juergen Hoeller 47277f43da spring-core provides custom variant of Commons Logging
Includes dependency updates (JavaMail 1.6 RC1, RxJava 2.0.8, Tomcat 8.5.13, Undertow 1.4.12, XNIO 3.4.5)

Issue: SPR-14512
2017-04-05 21:22:44 +02:00
Rossen Stoyanchev ae2306326e Add RxJava1 Reactive Streams adapters check 2017-04-04 12:25:58 -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 37f9c86758 Fix failing tests due to last commit 2017-04-03 09:38:08 -04:00
Rossen Stoyanchev 62c1e44db2 Spring MVC supports reactive return values
This commit adds support for reactive library types to be returned
directly from controller methods adapting them either to a
ResponseBodyEmitter (streaming) or DeferredResult (non-streaming).

The reactive libraries supported are the ones that can adapted to a
Reactive Streams Publisher through the ReactiveAdapterRegistry.

Issue: SPR-15365
2017-04-03 09:01:49 -04:00
Sebastien Deleuze cbd98d5247 Switch back to Reactor BOM Aluminium-BUILD-SNAPSHOT 2017-03-29 16:41:54 +02:00
stonio 90388e4701 Replace size() check with isEmpty()
Closes gh-1333
2017-03-27 15:34:23 +02:00
stonio 412947a53f Polish CollectionFactoryTests
Closes gh-1334
2017-03-27 12:51:11 +02: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
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
Juergen Hoeller e892e02f41 Polishing 2017-03-21 17:44:47 +01: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 6f075c9060 Update after changed method in Reactor Core 2017-03-20 21:57:17 -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
Juergen Hoeller 012c56a1f0 Avoid pattern misdetection in Tomcat "war:" URL separator
Issue: SPR-15332
2017-03-16 18:55:49 +01:00
Juergen Hoeller 899f235998 Detect Tomcat's "war" protocol as jar URL
Issue: SPR-15332
2017-03-14 15:19:02 +01: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
Arjen Poutsma 63118c1ea7 Add DataBufferUtils.read w/ AsynchFileChannel
This commit adds an overloaded DataBufferUtils.read method that operates
on a AsynchronousFileChannel (as opposed to a ReadableByteChannel, which
already existed). This commit also uses said method in the Resource
encoders, if the Resource is a file.
2017-03-09 14:08:40 +01:00
Juergen Hoeller 94a7624c1f Polishing 2017-03-07 15:42:04 +01:00
Juergen Hoeller 8992f5924f AnnotationUtils makes use of Java 8 getDeclaredAnnotation method
Issue: SPR-15287
2017-02-28 13:07:03 +01:00
Juergen Hoeller cbd19153c4 Polishing 2017-02-22 16:53:54 +01:00
Juergen Hoeller f4de1ea147 Polishing 2017-02-22 15:32:19 +01:00
Juergen Hoeller 6108ab1c31 Test for expected behavior of getAllMergedAnnotations vs findAllMergedAnnotations
Issue: SPR-15271
2017-02-22 15:28:34 +01:00
stonio 7d062df992 Use String#isEmpty()
Closes gh-1335
2017-02-22 11:55:17 +01:00
Stephane Nicoll 598d9a4b05 Add test to reproduce SPR-15271 2017-02-20 11:34:08 +01:00
Juergen Hoeller 45df1d9fea Javadoc fixes 2017-02-18 01:43:30 +01:00
Juergen Hoeller 9543384d9e Avoid deprecated comparators in tests
Issue: SPR-14779
2017-02-16 15:36:27 +01:00
Juergen Hoeller f90cd7705f Consistent ordering of Assert variants
Issue: SPR-15196
2017-02-16 15:32:07 +01:00
Juergen Hoeller 22322fde26 Revised isInstanceOf/isAssignable message concatenation
Issue: SPR-15196
2017-02-16 13:13:20 +01:00
Juergen Hoeller 50d93d3794 Consistently support CompletionStage next to CompletableFuture
Issue: SPR-15258
2017-02-15 23:16:11 +01:00
Juergen Hoeller 5f531a7a7d Comparators entry point with generically typed factory methods
Issue: SPR-14779
2017-02-15 18:05:32 +01:00
Juergen Hoeller 44ec6e0037 Polishing 2017-02-13 15:07:07 +01:00
Sebastien Deleuze ef550c43d6 Flush JSON stream after each element
Issue: SPR-15104
2017-02-13 14:20:19 +01:00
Juergen Hoeller 448ea4cdfe Consistent logging in ignoreResourceNotFound scenarios
Issue: SPR-15218
2017-02-10 10:41:10 +01:00
Christoph Dreis 5cfa7e71bb Use Class.getTypeName() where appropriate
Issue: SPR-15237
2017-02-08 20:36:41 +01:00
Juergen Hoeller acf511ac0e Polishing 2017-02-02 20:11:06 +01:00
Juergen Hoeller c9b99daa74 SettableListenableFuture centralizes state in ListenableFutureTask subclass
Issue: SPR-15216
2017-02-02 19:54:08 +01:00
Juergen Hoeller 9666fcc41d SettableListenableFuture consistently tracks cancellation state
Issue: SPR-15202
2017-01-31 15:57:52 +01:00
Juergen Hoeller f84907a1fc Polishing 2017-01-31 12:00:13 +01:00
Juergen Hoeller 23aac2de8c Retain single-arg assert methods in deprecated form
Issue: SPR-15196
2017-01-31 09:27:55 +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
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
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 ed40b1c8ee Remove outdated abstractions/delegates from core/util
Issue: SPR-15159
2017-01-23 13:41:55 +01:00
Juergen Hoeller 54e2d63d6f Polishing 2017-01-19 21:21:01 +01:00
Sam Brannen 264edb3fb5 Improve initialization of Assume class
Prior to this commit, the org.springframework.tests.Assume class could
fail to load resulting in a NoClassDefFoundError if parsing of the
'testGroups' system property failed. This is because the parsing took
place while initializing a static field.

This commit addresses this issue by moving the 'testGroups' system
property lookup to a dedicated method that is lazily invoked upon
demand instead of eagerly when loading the Assume class itself.

In addition, when an error occurs, TestGroup.parse() now logs the
complete original value of the supplied test groups string instead of
potentially omitting the "all-" prefix. This results in more
informative error messages similar to the following.

  java.lang.IllegalStateException: Failed to parse 'testGroups' system
  property: Unable to find test group 'bogus' when parsing testGroups
  value: 'all-bogus'. Available groups include:
  [LONG_RUNNING,PERFORMANCE,JMXMP,CI]

Issue: SPR-15163
2017-01-19 05:58:02 +01:00
Juergen Hoeller d21b6e596f Revised Charset handling and common StringUtils.uriDecode delegate
Issue: SPR-14492
2017-01-18 00:09:06 +01:00
Arjen Poutsma 88c5f5981f Added DataBuffer Encoder/Decoder
This commit adds a DataBuffer Encoder and Decoder, and uses it in
the annotation-based processing model.

Note that these codecs are not used in the functional processing model,
since the BodyInserter/BodyExtractor already have methods for
writing/reading DataBuffers.

Issue: SPR-15148
2017-01-17 16:46:43 +01:00
Juergen Hoeller e59f4004eb Use MockitoJUnitRunner from Mockito 2's preferred location
Issue: SPR-14880
2017-01-16 23:08:06 +01:00
Juergen Hoeller 1cb381e9a7 Consistent deprecation markers on JDK 9 2017-01-13 10:53:20 +01:00
Juergen Hoeller 7c05b427a7 MimeTypeUtils constants cleanup: removed web media types
Issue: SPR-15137
2017-01-12 23:30:57 +01:00
Juergen Hoeller 743ce2cda6 Polishing 2017-01-12 23:30:38 +01:00
Juergen Hoeller e19dff179e Polishing 2017-01-12 21:18:01 +01:00
Juergen Hoeller 50e5a65b2d LinkedCaseInsensitiveMap provides case-insensitive keySet again
Issue: SPR-15026
2017-01-12 21:14:07 +01:00
Juergen Hoeller 0403fe340d Merge pull request #1287 from markhobson/SPR-15109
Introduce mime/media types for application/rss+xml
2017-01-12 20:24:27 +01:00
Juergen Hoeller 31f7860a40 Merge pull request #1285 from dreis2211/SPR-15094
Improve performance of StringUtils.capitalize()
2017-01-12 20:22:26 +01:00
Mark Hobson 2ce2f7d9a5 Introduce mime/media types for application/rss+xml
Issue: SPR-15109
2017-01-07 17:13:32 +00:00
Sam Brannen 9ed66bf2eb Clean up warnings across code base 2017-01-07 01:54:38 +01:00
Christoph Dreis 83929b2b98 Improve performance of StringUtils.capitalize()
Issue: SPR-15094
2017-01-04 19:23:08 +01:00
Juergen Hoeller ccabff6ba3 Upgrade to ASM 5.2
Issue: SPR-15071
2016-12-30 11:20:54 +01:00
Juergen Hoeller e38c020535 TypeDescriptor efficiently matches equal annotations as well
Issue: SPR-15060
2016-12-28 22:51:29 +01:00
Juergen Hoeller 7818c650ba Cache ASM metadata at the context level (if supported)
Includes streamlined ClassPathBeanDefinitionScanner setup.

Issue: SPR-14654
2016-12-27 13:38:24 +01:00
Juergen Hoeller f805427629 Detect generic type match behind interface-based proxy as well
Issue: SPR-14097
2016-12-26 11:23:07 +01:00
Juergen Hoeller 8147c112f5 LinkedCaseInsensitiveMap delegates to LinkedHashMap instead of extending it
Issue: SPR-15026
2016-12-23 18:57:50 +01:00
Juergen Hoeller 82c1c859d9 Polishing
(cherry picked from commit 9cb4de8)
2016-12-20 21:17:48 +01:00
Juergen Hoeller 154ef8bf10 Polishing 2016-12-20 19:57:52 +01:00
Juergen Hoeller 12aa14ddbc Support @Nullable annotations as indicators for optional injection points
Issue: SPR-15028
2016-12-18 21:04:08 +01:00
Juergen Hoeller 8a7467020f Polishing 2016-12-15 15:44:16 +01:00
Juergen Hoeller 39d2769bd0 Autodetect Kotlin nullability for optional injection points (analogous to java.util.Optional)
Built-in support in MethodParameter and DependencyDescriptor supersedes our separate KotlinUtils helper.

Issue: SPR-14951
2016-12-13 17:38:58 +01:00
Juergen Hoeller e49813f2c4 Polishing 2016-12-12 22:49:40 +01:00
Juergen Hoeller aef1460a64 TypeDescriptor properly narrows ResolvableType for non-typed collection elements
Issue: SPR-14971
2016-12-12 22:28:48 +01:00
Juergen Hoeller 7714eeccf3 MimeType parsing properly handles quoted semicolons
Issue:  SPR-14986
2016-12-09 15:04:26 +01:00