Fix isClosed() when a cache has not been initialized

 isClosed() now means 'has close() been called', after
 commit ea565b2e30e15cd52ddfc2ddc6db4ea8f1c3de88
 it meant 'has not been initialized or close() has been
 called'.

 Introduced explicit closed state. Minor tweak to use
 initialized state to determine whether cleanup will
 do anything. Added a test.


Remove old SSL protocol method.


fix #1919: PROPFIND request should not redirect to GET request


Expose Headers directly on MockResponse.


Use a Buffer for body contents.


Correct comment.


Support 204 and 205 'No Content' replies when application interceptor.


Use Sources and Sinks for all IO.


Skip buffer allocation when not needed.


Write some new connection pool tests.

 These use the Call APIs. They're high-level so they won't break with the
 implementation rewrite.


Add Call.isExecuted().

 Might be useful to expose this bookkeeping to app developers.


Fix flakiness in CallTest.cancelTagImmediatelyAfterEnqueue()

 There's a race where the HTTP engine has been created, but not yet connected
 and the cancel isn't as immediate as it could be. Fix the test by making sure
 there's a response to be retrieved.

 With the upcoming connection pool changes we might make the implementation
 more robust.

 Closes: https://github.com/square/okhttp/issues/2001


Drop our one remaining DSS cipher suite.

 Tracking Chrome and Firefox, which have also dropped this cipher suite.

 This is the only cipher suite change since the last update. See our cipher
 suites spreadsheet for a comparison: https://goo.gl/dWXbi0

 Closes https://github.com/square/okhttp/issues/1476


Change COMPATIBLE_TLS to be TLSv1.0 and not SSLv3

 Based on a discussion with Jesse Wilson during
 https://github.com/square/okhttp/pull/1189.


More interceptor tests.

 Test interactions with the response cache and HttpURLConnection.


Update to Okio 1.1.0.


Handle null fragments.


Use ResponseBody to model the response body everywhere.

 This makes cache writing and gzip layering work a bit nicer
 because there are fewer fields in HttpEngine to track the
 various competing streams.


Log favicon request instead of using standard output


Move cache writing out of the transport.

 This is necessary to unblock network interceptors, where the interceptor
 may elect to rewrite the response body. If we've already cached the
 original response body, we're too late.


Update to h2-16, hpack-10.


Permit release candidates in version numbers.


api has changed, fixing the example


Partially revert connection timeout behavior

 Related to issue #1790.

 If there is a *connection* timeout the next route should
 be tried. Timeouts during a request/response should
 probably not be retried.

 The timeout/interrupt behavior was changed in PR #1257
 for issue #1146. This modified both connection and
 request/response behavior. The issue reported was actually
 about the use of Thread.interrupt(), not timeouts, but the
 behavior change modified both behavior for interrupt and
 timeout.

 PR #1388 split the handling of exceptions so that separate
 code now handles connection errors from that which handles
 request/response errors. It faithfully kept the behavior
 from PR #1257.

 The modification of the timeout behavior during *connection*
 caused problems on Android. Now that the two types of error
 handling are split it's possible to deal with them
 differently and return the connection behavior to trying
 the next route. This does not modify behavior during
 request/response.


Prevent MockSpdyPeer interfering with Android tests

 On Android we run the OkHttp tests as an instrumented test case.
 The default UncaughtExceptionHandler on Android will quit the
 app, causing the current test to fail.

 MockSpdyPeer creates a thread that fails for various reasons
 that are not related to / required for the actual test. Often the
 exception is thrown during a subsequent test.

 This change logs the exception but prevent it from
 propagating out of the top of the call stack. This decreases
 overall flakiness.


Introduce intermediate storage for frame contents.

 This eliminates the need to always send a frame for every FrameSink#write and to always send an empty frame for FrameSink#close. Now, we only emit bytes once Okio reports complete segments.


Upstream commit of Android SNI / NPN fix

 https://android-review.googlesource.com/#/c/111211

 The change's to Android's Platform have been ported.

 This does not include the introduction of PlatformTest,
 which will be difficult to write so it works everywhere.


Throw UnknownHostException again from HttpURLConnection

 This is to address issue #1827.


Fix bug where request body isn't sent when it should


Change the cache to have non-shared semantics.

 This means we'll cache responses that use an 'Authorization' header. This
 means OkHttp's cache shouldn't be used on middleboxes that sit between
 user agents and the origin server; in practice this is never a use case
 for OkHttp.

 Fixes https://github.com/square/okhttp/issues/1035


Expose internal APIs for pluggable file systems.

 We aren't yet ready to make FileSystem a public type, but I don't mind
 making it _almost_ available via an internal API for those brave enough
 to try that.

 Also migrate all of our tests to use the in memory file system. It's simpler.

 https://github.com/square/okhttp/issues/1459


Don't append to a truncated line in the journal.

 Fixes https://github.com/square/okhttp/issues/1099


fix small types in the changelog


Test that conditional misses update the cache.

 Closes https://github.com/square/okhttp/issues/1712


Fix ResponseCacheTest for Android

 Pull #1011 broke ResponseCacheTest on Android.

 The test was asserting a header generated
 using a copy of the old broken implementation.

 The test now just uses HttpDate, which now has its own
 tests.


Crash on unexpected RuntimeExceptions.

 Currently we're sweeping these under the rug.


Use HTML entity for ampersand.


HTTP/2 initial window size is 65535 not 65536.


Use Okio's appending sink for File.


fix #789: Reorder test to ensure call is canceled before its body is returned.


Correct reference to RC1.


Added support for http/2 draft 12, which is incompatible with previous priority schemes.


Use Okio 1.4.0 final.


Some POST samples.


APIs to set and remove path segments.


Add missing copyright headers.

 https://github.com/square/okhttp/issues/880


Change HttpResponseCache to not implement java.net.ResponseCache.

 This marks some methods as @Deprecated and internal-only.
 Unfortunately we don't have a great mechanism to hide them from
 the documented API.


Implement query parameter management.

 The tricky part of this is '+' and ' ' management.


Small cleanups.

 Return the OkHttpClient on setters.
 Remove some completed TODOs in Call.
 Link to Okio in Javadoc.


Add wildcard hostnames support in CertificatePinner


HttpURL parsing.

 This includes everything but character encoding. The implementation
 is built around one oversized method that runs top to bottom; I found
 this was easier to follow than the switch statement recommended by the
 URL standard.


Add MockWebServerRule.


Close the source after reading regardless of result.


Test differences between user and network responses for gzip.


Fix HTTP post retransmit in the new API.

 We don't buffer response bodies in the new API. But we should retransmit
 POST bodies when a request fails.


Add convenience overload for ByteString-backed RequestBody.


Custom trust recipe.

 To my great delight, Java and Android can read .pem files without
 the BKS or JKS store files we typically use to distribute trusted
 certificates.

 This recipe includes a big copy-and-pasteable method for converting
 an InputStream of PEM files into an SSLContext. The rest of it is
 warnings about how dangerous that is.

 Closes https://github.com/square/okhttp/issues/1336


Add a test for interceptors throwing unchecked exceptions.

 Our behavior here is not good. Right now it looks like we're leaking
 resources; nothing is releasing the socket in a 'finally' clause when
 interceptors crash. We're also not notifying the callback that the
 call has failed; that's left hanging.

 That said, we don't expect applications to recover from these
 exceptions.

 Closes https://github.com/square/okhttp/issues/1482


Add a test for corner-case behavior.

 I'm looking to make HttpURLConnectionImpl delegate to Job, and that means
 writing tests for all the weird things it does above HttpEngine.


Expose running and queued call counts for monitoring


Move TLS retries / fallback into Connection.

 API changes:
 1) Added: Address.getCertificatePinner()
 2) Incompatible API change: Address constructor no longer
 includes ConnectionSpecs. Removed getConnectionSpecs().
 3) Added: ConnectionSpec.isCompatible(SSLSocket)
 4) Added: TlsVersion.javaName()

 Implicit / semantic / internal changes:

 1) Connection now handles all attempts to connect via a route
 (effectively a {proxy, socket address} pair), rather than just
 one attempt. i.e. Connection now handles all the TLS negotiation
 fallbacks internally.

 2) Route no longer deals with TLS versions. Individual TLS
 failures are not counted against a Route. If no connection
 attempts to a route were successful the failure is counted
 against the route.

 3) The code makes a distinction between when various
 IOExceptions occur, with the intention making retries a bit
 smarter. It is now more obvious which exceptions happen during
 setup (RequestException), connection (RouteException),
 HTTP communication and thus which can be retried and whether
 the request might have been sent.


Exceptions from peer closing should not be propagated.


Fix for SslContextBuilder/MockWebServer disagreeing about localhost

 MockWebServer binds to getByName('localhost'), SslContextBuilder was using
 InetAddress.getByName(null) (null == any loopback). On Android, null
 returns IPv6 loopback, which has the name 'ip6-localhost'.


Add some pings to force happens-before in SPDY tests.

 Previously we were relying on accidents to get our tests to pass. There
 may still be some that require work, but this should fix the three tests
 that I saw fail.

 https://github.com/square/okhttp/issues/525


Update to HTTP/2 Draft 10 and HPACK Draft 6.


Allow specifying a socket factory for connections.

 This socket factory will be used for all non-proxy connections and HTTP proxy connections.


Track Connection ownership.

 Connection ownership is somewhat racy: when an HttpURLConnection reads
 the last byte of a connection, its ownership is released and given to
 the connection pool.


Drop ALPN support.

 https://github.com/square/okhttp/issues/666


Remove 'jar-with-dependencies' qualifier from download link.

 This link is used when the jQuery Maven Artifact plugin cannot resolve the absolute URL of the latest artifact.


Return HttpResponseCache to previous (e.g. KitKat) behavior

 This change required to handle this Android scenario:

 When this version of OkHttp is packaged into Android in a future
 release (in com.android.okhttp...) there is a possibility that
 an older version of OkHttp bundled with application
 (in com.squareup.okhttp...) will pick up the newer HttpResponseCache
 via ResponseCache.getDefault(). It will attempt to use the get() / put()
 methods. Commit e2599be9e073f1be8e929597c358e2664ab0c9a9 was
 intended to restore HttpResponseCache get() and put() and avoid the
 UnsupportedOperationException that would be thrown.

 Unfortunately, it didn't quite do it:

 In KitKat and older versions OkHttp, in HttpResponseCache the behavior
 was to ignore any calls to put(URI, URLConnection) including
 any HttpURLConnection/HttpsURLConnection that wasn't its own
 (i.e. only ones from com.android.okhttp would be cached). The previous
 fix to HttpResponseCache re-introduced get()/put() but didn't implement
 the necessary instanceof checks.

 Jesse also informs me that coexistance with other implementations
 of HttpURLConnection is not required (since OkHttp replaces the
 HTTP implementation on the desktop). I have also since discovered
 that HttpResponseCache didn't implement the cache-control logic
 required to follow the letter of the Java API anyway, which means
 that HttpResponseCache is not suitable for use in cases where
 the Http(s)URLConnection implementation expects a fully compliant
 implementation.

 Also addressed nits from e2599be9e073f1be8e929597c358e2664ab0c9a9.


Doc: OkHttpClient should be treated as immutable once shared

 ...given that requirement, it's safe for many threads to call the
 open() method concurrently to open their own connections.

 https://github.com/square/okhttp/pull/634#discussion_r10487815


Build setup tweak to work around release plugin bug.

 http://jira.codehaus.org/browse/MRELEASE-812


Restore support for ResponseCache.setDefault().


Remove creation of 'fat' jar.

 Since the 'okhttp-protocols' module no longer exists we do not need to create this.


New mockwebserver docs.


Confirm that we use GMT formatting in setIfModifiedSince().


Test for redirect leak bug.


Use OkBuffer in Http20Draft09Test.


Move connection pooling logic.

 Previously we had this ugly, awkward release() method that
 attempted to manage connection pooling, discarding streams
 for caching, and closing broken streams.

 Move connection reuse to HttpConnection, with policy informed
 by HttpEngine. It specifies what to do when the connection
 becomes idle: pool, close or hold. The connection does what
 it's told.


Flush control frames; don't flush user frames.


Add MockWebServer.setNpnProtocols


Read/write access for byte, short and int.

 This is big-endian only because that's all we use in OkHttp.


Fix mockwebserver jar download 404


Implement moving bytes between OkBuffers.

 This is more complicated than I'd anticipated.


OkBuffer API sketch.

 I'm unhappy with java.io:
  * No timeouts.
  * Every layer needs to copy bytes around. Always copying bytes.
  * Features like mark/reset and available() are clumsy.
  * Its awkard in mixed text/binary protocols like HTTP because
    character decoding is separate and takes over the stream.

 Unfortunately java.nio isn't better, just different:
  * It's complex.
  * Buffers are fixed size.
  * No built-in buffer pooling.
  * Features like mark/reset/position are clumsy.

 This is an obnoxious attempt at a 3rd I/O interface, mostly
 inspired by InputStream and OutputStream, but using growable
 buffers instead of byte arrays as the core data container.


Improve some Markdown


Backfill spdy and http/2 related tests wrt zero-length messages.


Don't unzip if there isn't a response body.

 https://github.com/square/okhttp/issues/358


Read priority flag on http/2 headers frame.


Support more than 64 referenced headers in HPACK.


Don't attempt TLS modes we know will fail.

 https://github.com/square/okhttp/issues/442


Small docs fixes. Remove OkHttp 2 warnings.


Platform.getMtu is unused.

 This was a failed experiment.


Tests for canceling async requests.


Use Request and Response types in OkResponseCache.

 This breaks support for java.net.ResponseCache implementations. That's
 good. That API is akward and can't support important features like
 conditional GETs and hit tracking.


Define async APIs and switch Job to use HttpEngine directly.

 Using HttpEngine directly introduces some duplicated code with
 HttpURLConnection. It also breaks the response cache. I think
 this is the best route going forward; and eventually we could
 invert this relationship to have HttpURLConnection depending on
 Job directly rather than vice versa.


getMtu issue


issue #364: spdy should set content-length when it is known.


Static HTTPS/SPDY3/HTTP2 server example


Added description and download info for MockWebServer.


Fix checkstyle issues in new Cookie code.


Fix a race condition in Connection.isExpired().

 This was causing some SPDY connections to be evicted early,
 and preventing connection reuse.

 The spdyConnectionReuse test becomes flaky with the
 fix that makes MockWebServer use different sequenceNumbers
 for different requests on the same socket. With the fix
 the test is no longer flaky. The old test wasn't good enough
 to detect what it wanted to detect!

 This race has existed in the code since we added more
 aggressive time-based expiration in January 2013. In my
 basic tests the race impacted ~20% of connections on a
 desktop VM. It may have been more on mobile.


safer check for invalid values, without catching OOM


spdy 3 support length 0 header value


Revert '[maven-release-plugin] prepare release parent-1.2'

 This reverts commit ad928c668de84199f277f083627a262485a987d1.


Teach MockWebServer SPDY.

 Kill MockSpdyServer in the process.


Only exclude Javadoc from 'internal' package in the main artifact.


Really support requests greater than 2 GiB.

 git-svn-id: https://mockwebserver.googlecode.com/svn/trunk@45 cf848351-439f-e86a-257f-67fa721851d5


Don't use IOException APIs not in Gingerbread


Introduce a Policy interface between engine and connection.

 This breaks the direct dependency from HttpEngine to
 HttpURLConnectionImpl. With this dependency broken, we
 can start to use HttpEngine directly from Dispatcher and
 Job.


Support querying & setting transport lists on connections.

 The list is specified via a magic request property
 'X-Android-Transports' and can be queried via the request
 property 'X-Android-Selected-Transport'.

 System wide defaults / switches don't need any changes
 to okhttp. They can be set as options on the OkHttpClient
 used by the platform UrlStreamHandlers.


Add current AOSP class name for OpenSSLSocketImpl

 AOSP moved OpenSSLSocketImpl to com.android.org.conscrypt.* so add that
 as the first choice for unbundled apps.

 Change-Id: I7bad6533dcb86ee1cac3b15f42dd386bd651eaed


Request entity tests for the Apache client shim.


Make ConnectionPoolTest less flaky

 I was seeing flaky results in the debugger because pooled
 connections were being evicted as the test ran.


New Javadocs.

 git-svn-id: https://mockwebserver.googlecode.com/svn/trunk@20 cf848351-439f-e86a-257f-67fa721851d5


Rebuild Javadoc

 git-svn-id: https://mockwebserver.googlecode.com/svn/trunk@19 cf848351-439f-e86a-257f-67fa721851d5


Upgrade from ant to maven.

 git-svn-id: https://mockwebserver.googlecode.com/svn/trunk@12 cf848351-439f-e86a-257f-67fa721851d5


Use consistent camel casing of 'SSL'.


Revert 'Consistent casing of 'SSL' in method names.'

 This reverts commit ea4297ded736c5b606a772fef9d0d7929697e159.


More interesting example tests

 git-svn-id: https://mockwebserver.googlecode.com/svn/trunk@6 cf848351-439f-e86a-257f-67fa721851d5


Add Javadoc

 git-svn-id: https://mockwebserver.googlecode.com/svn/trunk@5 cf848351-439f-e86a-257f-67fa721851d5


Pom version updates. Drop unused dependencies.


Update website to the latest design.


Dependency-free examples for the OkHttp front page.

 I'm going to include code snippets from these.


Don't explode if we can't find an interface for a local address.

 We'll likely explode later when attempting to use the socket.
 But that will fail with an IOException, unlike this which was
 failing with a NullPointerException.


Minor doc fix.


Update to the latest DiskLruCache.

 Includes everything thru 8842981cbcfe20eb4721c0a2c867fa9a18233062


FaultRecoveringOutputStream.

 This is the first step in a change that'll permit the underlying
 socket stream to change out-from-under-you while you're uploading
 POST data to a server.

 It'll recover from failures writing the request body that occur
 within the first N bytes, where N will be determined by the number
 of bytes that can be written without positive confirmation.

 See https://github.com/square/okhttp/issues/137


Add support for following HTTP 307 temporary redirects.

 Fixes Android bug 41739.


Mechanically change OkHttp to Square's Java style.


Be more careful around IOExceptions.

 This adds a first test where a frame is truncated. That has some
 unpleasant consequences for the other tests because it means the
 MockSpdyPeer is more aggressive about closing the socket when all
 frames have been sent.

 It also reduces the use of exceptions for flow control when handling
 bogus incoming frames. This is a bit worse and a bit better; my
 goal is to make it easier to differentiate between protocol-level
 problems (bogus frames) from transport-level problems (closed sockets
 and EOF streams).


Restore tests for response caching + TLS.

 One of the test cases bitrotted to failure as a consequence
 of the HTTP route selector change. I stopped assigning the
 socket, which it needed to cache the TLS metadata. This is
 fixed.


Move out of the libcore package.

 To promote the code into AOSP, we'll keep this package as-is
 and do the jarjar in Android instead.


Make HttpConnection.connect return full working connections.

 Previously the returned connections required the caller to
 do extra work: setting up tunnels (which could require auth)
 and performing an SSL handshake. With this change we make a
 complete working connection in HttpConnection.connect().

 This will make it easier to fix fallback when a single domain
 has multiple IP addresses and some of those addresses are not
 reachable.

 This will also make it easier to do SPDY through HTTP proxies.


Fix a severe bug where multiple TLS tunnels were attempted.

 The previous code would attempt a TLS tunnel on reused
 HTTPS connections, even after the tunnel had been established.
 This is a severe protocol error!


Address some todos around stream failures and peer errors.


We don't need no stinkin braces.


Correct checkstyle.


Handle incoming SETTINGS frames in SPDY.


Fix TLS requiresTunnel which was being computed incorrectly.

 We were only returning 'true' once we were already in a tunnel.
 This was bogus. In theory a TLS tunnel sending extra data could
 be corrupted due to this bug.

 Also migrate one of the TLS tunnel tests to use SslContextBuilder
 instead of TestSSLContext.


Merge: Fix HttpURLConnection CloseGuard warning due to lack of close on GZIPInputStream

 Original AOSP/libcore commit by Brian Carlstrom:
 java.lang.Throwable: Explicit termination method 'end' not called
   at dalvik.system.CloseGuard.open(CloseGuard.java:184)
   at java.util.zip.Inflater.<init>(Inflater.java:82)
   at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:96)
   at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:81)
   at libcore.net.http.HttpEngine.initContentStream(HttpEngine.java:523)
   at libcore.net.http.HttpEngine.readResponse(HttpEngine.java:831)
   at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:274)
   at libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:486)
   at ...

 Bug: 6602529
 Change-Id: I9b49cbca561f8780d08844e566820087fdffc4d7


Give the in-progress code a SNAPSHOT version number.


Upgrade to Spring Kafka 2.5.10

 Closes gh-24293

Upgrade to Spring Kafka 2.5.10


Use deterministic ordering of JavaBean methods

 Update `JavaBeanBinder` so that methods and fields are sorted before
 being processed. This ensures that setters are called in a deterministic
 order, rather than the unspecified and variable order that reflection
 provides.

 Fixes gh-24068


Move SDKMAN to a separate job

 Closes gh-21903

Move SDKMAN to a separate job


Start building against Spring Batch 4.2.5 snapshots

 See gh-24289


Fix checkstyle header violation

 See gh-24337

Fix checkstyle header violation


Start building against Reactor Dysprosium-SR15 snasphots

 See gh-24273


Upgrade to Spring Integration 5.1.13

 Closes gh-23798

Upgrade to Spring Integration 5.1.13


Upgrade to Hibernate Validator 6.0.21.Final

 Closes gh-23840


Upgrade to Jetty 9.4.33.v20201020

 Closes gh-23855

Upgrade to Jetty 9.4.33.v20201020


Upgrade to Hibernate 5.3.18.Final

 Closes gh-23274

Upgrade to Hibernate 5.3.18.Final


Upgrade to Couchbase Client 3.0.10

 Closes gh-24084

Upgrade to Couchbase Client 3.0.10


Move properties to correct file

 See gh-22543

Move properties to correct file


Backport build script updates


Upgrade to Micrometer 1.3.14

 Closes gh-23388

Upgrade to Micrometer 1.3.14


Deprecate BootJar#getConfigurations

 Fixes gh-23527

Deprecate BootJar#getConfigurations


Upgrade to Mysql 8.0.21

 Closes gh-22425

Upgrade to Mysql 8.0.21


Improve error handling in JDK upgrade checks

 See gh-22110


Upgrade to Byte Buddy 1.10.14

 Closes gh-23291

Upgrade to Byte Buddy 1.10.14


Upgrade to Testcontainers 1.14.3

 Closes gh-23122

Upgrade to Testcontainers 1.14.3


Fix typo `Assert4J` -> `AssertJ`

 See gh-22948

Fix typo `Assert4J` -> `AssertJ`


Fix conditions that lead to auto-configure PushGateway

 See gh-22919


Upgrade to Jetty 9.4.33.v20201020

 Closes gh-23893

Upgrade to Jetty 9.4.33.v20201020


Fix mapping of Cassandra's idle-timeout and heartbeat-interval

 Previous to this commit the connection idle timeout and heartbeat
 interval were mapped to seconds whereas Cassandra expects ms for all
 duration types.

 This commit fixes the mapping and removes the default duration unit
 since it should be considered ms like every other duration properties.

 Closes gh-23249


Don't throw NettyWebServer on permission errors

 Update `NettyWebServer` so that the `PortInUseException` is not thrown
 for permission denied errors.

 Fixes gh-19807


Automate Docker updates in CI

 See gh-20530

Automate Docker updates in CI


Disable bean method proxying in SpringBootJdbcConfiguration

 Closes gh-22231


Document how to use DataNeo4jTest with reactive access

 Closes gh-23630


Replace use of deprecated Reactor MonoProcessor in tests

 Fixes gh-23627


Polish contribution


Align TestRestTemplate Javadoc with documentation

 See gh-21318


Upgrade to Neo4j Ogm 3.2.11

 Closes gh-21201

Upgrade to Neo4j Ogm 3.2.11


Upgrade to Spring Kafka 2.6.0

 Closes gh-23012

Upgrade to Spring Kafka 2.6.0


Fix encoding of @Bean in reference documentation

 Closes gh-21908


Remove duplicate word in docs


Further reduce repetition in CI pipeline.yml

 See gh-21716


Make file detection more resilient across restarts

 Retain file snapshot state across devtools restarts to help prevent
 detection failures.

 Closes gh-19543


Generate default values from Duration and Period .ZERO

 Closes gh-23082


Upgrade to Freemarker 2.3.29

 Closes gh-18036

Upgrade to Freemarker 2.3.29


Polish 'Document how to add metadata for collection and enum default values'

 Closes gh-12874


Upgrade to Netty Tcnative 2.0.29.Final

 Closes gh-20272

Upgrade to Netty Tcnative 2.0.29.Final


Add pullPolicy option for image building

 This commit adds a pullPolicy option to the configuration of the Maven
 plugin spring-boot:build-image goal and the Gradle plugin bootBuildImage
 task. The new option gives users control over pulling the builder image
 and run image from a remote image registry to the local Docker daemon.

 See gh-22736


Upgrade to spring-javaformat 0.0.14

 Closes gh-17331

Upgrade to spring-javaformat 0.0.14


Polish 'Log health check failure with Reactive health indicators'

 See gh-17635


Try to make CouchbaseAutoConfigurationIntegrationTests less flakey

 Closes gh-19932


Add @WebServiceClientTest slice test support

 Add `@WebServiceClientTest` and related test auto-configuration to allow
 slice testing of Spring Web Service client applications.

 See gh-17274


Upgrade Java 8 version in CI image

 Closes gh-17627

Upgrade Java 8 version in CI image


Align with changes in latest Integration snapshots

 See gh-22729


Correct link to Groovy MarkupTemplateEngine documentation

 See gh-16316


Upgrade to Jetty 9.2.19.v20160908

 Closes gh-6931

Upgrade to Jetty 9.2.19.v20160908


Polish


Upgrade to Thymeleaf Extras Java8time 3.0.3.RELEASE

 Closes gh-15913


Test that LaunchedURLClassLoader works when thread is interrupted

 Previously, RandomAccessDataFile used a semaphore and acquired it
 interruptibly. This meant that an interrupted thread was unable to
 access the file. Notably, this would prevent LaunchedURLClassLoader from
 loading classes or resources on an interrupted thread.

 The previous commit (937f857) updates RandomAccessDataFile to acquire
 the semaphore uninterruptibly. This commit adds a test to
 LaunchedURLClassLoader to verify that it can now load a resource from
 an interrupted thread.

 Closes gh-6683


Polish 'Clarify edge case docs on ConditionalOnClass'

 Closes gh-8185


Document HTTP response format of health endpoint

 Add HTTP response format details for health endpoint, including default
 status codes and sample responses.

 See gh-8703


Avoid blocking on a Mono indefinitely

 Closes gh-15535

Avoid blocking on a Mono indefinitely


Fix doc formatting


Support escaped characters in BasicJsonParser

 This commit adds the ability to have escaped characters, like the quote,
 when using the BasicJsonParser. It also adds a short test for escaped
 quotes.

 Closes gh-14521


Better diagnotics when ESCF subclass breaks with custom management port

 When a custom management.port is used, the child context is configured
 with an EmbeddedServletContainerFactory bean that has the same class
 as the parent context’s EmbeddedServletContainerFactory bean. This
 ensures that the child context uses the same type of embedded container
 as its parent when there are multiple embedded containers on the
 classpath. It also causes a failure when the custom
 EmbeddedServletContainerFactory subclass cannot be instantiated, for
 example because it’s an anonymous inner-class.

 This commit improves the diagnostics so that we fail fast with an
 information exception message when we detect that the embedded servlet
 container factory bean’s class cannot be instantiated.

 Closes gh-6193


Fix checkstyle violation


Add group property to DynatraceProperties

 See gh-19369


Upgrade to Thymeleaf Extras Java8time 3.0.2.RELEASE

 Closes gh-15330


Document limitations of logging.pattern.*

 Closes gh-5653


Fix tests


Stop limiting layer customization to external modules

 See gh-21207


Upgrade to Jackson 2.9.9

 Closes gh-16910

Upgrade to Jackson 2.9.9


Document profile activation limitation of .spring-boot-devtools.properties

 Closes gh-15151


Update view of bean types when an override is detected

 Previously, when a bean was overridden and its type changes,
 BeanTypeRegistry could be left with a stale view of the bean's type.
 This would lead to incorrect bean condition evaluation as conditions
 would match or not match based on the bean's old type.

 This commit updates the type registry to refresh its view of a bean's
 type when its definition changes.

 Closes gh-13588


Upgrade to Jackson 2.8.7

 Closes gh-8355

Upgrade to Jackson 2.8.7


Upgrade to Reactor Bom Bismuth-SR14

 Closes gh-15244

Upgrade to Reactor Bom Bismuth-SR14


Remove unnecessary logging by start-docker script


Disable Log4J2's shutdown hook by default

 Log4J2 enables its shutdown hook by default. When the JVM is exiting,
 this creates a race between logging that happens during the
 application context being closed and Log4J2 being shut down such that
 the logging is lost.

 This commit updates SpringBootConfigurationFactory so that it
 produces a custom sub-class of DefaultConfiguration that disables the
 shutdown hook by default. In addition to solving the problem described
 above, this also aligns the Log4J2 logging system with the
 logging.register-shutdown-hook property which defaults to false.

 Closes gh-11360


Clarify use of `DataSource` for batch apps

 Closes gh-8271


Align counter behaviour between metric exporters

 The MetricCopyExporter has had the capability for a while to keep
 track of counters internally. This change aligns that with the
 PrefixMetricGroupExporter.

 Fixes gh-5762


Use sha256 hashes for Docker base images to ensure repeatability

 Closes gh-15056


Support constructor binding on 3rd party classes

 Closes gh-18935


Upgrade to Jetty 9.3.16.v20170120

 Closes gh-8084

Upgrade to Jetty 9.3.16.v20170120


Polish 'Fix Spring Batch job restart parameters handling'

 See gh-14933


Servlet path not explicitly required for EndpointRequest


Polishing

  - Code formatting
  - Javadoc warnings
  - Deprecation warnings


Upgrade to Logback 1.1.5

 Closes gh-5212

Upgrade to Logback 1.1.5


Drop annotation processor spring-core dependency

 Remove the spring-core dependency from the annotation processor.
 (cherry-picked from 4cb7d86aec5)

 Fixes gh-7882


Remove deprecated configuration properties

 This commit removes the following deprecated properties:

 * `server.connection-timeout`
 * `server.use-forward-headers`
 * `server.jetty.max-http-post-size`
 * `server.tomcat.max-http-post-size`

 Closes gh-20991


Upgrade to Reactor Dysprosium-SR1

 Closes gh-18741

Upgrade to Reactor Dysprosium-SR1


Fix JsonParser deprecation

 See gh-18750

Fix JsonParser deprecation


Update production-ready-features.adoc

 Replace line break with missing line fold '
' to continue the property
 value.

 Closes gh-7596


Add jaxb API to jersey starter

 Closes gh-16268

Add jaxb API to jersey starter


Ensure that JolokiaMvcEndpoint destroys underlying controller

 Closes gh-7606


Fix health indicator auto-configuration order

 Previously, the health auto-configuration `AutoconfigureOrder` entry for
 couchbase was referring to the standard couchbase auto-configuration that
 is not responsible to configure the `CouchbaseOperations` bean. Yet, the
 health indicator implementation was relying on the presence of such a
 bean.

 This commit fixes the `AutoconfigureOrder` entry so that it refers to
 `CouchbaseDataAutoConfiguration` now.

 Closes gh-7543


Document that CRaSH commands written in Java are not supported

 Closes gh-7471


Polish 'Fix request factory used with withBasicAuth'

 Fixes gh-15982


Polish docs

 This commit replaces tabs to spaces in a yaml example for configuring
 endpoint web exposure include.

 Closes gh-14670


Set TCCL before initialising test class in FilteredClassPathRunner

 Closes gh-7435


Fix MavenSettings?handling of profiles activated by a file

 Previously, MavenSettings used a FileProfileActivator with no
 PathTransformer. If a settings.xml file contains a file-activated
 profile this would result in an NPE within Maven. This was made worse
 by the NPE not being included in the resulting failure message which
 hampered diagnosis of the problem.

 This commit updates MavenSettings to configure its FileProfileActivator
 with a PathTransformer. It also improves the failure message that’s
 created from any problems that are reported by Maven while determining
 the active profiles to include a problem’s exception if it has one.

 Closes gh-4826


Upgrade to Spring Data Ingalls SR10

 Closes gh-11673

Upgrade to Spring Data Ingalls SR10


Upgrade to Tomcat 8.5.27

 Closes gh-11727

Upgrade to Tomcat 8.5.27


Polish new layered jar support


Upgrade to Jetty 9.2.14.v20151106

 Closes gh-4716

Upgrade to Jetty 9.2.14.v20151106


Start building against snapshots for Spring Data Ingalls SR10

 See gh-11673


Upgrade to Jetty Reactive Httpclient 1.0.3

 Closes gh-16133


Remove unused test.css from spring-boot-sample-tomcat

 Closes gh-4606


Polish 'Debug mode is not logging web and sql related loggers'

 Closes gh-16018


Allow StringSequence.isEmpty() to be compatible with JDK 15

 JDK 15 introduces isEmpty() on CharSequence which clashes with the one
 declared in StringSequence because it is not public.

 See gh-21713


Use accessor for in-progress async count added in Tomcat 9.0.33

 Closes gh-20440


Remove boxing


Upgrade to Ehcache3 3.1.3

 Closes gh-7291

Upgrade to Ehcache3 3.1.3


Polish contribution


Remove stale Java source from src/main/groovy in the Gradle plugin

 Closes gh-4113


Upgrade to Embedded Mongo 1.50.1

 Closes gh-4790

Upgrade to Embedded Mongo 1.50.1


Avoid creating unnecessary garbage during URL normalization

 Closes gh-11207


Upgrade to Spring AMQP 2.2.0.RELEASE

 Closes gh-18251

Upgrade to Spring AMQP 2.2.0.RELEASE


Clarify the role of spring-boot-starter-cache

 The cache abstraction is a core feature of the Spring Framework. Basic
 features such as `@EnableCaching` are therefore available by default with
 no extra dependencies necessary.

 However, the actual cache adapters for JCache, Ehcache 2.x, Caffeine and
 Guava are located in a separated module, `spring-context-support`. Spring
 Boot provides that artifact via the `spring-boot-starter-cache` starter.

 It is quite easy to 'only' add the cache library dependencies and forget
 about this extra dependencies since `@EnableCaching` is available by
 default. This commit clarifies the role of the starer in each section so
 that it is more obvious. We're already explaining this at the beginning
 of the section but it seems that's not enough.

 Closes gh-7071


Include tasks with custom triggers in scheduledtasks endpoint output

 Closes gh-15815


Ensure that JtaAutoConfiguration runs before ArtemisAutoConfiguration

 Closes gh-7062


Upgrade to Reactor Bom Californium-SR4

 Closes gh-15687

Upgrade to Reactor Bom Californium-SR4


Fix NPE in FlywayEndpoint when migration.installedOn is null

 See gh-14019


Fix undertow access_log file name

 Undertow 1.3.2 changed the default access log file suffix from '.log'
 to just 'log'. Thus we need to adapt the file name pattern to include
 the missing dot.

 Closes gh-4670


Document default value change for proxy-target-class

 This commit documents the change to the default value for
 spring.aop.proxy-target-class by clarifying when the default is true vs
 false.

 See gh-10134


Upgrade to Spring Session Apple-SR4

 Closes gh-13888

Upgrade to Spring Session Apple-SR4


Fix datasource metrics doc

 The maximum and minimum number of connections are no metrics so these
 are not exposed. Fix the doc that stated the contrary.

 Fixes gh-3319


Configure Spring Data Couchbase explicitly

 This commit configures Spring Data Couchbase explicitly rather than
 relying on the abstract configuration class. This has the advantage of
 simplifying the auto-configuration and let it us proxy-free
 configuration classes.

 Spring Boot no longer uses or interacts with CouchbaseConfigurer. Users
 relying on that to teach Spring Boot which components to use should
 rely on `@Primary` flag instead in case of multiple beans of the same
 type.

 `CouchbaseConfiguration` is no longer public as extending from it is
 no longer necessary. If the `CouchbaseEnvironment` has to be
 customized, a `CouchbaseEnvironmentBuilderCustomizer` bean can be
 registered to tune the auto-configured environment.

 Closes gh-20533


Ensure checking customizer ordering

 See gh-15603

Ensure checking customizer ordering


Start building against Spring Security 5.2.0 snapshots

 See gh-18256


Support path discovery for main dispatcher servlet

 Add an `DispatcherServletPath` interface which provides a much more
 consistent way to discover the path of the main dispatcher servet.

 Prior to this commit, auto-configurations would often make use of the
 `ServerProperties` class to discover the dispatcher servlet path. This
 mechanism isn't very explicit and also makes it hard for us to relocate
 that property in Spring Boot 2.1.

 This commit also reverts most of fddc9e9c7e since it is now clear that
 the supporting multiple dispatcher servlet paths will be much more
 involved that we originally anticipated.

 Closes gh-13834


Move files from /.eclipse into /eclipse

 Move the `eclipse.properties` file from `.eclipse` into `eclipse`
 since the IDE plugin supports both.


Create dedicated section for property conversion

 See gh-4604


Upgrade to Flyway 5.2.4

 Closes gh-15514

Upgrade to Flyway 5.2.4


Upgrade to Tomcat 9.0.14

 Closes gh-15513

Upgrade to Tomcat 9.0.14


Set UserDetailsService in default AuthenticationManagerBuilder

 Only affects the default AuthenticationManagerBuilder (so when users
 are not overriding the default global user details). Makes the
 UserDetailsService effectively available as it would be if we used
 AuthenticationManagerBuilder.inMemoryAuthentication() as a
 shared object in the HttpSecurity.

 Fixes gh-3152


Add details in Jest ElasticSearch HealthIndicator

 This commit polishes the previous one and aligns the Jest
 HealthIndicator with the changes made for the REST variant.

 Closes gh-15366


Make sure exception tag values are not empty in web metrics

 See gh-13187


Use try-with-resources in HttpTunnelPayload

 See gh-11779


Upgrade to Dropwizard Metrics 3.1.2

 Closes gh-2920

Upgrade to Dropwizard Metrics 3.1.2


Remove use of regular expressions in Spring profile-based doc matching

 Closes gh-1309


Disallow all extensions in actuator endpoints (except .json)

 Along with the recent change in Spring to use content-disposition
 'inline' (which prevents the download), it also makes sense to limit
 the extensions allowed by the actuator endpoints. Really there *is*
 no extension for these endpoints, but since all of them explicitly
 produce JSON we can add .json for browsers as a convenience in case
 the app would otherwise choose to send XML.

 Fixes gh-4402


Fix link formatting in custom HealthIndicator section

 See gh-18170


Upgrade to Spring AMQP 2.1.2.RELEASE

 Closes gh-15271

Upgrade to Spring AMQP 2.1.2.RELEASE


Upgrade Spring WS to 2.2.1.RELEASE

 Closes gh-2718

Upgrade Spring WS to 2.2.1.RELEASE


Polishing


Fix profile precedence when active and include provided

 Before 2.0.2, if profiles were activated via the environment using the
 active and include profile property, profiles specified via the active
 property would take precedence. This commit restores that behavior.

 Fixes gh-13513


Ensure that AWTError from image banner does not prevent app starting

 Closes gh-6617


Upgrade to Webjars Locator Core 0.40

 Closes gh-18073

Upgrade to Webjars Locator Core 0.40


Add OAuth2 resource server sample

 Shows how to use @EnableResourceServer in a pure resource
 server and configure the secure paths.


Upgrade to Jboss Logging 3.4.1.Final

 Closes gh-18066

Upgrade to Jboss Logging 3.4.1.Final


Fix documentation example

 Previously, the nested private static class would cause an error at
 startup stating that it was not accessible when trying to bind the
 property from the environment. The nested class should be public.

 Closes gh-4323


Revert 'Add failure analyzer for BeanCreationException'

 Closes gh-9220


Upgrade to Neo4J OGM 2.1.3

 Closes gh-9335

Upgrade to Neo4J OGM 2.1.3


Upgrade to Jakarta Annotation 1.3.5

 Closes gh-18050

Upgrade to Jakarta Annotation 1.3.5


Allow JSON Testers to be `@Autowired`

 Switch `@AutoConfigureJsonTesters` to use regular `@Autowired` injection
 for JSON testers. Prior to this commit JSON Tester fields were
 initialized directly which caused IDE issues and was also a little
 confusing.

 Fixes gh-6451


Upgrade to jOOQ 3.8.4


Fix documentation for health endpoint security

 Fixes gh-9273


Polish stream creation in some PropertySources

 Closes gh-13343


Upgrade to Jboss Transaction Spi 7.6.0.Final

 Closes gh-9182


Fix ordering of keys in PropertySourcesPropertyValues

 Since @ConfigurationProperties binding uses a single instance of
 PropertySourcesPropertyValues per bean, there doesn't seem to be
 any issue with using a normal LinkedHashMap. Then the order
 passed in as PropertySources will be preserved.

 Fixes gh-2487


Report non-matching outer class conditions

 Update ConditionEvaluationReport so that, whenever a negative outcome
 is added for a source, any existing outcomes for inner classes of that
 source are updated with a non-matching outcome that indicates that the
 outer configuration did not match.

 Conditions are evaluated in two phases; PARSE_CONFIGURATION first and
 REGISTER_BEAN second. If a parent class’s conditions match in
 PARSE_CONFIGURATION then its inner classes will have their
 PARSE_CONFIGURATION conditions evaluated. If they all match, the inner
 class will be reported as a positive match in the auto-configuration
 report even if the outer class does not match as a result of the
 subsequent evaluation of a REGISTER_BEAN condition.

 Fixes gh-2122


Rename preferred-mapper property so its clear it only applies to JSON

 preferred-mapper has been renamed to preferred-json-mapper to make it
 clear that it only affects the JSON mapper and that the XML mapper
 that will be used (if any) is unaffected

 See gh-2247


Update maven-dependency-plugin to version 2.9

 Closes gh-1862


Upgrade Java 13 version in CI image

 See gh-17839

Upgrade Java 13 version in CI image


Remove unnecessary null check

 See gh-17916

Remove unnecessary null check


Refine validator and MVC validator configuration

 This commit ensures that a primary JSR 303 and Spring Validator will be
 exposed if the auto-configuration kicks in. As `LocalValidatorFactoryBean`
 exposes 3 contracts (JSR-303 `Validator` and `ValidatorFactory` as well as
 the `Spring` validator one), this makes sure that those types can be
 injected by type.

 `LocalValidatorFactoryBean` exposes 3 contracts and we're only checking
 for the absence of a `javax.validation.Validator` to auto-configure a
 `LocalValidatorFactoryBean`. If no standard JSR validator exists but a
 Spring's `Validator` exists and is primary, we shouldn't flag the
 auto-configured one as `@Primary`. Previous iterations on this feature
 have made sure that we'll auto-configure at most one
 `javax.validation.Validator` so not flagging it `@Primary` is no problem.

 This commit also restores and adds tests that validates
 `ValidationAutoConfiguration` will configure a JSR validator even if a
 Spring Validator is present.

 This effectively fixes gh-8495 in a different way.

 Closes gh-8979
 Closes gh-8976


Upgrade to Reactor Californium-SR2

 Closes gh-14992

Upgrade to Reactor Californium-SR2


Notify the use of logback specific system property

 Logback documentation explains how to initialize the logging system and
 namely how the `logback.configurationFile` system property can be used to
 specify the configuration file to use.

 Spring Boot has an abstraction on top of that. A user can define the
 `logging.path` property regardless of the logging infrastructure it is
 using.

 Users following the logback documentation can be confused at first so
 we're not logging a warning when we found out that the logback specific
 property has been specified.

 Closes gh-2382


Uses the latest version of Tomcat 7 in the sample


Upgrade to Tomcat 8.5.14

 Closes gh-8958

Upgrade to Tomcat 8.5.14


Remove duplicate console appender from Actuator sample's logback config

 Closes gh-2381


Upgrade to Appengine Sdk 1.9.67

 Closes gh-14955

Upgrade to Appengine Sdk 1.9.67


Default Tomcat to not save SESSIONS.ser file

 Update TomcatEmbeddedServletContainerFactory so that session data isn't
 serialized by default. Prior to this commit the SESSIONS.ser file would
 either be written to `/tmp` or into `baseDir` (if one was set).

 By not saving session data we align Tomcat with the other embedded
 servlet containers and reduce the risk of sensitive information being
 left in `/tmp`.

 Fixes gh-4156


Fixup version numbers following release


Do not enable cglib if spring.aop.proxy-target-class is configured

 This commit makes sure to honour the `spring.aop.proxy-target-class`
 property if set by the user. Previously, the
 `PersistenceExceptionTranslationPostProcessor` was always configured to
 use cglib, regardless of the value of that property.

 Closes gh-8887


Migrate ConditionalOnMissingBeanTests to context runner


Fix description of test file to be tests.groovy

 Corrected the documentation to refer to file as tests.groovy, rather
 than test.groovy. Updated cope snippet as tests.groovy should expect
 'Hello World!' rather than 'Hello World'.

 Closes gh-1593


Add option to exclude devtools from fat jar

 Add an `excludeDevtools` property to both the Maven and Gradle plugin
 that removes `org.springframework.boot:spring-boot-devtools` (if
 necessary) when repackaging the application.

 Closes gh-3171


Upgrade to Exec Maven Plugin 1.5.0

 Closes gh-6302

Upgrade to Exec Maven Plugin 1.5.0


Fix checkstyle violations


Blitz some more special characters from the metric names

 When MVC path matchers are used as metric keys, they can still contain
 invalid characters and patterns (like asterisks). This change removes
 some more special characters and also tidies up the names a bit so
 no key part starts or ends with '-' (which is ugly).

 Fixes gh-1528


Add /error to ignored paths for security autoconfig

 Protecting /error doesn't make a great deal of sense and if it is
 protected you don't get the ErrorPageFilter for the attempt at loading
 it, so Tomcat renders its own HTML error page (when deployed as WAR).

 Fixes gh-1548


Fix typos in the documentation: though -> through

 Closes gh-1510


Reformat code using Spring code formatter plugin


Send Slack Notifications when build completes

 Closes gh-10790


Improve logging of Jetty port(s)

 Fixes gh-2194

Improve logging of Jetty port(s)


Upgrade to Solr 8.2.0


Improve startup times

 Improve startup times (although not by much) by adding more background
 pre-initializers and lazily evaluating the whitelabel SpEL view.

 See gh-6177


Fix deprecation warnings in Testcontainers wait strategies

 See gh-12821


Upgrade to Cassandra Driver 3.7.2

 Closes gh-17705

Upgrade to Cassandra Driver 3.7.2


Prepend without replacing in HttpMessageConverters

 It was incorrect to simply replace existing instances because you can't
 tell from the instance which media types and java types it supports. This
 fix just prepends the custom converters so they get higher priority.

 Fixes gh-1293


Remove HSQLDB dependency from Batch Starter

 This commit removes HSQLDB dependency from Batch Starter as most apps
 that use Spring Batch will prefer to use a RDBMS of their choice to store
 batch metadata.

 Additionally, explicit spring-jdbc dependency has been replaced with JDBC
 Starter dependency.

 See gh-6081


Automatically X-Forwarded-For in the cloud

 Update `ServerProperties` to automatically enable `use-forward-headers`
 when running on a cloud platform.

 A new `CloudPlatform` enum has been introduced that detects Heroku and
 Cloud Foundry.

 See gh-4018


Make Jest available to javadoc generation

 See gh-6032


Fix data type of telnet and ssh ports

 Define shell.ssh.port and shell.telnet.port as integer properties
 so that the generated meta-data exposes the proper type.

 Fixes gh-2076


Complete documentation of logger-name with out-of-box logging groups

 Closes gh-14456


Fix tests failing on Windows


Update appendix with details of new Spring HATEOAS property

 Follow-on from c55900b4.

 Closes gh-3891


Use lambdas for map entry iteration where possible

 See gh-12626


Start building against Spring Session snapshots for Bean-RELEASE

 See gh-14733


Rename classpath runner package

 Remove `runner` since we're no longer tied to JUnit 4.

 See gh-17491


Exclude @ManagedResources from Endpoint MBeans

 If an Endpoint is already @ManagedResource then it doesn't need
 an additional (probably wrong) MBEan registration based on the invoke()
 method.


Document AWS Elastic Beanstalk deployment

 Update the reference documentation to include details of Amazon
 Elastic Beanstalk.

 Closes gh-7948


Order char encoding filter so it sets encoding before request is read

 For the character encoding filter to work, it's vital that it sets
 the request's encoding before any other filters attempt to read the
 request. This commit updates the order of
 OrderedCharacterEncodingFilter to be HIGHEST_PRECEDENCE and improves
 the existing test to check that the ordering is as required.

 Closes gh-3912


Stop Jersey from pulling in duplicate classes with JDK 11+

 Closes gh-17404


Clarify h2-console requires a servlet-based web app

 Fixes gh-12603


Use Supplier variants of Assert methods

 See gh-12630

Use Supplier variants of Assert methods


Auto-configure Neo4J BookmarkManager when possible

 Add `Neo4jBookmarkManagementConfiguration` which provides an instance
 of `BookmarkManager` if necessary and Caffeine cache is on the
 classpath. Depending on the kind of application, the `BookmarkManager`
 will be request scoped or singleton, as recommended by Spring Data
 Neo4j.

 See gh-14568


Fix VanillaHealthIndicator javadoc


Migrate LogbackLoggingSystemTests to JUnit 5

 See gh-17107


Make containsDescendantOf a default method

 Change `ConfigurationPropertySource.containsDescendantOf` to have a
 default implementation that return `UNKNOWN`.

 Fixes gh-12539


Allow early OnWebApplication filtering

 Update `OnWebApplicationCondition` to be an
 `AutoConfigurationImportFilter` and filter out classes early.

 Closes gh-13328


Implement simpler exclusion logic for Gradle

 Simplify the exclusion logic used in Gradle by implementing implicit
 exclusions rather than trying to detect transitive excludes.

 This commit reverts much of the code originally included to fix gh-1047
 which adds far too much complexity to the build and still doesn't solve
 the underlying issue.

 Fixes gh-1103


Rename samples to smoke tests

 Closes gh-17197

Rename samples to smoke tests


Do not attempt to restart non-restartable jobs

 Closes gh-3830


Remove public modifier on JUnit5 lifecycle methods

 See gh-17292


Upgrade to Spring Session Bean-RC1

 Closes gh-14573

Upgrade to Spring Session Bean-RC1


Make WebClientCustomizer optional for WebClient

 This commit removes the required dependency on `WebClientCustomizer`
 instances when creating `WebClient` beans, making it optional.

 Closes gh-12458


Fix broken links in the documentation


Honour ext and classifier on @Grabbed dependencies

 We currently honour type, but ignore ext. Aether doesn't make a
 distinction between the two so a Grab that specifies both type and ext
 but with different values is considered to be an error.

 Fixes #995


Upgrade to Spring Framework 5.2.2.RELEASE

 Closes gh-19076


Introduce defined extension point for modifying the environment

 The commit introduces a new extension point, EnvironmentPostProcessor,
 that can be implemented by classes that want to modify the
 environment. Implementations of EnvironmentPostProcessor are loaded
 via spring.factories and called in response to the
 ApplicationEnvironmentPreparedEvent. Application listeners that wish
 to work with the post-processed environment can continue to listen
 to ApplicationEnvironmentPreparedEvent and order themselves to
 run after EnvironmentPostProcessingApplicationListener.

 Existing ApplicationListeners that modify the environment have,
 where possible, been updated to implement EnvironmentPostProcessor
 instead.

 Closes gh-3737


Upgrade to Joda Time 2.5

 Closes gh-1888

Upgrade to Joda Time 2.5


Align expectations of various JMX configurations

 They all want to create an MBeanServer and when that happens
 user sees no MBeans, or sometimes just one set (Spring Core,
 Spring Integration or Spring Boot). To harmonise them we
 create a @Bean of type MBeanServer and link to it in the
 other autoconfigs

 Fixes gh-1046


Fix broken test (use web app context)


Polish 'Improve docs on custom metrics'

 Closes gh-12324

Polish 'Improve docs on custom metrics'


Reinstate devtools debug logging with opt-out

 Reinstate `web` logging when devtools is in use, making use of the new
 logging groups support. Devtools now also logs an `INFO` message
 informing that properties defaults are offers an easy way to disable
 them.

 Closes gh-14450


Update actuator security documentation

 Update documentation to align with the new role based method.

 See gh-6889


Polish RSocket support


Add Tomcat 7 and Jetty 8 samples

 Switch the Tomcat 8 and Jetty 9 samples to Tomcat 7 and Jetty 8. Since
 Tomcat 8 and Jetty 9 are now the default versions the previous samples
 are no longer relevant, however, we do need integration tests to check
 that we remain compatible with Tomcat 7 and Jetty 8.

 See gh-1832


Add external-file-property to LogFileMvcEndpoint

 Add an additional property to LogFileMvcEndpoint to allow log files to
 be read from an external location. This is helpful when a launch.script
 is used to start the boot-application and the logfile is written by a
 redirect of stdout/stderr.

 Fixes gh-4255
 Closes gh-4836


Use the Mongo starter for the sample application

 See gh-1831


Add JUnit 5 checkstyle rules

 Add a rule to enforce JUnit 5 usage and conventions.

 Closes gh-17093


Update Bomr config to look for minor version upgrades


Configure PathPattern for RSocket routing

 This commit configures a `PathPatternRouteMatcher` in the RSocket
 support if spring-web is on the classpath. This `RouteMatcher`
 implementation is more efficient than the `SimpleRouteMatcher`, which is
 based on the `AntPathMatcher`.

 Closes gh-16865


Upgrade to Mongo Driver Reactivestreams 1.9.1

 Closes gh-14391


Log classpath once environment has been prepared

 Previously, the classpath would be logged in response to the
 ApplicationStartedEvent. At this point, logging could be disabled
 while the logging system is being initialized, or because the
 log levels configured in the environment have not yet been applied.

 This commit moves the logging to happen in response to an
 ApplicationEnvironmentPreparedEvent by which point the logging
 system has been initialized and its levels have been configured.

 Closes gh-5313


Polish


Ensure JPA vendor properties are period separated

 If you bind to Map<String,Object> you get a nested Map instead
 of period-separated keys. This change just makes JpaProperties
 expose a Map<String,String> so the keys are sane.

 Fixes gh-988


Extract logic for duplicate file removal so it can be shared

 .. between Maven and Gradle plugins. Also fixed bug in recursive
 scanning logic.

 Really fixes gh-614


Add documentation for Hypermedia endpoints


Add systemProperties to run task in sample


Add @IntegrationComponentScan auto-configuration

 Update Spring Integration auto-configuration so that
 `@IntegrationComponentScan` from `AutoConfigurationPackages` is
 implicitly applied. Prior to this commit `@MessagingGateway` interfaces
 would only get picked up if `@IntegrationComponentScan` was added
 alongside with the `@SpringBootApplication`.

 Fixes gh-2037
 Closes gh-7718


Close the context in TypeExcludeFilterTests

 Closes gh-5672


Default to optimized launch of the JVM when using spring-boot:run

 See gh-16941


Apply spring.jackson.* config to Spring Data REST object mappers

 Closes gh-1698


Remove spring-data-commons

 Remove direct reference to spring-data-commons, instead favoring
 transitive dependency.

 Fixes gh-557


Allow binding number to DataSize

 Closes gh-14294

Allow binding number to DataSize


Improve WebSocket documentation for reactive applications

 Closes gh-14069


Polish 'Add configuration property for Spring Kafka's missingTopicsFatal'

 Closes gh-16740


Polish 'Update documentation to reference webjars-locator-core'

 Closes gh-12135


Improve diagnostics when OnBeanCondition type deduction fails

 When @ConditionalOnBean or @ConditionalOnMissingBean are used on a
 @Bean method, they will, in the absence of any other configuration,
 attempt to deduce the bean's type by examining the method's return
 type. This deduction can fail. See gh-4841, gh-4934, and gh-5624
 for some examples of possible failure causes. Previously, this
 failure was only logged as a debug message leaving the user with a
 misleading message suggesting that the @ConditionalOnBean or
 @ConditionalOnMissingBean annotation was not configured correctly.

 This commit improves the diagnostics by mention the possibility of
 type deduction in the exception message and including the exception
 that caused deduction to fail as the cause.

 Closes gh-4934


Fix failing test


Align SessionsEndpoint with Spring Session API improvements

 This commit aligns SessionsEndpoint with
 FindByIndexNameSessionRepository API improvements that simplifies
 retrieval of sessions by principal name.

 Closes gh-14124


Polish contribution


Register an AuthenticationManager in security autoconfig

 This is quite a big step, but I think it helps a lot. Since Spring
 Boot always creates an AuthenticationManager if it doesn't find one
 already registered, it makes sense to also make it into a @Bean.
 Spring Security does not register its AuthenticationManager by
 default though, so we have to do that for it if the user has created
 one with an @Autowired AuthenticationManagerBuilder, but not registered
 it as a @Bean.

 Having the @Bean (marked @Primary to prevent issues with @Autowired)
 makes it easier to reason about what Spring Boot has done for you, and
 easier to default in simple use cases to the boot-created
 AuthenticationManager. For example, if I want an OAuth2 Authorization
 Server with password grant, it makes total sense for the
 AuthenticationManager for users to be the same as the @Primary one.
 Now it is easy to set that up (just @Autowire it).


Remove outdated key

 The `spring.metrics.export.redis.aggregate-key-pattern` is no longer
 defined but was still referenced in the documentation.


Update HikariCP version to latest.


Fix freeMarker->freemarker


Upgrade to Infinispan 9.1.5.Final

 Closes gh-12051

Upgrade to Infinispan 9.1.5.Final


Remove duplicate resources from classpath

 We had been making a special case for logback.xml anyway, so
 extending that to simply deleting recursively all of
 src/main/resources (or equivalent) from target/classes (or
 equivalent) seems like it's perfectly justifiable.

 Fixes gh-451


Upgrade to Spring Integration 4.2.0.M2

 Closes gh-3286

Upgrade to Spring Integration 4.2.0.M2


Remove undefined FILE appender from basic log4j config

 Fixes gh-433


Stop MeterRegistries when context is closed

 Closes gh-12006


Upgrade to gmavenplus-plugin 1.6.1


Add initializer support

 Add `ApplicationContextInitializer` support to
 `ApplicationContextRunner`.


Log warning on slow host resolution

 Update `StartupInfoLogger` so that if the `InetAddress` call takes
 more than 200ms a warning is logged.

 Closes gh-7087


Update documentation for new HealthIndicator support


Prevent authenticated principal from clashing with argument of same name

 Closes gh-11988


Fix merge conflict


Change LoggingSystemTests to use real temp folder

 Update AbstractLoggingSystemTests to use a TemporaryFolder rule.

 Fixes gh-3349


Add ServletRegistrationBean for DispatcherServlet

 Mapping is exposed via server.servletPath.

 Fixes gh-379


Fix typo 'a' -> 'an'


Remove non-existent starter from dependencies pom


Add messagecode resolver format based on application property


Extract Mongo auto-configuration from Spring Data

 Extract Mongo auto-configuration classes from Spring Data specific
 auto-configuration, allowing Mongo to be used without Spring Data
 if require.


Append context id to objectName of Endpoint MBeans if name already exists in MBeanServer


Apply micrometer MeterFilter beans automatically

 Update `MeterRegistryPostProcessor` and `MetricsAutoConfiguration` so
 that micrometer `MeterFilter` beans are automatically applied.

 Fixes gh-11843


Add cache documentation


Suppress Neo4J-related deprecation warnings

 See gh-6976


Upgrade to Ehcache3 3.7.0

 Closes gh-16146

Upgrade to Ehcache3 3.7.0


Add support for Restarting applications

 Add Restarter class that can be used to restart a running application
 when underlying class files change. The Restarter is automatically
 initialized via a ApplicationListener and automatically detects
 classpath URLs that are likely to change (when not running from a fat
 jar).

 See gh-3084


Fix CacheType outer class tangle

 Fixes gh-3168

Fix CacheType outer class tangle


Make fields private where possible


Fix meta-data for spring.devtools.remote

 See gh-3086


Start building against Spring HATEOAS 1.0.0.M1 snapshots

 See gh-15939


Align test with Spring MVC's internals once again

 The internals have been updated so that the field that was originally
 used, interceptors, can be used again.

 This reverts commit 2a1bca6806a696dadf7f470086e21d55f66ac953.


Optimize checks for java classes in Binder

 Closes gh-13567


Upgrade to Surefire 2.18.1

 Closes gh-2963

Upgrade to Surefire 2.18.1


Align default scopes for Google with changes in Spring Security 5.0.1

 Closes gh-11573


Reduce logging in Travis


Move 'testdb' naming to DataSourceProperties

 Move the 'testdb' naming logic to `DataSourceProperties` and expose
 the `deduceDatabaseName` method so they can be used in
 auto-configuration.

 See gh-11719


Add AssertJ checkstyle rule

 Closes gh-5083

Add AssertJ checkstyle rule


Upgrade to Maven Enforcer Plugin 3.0.0-M2

 Closes gh-13646


Remove maven-eclipse-plugin as it has been retired

 Closes gh-13631


Rename redis starter to spring-boot-starter-data-redis

 Closes gh-1033


Use JSONObject.putOpt in JsonConverter

 Closes gh-15595

Use JSONObject.putOpt in JsonConverter


Upgrade to Selenium 3.141.59

 Closes gh-15526

Upgrade to Selenium 3.141.59


Move spring.mvc.media-types to content-negotiation

 This commit moves 'spring.mvc.media-types' to the
 'spring.mvc.content-negotiation.*' namespaces introduced in gh-11105.

 Closes gh-11636


Typos in Javadocs


Polish doc


Don't fail build on duplicate module-info classes

 Update the duplicate-finder-maven-plugin configuration to ignore
 module-info classes.

 Closes gh-13403


Add reference to migration guide

 Closes gh-11302

Add reference to migration guide


Upgrade to Joda-Time 2.7

 Closes gh-2153

Upgrade to Joda-Time 2.7


Add support for additional Kafka listener properties

 See gh-11502


No-op ResetMocksTestExecutionListener when Mockito is not present

 Closes gh-11508


Auto configure micrometer cache metrics

 Closes gh-11221

Auto configure micrometer cache metrics


Fix exec-maven-plugin configuration issue

 fixes #133


Add SpringApplicationErrorHandler

 [#48055575] [bs-31] Add hooks for failed application context startup


Rename spring.cache.control to spring.cache.cachecontrol

 Closes #11090


Add missing depdendency


Clean up logging dependencies and exclusions

 Closes gh-11148


Polish pom.xml

 Aplly consistent formatting, drop JDK 8 support and cleanup repo
 locations to use spring.io.


Upgrade to Spring Session Data MongoDB 5.0.0.RC2

 Closes gh-11083


Add README to cli


Fix test


Loader changes


Update 'Building reference documentation' section

 This commit also changes `spring-boot-maven-plugin/pom.xml` to make it
 work with `full` Maven profile.

 Closes gh-11045


Add default order for JobLauncherCommandLineRunner

 Closes gh-2943


Remove multi config runApplication extension

 Closes gh-10511


Add test for nested properties


Upgrade to Byte Buddy 1.7.8

 Closes gh-10786

Upgrade to Byte Buddy 1.7.8


Upgrade to Reactor Bismuth-SR1

 Closes gh-10679

Upgrade to Reactor Bismuth-SR1


Polish spring-boot-loader-tools

 Issue: #53129653


Fix package name for boot-loader-tools

 Issue: #53129653


Add mainClassName to springBoot DSL in Gradle plugin

 This commit introduces a new mainClassName property on the springBoot
 DSL provided by the Gradle plugin. It can be used to explicitly
 configure the mainClassName of the default bootRun, bootJar, and
 bootWar tasks in a single place. Previously, the only mechanism
 provided to do so was the mainClassName property that's only available
 when the application plugin has been applied.

 Closes gh-10623


When pool autocommit is disabled, inform Hibernate

 Starting with Hibernate 5.2.10, the JPA property
 `hibernate.connection.provider_disables_autocommit` should be set to true
 when the datasource has autocommit disabled in order to improve
 performance.

 See gh-9737


Remove unfixable FIXME


Upgrade to Spring Restdocs 1.2.2.RELEASE

 Closes gh-10492


Upgrade to Neo4j Ogm 3.0.0

 Closes gh-10490

Upgrade to Neo4j Ogm 3.0.0


Packaging: ensure executable bit is set


Start building against snapshots for Spring Kafka 2.0.0.RELEASE

 See gh-10328


Fix missing trailing / in resource paths


[bs-107] Remove 'z' suffix from management endpoints

 * /varz->/metrics
 * /healthz->/health
 * all actuator endpoints are now in a subpackage

 [Fixes #49496887]


Improve Spring Session MongoDB support naming


Upgrade to Artemis 2.3.0

 Closes gh-10405

Upgrade to Artemis 2.3.0


Add dependency management for org.hibernate:hibernate-spatial

 Closes gh-9950


Improve Spring Session sample

 This commit improves the Spring Session sample by providing multiple
 build profiles that make it possible to easily try out different session
 stores. By default, JDBC session store backed by an in-memory embedded H2
 database is used.

 See gh-10351


Add XMLUnit to spring-boot-starter-test

 Closes gh-9709

Add XMLUnit to spring-boot-starter-test


Upgrade to maven-compiler-plugin 3.6.1

 Closes gh-9620

Upgrade to maven-compiler-plugin 3.6.1


Upgrade to Influxdb Java 2.7

 Closes gh-9663

Upgrade to Influxdb Java 2.7


Upgrade to Commons Lang3 3.6

 Closes gh-9661

Upgrade to Commons Lang3 3.6


Fix build failure

 More change to use the http Neo4j driver

 See https://github.com/neo4j/neo4j-java-driver/issues/380

 Closes gh-9499


Revisit InfluxDB configuration structure

 This commit removes the `client` namespace for InfluxDB as the
 component that is created is `InfluxDB`, not `InfluxDBClient` or
 something.

 This aligns with all the other url/user/password properties Spring
 Boot provides already

 See gh-9066


Drop back to Surefire 2.19.1 as 2.19.2 was rebranded as 2.20


Improve links to Gradle plugin's documentation

 Closes gh-9386


Polish 'Allow customization of MongoClientSettings.Builder'

 Closes gh-9341


Polish 'Auto-detect jOOQ dialect'

 Closes gh-9355

Polish 'Auto-detect jOOQ dialect'


Add a missing 'io.spring.dependency-management' in doc

 Closes gh-9352


Polish


Mention that Lettuce requires commons-pool2

 We intend to remove this limitation in a future milestone but as the
 Lettuce auto-configuration requires `commons-pool2`, this commit updates
 the How-To to mention that.

 See gh-9091


Drop ignoreNestedProperties attribute from @ConfigurationProperties

 Closes gh-8657


Upgrade to Rxjava 1.2.10

 Closes gh-9061

Upgrade to Rxjava 1.2.10


Change default for new_generator_mappings to true

 Closes gh-7612


Fix broken build


Align with Spring Framework 5's new Commons Logging adapter

 Closes gh-8825


Publish artifacts and, when Maven plugin used, customize upload task

 See gh-1666


Align with API changes in latest Spring Data Kay snapshots

 See gh-7461


Fix checkstyle errors


Remove dependency management for `hibernate-entitymanager`

 Closes gh-8433


Support reactive web servers with LocalServerPort

 This commit refactors the `EmbeddedWebServerInitializedEvent` hierarchy
 to have one specialized event for Servlet based apps and another one for
 reactive apps.

 Each event implementation has:

 * a specific `ApplicationContext` implementation for the app
 * a custom `getServerId` implementation that differentiates the
 application server from the management server

 Closes gh-8348


Upgrade to Rxjava2 2.0.6

 Closes gh-8378

Upgrade to Rxjava2 2.0.6


Add byte-buddy managed dependency

 Add a managed dependency for byte-buddy since Mockito needs 1.6 and
 Hibernate pulls in 1.5.

 See gh-7770