Skip to content

Commit fbbb18f

Browse files
committed
Remove request/response builders
The builders just delegated to the mutable request/response anyway and added unnecessary overhead. Mutable messages are now fluent, have chaining methods like toModifiable and toUnmodifiable, so it obviates the need for builders entirely.
1 parent 03962e2 commit fbbb18f

58 files changed

Lines changed: 609 additions & 852 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

aws/aws-sigv4/src/jmh/java/software/amazon/smithy/java/aws/client/auth/scheme/sigv4/SigV4SignerTrials.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -128,12 +128,12 @@ private static HttpRequest parsePostRequest(
128128
queryParameters.forEach(queryBuilder::add);
129129
uriString += "?" + queryBuilder;
130130
}
131-
return HttpRequest.builder()
132-
.method("POST")
133-
.httpVersion(HttpVersion.HTTP_1_1)
134-
.uri(SmithyUri.of(uriString))
135-
.headers(httpHeaders)
136-
.body(body != null ? DataStream.ofBytes(body.getBytes(StandardCharsets.UTF_8)) : null)
137-
.build();
131+
return HttpRequest.create()
132+
.setMethod("POST")
133+
.setHttpVersion(HttpVersion.HTTP_1_1)
134+
.setUri(SmithyUri.of(uriString))
135+
.setHeaders(httpHeaders)
136+
.setBody(body != null ? DataStream.ofBytes(body.getBytes(StandardCharsets.UTF_8)) : null)
137+
.toUnmodifiable();
138138
}
139139
}

aws/aws-sigv4/src/main/java/software/amazon/smithy/java/aws/client/auth/scheme/sigv4/SigV4Signer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public SignResult<HttpRequest> sign(HttpRequest request, AwsCredentialsIdentity
9191
identity.sessionToken(),
9292
!request.body().hasKnownLength());
9393
var signedHeaders = signatureAndSignedHeaders.right;
94-
var mod = request.toModifiableCopy();
94+
var mod = request.toModifiable();
9595
mod.setHeaders(HttpHeaders.of(signedHeaders).toModifiable());
9696
return new SignResult<>(mod, signatureAndSignedHeaders.left);
9797
}

aws/aws-sigv4/src/test/java/software/amazon/smithy/java/aws/client/auth/scheme/sigv4/SigV4TestRunner.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -147,13 +147,13 @@ private static HttpRequest parseRequest(String fileName) {
147147
}
148148
}
149149

150-
return HttpRequest.builder()
151-
.method(method)
152-
.httpVersion(HttpVersion.HTTP_1_1)
153-
.uri(URI.create("http://" + Objects.requireNonNull(hostValue) + path))
154-
.headers(HttpHeaders.of(headers))
155-
.body(body != null ? DataStream.ofBytes(body.toString().getBytes()) : null)
156-
.build();
150+
return HttpRequest.create()
151+
.setMethod(method)
152+
.setHttpVersion(HttpVersion.HTTP_1_1)
153+
.setUri(URI.create("http://" + Objects.requireNonNull(hostValue) + path))
154+
.setHeaders(HttpHeaders.of(headers))
155+
.setBody(body != null ? DataStream.ofBytes(body.toString().getBytes()) : null)
156+
.toUnmodifiable();
157157
}
158158

159159
Result createResult(

aws/client/aws-client-awsjson/src/main/java/software/amazon/smithy/java/aws/client/awsjson/AwsJsonProtocol.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -78,22 +78,22 @@ public <I extends SerializableStruct, O extends SerializableStruct> HttpRequest
7878
SmithyUri endpoint
7979
) {
8080
var target = service.getName() + "." + operation.schema().id().getName();
81-
var builder = HttpRequest.builder();
82-
builder.method("POST");
83-
builder.uri(endpoint);
81+
var builder = HttpRequest.create();
82+
builder.setMethod("POST");
83+
builder.setUri(endpoint);
8484
if (operation.inputEventBuilderSupplier() != null) {
8585
// Event streaming
8686
var encoderFactory = getEventEncoderFactory(operation);
8787
var body = RpcEventStreamsUtil.bodyForEventStreaming(encoderFactory, input);
88-
builder.withAddedHeader("x-amz-target", target)
89-
.withAddedHeader("content-type", "application/vnd.amazon.eventstream")
90-
.withAddedHeader("accept", contentType())
91-
.body(body);
88+
builder.addHeader("x-amz-target", target)
89+
.addHeader("content-type", "application/vnd.amazon.eventstream")
90+
.addHeader("accept", contentType())
91+
.setBody(body);
9292
} else {
93-
builder.withAddedHeader("x-amz-target", target)
94-
.withAddedHeader("content-type", contentType());
93+
builder.addHeader("x-amz-target", target)
94+
.addHeader("content-type", contentType());
9595
}
96-
return builder.body(DataStream.ofByteBuffer(codec.serialize(input), contentType())).build();
96+
return builder.setBody(DataStream.ofByteBuffer(codec.serialize(input), contentType()));
9797
}
9898

9999
@Override

aws/client/aws-client-awsquery/src/main/java/software/amazon/smithy/java/aws/client/awsquery/AwsQueryClientProtocol.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -80,12 +80,11 @@ public <I extends SerializableStruct, O extends SerializableStruct> HttpRequest
8080

8181
ByteBuffer body = serializer.finish();
8282

83-
return HttpRequest.builder()
84-
.method("POST")
85-
.uri(endpoint)
86-
.headers(CONTENT_TYPE_HEADERS)
87-
.body(DataStream.ofByteBuffer(body, CONTENT_TYPE))
88-
.build();
83+
return HttpRequest.create()
84+
.setMethod("POST")
85+
.setUri(endpoint)
86+
.setHeaders(CONTENT_TYPE_HEADERS)
87+
.setBody(DataStream.ofByteBuffer(body, CONTENT_TYPE));
8988
}
9089

9190
@Override

aws/client/aws-client-http/src/main/java/software/amazon/smithy/java/aws/client/http/AmzSdkRequestPlugin.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import software.amazon.smithy.java.client.core.ClientPlugin;
1111
import software.amazon.smithy.java.client.core.interceptors.ClientInterceptor;
1212
import software.amazon.smithy.java.client.core.interceptors.RequestHook;
13+
import software.amazon.smithy.java.http.api.HeaderNames;
1314
import software.amazon.smithy.java.http.api.HttpRequest;
1415

1516
/**
@@ -37,7 +38,8 @@ public <RequestT> RequestT modifyBeforeSigning(RequestHook<?, ?, RequestT> hook)
3738
value.append("; max=").append(max);
3839
}
3940
return hook.asRequestType(
40-
req.toModifiableCopy().setHeader("amz-sdk-request", value.toString()));
41+
req.toModifiable()
42+
.setHeader(HeaderNames.AMZ_SDK_REQUEST, value.toString()));
4143
}
4244
}
4345
return hook.request();

aws/client/aws-client-http/src/main/java/software/amazon/smithy/java/aws/client/http/RecursionDetectionPlugin.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import software.amazon.smithy.java.client.core.ClientPlugin;
1111
import software.amazon.smithy.java.client.core.interceptors.ClientInterceptor;
1212
import software.amazon.smithy.java.client.core.interceptors.RequestHook;
13+
import software.amazon.smithy.java.http.api.HeaderNames;
1314
import software.amazon.smithy.java.http.api.HttpRequest;
1415

1516
/**
@@ -47,10 +48,9 @@ private record Interceptor(List<String> traceIdHeader) implements ClientIntercep
4748
@Override
4849
public <RequestT> RequestT modifyBeforeTransmit(RequestHook<?, ?, RequestT> hook) {
4950
if (hook.request() instanceof HttpRequest req) {
50-
if (!req.headers().hasHeader("x-amzn-trace-id")) {
51-
var mod = req.toModifiableCopy();
52-
mod.headers().setHeader("x-amzn-trace-id", traceIdHeader);
53-
return hook.asRequestType(mod);
51+
if (!req.headers().hasHeader(HeaderNames.X_AMZN_TRACE_ID)) {
52+
return hook.asRequestType(
53+
req.toModifiable().setHeader(HeaderNames.X_AMZN_TRACE_ID, traceIdHeader));
5454
}
5555
}
5656
return hook.request();

aws/client/aws-client-http/src/test/java/software/amazon/smithy/java/aws/client/http/AmzSdkRequestPluginTest.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -74,15 +74,15 @@ public Builder toBuilder() {
7474
.build();
7575

7676
mockQueue.enqueue(
77-
HttpResponse.builder()
78-
.statusCode(429)
79-
.body(DataStream.ofString("{\"__type\":\"InvalidSprocketId\"}"))
80-
.build());
77+
HttpResponse.create()
78+
.setStatusCode(429)
79+
.setBody(DataStream.ofString("{\"__type\":\"InvalidSprocketId\"}"))
80+
.toUnmodifiable());
8181
mockQueue.enqueue(
82-
HttpResponse.builder()
83-
.statusCode(200)
84-
.body(DataStream.ofString("{\"id\":\"1\"}"))
85-
.build());
82+
HttpResponse.create()
83+
.setStatusCode(200)
84+
.setBody(DataStream.ofString("{\"id\":\"1\"}"))
85+
.toUnmodifiable());
8686

8787
client.call("CreateSprocket");
8888

aws/client/aws-client-http/src/test/java/software/amazon/smithy/java/aws/client/http/RecursionDetectionPluginTest.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,10 @@ private HttpHeaders getSentHeaders(ClientPlugin recursionDetectionPlugin) {
4848

4949
private HttpHeaders getSentHeaders(ClientPlugin recursionDetectionPlugin, ClientInterceptor interceptor) {
5050
var mockQueue = new MockQueue();
51-
mockQueue.enqueue(HttpResponse.builder().statusCode(200).body(DataStream.ofString("{\"id\":\"1\"}")).build());
51+
mockQueue.enqueue(HttpResponse.create()
52+
.setStatusCode(200)
53+
.setBody(DataStream.ofString("{\"id\":\"1\"}"))
54+
.toUnmodifiable());
5255
var mock = MockPlugin.builder().addQueue(mockQueue).build();
5356

5457
var builder = DynamicClient.builder()

aws/server/aws-server-restjson/src/main/java/software/amazon/smithy/java/aws/server/restjson/AwsRestJson1Protocol.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -138,12 +138,11 @@ public CompletableFuture<Void> deserializeInput(Job job) {
138138
.inputShapeBuilder(inputShapeBuilder)
139139
.pathLabelValues(labelValues)
140140
.request(
141-
HttpRequest.builder()
142-
.headers(headers)
143-
.uri(httpJob.request().uri())
144-
.method(httpJob.request().method())
145-
.body(job.request().getDataStream())
146-
.build())
141+
HttpRequest.create()
142+
.setHeaders(headers)
143+
.setUri(httpJob.request().uri())
144+
.setMethod(httpJob.request().method())
145+
.setBody(job.request().getDataStream()))
147146
.payloadCodec(codec)
148147
.payloadMediaType("application/json");
149148

0 commit comments

Comments
 (0)