Replace Apache HttpClient5 with Java's HttpURLConnection - #50319
Open
Moary Chen (moarychan) wants to merge 35 commits into
Open
Replace Apache HttpClient5 with Java's HttpURLConnection#50319Moary Chen (moarychan) wants to merge 35 commits into
Moary Chen (moarychan) wants to merge 35 commits into
Conversation
# Conflicts: # sdk/keyvault/azure-security-keyvault-jca/pom.xml # sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/implementation/KeyVaultClient.java # sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/implementation/utils/CertificateUtil.java # sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/implementation/utils/HttpUtil.java # sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/KeyVaultKeyStoreUnitTest.java # sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/implementation/KeyVaultClientTest.java # sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/implementation/certificates/KeyVaultCertificatesTest.java # sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/implementation/signature/KeyVaultKeylessEcSignatureTest.java # sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/implementation/signature/KeyVaultKeylessRsaSsaPssSignatureTest.java # sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/implementation/utils/JsonConverterUtilTest.java
|
Azure Pipelines: Successfully started running 1 pipeline(s). 35 pipeline(s) were filtered out due to trigger conditions. There may be pipelines that require an authorized user to comment /azp run to run. |
…chan/replace-apache-http5-to-jdk-http-conn
Contributor
There was a problem hiding this comment.
🔵 Needs a closer look
It rewrites TLS, authentication, redirects, decompression, and certificate-download behavior across a security provider and needs final human validation.
Pull request overview
Replaces Apache HttpClient with JDK networking in the Key Vault JCA provider while removing related runtime and test dependencies.
Changes:
- Implements HTTP, TLS, redirects, decompression, limits, and proxy support using
HttpURLConnection. - Replaces Mockito/Byte Buddy usage with test seams and concrete doubles.
- Updates certificate handling, samples, documentation, tests, and dependency metadata.
File summaries
jca/ denotes sdk/keyvault/azure-security-keyvault-jca/.
| File | Description |
|---|---|
sdk/keyvault/cspell.yml |
Adds proxy-option vocabulary. |
jca/src/test/java/com/azure/security/keyvault/jca/SpecificPathCertificatesTest.java |
Uses the platform separator. |
jca/src/test/java/com/azure/security/keyvault/jca/ServerSocketTest.java |
Migrates TLS tests to JDK APIs. |
jca/src/test/java/com/azure/security/keyvault/jca/PropertyConvertorUtils.java |
Removes Azure Configuration usage. |
jca/src/test/java/com/azure/security/keyvault/jca/KeyVaultKeyStoreUnitTest.java |
Replaces construction mocking. |
jca/src/test/java/com/azure/security/keyvault/jca/KeyVaultEncodeTest.java |
Removes Byte Buddy utilities. |
jca/src/test/java/com/azure/security/keyvault/jca/JreKeyStoreTest.java |
Migrates HTTPS testing. |
jca/src/test/java/com/azure/security/keyvault/jca/JcaTestUtils.java |
Adds TLS test helpers. |
jca/src/test/java/com/azure/security/keyvault/jca/implementation/utils/JsonConverterUtilTest.java |
Simplifies JSON assertions. |
jca/src/test/java/com/azure/security/keyvault/jca/implementation/utils/HttpUtilTest.java |
Expands HTTP behavior coverage. |
jca/src/test/java/com/azure/security/keyvault/jca/implementation/utils/HttpUtilConnectionTest.java |
Adds real local connection tests. |
jca/src/test/java/com/azure/security/keyvault/jca/implementation/utils/external/BinaryHttpResponsePublicApiTest.java |
Tests response metadata access. |
jca/src/test/java/com/azure/security/keyvault/jca/implementation/utils/AiaResponseCacheTest.java |
Replaces mocked certificates. |
jca/src/test/java/com/azure/security/keyvault/jca/implementation/utils/AccessTokenUtilTest.java |
Uses injectable HTTP seams. |
jca/src/test/java/com/azure/security/keyvault/jca/implementation/TestKeyVaultClient.java |
Adds a test HTTP client. |
jca/src/test/java/com/azure/security/keyvault/jca/implementation/TestCertificateVersions.java |
Adds certificate-version fixtures. |
jca/src/test/java/com/azure/security/keyvault/jca/implementation/signature/KeyVaultKeylessRsaSsaPssSignatureTest.java |
Removes Mockito from PSS tests. |
jca/src/test/java/com/azure/security/keyvault/jca/implementation/signature/KeyVaultKeylessEcSignatureTest.java |
Removes Mockito from EC tests. |
jca/src/test/java/com/azure/security/keyvault/jca/implementation/MockKeyVaultClient.java |
Adds a concrete client double. |
jca/src/test/java/com/azure/security/keyvault/jca/implementation/mocking/MockPublicKey.java |
Adds a public-key double. |
jca/src/test/java/com/azure/security/keyvault/jca/implementation/mocking/MockPrivateKey.java |
Adds a private-key double. |
jca/src/test/java/com/azure/security/keyvault/jca/implementation/mocking/MockKey.java |
Adds a key double. |
jca/src/test/java/com/azure/security/keyvault/jca/implementation/mocking/MockCertificate.java |
Adds a certificate double. |
jca/src/test/java/com/azure/security/keyvault/jca/implementation/JreKeyStoreTest.java |
Cleans up assertions. |
jca/src/test/java/com/azure/security/keyvault/jca/implementation/JreKeyStoreFactoryTest.java |
Simplifies type assertion. |
jca/src/test/java/com/azure/security/keyvault/jca/implementation/certificates/SpecificPathCertificatesTest.java |
Uses the platform separator. |
jca/src/test/java/com/azure/security/keyvault/jca/implementation/certificates/ClasspathCertificatesTest.java |
Replaces certificate mocking. |
jca/src/samples/java/com/azure/security/keyvault/jca/tls/ServerSSLSample.java |
Updates the TLS server sample. |
jca/src/samples/java/com/azure/security/keyvault/jca/tls/ClientSSLSample.java |
Uses HttpsURLConnection. |
jca/src/samples/java/com/azure/security/keyvault/jca/mtls/ServerMTLSSample.java |
Updates the mTLS server sample. |
jca/src/samples/java/com/azure/security/keyvault/jca/mtls/ClientMTLSSample.java |
Uses JDK mTLS APIs. |
jca/src/main/resources/module-info.java |
Updates module-descriptor guidance. |
jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultTrustManagerFactoryProvider.java |
Suppresses Provider deprecation. |
jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultJcaProvider.java |
Registers signature algorithms directly. |
jca/src/main/java/com/azure/security/keyvault/jca/implementation/utils/JsonConverterUtil.java |
Uses toJsonString. |
jca/src/main/java/com/azure/security/keyvault/jca/implementation/utils/HttpUtil.java |
Implements JDK-based HTTP handling. |
jca/src/main/java/com/azure/security/keyvault/jca/implementation/utils/CertificateUtil.java |
Simplifies certificate conversion. |
jca/src/main/java/com/azure/security/keyvault/jca/implementation/utils/AiaCertificateChainUtil.java |
Adds an injectable AIA loader. |
jca/src/main/java/com/azure/security/keyvault/jca/implementation/utils/AccessTokenUtil.java |
Migrates authentication HTTP calls. |
jca/src/main/java/com/azure/security/keyvault/jca/implementation/signature/KeyVaultKeylessRsaSsaPssSignature.java |
Exposes its algorithm constant. |
jca/src/main/java/com/azure/security/keyvault/jca/implementation/signature/KeyVaultKeylessRsaSignature.java |
Applies formatting cleanup. |
jca/src/main/java/com/azure/security/keyvault/jca/implementation/signature/KeyVaultKeylessRsa512Signature.java |
Exposes its algorithm constant. |
jca/src/main/java/com/azure/security/keyvault/jca/implementation/signature/KeyVaultKeylessRsa256Signature.java |
Exposes its algorithm constant. |
jca/src/main/java/com/azure/security/keyvault/jca/implementation/signature/KeyVaultKeylessEcSha512Signature.java |
Exposes its algorithm constant. |
jca/src/main/java/com/azure/security/keyvault/jca/implementation/signature/KeyVaultKeylessEcSha384Signature.java |
Exposes its algorithm constant. |
jca/src/main/java/com/azure/security/keyvault/jca/implementation/signature/KeyVaultKeylessEcSha256Signature.java |
Exposes its algorithm constant. |
jca/src/main/java/com/azure/security/keyvault/jca/implementation/KeyVaultClient.java |
Adds HTTP seams and cleanup. |
jca/src/main/java/com/azure/security/keyvault/jca/implementation/certificates/SpecificPathCertificates.java |
Simplifies file traversal. |
jca/src/main/java/com/azure/security/keyvault/jca/implementation/certificates/KeyVaultCertificates.java |
Adds injection and alias loading changes. |
jca/src/main/java/com/azure/security/keyvault/jca/implementation/certificates/ClasspathCertificates.java |
Simplifies resource discovery. |
jca/README.md |
Updates samples and proxy guidance. |
jca/pom.xml |
Removes Apache, SLF4J, and Mockito dependencies. |
jca/CHANGELOG.md |
Records the HTTP migration. |
Review details
- Files reviewed: 56/56 changed files
- Comments generated: 1
- Review effort level: Balanced
💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
…hub.com:Azure/azure-sdk-for-java into moarychan/replace-apache-http5-to-jdk-http-conn
…chan/replace-apache-http5-to-jdk-http-conn
Moary Chen (moarychan)
marked this pull request as ready for review
September 3, 2026 08:20
|
Azure Pipelines: Successfully started running 1 pipeline(s). 35 pipeline(s) were filtered out due to trigger conditions. There may be pipelines that require an authorized user to comment /azp run to run. |
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.
Description
Original PR is #50037
Additional cleanup
The PR also retains a small set of related, non-HTTP cleanup changes made while removing Apache HttpClient and Mockito:
JsonSerializable#toJsonStringto simplify JSON serialization.These changes keep the nearby implementation and tests consistent with the dependency removal. They are not intended to change any supported public API.
All SDK Contribution checklist:
General Guidelines and Best Practices
Testing Guidelines