Skip to content

Commit ba04474

Browse files
committed
Fixing cloudsearchdomains marshalling
1 parent 87dabf7 commit ba04474

File tree

2 files changed

+18
-19
lines changed

2 files changed

+18
-19
lines changed

services/cloudsearchdomain/src/main/java/software/amazon/awssdk/services/cloudsearchdomain/internal/SwitchToPostInterceptor.java

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515

1616
package software.amazon.awssdk.services.cloudsearchdomain.internal;
1717

18-
import static java.util.Collections.singletonList;
1918
import static software.amazon.awssdk.utils.StringUtils.lowerCase;
2019

2120
import java.io.ByteArrayInputStream;
@@ -39,30 +38,28 @@ public final class SwitchToPostInterceptor implements ExecutionInterceptor {
3938

4039
@Override
4140
public SdkHttpRequest modifyHttpRequest(Context.ModifyHttpRequest context, ExecutionAttributes executionAttributes) {
42-
byte[] params = SdkHttpUtils.encodeAndFlattenFormData(context.httpRequest().rawQueryParameters()).orElse("")
43-
.getBytes(StandardCharsets.UTF_8);
44-
45-
return context.httpRequest()
46-
.toBuilder()
47-
.method(SdkHttpMethod.POST)
48-
.putHeader("Content-Length", singletonList(String.valueOf(params.length)))
49-
.putHeader("Content-Type", singletonList("application/x-www-form-urlencoded; charset=" +
50-
lowerCase(StandardCharsets.UTF_8.toString()))).build();
41+
SdkHttpRequest httpRequest = context.httpRequest();
42+
if (context.request() instanceof SearchRequest) {
43+
return httpRequest.toBuilder()
44+
.clearQueryParameters()
45+
.method(SdkHttpMethod.POST)
46+
.build();
47+
}
48+
return context.httpRequest();
5149
}
5250

5351
@Override
5452
public Optional<RequestBody> modifyHttpContent(Context.ModifyHttpRequest context, ExecutionAttributes executionAttributes) {
55-
SdkHttpRequest request = context.httpRequest();
56-
Object originalRequest = context.request();
57-
if (originalRequest instanceof SearchRequest && request.method() == SdkHttpMethod.GET) {
58-
byte[] params = SdkHttpUtils.encodeAndFlattenFormData(request.rawQueryParameters()).orElse("")
59-
.getBytes(StandardCharsets.UTF_8);
53+
if (context.request() instanceof SearchRequest) {
54+
byte[] params = SdkHttpUtils.encodeAndFlattenFormData(context.httpRequest().rawQueryParameters()).orElse("")
55+
.getBytes(StandardCharsets.UTF_8);
6056
return Optional.of(RequestBody.fromContentProvider(() -> new ByteArrayInputStream(params),
61-
params.length,
62-
"application/x-www-form-urlencoded; charset=" +
63-
lowerCase(StandardCharsets.UTF_8.toString())));
57+
params.length,
58+
"application/x-www-form-urlencoded; charset=" +
59+
lowerCase(StandardCharsets.UTF_8.toString())));
6460
}
6561

6662
return context.requestBody();
6763
}
64+
6865
}

services/cloudsearchdomain/src/test/java/software/amazon/awssdk/cloudsearchdomain/SearchRequestUnitTest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import static com.github.tomakehurst.wiremock.client.WireMock.post;
2020
import static com.github.tomakehurst.wiremock.client.WireMock.postRequestedFor;
2121
import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
22+
import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
2223
import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;
2324
import static com.github.tomakehurst.wiremock.client.WireMock.verify;
2425

@@ -69,6 +70,7 @@ public void testPostUsedForSearchRequest() throws IOException {
6970

7071
searchClient.search(SearchRequest.builder().query("Lord of the Rings").build());
7172

72-
verify(postRequestedFor(urlMatching("/.*")).withRequestBody(equalTo("format=sdk&pretty=true&q=Lord+of+the+Rings")));
73+
verify(postRequestedFor(urlEqualTo("/2013-01-01/search"))
74+
.withRequestBody(equalTo("format=sdk&pretty=true&q=Lord+of+the+Rings")));
7375
}
7476
}

0 commit comments

Comments
 (0)