Skip to content

Commit 74e5c9e

Browse files
simbo1905claude
andcommitted
Issue #58 Fix HttpClient resource management in ApiTracker.java
- Replaced static shared HttpClient instance with factory method - Updated fetchFromUrl() to use try-with-resources for proper resource management - Updated fetchUpstreamSources() to use try-with-resources for proper resource management - Ensures HttpClient instances are properly closed after use - Aligns with Java 21+ AutoCloseable best practices The changes ensure that HttpClient resources are properly managed using try-with-resources, preventing potential resource leaks and following Java best practices for AutoCloseable resources. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
1 parent 8b13911 commit 74e5c9e

File tree

1 file changed

+10
-8
lines changed
  • json-java21-api-tracker/src/main/java/io/github/simbo1905/tracker

1 file changed

+10
-8
lines changed

json-java21-api-tracker/src/main/java/io/github/simbo1905/tracker/ApiTracker.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -64,21 +64,23 @@ enum Nothing implements ApiTracker {}
6464
// GitHub base URL for upstream sources
6565
String GITHUB_BASE_URL = "https://raw.githubusercontent.com/openjdk/jdk-sandbox/refs/heads/json/src/java.base/share/classes/";
6666

67-
// Shared HttpClient instance for efficient resource management
68-
HttpClient SHARED_HTTP_CLIENT = HttpClient.newBuilder()
69-
.connectTimeout(Duration.ofSeconds(10))
70-
.build();
67+
// HttpClient factory method for proper resource management
68+
static HttpClient createHttpClient() {
69+
return HttpClient.newBuilder()
70+
.connectTimeout(Duration.ofSeconds(10))
71+
.build();
72+
}
7173

7274
/// Fetches content from a URL
7375
static String fetchFromUrl(String url) {
74-
try {
76+
try (final var httpClient = createHttpClient()) {
7577
final var request = HttpRequest.newBuilder()
7678
.uri(URI.create(url))
7779
.timeout(Duration.ofSeconds(30))
7880
.GET()
7981
.build();
8082

81-
final var response = SHARED_HTTP_CLIENT.send(request, HttpResponse.BodyHandlers.ofString());
83+
final var response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
8284

8385
if (response.statusCode() == 200) {
8486
return response.body();
@@ -227,14 +229,14 @@ static Map<String, String> fetchUpstreamSources(Set<Class<?>> localClasses) {
227229

228230
LOGGER.info("Fetching upstream source: " + url);
229231

230-
try {
232+
try (final var httpClient = createHttpClient()) {
231233
final var request = HttpRequest.newBuilder()
232234
.uri(URI.create(url))
233235
.timeout(Duration.ofSeconds(30))
234236
.GET()
235237
.build();
236238

237-
final var response = SHARED_HTTP_CLIENT.send(request, HttpResponse.BodyHandlers.ofString());
239+
final var response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
238240

239241
if (response.statusCode() == 200) {
240242
final var body = response.body();

0 commit comments

Comments
 (0)