Skip to content

Commit 2a42811

Browse files
committed
Enhance ApiClient pooling by updating existing clients with new ObjectMapper
1 parent 9c45ea8 commit 2a42811

1 file changed

Lines changed: 20 additions & 4 deletions

File tree

  • basyx.common/basyx.client/src/main/java/org/eclipse/digitaltwin/basyx/client/internal

basyx.common/basyx.client/src/main/java/org/eclipse/digitaltwin/basyx/client/internal/ApiClientPool.java

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,11 @@ public static ApiClientPool getInstance() {
6969
* @return cached or new ApiClient for AAS operations
7070
*/
7171
public ApiClient getOrCreateAasRepoApiClient(String baseUri, ObjectMapper mapper) {
72-
return aasRepoApiClients.computeIfAbsent(baseUri, uri -> {
72+
return aasRepoApiClients.compute(baseUri, (uri, existingApiClient) -> {
73+
if (existingApiClient != null) {
74+
existingApiClient.setObjectMapper(mapper);
75+
return existingApiClient;
76+
}
7377
return new ApiClient(HttpClient.newBuilder(), mapper, uri);
7478
});
7579
}
@@ -82,7 +86,11 @@ public ApiClient getOrCreateAasRepoApiClient(String baseUri, ObjectMapper mapper
8286
* @return cached or new ApiClient for Submodel operations
8387
*/
8488
public ApiClient getOrCreateAasServiceApiClient(String serviceUrl, ObjectMapper mapper) {
85-
return aasServiceApiClients.computeIfAbsent(serviceUrl, uri -> {
89+
return aasServiceApiClients.compute(serviceUrl, (uri, existingApiClient) -> {
90+
if (existingApiClient != null) {
91+
existingApiClient.setObjectMapper(mapper);
92+
return existingApiClient;
93+
}
8694
return new ApiClient(HttpClient.newBuilder(), mapper, uri);
8795
});
8896
}
@@ -95,7 +103,11 @@ public ApiClient getOrCreateAasServiceApiClient(String serviceUrl, ObjectMapper
95103
* @return cached or new ApiClient for Submodel operations
96104
*/
97105
public ApiClient getOrCreateSubmodelRepoApiClient(String baseUri, ObjectMapper mapper) {
98-
return submodelRepoApiClients.computeIfAbsent(baseUri, uri -> {
106+
return submodelRepoApiClients.compute(baseUri, (uri, existingApiClient) -> {
107+
if (existingApiClient != null) {
108+
existingApiClient.setObjectMapper(mapper);
109+
return existingApiClient;
110+
}
99111
return new ApiClient(HttpClient.newBuilder(), mapper, uri);
100112
});
101113
}
@@ -108,7 +120,11 @@ public ApiClient getOrCreateSubmodelRepoApiClient(String baseUri, ObjectMapper m
108120
* @return cached or new ApiClient for Submodel operations
109121
*/
110122
public ApiClient getOrCreateSubmodelServiceApiClient(String serviceUrl, ObjectMapper mapper) {
111-
return submodelServiceApiClients.computeIfAbsent(serviceUrl, uri -> {
123+
return submodelServiceApiClients.compute(serviceUrl, (uri, existingApiClient) -> {
124+
if (existingApiClient != null) {
125+
existingApiClient.setObjectMapper(mapper);
126+
return existingApiClient;
127+
}
112128
return new ApiClient(HttpClient.newBuilder(), mapper, uri);
113129
});
114130
}

0 commit comments

Comments
 (0)