stevenwarejones opened a new pull request, #3785: URL: https://github.com/apache/parquet-java/pull/3785
### What changes? - Add a public `KmsClientFactory` and `KeyToolkit.setKmsClientFactory(Configuration, KmsClientFactory)`. - Prefer the factory registered for a `Configuration`; keep class-name reflection as the unchanged fallback. - Initialize and cache factory-created clients using the same KMS parameters as reflective clients. - Keep factory caches isolated by `Configuration`, including when the default KMS instance ID and access token are used. ### Why? Some KMS clients need live, constructor-injected dependencies such as SDK clients or dependency-injection state. Those clients cannot be created through a public no-argument constructor and should not need a static UUID registry as a side channel. ### Testing - 45 focused tests pass across `KeyToolkitTest`, `TestKmsUrlRead`, and `TestPropertiesDrivenEncryption`. - Coverage includes factory precedence, initialization and reuse, configuration/cache isolation, factory replacement, cache clearing, null results, reflection fallback, and an encrypted-file read with a constructor-injected client. - A downstream Kotlin storage adapter passes its KMS bridge and full Parquet storage-client test suites against this build. Closes #3683 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
