Skip to content

Commit bfde4f5

Browse files
committed
add option to execute requests with the ApiHttpClient
finalize method parameters
1 parent e635fd7 commit bfde4f5

39 files changed

+151
-108
lines changed

commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/models/PagedQueryResourceRequest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11

22
package com.commercetools.api.models;
33

4+
import io.vrap.rmf.base.client.ClientRequestCommand;
45
import io.vrap.rmf.base.client.RequestCommand;
56

67
public interface PagedQueryResourceRequest<T extends PagedQueryResourceRequest<T, TResult>, TResult>
7-
extends RequestCommand<TResult> {
8+
extends RequestCommand<TResult>, ClientRequestCommand<TResult> {
89
T withLimit(final Integer limit);
910

1011
T withOffset(final Integer offset);

rmf/rmf-java-base/src/main/java/io/vrap/rmf/base/client/Accessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
public abstract class Accessor<T> {
55
protected final T value;
66

7-
public Accessor(T value) {
7+
public Accessor(final T value) {
88
this.value = value;
99
}
1010
}

rmf/rmf-java-base/src/main/java/io/vrap/rmf/base/client/ApiHttpClient.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@
99
public interface ApiHttpClient extends AutoCloseable, VrapHttpClient {
1010
public String CLOSED_MESSAGE = "Client is already closed.";
1111

12-
public <O> CompletableFuture<ApiHttpResponse<O>> execute(ApiHttpRequest request, Class<O> outputType);
12+
public <O> CompletableFuture<ApiHttpResponse<O>> execute(final ApiHttpRequest request, final Class<O> outputType);
13+
14+
public <O> CompletableFuture<ApiHttpResponse<O>> execute(final ClientRequestCommand<O> method);
1315

1416
public ResponseSerializer getSerializerService();
1517

@@ -21,11 +23,12 @@ public static ApiHttpClient of(final URI baseUri, final HandlerStack stack) {
2123
return of(baseUri, stack, ResponseSerializer.of());
2224
}
2325

24-
public static ApiHttpClient of(final String baseUri, final HandlerStack stack, ResponseSerializer serializer) {
26+
public static ApiHttpClient of(final String baseUri, final HandlerStack stack,
27+
final ResponseSerializer serializer) {
2528
return of(URI.create(baseUri), stack, serializer);
2629
}
2730

28-
public static ApiHttpClient of(final URI baseUri, final HandlerStack stack, ResponseSerializer serializer) {
31+
public static ApiHttpClient of(final URI baseUri, final HandlerStack stack, final ResponseSerializer serializer) {
2932
return new ApiHttpClientImpl(baseUri, stack, serializer);
3033
}
3134
}

rmf/rmf-java-base/src/main/java/io/vrap/rmf/base/client/ApiHttpClientImpl.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public ApiHttpClientImpl(final URI baseUri, final HandlerStack stack) {
2020
this(baseUri, stack, ResponseSerializer.of());
2121
}
2222

23-
public ApiHttpClientImpl(final URI baseUri, final HandlerStack stack, ResponseSerializer serializer) {
23+
public ApiHttpClientImpl(final URI baseUri, final HandlerStack stack, final ResponseSerializer serializer) {
2424
this.stack = stack;
2525
this.baseUri = baseUri;
2626
this.serializer = serializer;
@@ -33,7 +33,12 @@ public CompletableFuture<ApiHttpResponse<byte[]>> execute(final ApiHttpRequest r
3333
}
3434

3535
@Override
36-
public <O> CompletableFuture<ApiHttpResponse<O>> execute(final ApiHttpRequest request, Class<O> outputType) {
36+
public <O> CompletableFuture<ApiHttpResponse<O>> execute(final ClientRequestCommand<O> method) {
37+
return method.execute(this);
38+
}
39+
40+
@Override
41+
public <O> CompletableFuture<ApiHttpResponse<O>> execute(final ApiHttpRequest request, final Class<O> outputType) {
3742
return execute(request).thenApply(response -> serializer.convertResponse(response, outputType));
3843
}
3944

rmf/rmf-java-base/src/main/java/io/vrap/rmf/base/client/ApiHttpException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public ApiHttpException(final int statusCode, @Nullable final String body, @Null
6666
this.serializer = serializer;
6767
}
6868

69-
public <T> T getBodyAs(Class<T> clazz) throws SerializationException {
69+
public <T> T getBodyAs(final Class<T> clazz) throws SerializationException {
7070
try {
7171
return serializer.convertResponse(response, clazz).getBody();
7272
}

rmf/rmf-java-base/src/main/java/io/vrap/rmf/base/client/ApiMethod.java

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@
1515

1616
import javax.annotation.Nullable;
1717

18-
public abstract class ApiMethod<T extends ApiMethod<T, TResult>, TResult> implements RequestCommand<TResult> {
18+
public abstract class ApiMethod<T extends ApiMethod<T, TResult>, TResult>
19+
implements RequestCommand<TResult>, ClientRequestCommand<TResult> {
1920
public static class ParamEntry<K, V> implements Map.Entry<K, V> {
2021
protected final K key;
2122
protected V value;
@@ -209,13 +210,25 @@ public String getFirstQueryParam(final String key) {
209210

210211
public abstract ApiHttpRequest createHttpRequest();
211212

212-
public abstract CompletableFuture<ApiHttpResponse<TResult>> execute();
213+
public CompletableFuture<ApiHttpResponse<TResult>> execute() {
214+
return execute(apiHttpClient());
215+
}
216+
217+
public abstract CompletableFuture<ApiHttpResponse<TResult>> execute(ApiHttpClient client);
213218

214219
public ApiHttpResponse<TResult> executeBlocking() {
215-
return executeBlocking(Duration.ofSeconds(120));
220+
return executeBlocking(apiHttpClient(), Duration.ofSeconds(120));
221+
};
222+
223+
public ApiHttpResponse<TResult> executeBlocking(ApiHttpClient client) {
224+
return executeBlocking(client, Duration.ofSeconds(120));
216225
};
217226

218-
public abstract ApiHttpResponse<TResult> executeBlocking(Duration timeout);
227+
public ApiHttpResponse<TResult> executeBlocking(Duration timeout) {
228+
return executeBlocking(apiHttpClient(), timeout);
229+
}
230+
231+
public abstract ApiHttpResponse<TResult> executeBlocking(ApiHttpClient client, Duration timeout);
219232

220233
public CompletableFuture<ApiHttpResponse<byte[]>> send() {
221234
return apiHttpClient.execute(createHttpRequest());

rmf/rmf-java-base/src/main/java/io/vrap/rmf/base/client/AuthenticationToken.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,23 +34,23 @@ public String getAccessToken() {
3434
return accessToken;
3535
}
3636

37-
public void setAccessToken(String accessToken) {
37+
public void setAccessToken(final String accessToken) {
3838
this.accessToken = accessToken;
3939
}
4040

4141
public String getTokenType() {
4242
return tokenType;
4343
}
4444

45-
public void setTokenType(String tokenType) {
45+
public void setTokenType(final String tokenType) {
4646
this.tokenType = tokenType;
4747
}
4848

4949
public Long getExpiresIn() {
5050
return expiresIn;
5151
}
5252

53-
public void setExpiresIn(Long expiresIn) {
53+
public void setExpiresIn(final Long expiresIn) {
5454
this.expiresInZonedDateTime = Optional.ofNullable(expiresIn)
5555
.map(seconds -> ZonedDateTime.now().plusSeconds(seconds).minusMinutes(5))
5656
.orElse(null);
@@ -61,15 +61,15 @@ public String getScope() {
6161
return scope;
6262
}
6363

64-
public void setScope(String scope) {
64+
public void setScope(final String scope) {
6565
this.scope = scope;
6666
}
6767

6868
public String getRefresherToken() {
6969
return refresherToken;
7070
}
7171

72-
public void setRefresherToken(String refresherToken) {
72+
public void setRefresherToken(final String refresherToken) {
7373
this.refresherToken = refresherToken;
7474
}
7575

rmf/rmf-java-base/src/main/java/io/vrap/rmf/base/client/Base.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
abstract class Base {
1010

1111
@Override
12-
public boolean equals(Object o) {
12+
public boolean equals(final Object o) {
1313
return EqualsBuilder.reflectionEquals(this, o);
1414
}
1515

rmf/rmf-java-base/src/main/java/io/vrap/rmf/base/client/ClientBuilder.java

Lines changed: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,15 @@ public static ClientBuilder of() {
3333
return new ClientBuilder();
3434
}
3535

36-
public static ClientBuilder of(VrapHttpClient httpClient) {
36+
public static ClientBuilder of(final VrapHttpClient httpClient) {
3737
return new ClientBuilder(httpClient);
3838
}
3939

40-
public static ClientBuilder of(HandlerStack stack) {
40+
public static ClientBuilder of(final HandlerStack stack) {
4141
return new ClientBuilder(stack);
4242
}
4343

44-
private ClientBuilder(HandlerStack stack) {
44+
private ClientBuilder(final HandlerStack stack) {
4545
this.stack = () -> stack;
4646
this.serializer = ResponseSerializer.of();
4747
}
@@ -64,40 +64,41 @@ private Supplier<HandlerStack> stackSupplier() {
6464
};
6565
}
6666

67-
private ClientBuilder(VrapHttpClient httpClient) {
67+
private ClientBuilder(final VrapHttpClient httpClient) {
6868
this.httpClient = httpClient;
6969
this.stack = stackSupplier();
7070
this.serializer = ResponseSerializer.of();
7171
}
7272

73-
public ClientBuilder withHandlerStack(HandlerStack stack) {
73+
public ClientBuilder withHandlerStack(final HandlerStack stack) {
7474
this.stack = () -> stack;
7575
return this;
7676
}
7777

78-
public ClientBuilder withHttpClient(VrapHttpClient httpClient) {
78+
public ClientBuilder withHttpClient(final VrapHttpClient httpClient) {
7979
this.httpClient = httpClient;
8080
return this;
8181
}
8282

83-
public ClientBuilder withSerializer(ResponseSerializer serializer) {
83+
public ClientBuilder withSerializer(final ResponseSerializer serializer) {
8484
this.serializer = serializer;
8585
return this;
8686
}
8787

88-
public ClientBuilder defaultClient(String apiBaseUrl) {
88+
public ClientBuilder defaultClient(final String apiBaseUrl) {
8989
return withApiBaseUrl(apiBaseUrl).withErrorMiddleware()
9090
.withSerializer(ResponseSerializer.of())
9191
.withInternalLoggerFactory((request, topic) -> InternalLogger.getLogger(COMMERCETOOLS + "." + topic))
9292
.withUserAgentSupplier(ClientBuilder::buildDefaultUserAgent)
9393
.addAcceptGZipMiddleware();
9494
}
9595

96-
public ClientBuilder defaultClient(String apiBaseUrl, ClientCredentials credentials, String tokenEndpoint) {
96+
public ClientBuilder defaultClient(final String apiBaseUrl, final ClientCredentials credentials,
97+
final String tokenEndpoint) {
9798
return defaultClient(apiBaseUrl).withClientCredentials(credentials, tokenEndpoint);
9899
}
99100

100-
public ClientBuilder withClientCredentials(ClientCredentials credentials, String tokenEndpoint) {
101+
public ClientBuilder withClientCredentials(final ClientCredentials credentials, final String tokenEndpoint) {
101102
this.oAuthMiddleware = () -> {
102103
final TokenSupplier tokenSupplier = createClientCredentialsTokenSupplier(credentials, tokenEndpoint,
103104
requireNonNull(httpClient));
@@ -108,13 +109,13 @@ public ClientBuilder withClientCredentials(ClientCredentials credentials, String
108109
return this;
109110
}
110111

111-
public ClientBuilder withClientCredentials(ClientCredentials credentials, String tokenEndpoint,
112+
public ClientBuilder withClientCredentials(final ClientCredentials credentials, final String tokenEndpoint,
112113
VrapHttpClient httpClient) {
113114
return withTokenSupplier(createClientCredentialsTokenSupplier(credentials, tokenEndpoint, httpClient));
114115
}
115116

116-
private TokenSupplier createClientCredentialsTokenSupplier(ClientCredentials credentials, String tokenEndpoint,
117-
VrapHttpClient httpClient) {
117+
private TokenSupplier createClientCredentialsTokenSupplier(final ClientCredentials credentials,
118+
final String tokenEndpoint, final VrapHttpClient httpClient) {
118119
return new ClientCredentialsTokenSupplier(credentials.getClientId(), credentials.getClientSecret(),
119120
credentials.getScopes(), tokenEndpoint, httpClient);
120121
}
@@ -123,7 +124,7 @@ public ClientBuilder addAcceptGZipMiddleware() {
123124
return addMiddleware(AcceptGZipMiddleware.of());
124125
}
125126

126-
public ClientBuilder withErrorMiddleware(Supplier<ErrorMiddleware> errorMiddleware) {
127+
public ClientBuilder withErrorMiddleware(final Supplier<ErrorMiddleware> errorMiddleware) {
127128
this.errorMiddleware = errorMiddleware;
128129
return this;
129130
}
@@ -132,78 +133,78 @@ public ClientBuilder withErrorMiddleware() {
132133
return withErrorMiddleware(() -> ErrorMiddleware.of(serializer));
133134
}
134135

135-
public ClientBuilder withErrorMiddleware(ErrorMiddleware errorMiddleware) {
136+
public ClientBuilder withErrorMiddleware(final ErrorMiddleware errorMiddleware) {
136137
return withErrorMiddleware(() -> errorMiddleware);
137138
}
138139

139-
public ClientBuilder withOAuthMiddleware(Supplier<OAuthMiddleware> oAuthMiddleware) {
140+
public ClientBuilder withOAuthMiddleware(final Supplier<OAuthMiddleware> oAuthMiddleware) {
140141
this.oAuthMiddleware = oAuthMiddleware;
141142
return this;
142143
}
143144

144-
public ClientBuilder withOAuthMiddleware(OAuthMiddleware oAuthMiddleware) {
145+
public ClientBuilder withOAuthMiddleware(final OAuthMiddleware oAuthMiddleware) {
145146
return withOAuthMiddleware(() -> oAuthMiddleware);
146147
}
147148

148-
public ClientBuilder withTokenSupplier(TokenSupplier tokenSupplier) {
149+
public ClientBuilder withTokenSupplier(final TokenSupplier tokenSupplier) {
149150
final OAuthHandler oAuthHandler = new OAuthHandler(tokenSupplier);
150151
return withOAuthMiddleware(OAuthMiddleware.of(oAuthHandler));
151152
}
152153

153-
public ClientBuilder withInternalLoggerMiddleware(InternalLoggerMiddleware internalLoggerMiddleware) {
154+
public ClientBuilder withInternalLoggerMiddleware(final InternalLoggerMiddleware internalLoggerMiddleware) {
154155
this.internalLoggerMiddleware = internalLoggerMiddleware;
155156
return this;
156157
}
157158

158-
public ClientBuilder withInternalLoggerFactory(InternalLoggerFactory internalLoggerFactory) {
159+
public ClientBuilder withInternalLoggerFactory(final InternalLoggerFactory internalLoggerFactory) {
159160
return withInternalLoggerMiddleware(InternalLoggerMiddleware.of(internalLoggerFactory));
160161
}
161162

162163
public ClientBuilder withApiBaseUrl(String apiBaseUrl) {
163164
return withApiBaseUrl(URI.create(apiBaseUrl));
164165
}
165166

166-
public ClientBuilder withApiBaseUrl(URI apiBaseUrl) {
167+
public ClientBuilder withApiBaseUrl(final URI apiBaseUrl) {
167168
this.apiBaseUrl = apiBaseUrl;
168169
return this;
169170
}
170171

171-
public ClientBuilder withUserAgentSupplier(Supplier<String> userAgentSupplier) {
172+
public ClientBuilder withUserAgentSupplier(final Supplier<String> userAgentSupplier) {
172173
return withUserAgentMiddleware(new UserAgentMiddleware(userAgentSupplier.get()));
173174
}
174175

175-
private ClientBuilder withUserAgentMiddleware(UserAgentMiddleware userAgentMiddleware) {
176+
private ClientBuilder withUserAgentMiddleware(final UserAgentMiddleware userAgentMiddleware) {
176177
this.userAgentMiddleware = userAgentMiddleware;
177178
return this;
178179
}
179180

180-
public ClientBuilder addCorrelationIdProvider(@Nullable CorrelationIdProvider correlationIdProvider) {
181+
public ClientBuilder addCorrelationIdProvider(final @Nullable CorrelationIdProvider correlationIdProvider) {
181182
if (correlationIdProvider != null) {
182183
return addMiddleware((request, next) -> next.apply(
183184
request.withHeader(ApiHttpHeaders.X_CORRELATION_ID, correlationIdProvider.getCorrelationId())));
184185
}
185186
return this;
186187
}
187188

188-
public ClientBuilder withMiddlewares(List<Middleware> middlewares) {
189+
public ClientBuilder withMiddlewares(final List<Middleware> middlewares) {
189190
this.middlewares = new ArrayList<>(middlewares);
190191
return this;
191192
}
192193

193-
public ClientBuilder withMiddleware(Middleware middleware, Middleware... middlewares) {
194+
public ClientBuilder withMiddleware(final Middleware middleware, final Middleware... middlewares) {
194195
this.middlewares = new ArrayList<>(Collections.singletonList(middleware));
195196
if (middlewares.length > 0) {
196197
this.middlewares.addAll(Arrays.asList(middlewares));
197198
}
198199
return this;
199200
}
200201

201-
public ClientBuilder addMiddlewares(List<Middleware> middlewares) {
202+
public ClientBuilder addMiddlewares(final List<Middleware> middlewares) {
202203
this.middlewares.addAll(middlewares);
203204
return this;
204205
}
205206

206-
public ClientBuilder addMiddleware(Middleware middleware, Middleware... middlewares) {
207+
public ClientBuilder addMiddleware(final Middleware middleware, final Middleware... middlewares) {
207208
this.middlewares.add(middleware);
208209
if (middlewares.length > 0) {
209210
this.middlewares.addAll(Arrays.asList(middlewares));
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
2+
package io.vrap.rmf.base.client;
3+
4+
import java.time.Duration;
5+
import java.util.concurrent.CompletableFuture;
6+
7+
public interface ClientRequestCommand<TResult> {
8+
CompletableFuture<ApiHttpResponse<TResult>> execute(final ApiHttpClient client);
9+
10+
ApiHttpResponse<TResult> executeBlocking(final ApiHttpClient client);
11+
12+
ApiHttpResponse<TResult> executeBlocking(final ApiHttpClient client, final Duration timeout);
13+
}

0 commit comments

Comments
 (0)