Repository navigation
feat(java): complete Forward fields and add client extensions - #5
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Change
Java applications currently need raw JSON fields for several Forward properties and cannot supply their own HTTP implementation, wrap API attempts for tracing, call additional JSON endpoints, or derive a client with adjusted settings. This change adds those public extension points while retaining the existing authentication, retry, error and streaming behavior.
a996a88, Python2f8c625and TypeScriptf4e3a4f: imagefile_id, creation-time Memory Store mountaccess, Schedule/Runinitial_events_version, and Pairingcreated_at/updated_at. Missing versions remain nullable rather than becoming zero. The operation inventory remains 123 entries; seedocs/forward-api-coverage.md.HttpTransportand per-attemptHttpInterceptorcontracts using Java 8 public types. Cancellation reaches downstream futures, response bodies remain streaming, and failed/replaced interceptor responses are closed before retry. Signed-URL storage downloads use the custom transport without API credentials or interceptors.request(ApiRequest, RequestOptions)for relative JSON endpoints andwithOptions(...)for independently closeable client copies. Copies retain resolved authentication and unspecified settings; injected credentials and transports remain caller-owned.HttpURLConnection, and update the Unreleased changelog.This is Java-specific; Go, Python and TypeScript code is unchanged. Existing default clients continue to use OkHttp. Realtime WebSockets and
ServiceAccountCredentialplatform token exchange keep their existing transports. Generic JSON requests do not add resource-specific validation; typed methods remain preferred where available. No version bump or publishing is included.Validation
make qualitypasses on JDK 17: formatting, repository/link checks and 38 maintenance tests.0.1.0, with additions documented as unreleased.For each JDK 8 / 11 / 17 / 21 / 25, ran:
Each JDK passed 567 SDK tests and 63 independent consumer tests, with zero failures, errors or skips (3,150 test executions across the matrix). Package checks cover the main, sources and Javadoc JARs and Java 8 bytecode. Also ran
git diff --check.Regression coverage includes authentication/metadata, retry and idempotency rules, SSE resumption, cancellation through interceptor futures, header timeout, late response cleanup, isolated storage downloads, SAT management, client-copy ownership, and response replacement/failure cleanup. The two cleanup regression tests failed before their fix and passed afterward.
The five-JDK local matrix used source
bc1f1706c2969d70148f8365e58794257809b569. Follow-up5bbdf48bbf1681dba082c659bd471a3cec78069achanges only cancellation tests to await explicit completion signals instead of depending on callback-registration timing; all 20 extension tests were rerun successfully on Java 8 and 17. The final PR CI run passed quality and all five complete JDK jobs on this head. The push-triggered CI run also passed all six jobs.Validation uses local mock services and packaged JARs. No live CN/Global scenarios were run in this change; these results are not production compatibility or human QA approval.