Enhances `FileServerHandler` in the jdk.httpserver module to support the `Range` header.
This change contains: 1. A new constant `HTTP_RANGE_NOT_SATISFIABLE` to the `Codes` to indicate unsatisifiable ranges. 2. `Accept-Ranges: bytes` for all file retrievals. 3. Single `bytes` ranges, returning `206 Partial Content` with `Content-Range`. 4. Multiple `bytes` ranges with `multipart/byteranges`. 5. Sorting and merging of overlapping or adjacent ranges. As discussed in #28021, `If-Range` support is left out of scope for this change. However, as required by [RFC 9110](https://www.rfc-editor.org/rfc/rfc9110.html#section-13.1.5-8), when `If-Range` is present, the `Range` header is ignored and the full content is returned. `Range` parsing is tested in `FileServerHandlerTest`, while `SimpleFileServerTest` tests the externally observable HTTP behavior. This is a rework of #28021. The earlier PR contains the previous review discussion and feedback that informed this version. --------- - [x] I confirm that I make this contribution in accordance with the [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai). ------------- Commit messages: - 8355572: Support HTTP Range requests in Simple Web Server Changes: https://git.openjdk.org/jdk/pull/32266/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=32266&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8355572 Stats: 650 lines in 5 files changed: 638 ins; 0 del; 12 mod Patch: https://git.openjdk.org/jdk/pull/32266.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/32266/head:pull/32266 PR: https://git.openjdk.org/jdk/pull/32266
