Commit Graph

381 Commits (7729aef9c073b7e3cd8cb03bcc78debd658a29c8)

Author SHA1 Message Date
Phillip Webb df5898a146 Reformat code following spring-javaformat upgrade 2 years ago
Phillip Webb 7c508fa324 Update copyright year of changed files 2 years ago
Moritz Halbritter e8d809fe65 Replace 'via' with 'over' or 'through' in the documentation
Closes gh-33878
2 years ago
Phillip Webb e88a682220 Merge branch '2.6.x' into 2.7.x 2 years ago
Phillip Webb 85697ac482 Update copyright year of changed files 2 years ago
Phillip Webb 60e1cc510c Merge branch '2.6.x' into 2.7.x
See gh-32085
2 years ago
Phillip Webb bd74344025 Revert "Don't close jar files early"
This reverts commit b42f056ddb.
2 years ago
Phillip Webb 674022d401 Revert "Don't close nested jars or wrapper when parent is closed"
This reverts commit 360eb027be.
2 years ago
Phillip Webb ef7aac8c14 Merge branch '2.6.x' into 2.7.x
Closes gh-32085
2 years ago
Phillip Webb 360eb027be Don't close nested jars or wrapper when parent is closed
Update `JarFile` so that the `close()` method no longer closes nested
jars or the wrapper. Prior to this commit it was possible for a parent
jar file to be garbage collected and closed even though references still
existed to the nested jars. When this happened the nested jars would get
closed and any access to entries would result in `JarFile.ensureOpen()`
throwing an `IllegalStateException`. The user would often not see this
exception directly, but rather find `ClassNotFoundException` being
thrown.

Fixes gh-31853
2 years ago
Phillip Webb fd076ab9ef Merge branch '2.6.x' into 2.7.x
Closes gh-31875
2 years ago
aoyvx 8c93d2e8a7 Ensure PROTOCOL_HANDLER system property is reset
See gh-31870
2 years ago
Phillip Webb a4ef6a7c5c Merge branch '2.6.x' into 2.7.x
Closes gh-31865
2 years ago
Phillip Webb f8412847dc Update copyright year for "Fix typos in code and documentation"
See gh-31734
2 years ago
Marc Wrobel dbfc6bded4 Fix typos in code and documentation
See gh-31734
2 years ago
Andy Wilkinson 5e1cd28d3f Merge branch '2.6.x' into 2.7.x
Closes gh-31402
2 years ago
Lars Grefer e8a1a0399a Upgrade to Bouncycastle 1.71
Closes gh-31400
2 years ago
Phillip Webb bcbcc53a09 Merge branch '2.6.x' into 2.7.x
Closes gh-31395
2 years ago
Phillip Webb b42f056ddb Don't close jar files early
Update `JarFile` and related classes so that `close()` is not longer
called early.

Prior to this commit, we would always immediately close the underlying
jar file to prevent file locking issues with our build. This causes
issues on certain JVMs when they attempt to verify a signed jar.

The file lock issues have now been solved by returning a custom input
stream from `JarUrlConnection` which captures and delegates the close
method.

Fixes gh-29356
2 years ago
Andy Wilkinson 455ee0ce22 Merge branch '2.6.x' into 2.7.x
Closes gh-31177
3 years ago
Andy Wilkinson ee45fd2fc8 Remove redundant throws declarations from internal APIs
Closes gh-31176
3 years ago
Andy Wilkinson 4cd850cfc0 Merge branch '2.6.x' into 2.7.x
Closes gh-30851
3 years ago
Andy Wilkinson fa327a783d Merge branch '2.5.x' into 2.6.x
Closes gh-30850
3 years ago
Andy Wilkinson 4fd2e0c916 Polish "Fix typos"
See gh-30773
3 years ago
Andy Wilkinson f6d24dc1a8 Fix typos
See gh-30773
3 years ago
Andy Wilkinson 4f724f14d3 Polish "Override available() in RandomAccessDataFile's InputStream"
See gh-29295
3 years ago
Gnaily 49bf620f4b Override available() in RandomAccessDataFile's InputStream
See gh-29295
3 years ago
Stephane Nicoll f812b33cbd Merge branch '2.6.x' into 2.7.x
Closes gh-29613
3 years ago
Stephane Nicoll 136b5959c3 Merge branch '2.5.x' into 2.6.x
Closes gh-29612
3 years ago
Stephane Nicoll 7f17f819a6 Polish "Enforce use of BDDMockito"
See gh-29178
3 years ago
Yanming Zhou b49418aaaf Enforce use of BDDMockito
1. Replace Mockito.verify*() with BDDMockito.then()
2. Replace Mockito.doReturn() with BDDMockito.willReturn()
3. Adjust checkstyle rule

See gh-29178
3 years ago
Scott Frederick 8f57f0babb Add classpath index support for exploded war archives
Update the Maven and Gradle packaging for war files so that a
`classpath.idx` file is written into the archive that provides the
original order of the classpath, as was previously done for jar files.
The `WarLauncher` class will use this file when running as an exploded
archive to ensure that the classpath order is the same as when running
from the far war.

Fixes gh-19875
3 years ago
Andy Wilkinson b1ff60c728 Merge branch '2.5.x'
Closes gh-28681
3 years ago
Andy Wilkinson 4cfbc0db36 Merge branch '2.4.x' into 2.5.x
Closes gh-28680
3 years ago
Leo Li 9de9983e25 Fix @deprecated and @see in Archive's javadoc
See gh-28677
3 years ago
Andy Wilkinson 2a342ef416 Merge branch '2.5.x'
Closes gh-28662
3 years ago
Andy Wilkinson 5e4a502b2d Merge branch '2.4.x' into 2.5.x
Closes gh-28661
3 years ago
Andy Wilkinson 2cec3971d7 Prohibit unwanted dependencies in all modules not just starters
Closes gh-28658
3 years ago
Phillip Webb bcef8ee4c9 Merge branch '2.5.x'
Closes gh-28357
3 years ago
Phillip Webb a93304c973 Merge branch '2.4.x' into 2.5.x
Closes gh-28356
3 years ago
Phillip Webb 7388f2b60b Attempt to reduce JarFileWrapper heap consumption
Update `JarURLConnection` to use a single shared wrapper per
jar file rather than creating a new one each time. This update
should help to reduce GC pressure.

Fixes gh-28042
3 years ago
Leo Li 1770f065a5 Polish
See gh-28239
3 years ago
Andy Wilkinson 1931104d13 Merge branch '2.4.x' into 2.5.x
Closes gh-28206
3 years ago
Andy Wilkinson 9c9fbf400e Upgrade to Spring Java Format 0.0.29
Closes gh-28205
3 years ago
Phillip Webb 40d65a74dc Merge branch '2.4.x' into 2.5.x 3 years ago
Phillip Webb ec12d51f30 Polish 3 years ago
Phillip Webb 5ba69634c9 Merge branch '2.4.x' into 2.5.x 3 years ago
Phillip Webb cfeafee826 Polish 3 years ago
Andy Wilkinson 37240bda3f Merge branch '2.4.x' into 2.5.x
Closes gh-27900
3 years ago
Andy Wilkinson 47163af9b6 Fix handling of Zip64 jar files larger than 4,294,967,295 bytes
Previously, a Zip64 jar file was identified by the number of entries
in the central directory being 0xFFFF. This value indicates that
there the number of entries is too big for the 2-byte field. However,
a jar may be in Zip64 format due to it exceeding the Zip format's
maximum size rather than its maximum number of entries so this field
cannot be used as a reliable indicator. The Zip specification doesn't
require any of the fields of the end of central directory record to
have a value of 0xFFFF (2-byte fields) or 0xFFFFFFFF (4-byte fields)
when using Zip64 format so we need to take a different approach.

Additionally, a number of places in the code assumed that an entry's
offset would always be available from the central directory file
header directly. This assumption did not hold true when the jar was
a Zip64 archive due to its size as the offset's value would be
0xFFFFFFF indicating that it should be read from the Zip64 extended
information field within the header's extra field instead.

This commit updates the Zip64 detection to look for the Zip64 end of
central directory locator instead. If present, it begins 20 bytes
before the beginning of the end of central directory record. Its
first four bytes are always 0x07064b50. The code that reads the
local header offset has also been updated to refer to the Zip64
extended information field when the offset is too large to fit in
the 4-byte field in the central directory file header. To allow
greater-than-4-byte offsets to be handled, a number of fields,
method parameters, and local variables have had their type changed
from an int to a long.

Fixes gh-27822
3 years ago