Skip to content

Commit 111e772

Browse files
authored
Merge pull request #46 from getindata/HTTP-45
[HTTP-45] - Fix issue with not printing HttpRequest body/parameters for Lookup Source by Slf4JHttpLookupPostRequestCallback.
2 parents 96a81b0 + 0d335cc commit 111e772

File tree

6 files changed

+65
-19
lines changed

6 files changed

+65
-19
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
## [Unreleased]
44

5+
### Fixed
6+
- Fixed issue with not printing HttpRequest body/parameters for Lookup Source by
7+
[Slf4JHttpLookupPostRequestCallback](src/main/java/com/getindata/connectors/http/internal/table/lookup/Slf4JHttpLookupPostRequestCallback.java) - <https://github.com/getindata/flink-http-connector/issues/45>
8+
59
### Removed
610
- Removed unused reference to EncodingFormat from HttpLookupTableSource
711

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.getindata.connectors.http.internal.table.lookup;
2+
3+
import java.net.http.HttpRequest;
4+
5+
import lombok.Data;
6+
import lombok.ToString;
7+
8+
/**
9+
* Wrapper class around {@link HttpRequest} that contains information about an actual lookup request
10+
* body or request parameters.
11+
*/
12+
@Data
13+
@ToString
14+
public class HttpLookupSourceRequestEntry {
15+
16+
/**
17+
* Wrapped {@link HttpRequest} object.
18+
*/
19+
private final HttpRequest httpRequest;
20+
21+
/**
22+
* This field represents lookup query. Depending on used REST request method, this field can
23+
* represent a request body, for example a Json string when PUT/POST requests method was used,
24+
* or it can represent a query parameters if GET method was used.
25+
*/
26+
private final String lookupQuery;
27+
28+
public HttpLookupSourceRequestEntry(HttpRequest httpRequest, String lookupQuery) {
29+
30+
this.httpRequest = httpRequest;
31+
this.lookupQuery = lookupQuery;
32+
}
33+
}

src/main/java/com/getindata/connectors/http/internal/table/lookup/HttpRequestFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,5 @@ public interface HttpRequestFactory extends Serializable {
1616
* @param lookupRow {@link RowData} object used for building http request.
1717
* @return {@link HttpRequest} created from {@link RowData}
1818
*/
19-
HttpRequest buildLookupRequest(RowData lookupRow);
19+
HttpLookupSourceRequestEntry buildLookupRequest(RowData lookupRow);
2020
}

src/main/java/com/getindata/connectors/http/internal/table/lookup/JavaNetHttpPollingClient.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import java.io.IOException;
44
import java.net.http.HttpClient;
5-
import java.net.http.HttpRequest;
65
import java.net.http.HttpResponse;
76
import java.net.http.HttpResponse.BodyHandlers;
87
import java.util.Collections;
@@ -36,7 +35,7 @@ public class JavaNetHttpPollingClient implements PollingClient<RowData> {
3635

3736
private final HttpRequestFactory requestFactory;
3837

39-
private final HttpPostRequestCallback<HttpRequest> httpPostRequestCallback;
38+
private final HttpPostRequestCallback<HttpLookupSourceRequestEntry> httpPostRequestCallback;
4039

4140
public JavaNetHttpPollingClient(
4241
HttpClient httpClient,
@@ -78,19 +77,22 @@ public Optional<RowData> pull(RowData lookupRow) {
7877
// TODO Add Retry Policy And configure TimeOut from properties
7978
private Optional<RowData> queryAndProcess(RowData lookupData) throws Exception {
8079

81-
HttpRequest request = requestFactory.buildLookupRequest(lookupData);
82-
HttpResponse<String> response = httpClient.send(request, BodyHandlers.ofString());
80+
HttpLookupSourceRequestEntry request = requestFactory.buildLookupRequest(lookupData);
81+
HttpResponse<String> response = httpClient.send(
82+
request.getHttpRequest(),
83+
BodyHandlers.ofString()
84+
);
8385
return processHttpResponse(response, request);
8486
}
8587

8688
private Optional<RowData> processHttpResponse(
8789
HttpResponse<String> response,
88-
HttpRequest request) throws IOException {
90+
HttpLookupSourceRequestEntry request) throws IOException {
8991

9092
this.httpPostRequestCallback.call(response, request, "endpoint", Collections.emptyMap());
9193

9294
if (response == null) {
93-
log.warn("Null Http response for request " + request.uri().toString());
95+
log.warn("Null Http response for request " + request.getHttpRequest().uri().toString());
9496
return Optional.empty();
9597
}
9698

src/main/java/com/getindata/connectors/http/internal/table/lookup/RequestFactoryBase.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public RequestFactoryBase(
5959
}
6060

6161
@Override
62-
public HttpRequest buildLookupRequest(RowData lookupRow) {
62+
public HttpLookupSourceRequestEntry buildLookupRequest(RowData lookupRow) {
6363

6464
String lookupQuery = lookupQueryCreator.createLookupQuery(lookupRow);
6565
getLogger().debug("Created Http lookup query: " + lookupQuery);
@@ -70,7 +70,7 @@ public HttpRequest buildLookupRequest(RowData lookupRow) {
7070
requestBuilder.headers(headersAndValues);
7171
}
7272

73-
return requestBuilder.build();
73+
return new HttpLookupSourceRequestEntry(requestBuilder.build(), lookupQuery);
7474
}
7575

7676
protected abstract Logger getLogger();

src/main/java/com/getindata/connectors/http/internal/table/lookup/Slf4JHttpLookupPostRequestCallback.java

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,20 @@
2020
* the {@link HttpLookupTableSource}.
2121
*/
2222
@Slf4j
23-
public class Slf4JHttpLookupPostRequestCallback implements HttpPostRequestCallback<HttpRequest> {
23+
public class Slf4JHttpLookupPostRequestCallback
24+
implements HttpPostRequestCallback<HttpLookupSourceRequestEntry> {
2425

2526
@Override
2627
public void call(
2728
HttpResponse<String> response,
28-
HttpRequest requestEntry,
29+
HttpLookupSourceRequestEntry requestEntry,
2930
String endpointUrl,
3031
Map<String, String> headerMap) {
3132

33+
HttpRequest httpRequest = requestEntry.getHttpRequest();
3234
StringJoiner headers = new StringJoiner(";");
33-
for (Entry<String, List<String>> reqHeaders : requestEntry.headers().map().entrySet()) {
35+
36+
for (Entry<String, List<String>> reqHeaders : httpRequest.headers().map().entrySet()) {
3437
StringJoiner values = new StringJoiner(";");
3538
for (String value : reqHeaders.getValue()) {
3639
values.add(value);
@@ -41,17 +44,21 @@ public void call(
4144

4245
if (response == null) {
4346
log.info(
44-
"Got response for a request.\n Request:\n " +
45-
"Method: {}\n Headers: {}\n Body: {}\n Response: null",
46-
requestEntry.method(), headers, requestEntry
47+
"Got response for a request.\n Request:\n URL: {}\n " +
48+
"Method: {}\n Headers: {}\n Params/Body: {}\nResponse: null",
49+
httpRequest.uri().toString(),
50+
httpRequest.method(),
51+
headers,
52+
requestEntry.getLookupQuery()
4753
);
4854
} else {
4955
log.info(
50-
"Got response for a request.\n Request:\n " +
51-
"Method: {}\n Headers: {}\n Body: {}\n Response: {}\n Body: {}",
52-
requestEntry.method(),
56+
"Got response for a request.\n Request:\n URL: {}\n " +
57+
"Method: {}\n Headers: {}\n Params/Body: {}\nResponse: {}\n Body: {}",
58+
httpRequest.uri().toString(),
59+
httpRequest.method(),
5360
headers,
54-
requestEntry,
61+
requestEntry.getLookupQuery(),
5562
response,
5663
response.body().replaceAll(ConfigUtils.UNIVERSAL_NEW_LINE_REGEXP, "")
5764
);

0 commit comments

Comments
 (0)