Skip to content

Commit 8a588a9

Browse files
bump gradle to 8.14
1 parent e1efe86 commit 8a588a9

5 files changed

Lines changed: 7 additions & 8 deletions

File tree

CLAUDE.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ These decisions are not up for debate without amending the corresponding ADR:
2727
- **Java only.** Single artifact, no Kotlin sources. Published JAR must not bring `kotlin-stdlib` as a transitive dep. JSpecify is compile-time only and doesn't count. (ADR-001)
2828
- **Kotlin consumers are first-class via interop, not via a Kotlin artifact.** A separate `marketdata-sdk-java-kotlin` extensions JAR (Option E) is deferred. (ADR-001)
2929
- **JDK 17 minimum.** Build with `javac --release 17`; no multi-release JAR. CI test matrix is `{17, 21, 25}` for forward-compat. (ADR-002)
30-
- **Gradle, Kotlin DSL.** `build.gradle.kts`, `settings.gradle.kts`, version catalog at `gradle/libs.versions.toml`. Standard plugins: `java-library`, `maven-publish`, Vanniktech Maven Publish (or Gradle Nexus Publish), Spotless, JaCoCo. Integration tests live in a separate `integrationTest` source set, env-var-gated. (ADR-003)
30+
- **Gradle 8.14, Kotlin DSL.** `build.gradle.kts`, `settings.gradle.kts`, version catalog at `gradle/libs.versions.toml`. Wrapper pinned to **Gradle 8.14** (the minimum that supports JDK 25 as a toolchain target — 8.12 had this version cap and 9.0+ would also work but adds breaking changes we don't need yet). The daemon itself runs on JDK 17 via `JAVA_HOME`; toolchain forks compile/test JDKs as needed. Standard plugins: `java-library`, `maven-publish`, Vanniktech Maven Publish (or Gradle Nexus Publish), Spotless, JaCoCo. Integration tests live in a separate `integrationTest` source set, env-var-gated. (ADR-003)
3131
- **`java.net.http.HttpClient` exclusively.** No third-party HTTP client (OkHttp, Apache) as a runtime dep — ever. HTTP/2 on (default). One shared `HttpClient` per `MarketDataClient`. Timeouts: 99s request, 2s connect. (ADR-004)
3232
- **Jackson (`jackson-databind`) for JSON.** Records-based response models (Jackson record support, 2.12+). The API's parallel-arrays wire format (e.g. `{"s":"ok","symbol":["AAPL","MSFT"],"price":[150.0,400.0]}`) is decoded via custom `JsonDeserializer` classes, *not* default reflection. Jackson is **not shaded** in v1; shading is held in reserve. (ADR-005)
3333
- **Sync + async parity per endpoint.** Every public endpoint exposes both `quote(...)` and `quoteAsync(...)`; async returns `CompletableFuture<T>`. **Internal logic is async-first.** Sync methods are thin wrappers that call `.join()` and unwrap `CompletionException` to surface the underlying cause directly. Both surfaces share validation, retry, rate-limit, and concurrency-pool logic — no parallel implementations. Tests must cover both variants for every endpoint. (ADR-006)
@@ -86,7 +86,6 @@ The Java SDK must also satisfy the canonical, cross-language [SDK Requirements](
8686
- §9 retry/backoff policy and `/status/` cache workflow.
8787
- §12 acquire/release of the concurrency semaphore around dispatched requests.
8888
- §13 100% coverage threshold via JaCoCo `violationRules`; deferred until there is functional code worth the threshold.
89-
- §13 integration-test CI job: wired into both `pull-request.yml` and `main.yml` as a separate `integration-tests` job that depends on `verify`. Pulls `MARKETDATA_TOKEN` from repo secrets, exports `MARKETDATA_RUN_INTEGRATION_TESTS=true`, runs `./gradlew integrationTest`. A shell-level guard skips gracefully with `::warning::` + `exit 0` when the secret isn't available (e.g. fork PRs). The IT class `MarketsStatusIT` parameterizes scenarios over `CallMode.{SYNC,ASYNC}``CallMode` is extracted to its own file in `src/test/java/com/marketdata/sdk/markets/CallMode.java` so the integrationTest source set can reuse it via `compileClasspath += sourceSets.test.get().output`.
9089

9190
When picking up new work, check this list before reaching for the SDK requirements doc — most foundational rules are already encoded in code; missing pieces are deferred deliberately, not by accident.
9291

gradle/wrapper/gradle-wrapper.jar

181 Bytes
Binary file not shown.

gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip
44
networkTimeout=10000
55
validateDistributionUrl=true
66
zipStoreBase=GRADLE_USER_HOME

gradlew

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gradlew.bat

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)