Skip to content

Commit b0e3f25

Browse files
committed
Address code review comments
Signed-off-by: Andriy Redko <[email protected]>
1 parent 0d15e40 commit b0e3f25

File tree

8 files changed

+34
-29
lines changed

8 files changed

+34
-29
lines changed

Diff for: guides/generic.md

+8-8
Original file line numberDiff line numberDiff line change
@@ -13,29 +13,29 @@ There are rare circumstances when the typed OpenSearch client APIs are too const
1313
The following sample code gets the `OpenSearchGenericClient` from the `OpenSearchClient` instance.
1414

1515
```java
16-
final OpenSearchGenericClient generic = javaClient().generic(ClientOptions.DEFAULT);
16+
final OpenSearchGenericClient generic = javaClient().generic();
1717
```
1818

1919
The generic client with default options (`ClientOptions.DEFAULT`) returns the responses as those were received from the server. The generic client could be instructed to raise an `OpenSearchClientException` exception instead if the HTTP status code is not indicating the successful response, for example:
2020

2121
```java
22-
final OpenSearchGenericClient generic = javaClient().generic(ClientOptions.throwOnHttpErrors());
22+
final OpenSearchGenericClient generic = javaClient().generic().witClientOptions(ClientOptions.throwOnHttpErrors());
2323
```
2424

2525
## Sending Simple Request
2626
The following sample code sends a simple request that does not require any payload to be provided (typically, `GET` requests).
2727

2828
```java
2929
// compare with what the low level client outputs
30-
try (Response response = javaClient().generic(ClientOptions.DEFAULT).execute(Requests.builder().endpoint("/").method("GET").build())) {
30+
try (Response response = javaClient().generic().execute(Requests.builder().endpoint("/").method("GET").build())) {
3131
// ...
3232
}
3333
```
3434

3535
Please notice that the `Response` instance should be closed explicitly in order to free up any allocated resource (like response input streams or buffers), the [`try-with-resource`](https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html) pattern is encouraged.
3636

3737
```java
38-
try (Response response = javaClient().generic(ClientOptions.DEFAULT).execute(...)) {
38+
try (Response response = javaClient().generic().execute(...)) {
3939
// ...
4040
}
4141
```
@@ -44,7 +44,7 @@ The generic client never interprets status codes and provides the direct access
4444

4545
```java
4646
// compare with what the low level client outputs
47-
try (Response response = javaClient().generic(ClientOptions.DEFAULT).execute(...)) {
47+
try (Response response = javaClient().generic().execute(...)) {
4848
if (response.getStatus() != 200) {
4949
// Request was not successful
5050
}
@@ -55,7 +55,7 @@ try (Response response = javaClient().generic(ClientOptions.DEFAULT).execute(...
5555
The following sample code a simple request with JSON body.
5656

5757
```java
58-
try (Response response = javaClient().generic(ClientOptions.DEFAULT)
58+
try (Response response = javaClient().generic()
5959
.execute(
6060
Requests.builder()
6161
.endpoint("/" + index + "/_search")
@@ -89,7 +89,7 @@ final CreateIndexRequest request = CreateIndexRequest.of(
8989
.settings(settings -> settings.sort(s -> s.field("name").order(SegmentSortOrder.Asc)))
9090
);
9191

92-
try (Response response = javaClient().generic(ClientOptions.DEFAULT)
92+
try (Response response = javaClient().generic()
9393
.execute(
9494
Requests.builder()
9595
.endpoint("/" + index).method("PUT")
@@ -106,7 +106,7 @@ try (Response response = javaClient().generic(ClientOptions.DEFAULT)
106106
Dealing with strings or POJOs could be daunting sometimes, using structured JSON APIs is a middle ground of both approaches, as per following sample code that uses (`jakarta.json.Json`)[https://jakarta.ee/specifications/jsonp].
107107

108108
```java
109-
try (Response response = javaClient().generic(ClientOptions.DEFAULT)
109+
try (Response response = javaClient().generic()
110110
.execute(
111111
Requests.builder()
112112
.endpoint("/" + index)

Diff for: java-client/src/main/java/org/opensearch/client/opensearch/OpenSearchClient.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -156,8 +156,8 @@ public OpenSearchClient withTransportOptions(@Nullable TransportOptions transpor
156156
}
157157

158158
// ----- Child clients
159-
public OpenSearchGenericClient generic(OpenSearchGenericClient.ClientOptions clientOptions) {
160-
return new OpenSearchGenericClient(this.transport, this.transportOptions, clientOptions);
159+
public OpenSearchGenericClient generic() {
160+
return new OpenSearchGenericClient(this.transport, this.transportOptions);
161161
}
162162

163163
public OpenSearchCatClient cat() {

Diff for: java-client/src/main/java/org/opensearch/client/opensearch/generic/OpenSearchGenericClient.java

+10-2
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public class OpenSearchGenericClient extends ApiClient<OpenSearchTransport, Open
3030
* Generic client options
3131
*/
3232
public static final class ClientOptions {
33-
public static final ClientOptions DEFAULT = new ClientOptions();
33+
private static final ClientOptions DEFAULT = new ClientOptions();
3434

3535
private final Predicate<Integer> error;
3636

@@ -125,7 +125,7 @@ public boolean isError(int statusCode) {
125125
}
126126

127127
@Override
128-
public <T extends RuntimeException> T exceptionConverter(Response error) {
128+
public <T extends RuntimeException> T exceptionConverter(int statusCode, @Nullable Response error) {
129129
throw new OpenSearchClientException(error);
130130
}
131131
}
@@ -136,6 +136,10 @@ public OpenSearchGenericClient(OpenSearchTransport transport) {
136136
this(transport, null, ClientOptions.DEFAULT);
137137
}
138138

139+
public OpenSearchGenericClient(OpenSearchTransport transport, @Nullable TransportOptions transportOptions) {
140+
this(transport, transportOptions, ClientOptions.DEFAULT);
141+
}
142+
139143
public OpenSearchGenericClient(
140144
OpenSearchTransport transport,
141145
@Nullable TransportOptions transportOptions,
@@ -145,6 +149,10 @@ public OpenSearchGenericClient(
145149
this.clientOptions = clientOptions;
146150
}
147151

152+
public OpenSearchGenericClient withClientOptions(ClientOptions clientOptions) {
153+
return new OpenSearchGenericClient(this.transport, this.transportOptions, clientOptions);
154+
}
155+
148156
@Override
149157
public OpenSearchGenericClient withTransportOptions(@Nullable TransportOptions transportOptions) {
150158
return new OpenSearchGenericClient(this.transport, transportOptions, this.clientOptions);

Diff for: java-client/src/main/java/org/opensearch/client/transport/Endpoint.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ default Map<String, String> headers(RequestT request) {
9898
* @param error error response
9999
* @return exception instance
100100
*/
101-
default <T extends RuntimeException> T exceptionConverter(ErrorT error) {
101+
default <T extends RuntimeException> T exceptionConverter(int statusCode, @Nullable ErrorT error) {
102102
throw new OpenSearchException((ErrorResponse) error);
103103
}
104104
}

Diff for: java-client/src/main/java/org/opensearch/client/transport/httpclient5/ApacheHttpClient5Transport.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -517,7 +517,7 @@ private <ResponseT, ErrorT> ResponseT prepareResponse(Response clientResp, Endpo
517517
entity.getContentType(),
518518
content
519519
);
520-
throw rawEndpoint.exceptionConverter(error);
520+
throw rawEndpoint.exceptionConverter(statusCode, error);
521521
}
522522
} else {
523523
JsonpDeserializer<ErrorT> errorDeserializer = endpoint.errorDeserializer(statusCode);
@@ -535,7 +535,7 @@ private <ResponseT, ErrorT> ResponseT prepareResponse(Response clientResp, Endpo
535535
InputStream content = entity.getContent();
536536
try (JsonParser parser = mapper.jsonProvider().createParser(content)) {
537537
ErrorT error = errorDeserializer.deserialize(parser, mapper);
538-
throw endpoint.exceptionConverter(error);
538+
throw endpoint.exceptionConverter(statusCode, error);
539539
}
540540
} catch (MissingRequiredPropertyException errorEx) {
541541
// Could not decode exception, try the response type

Diff for: java-client/src/main/java/org/opensearch/client/transport/rest_client/RestClientTransport.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,7 @@ private <ResponseT, ErrorT> ResponseT getHighLevelResponse(
291291
content
292292
);
293293

294-
throw rawEndpoint.exceptionConverter(error);
294+
throw rawEndpoint.exceptionConverter(statusCode, error);
295295
}
296296
} else {
297297
JsonpDeserializer<ErrorT> errorDeserializer = endpoint.errorDeserializer(statusCode);
@@ -309,7 +309,7 @@ private <ResponseT, ErrorT> ResponseT getHighLevelResponse(
309309
InputStream content = entity.getContent();
310310
try (JsonParser parser = mapper.jsonProvider().createParser(content)) {
311311
ErrorT error = errorDeserializer.deserialize(parser, mapper);
312-
throw endpoint.exceptionConverter(error);
312+
throw endpoint.exceptionConverter(statusCode, error);
313313
}
314314
} catch (MissingRequiredPropertyException errorEx) {
315315
// Could not decode exception, try the response type

Diff for: java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractGenericClientIT.java

+8-8
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public void shouldReturnSearchResults() throws Exception {
3636
createIndex(index);
3737

3838
try (
39-
Response response = javaClient().generic(ClientOptions.DEFAULT)
39+
Response response = javaClient().generic()
4040
.execute(
4141
Requests.builder()
4242
.endpoint("/" + index + "/_search")
@@ -98,8 +98,7 @@ public void shouldReturn404() throws IOException {
9898
createIndex(index);
9999

100100
try (
101-
Response response = javaClient().generic(ClientOptions.DEFAULT)
102-
.execute(Requests.builder().endpoint("/" + index + "/_doc/10").method("GET").build())
101+
Response response = javaClient().generic().execute(Requests.builder().endpoint("/" + index + "/_doc/10").method("GET").build())
103102
) {
104103
assertThat(response.getStatus(), equalTo(404));
105104
assertThat(response.getBody().isPresent(), equalTo(true));
@@ -113,7 +112,8 @@ public void shouldThrow() throws IOException {
113112

114113
final OpenSearchClientException ex = assertThrows(OpenSearchClientException.class, () -> {
115114
try (
116-
Response response = javaClient().generic(ClientOptions.throwOnHttpErrors())
115+
Response response = javaClient().generic()
116+
.withClientOptions(ClientOptions.throwOnHttpErrors())
117117
.execute(Requests.builder().endpoint("/" + index + "/_doc/10").method("GET").build())
118118
) {}
119119
});
@@ -135,7 +135,7 @@ private void createTestDocuments(String index) throws IOException {
135135

136136
private void createTestDocument(String index, String id, ShopItem document) throws IOException {
137137
try (
138-
Response response = javaClient().generic(ClientOptions.DEFAULT)
138+
Response response = javaClient().generic()
139139
.execute(
140140
Requests.builder()
141141
.endpoint("/" + index + "/_doc/" + id)
@@ -161,7 +161,7 @@ private void createIndexUntyped(String index) throws IOException {
161161
final JsonpMapper jsonpMapper = javaClient()._transport().jsonpMapper();
162162

163163
try (
164-
Response response = javaClient().generic(ClientOptions.DEFAULT)
164+
Response response = javaClient().generic()
165165
.execute(
166166
Requests.builder()
167167
.endpoint("/" + index)
@@ -215,7 +215,7 @@ private void createIndexTyped(String index) throws IOException {
215215
);
216216

217217
try (
218-
Response response = javaClient().generic(ClientOptions.DEFAULT)
218+
Response response = javaClient().generic()
219219
.execute(Requests.builder().endpoint("/" + index).method("PUT").json(request, jsonpMapper).build())
220220
) {
221221
assertThat(response.getStatus(), equalTo(200));
@@ -231,7 +231,7 @@ private void createIndexTyped(String index) throws IOException {
231231

232232
private void refreshIndex(String index) throws IOException {
233233
try (
234-
Response response = javaClient().generic(ClientOptions.DEFAULT)
234+
Response response = javaClient().generic()
235235
.execute(Requests.builder().endpoint("/" + index + "/_refresh").method("POST").build())
236236
) {
237237
assertThat(response.getStatus(), equalTo(200));

Diff for: java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractPingAndInfoIT.java

+1-4
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
import org.opensearch.client.opensearch.OpenSearchClient;
1818
import org.opensearch.client.opensearch.core.InfoResponse;
1919
import org.opensearch.client.opensearch.generic.Bodies;
20-
import org.opensearch.client.opensearch.generic.OpenSearchGenericClient.ClientOptions;
2120
import org.opensearch.client.opensearch.generic.Requests;
2221
import org.opensearch.client.opensearch.generic.Response;
2322
import org.opensearch.client.transport.endpoints.BooleanResponse;
@@ -33,9 +32,7 @@ public void testInfo() throws IOException {
3332
InfoResponse info = openSearchClient.info();
3433

3534
// compare with what the low level client outputs
36-
try (
37-
Response response = javaClient().generic(ClientOptions.DEFAULT).execute(Requests.builder().endpoint("/").method("GET").build())
38-
) {
35+
try (Response response = javaClient().generic().execute(Requests.builder().endpoint("/").method("GET").build())) {
3936
assertThat(response.getStatus(), equalTo(200));
4037
assertThat(response.getProtocol(), equalTo("HTTP/1.1"));
4138
assertThat(response.getBody().isEmpty(), is(false));

0 commit comments

Comments
 (0)