Commit Graph
100 Commits
Author SHA1 Message Date
Phillip Webb 9ba46f538b Polish 2023-11-02 14:24:05 -07:00
Phillip Webb cc4ef32efe Merge branch '3.1.x' 2023-11-02 14:19:12 -07:00
Phillip Webb 47c1088111 Polish 2023-11-02 14:19:07 -07:00
Phillip Webb 77218a644e Merge branch '3.1.x' 2023-11-02 14:16:37 -07:00
Phillip Webb afa4d274c2 Merge branch '3.0.x' into 3.1.x 2023-11-02 14:14:19 -07:00
Phillip Webb 8d53caa1c6 Merge branch '2.7.x' into 3.0.x 2023-11-02 14:13:47 -07:00
Phillip Webb 54313d1962 Update copyright year of changed files 2023-11-02 14:13:38 -07:00
Phillip Webb e891a3e24c Polish adoc formatting 2023-11-02 14:12:56 -07:00
Phillip Webb a35fb7505f Merge branch '3.1.x'
Closes gh-38179
2023-11-01 18:22:39 -07:00
Phillip Webb 683d791104 Merge branch '3.0.x' into 3.1.x
Closes gh-38178
2023-11-01 18:22:28 -07:00
Phillip Webb e5c8723dda Merge branch '2.7.x' into 3.0.x
Closes gh-38177
2023-11-01 18:22:06 -07:00
Phillip Webb eecb15d1ba Rename startDaemonAwaitThread() inside TomcatWebServer to match intent
Closes gh-38155
2023-11-01 18:21:36 -07:00
Phillip Webb 663243e60c Fix open telemetry container lifecycle issues
Mark test as `@DirtiesContext` so that the context is closed before
the container.

Closes gh-38176
2023-11-01 18:16:38 -07:00
Phillip Webb 9b71ef4114 Polish and refactor some SSL internals
Polish and refactor some of the internal SSL code to make it easier to
add additional functionality in the future.
2023-11-01 16:14:59 -07:00
Phillip Webb 30a7426e86 Apply key property to the keystore and not to the truststore
Update `PropertiesSslBundle` so that key properties are now
only applied to the keystore and not the truststore.

Closes gh-38125
2023-11-01 16:10:51 -07:00
Phillip Webb 5dc5c2a4bc Rename KeyVerifier to CertificateMatcher
Rename `KeyVerifier` to `CertificateMatcher` and refactor some
of the internals. This commit also adds test helper classes to
help simplify some of the tests.

See gh-38173
2023-11-01 16:10:31 -07:00
Phillip Webb 1b61bc1f20 Move PEM verification to spring-boot-autoconfigure
Move `KeyVerifier` to spring-boot-autoconfigure to reduce the
public API required in `PemSslStoreBundle`.

This commit also moves the verify property so that is can be set
per store.

Closes gh-38173
2023-11-01 16:10:16 -07:00
Phillip Webb 5e5d2265f5 Introduce PemSslStore as an alternative to PemSslStoreDetails.
Add a `PemSslStore` interface that can be used as an alternative
to `PemSslStoreDetails` when PEM content has already been loaded
and parsed.

Closes gh-38175
2023-11-01 16:06:28 -07:00
Phillip Webb 2b39ec6f60 Introduce a public PemContent class
Update `PemContent` so that it now holds PEM data and is public.
This update is required so that in the future we can make use of
our PEM parsing code in spring-boot-autoconfigure.

Closes gh-38174
2023-11-01 16:02:51 -07:00
Phillip Webb 2c6fca8df7 Allow alias and password to be configured on a per PEM store basis
Closes gh-38124
2023-11-01 16:02:33 -07:00
Phillip Webb 8bf847e549 Rename keyAlias parameter to alias
Rename the keyAlais parameter to alias since it may be used as either
the key alias or the certificate alias.

Also clarify the javadoc for keyPassword.

Closes gh-38099
2023-11-01 16:01:46 -07:00
Phillip Webb beb49e1933 Add tests for DataBlockInputStream and fix implementation oddities
Fix issues with `DataBlockInputStream` including the fact that remain
bytes were not tracked correctly. Also add some tests and fix a few
other unusual details with the implementation.

Closes gh-38066
2023-10-26 23:00:20 -07:00
Phillip Webb 4af9ed4d1d Fix Tomcat TldScanner issues by returning raw zip data for nested jars
Update JarUrlConnection so that the full raw zip data is returned from
nested jars when no entry name is specified. This update allows
Tomcat's `WarURLConnection` to work with our nested connections since
they can parse the returned raw zip data.

Fixes gh-38047
2023-10-26 23:00:20 -07:00
Phillip Webb bba323ba5f Copy zip data descriptor records when creating virtual zip data
The zip specification states that when 'bit 3' of the general purpose
flags is set then a data descriptor record must be present. Prior to
this commit, our `VirtualZipDataBlock` ignored such records and would
create invalid data.

Although the generated data would work for zip parsers that read the
central directory records, it causes problems with streaming reader
implementations such as `JarInputStream`.

This commit updates the code so that it now copies the data descriptor
records. It support both blocks that have a signature and those that
don't. It also updates the generation logic to correctly deal with
any extra data bytes present after the local file header record.

Fixes gh-38063
2023-10-26 23:00:20 -07:00
Phillip Webb b35c4d6497 Open loader jar URLs by default using runtimeVersion
Update `UrlJarFileFactory` so that `runtimeVersion` is used by default
instead of `baseVersion`. Prior to this commit we tried to mirror the
JDK handler on look for a `#runtime` fragment. This unfortunately
doesn't work with the URLs produced by `URLClassPath`.

This commit also fixes a bug in `NestedJarFile` where we didn't return
the correct result from `hasEntry`.

Fixes gh-38050
2023-10-25 21:20:42 -07:00
Phillip Webb 464523ac04 Merge branch '3.1.x'
Closes gh-38048
2023-10-25 12:37:41 -07:00
Phillip Webb 6e65d9380b Add missing @ServiceConnection annotation to reference doc sample
Closes gh-38046
2023-10-25 12:36:59 -07:00
Phillip Webb 0c66db7b18 Refine container initialization and parallel startup logic
Update `TestcontainersLifecycleBeanPostProcessor` to restore early
container initialization logic and refine startup logic. Initial bean
access now again triggers the creation all container beans. In addition
the first access of a `Startable` bean now attempts to find and start
all other `Startable` beans.

Fixes gh-37989
2023-10-25 11:58:22 -07:00
Phillip Webb 4e7c0737d4 Fix PropertiesLauncher classpath detection without 'loader.path' set
Update `PropertiesLauncher` to restore classpath detection logic applied
when no `loader.path` property is set.

Fixes gh-37992
2023-10-24 17:03:18 -07:00
Phillip Webb 7bd9989614 Fix merge conflict errors
See gh-37999
2023-10-23 19:40:44 -07:00
Phillip Webb 2ac69160c7 Revert "Allow PemPrivateKeyParser to parse multiple keys"
This reverts commit 32e6ce210e.

Closes gh-37999
2023-10-23 18:32:12 -07:00
Phillip Webb e1bd24695d Try @AssertFileChannelDataBlocksClosed for Windows fix
This updates commit dad5dc6750 to
see if @AssertFileChannelDataBlocksClosed will take care of
closing files.

See gh-7161
2023-10-20 10:05:43 -07:00
Phillip Webb 3eeb1b2849 Merge branch '3.1.x' 2023-10-19 23:21:42 -07:00
Phillip Webb 9f3afb3636 Merge branch '3.0.x' into 3.1.x 2023-10-19 23:21:20 -07:00
Phillip Webb 7c864804d5 Merge branch '2.7.x' into 3.0.x 2023-10-19 23:21:08 -07:00
Phillip Webb d47f8bf945 Update copyright year of changed files 2023-10-19 23:20:43 -07:00
Phillip Webb 25ce0ef3fc Refine PemContent and PEM parsers 2023-10-19 23:19:45 -07:00
Phillip Webb 41724fc5f1 Merge branch '3.1.x' 2023-10-19 22:06:53 -07:00
Phillip Webb 1dc3ea957b Merge branch '3.0.x' into 3.1.x 2023-10-19 22:06:49 -07:00
Phillip Webb 5ab4e0d153 Merge branch '2.7.x' into 3.0.x 2023-10-19 22:06:42 -07:00
Phillip Webb 548b0ea91f Fix failing exception assertion
See gh-37964
2023-10-19 22:05:59 -07:00
Phillip Webb 32e6ce210e Allow PemPrivateKeyParser to parse multiple keys
Update `PemPrivateKeyParser` so that it can parse multiple keys in a
single PEM file.

Closes gh-37970
2023-10-19 22:01:23 -07:00
Phillip Webb deb79425ee Polish 2023-10-19 21:47:13 -07:00
Phillip Webb d638bbb0ba Merge branch '3.1.x'
Closes gh-37967
2023-10-19 21:25:44 -07:00
Phillip Webb 1d456e09d2 Merge branch '3.0.x' into 3.1.x
Closes gh-37966
2023-10-19 21:12:52 -07:00
Phillip Webb a0b999c8b4 Merge branch '2.7.x' into 3.0.x
Closes gh-37965
2023-10-19 20:55:51 -07:00
Phillip Webb abdad1cabe Constently use assertThatExceptionOf... assertions
Closes gh-37964
2023-10-19 20:17:26 -07:00
Phillip Webb 343046d30c Polish 2023-10-19 10:55:26 +01:00
Phillip Webb fcb75b6a1e Search implemented interfaces on superclass for @ServiceConnection
Refine original fix to also search interfaces on the superclass.

Fixes gh-37671
2023-10-19 10:52:19 +01:00
Phillip Webb b8365e3118 Fix misconfigured Maven test
See gh-37669
2023-10-18 22:58:45 -07:00
Phillip Webb a8ad8ca9f7 Upgrade to Java 21.0.1+12
Closes gh-37945
2023-10-18 21:20:42 -07:00
Phillip Webb a354c236bb Upgrade to Java 17.0.9+11
See gh-37944
2023-10-18 21:20:24 -07:00
Phillip Webb 062b544447 Upgrade to Ubuntu Jammy 20231004
Closes gh-37957
2023-10-18 21:19:51 -07:00
Phillip Webb 5c6c0879fc Merge branch '3.1.x' 2023-10-18 21:19:11 -07:00
Phillip Webb dd821c719f Upgrade to Java 21.0.1+12
Closes gh-37956
2023-10-18 21:18:32 -07:00
Phillip Webb 6a51ef8adc Upgrade to Java 17.0.9+11
See gh-37955
2023-10-18 21:18:04 -07:00
Phillip Webb 55968ef995 Upgrade to Ubuntu Jammy 20231004
Closes gh-37949
2023-10-18 21:17:24 -07:00
Phillip Webb 7d71d60c14 Merge branch '3.0.x' into 3.1.x 2023-10-18 21:17:00 -07:00
Phillip Webb e778355bd7 Upgrade to Java 21.0.1+12
Closes gh-37953
2023-10-18 21:15:45 -07:00
Phillip Webb 53d04973e4 Upgrade to Java 17.0.9+11
See gh-37951
2023-10-18 21:14:54 -07:00
Phillip Webb 812023a84b Upgrade to Ubuntu Jammy 20231004
Closes gh-37952
2023-10-18 21:13:42 -07:00
Phillip Webb bc8a631aaf Merge branch '2.7.x' into 3.0.x 2023-10-18 21:12:13 -07:00
Phillip Webb c7d6fbcb3a Upgrade to Ubuntu Jammy 20231004
See gh-37954
2023-10-18 21:10:00 -07:00
Phillip Webb 39ffa50dc4 Merge branch '3.1.x' 2023-10-18 21:05:26 -07:00
Phillip Webb a28fb1b6f5 Merge branch '3.0.x' into 3.1.x 2023-10-18 21:05:18 -07:00
Phillip Webb b5fbcfdce2 Merge branch '2.7.x' into 3.0.x 2023-10-18 21:04:30 -07:00
Phillip Webb b226ff40f0 Upgrade to Java 21.0.1+12
Closes gh-37948
2023-10-18 21:03:47 -07:00
Phillip Webb d226ba88d9 Upgrade to Java 17.0.9+11
Closes gh-37947
2023-10-18 21:02:55 -07:00
Phillip Webb ad933869ca Upgrade to Java 11.0.21+10
Closes gh-37946
2023-10-18 21:02:15 -07:00
Phillip Webb 62a074a728 Upgrade to Java 8u392+9
See gh-37950
2023-10-18 21:01:09 -07:00
Phillip Webb 9a4e16a2d4 Upgrade to Ubuntu Jammy 20231004 in CI images #37954
Closes gh-37954
2023-10-18 20:56:02 -07:00
Phillip Webb 3ccf29ef49 Refine spring-boot-starter-data-redis-reactive dependencies
Change `spring-boot-starter-data-redis-reactive` to be standalone and
also declare an explicit dependency on reactor.

Closes gh-37943
2023-10-18 20:53:06 -07:00
Phillip Webb 93b562e632 Fix PulsarProperties lookupTimeout
Prefer `null` to `-1` for the default timeout.

See gh-34763
2023-10-18 20:52:12 -07:00
Phillip Webb 3c62defb9d Support java.nio.file Paths and FileSystems with nested jars
Add a `NestedFileSystemProvider` implementation so that the JDK's
`ZipFileSystem` can load content from nested jars and nested
directory entries.

Creating a `ZipFileSystem` may be a relatively expensive operation as
zip structures need to be parsed and in the case of directory entries
a virtual datablock nees to be generated on the fly. As such, we
install the `ZipFileSystem` as late as possible since in a typical
application it may never be needed.

This commit also tweaks Gradle and Maven plugins to ensure that the
service loader file is written to repackaged jars.

Closes gh-7161
2023-10-18 20:46:36 -07:00
Phillip Webb 4b495ca2a9 Change NestedLocation to hold a Path rather than a File
Refactor `NestedLocation` so that it holds a `Path` rather than a
`File`.

See gh-37668
2023-10-18 20:46:35 -07:00
Phillip Webb 33c5e1269a Write signature files to uber jars to for Oracle Java 17 verification
Update Gradle and Maven plugins to write an empty `META-INF/BOOT.SF`
file whenever there is a nested signed jar.

This update allows Oracle Java 17 to correctly verify the nested JARs.
The file is required because `JarVerifier` has code roughly equivalent
to:

	if (!jarManifestNameChecked && SharedSecrets
			.getJavaUtilZipFileAccess().getManifestName(jf, true) == null) {
    	throw new JarException("The JCE Provider " + jarURL.toString() +
    		" is not signed.");
	}

The `SharedSecrets.getJavaUtilZipFileAccess().getManifestName(jf, true)`
call ends up in `ZipFile.getManifestName(onlyIfSignatureRelatedFiles)`
which is a private method that we cannot override in our `NestedJarFile`
subclass. By writing an empty `.SF` file we ensure that the `Manifest`
is always returned because there are always "signature related files".

Fixes gh-28837
2023-10-16 16:19:16 -07:00
Phillip Webb fe752dedef Polish adoc formatting 2023-10-16 15:50:58 -07:00
Phillip Webb 4c3a0f09d7 Support parallel initialization of Testcontainers
Add support for a `spring.testcontainers.startup` property that can
be set to "sequential" or "parallel" to change how containers are
started.

Closes gh-37073
2023-10-14 23:58:25 -07:00
Phillip Webb 1edd1d5078 Protect against NPE when groups property is missing
Closes gh-37888
2023-10-14 23:43:07 -07:00
Phillip Webb efd9aa9b64 Polish 2023-10-14 19:51:42 -07:00
Phillip Webb e01e4f1912 Search implemented interfaces on superclass for @ServiceConnection
Refine original fix to also search interfaces on the superclass.

Fixes gh-37671
2023-10-14 19:43:41 -07:00
Phillip Webb 4ab104f5af Use type safe JdbcClient query
Update `JdbcClientAutoConfigurationTests` to use a type safe query
since Spring Framework now returns `Object` types when no type is
specified (see Spring Framework issue 31403).

See gh-37710
2023-10-10 16:29:37 -07:00
Phillip Webb b3ddec7793 Refactor Jetty SameSiteSupplier cookie support to use a Handler
Update `JettyServletWebServerFactory` so that the `SimeSiteSupplier`
support is handled using a `Handler` rather than a `HttpStream.Wrapper`.

Closes gh-37809
2023-10-10 15:57:32 -07:00
Phillip Webb 927ece3bfc Merge branch '3.1.x' 2023-10-10 12:31:44 -07:00
Phillip Webb 01128465ff Merge branch '3.0.x' into 3.1.x 2023-10-10 12:31:28 -07:00
Phillip Webb 885189a1b4 Merge branch '2.7.x' into 3.0.x 2023-10-10 12:30:11 -07:00
Phillip Webb fec9804dad Don't create .gradle folder early
See gh-37450
2023-10-10 12:08:44 -07:00
Phillip Webb 9518035e13 Fix typos
See gh-37450
2023-10-10 11:56:45 -07:00
Phillip Webb f04d354c29 Attempt to fix download cache on CI
See gh-37450
2023-10-10 11:46:20 -07:00
Phillip Webb 9e4f160c17 Attempt to fix NestedJarFile file lock issues on Windows
Update `DefaultCleanerTracking` and `@AssertFileChannelDataBlocksClosed`
to capture and store the source object if it is a `Cleanable` so that
it can be released later.

Although the real cleaner cannot keep a reference to `obj`, it is safe
for us to do so in tests since we are in control of the object lifecycle
and we don't need it to be garbage collected.

This commit also updates the `UrlJarFile` to call the cleaner so that
it can be tracked.

See gh-37668
2023-10-06 23:44:55 -07:00
Phillip Webb 5da31aca46 Attempt to fix NestedJarFile file lock issues on Windows
Update `NestedJarFile.close()` to call `super.close()` so that the outer
jar file is closed and files can hopefully be deleted on Windows.

See gh-37668
2023-10-06 21:47:55 -07:00
Phillip Webb 6c24ea01f1 Add BouncyCastle nested jar verification test including on Oracle JDK
Update `spring-boot-loader-tests` with a test that checks verified
BouncyCastle jars can be loaded. Currently the Oracle JDK only supports
verification if the jar is unpacked.

See gh-28837
2023-10-05 22:13:31 -07:00
Phillip Webb 79d2208908 Merge branch '3.1.x' 2023-10-05 22:10:34 -07:00
Phillip Webb 1b1c1f1b64 Merge branch '3.0.x' into 3.1.x 2023-10-05 22:10:22 -07:00
Phillip Webb 3c31a6fc3b Merge branch '2.7.x' into 3.0.x 2023-10-05 22:10:14 -07:00
Phillip Webb c37290bc6c Fix Oracle JDK download URL
See gh-37450
2023-10-05 22:09:45 -07:00
Phillip Webb ab69af3cab Merge branch '3.1.x'
Closes gh-37743
2023-10-05 21:32:42 -07:00
Phillip Webb bf9a4add34 Merge branch '3.0.x' into 3.1.x
Closes gh-37742
2023-10-05 21:32:36 -07:00
Phillip Webb 6fba887e63 Remove CI embedmongo cache
Closes gh-37725
2023-10-05 21:31:53 -07:00
Phillip Webb b0b3adb1b7 Merge branch '3.1.x'
Closes gh-37741
2023-10-05 21:30:43 -07:00