Skip to content

Commit 4cbb04c

Browse files
committed
Use tags to assign responses to result list
1 parent 30bf7c0 commit 4cbb04c

File tree

2 files changed

+24
-22
lines changed

2 files changed

+24
-22
lines changed

src/main/java/ai/tecton/client/transport/TectonHttpClient.java

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
import java.util.concurrent.CountDownLatch;
1818
import java.util.concurrent.TimeUnit;
1919
import java.util.concurrent.atomic.AtomicBoolean;
20-
import java.util.stream.Collectors;
2120
import okhttp3.Call;
2221
import okhttp3.Callback;
2322
import okhttp3.ConnectionPool;
@@ -33,6 +32,15 @@
3332

3433
public class TectonHttpClient {
3534

35+
// Class to be used as a tag for each request to keep track of the index of the request.
36+
static class RequestIndex {
37+
final int index;
38+
39+
RequestIndex(int index) {
40+
this.index = index;
41+
}
42+
}
43+
3644
private HttpUrl url;
3745
private final String apiKey;
3846
private final OkHttpClient client;
@@ -96,7 +104,7 @@ public boolean isClosed() {
96104
public HttpResponse performRequest(String endpoint, HttpMethod method, String requestBody) {
97105
HttpRequest httpRequest =
98106
new HttpRequest(url.url().toString(), endpoint, method, apiKey, requestBody);
99-
Request request = buildRequestWithDefaultHeaders(httpRequest);
107+
Request request = buildRequestWithDefaultHeaders(httpRequest, 0);
100108
Call call = client.newCall(request);
101109
try (Response response = call.execute()) {
102110
return new HttpResponse(response);
@@ -113,13 +121,12 @@ public List<HttpResponse> performParallelRequests(
113121

114122
// Map request body to OkHttp Request
115123
// ordering of requests is maintained
116-
List<Request> requestList =
117-
requestBodyList.stream()
118-
.map(
119-
requestBody ->
120-
new HttpRequest(url.url().toString(), endpoint, method, apiKey, requestBody))
121-
.map(this::buildRequestWithDefaultHeaders)
122-
.collect(Collectors.toList());
124+
List<Request> requestList = new ArrayList<>();
125+
for (int i = 0; i < requestBodyList.size(); i++) {
126+
HttpRequest httpRequest =
127+
new HttpRequest(url.url().toString(), endpoint, method, apiKey, requestBodyList.get(i));
128+
requestList.add(buildRequestWithDefaultHeaders(httpRequest, i));
129+
}
123130

124131
// Initialize a countdown latch for numberOfCalls.
125132
CountDownLatch countDownLatch = new CountDownLatch(requestBodyList.size());
@@ -141,7 +148,8 @@ public void onResponse(Call call, Response response) {
141148
try (ResponseBody responseBody = response.body()) {
142149
// Add response to corresponding index
143150
parallelCallHandler.set(
144-
requestList.indexOf(call.request()), new HttpResponse(response, responseBody));
151+
call.request().tag(RequestIndex.class).index,
152+
new HttpResponse(response, responseBody));
145153
} catch (Exception e) {
146154
throw new TectonServiceException(e.getMessage());
147155
} finally {
@@ -171,7 +179,7 @@ public void onResponse(Call call, Response response) {
171179
}
172180
}
173181

174-
public Request buildRequestWithDefaultHeaders(HttpRequest httpRequest) {
182+
public Request buildRequestWithDefaultHeaders(HttpRequest httpRequest, int index) {
175183
// Construct url
176184
Request.Builder requestBuilder = new Request.Builder().url(httpRequest.getUrl());
177185

@@ -183,16 +191,10 @@ public Request buildRequestWithDefaultHeaders(HttpRequest httpRequest) {
183191
requestBuilder.header(HttpHeader.AUTHORIZATION.getName(), apiKeyHeader);
184192

185193
// Add request body
186-
switch (httpRequest.getMethod()) {
187-
case POST:
188-
default:
189-
{
190-
okhttp3.MediaType mediaType =
191-
okhttp3.MediaType.parse(MediaType.APPLICATION_JSON.getName());
192-
RequestBody requestBody = RequestBody.create(httpRequest.getJsonBody(), mediaType);
193-
requestBuilder.post(requestBody);
194-
}
195-
}
194+
okhttp3.MediaType mediaType = okhttp3.MediaType.parse(MediaType.APPLICATION_JSON.getName());
195+
RequestBody requestBody = RequestBody.create(httpRequest.getJsonBody(), mediaType);
196+
requestBuilder.post(requestBody);
197+
requestBuilder.tag(RequestIndex.class, new RequestIndex(index));
196198
return requestBuilder.build();
197199
}
198200

src/test/java/ai/tecton/client/transport/TectonHttpClientTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ public void testDefaultTectonRequest() {
7575
HttpRequest httpRequest =
7676
new HttpRequest(url, endpoint, TectonHttpClient.HttpMethod.POST, apiKey, body);
7777

78-
Request request = httpClient.buildRequestWithDefaultHeaders(httpRequest);
78+
Request request = httpClient.buildRequestWithDefaultHeaders(httpRequest, 0);
7979
Assert.assertNotNull(request);
8080

8181
Assert.assertEquals(POST, request.method());

0 commit comments

Comments
 (0)