Skip to content
This repository was archived by the owner on Mar 7, 2020. It is now read-only.

Commit 39cd297

Browse files
skarpenkokptfh
authored andcommitted
Remove generic parameter from ReactiveHttpResponse
1 parent 1f11f8c commit 39cd297

14 files changed

Lines changed: 99 additions & 101 deletions

feign-reactor-core/src/main/java/feign/reactor/ReactiveClientMethodHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public class ReactiveClientMethodHandler implements ReactiveMethodHandler {
4444

4545
private final Target target;
4646
private final MethodMetadata methodMetadata;
47-
private final ReactiveHttpClient<Object> reactiveClient;
47+
private final ReactiveHttpClient reactiveClient;
4848
private final Function<Map<String, ?>, String> pathExpander;
4949
private final Map<String, List<Function<Map<String, ?>, String>>> headerExpanders;
5050
private final Map<String, Collection<String>> queriesAll;

feign-reactor-core/src/main/java/feign/reactor/ReactiveFeign.java

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,8 @@ protected ReactiveFeign(
6363
this.factory = factory;
6464
}
6565

66-
public static <T> Builder<T> builder(
67-
Function<MethodMetadata, ReactiveHttpClient<T>> clientFactory) {
68-
return new Builder<>(clientFactory);
66+
public static <T> Builder<T> builder() {
67+
return new Builder<>();
6968
}
7069

7170
@SuppressWarnings("unchecked")
@@ -102,9 +101,9 @@ public <T> T newInstance(Target<T> target) {
102101
*/
103102
public static class Builder<T> {
104103
protected Contract contract = new ReactiveDelegatingContract(new Contract.Default());
105-
protected final Function<MethodMetadata, ReactiveHttpClient<T>> clientFactory;
104+
protected Function<MethodMetadata, ReactiveHttpClient> clientFactory;
106105
protected ReactiveHttpRequestInterceptor requestInterceptor;
107-
protected BiFunction<MethodMetadata, ReactiveHttpResponse<T>, ReactiveHttpResponse<T>> responseMapper;
106+
protected BiFunction<MethodMetadata, ReactiveHttpResponse, ReactiveHttpResponse> responseMapper;
108107
protected ReactiveStatusHandler statusHandler =
109108
ReactiveStatusHandlers.defaultFeign(new ErrorDecoder.Default());
110109
protected InvocationHandlerFactory invocationHandlerFactory =
@@ -114,10 +113,12 @@ public static class Builder<T> {
114113

115114
private Function<Flux<Throwable>, Flux<Throwable>> retryFunction;
116115

117-
public Builder(Function<MethodMetadata, ReactiveHttpClient<T>> clientFactory) {
118-
checkNotNull(clientFactory,
119-
"clientFactory wasn't provided in ReactiveFeign builder");
116+
protected Builder(){
117+
}
118+
119+
public Builder<T> clientFactory(Function<MethodMetadata, ReactiveHttpClient> clientFactory) {
120120
this.clientFactory = clientFactory;
121+
return this;
121122
}
122123

123124
/**
@@ -131,8 +132,7 @@ public Builder<T> contract(final Contract contract) {
131132
return this;
132133
}
133134

134-
public Builder<T> requestInterceptor(
135-
ReactiveHttpRequestInterceptor requestInterceptor) {
135+
public Builder<T> requestInterceptor(ReactiveHttpRequestInterceptor requestInterceptor) {
136136
this.requestInterceptor = requestInterceptor;
137137
return this;
138138
}
@@ -165,7 +165,7 @@ public Builder<T> statusHandler(ReactiveStatusHandler statusHandler) {
165165
* @param responseMapper
166166
* @return
167167
*/
168-
public Builder<T> responseMapper(BiFunction<MethodMetadata, ReactiveHttpResponse<T>, ReactiveHttpResponse<T>> responseMapper) {
168+
public Builder<T> responseMapper(BiFunction<MethodMetadata, ReactiveHttpResponse, ReactiveHttpResponse> responseMapper) {
169169
this.responseMapper = responseMapper;
170170
return this;
171171
}
@@ -203,8 +203,8 @@ public T target(final Target<T> target) {
203203
}
204204

205205
protected ReactiveFeign build() {
206-
final ParseHandlersByName handlersByName = new ParseHandlersByName(contract,
207-
buildReactiveMethodHandlerFactory());
206+
final ParseHandlersByName handlersByName = new ParseHandlersByName(
207+
contract, buildReactiveMethodHandlerFactory());
208208
return new ReactiveFeign(handlersByName, invocationHandlerFactory);
209209
}
210210

@@ -215,7 +215,10 @@ protected ReactiveMethodHandlerFactory buildReactiveMethodHandlerFactory() {
215215
protected ReactiveClientFactory buildReactiveClientFactory() {
216216
return methodMetadata -> {
217217

218-
ReactiveHttpClient<T> reactiveClient = clientFactory.apply(methodMetadata);
218+
checkNotNull(clientFactory,
219+
"clientFactory wasn't provided in ReactiveFeign builder");
220+
221+
ReactiveHttpClient reactiveClient = clientFactory.apply(methodMetadata);
219222

220223
if (requestInterceptor != null) {
221224
reactiveClient = intercept(reactiveClient, requestInterceptor);

feign-reactor-core/src/main/java/feign/reactor/client/DelegatingReactiveHttpResponse.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@
2020
/**
2121
* @author Sergii Karpenko
2222
*/
23-
abstract public class DelegatingReactiveHttpResponse<T> implements ReactiveHttpResponse<T> {
23+
abstract public class DelegatingReactiveHttpResponse<T> implements ReactiveHttpResponse {
2424

25-
private final ReactiveHttpResponse<T> response;
25+
private final ReactiveHttpResponse response;
2626

27-
protected DelegatingReactiveHttpResponse(ReactiveHttpResponse<T> response) {
27+
protected DelegatingReactiveHttpResponse(ReactiveHttpResponse response) {
2828
this.response = response;
2929
}
3030

31-
protected ReactiveHttpResponse<T> getResponse() {
31+
protected ReactiveHttpResponse getResponse() {
3232
return response;
3333
}
3434

feign-reactor-core/src/main/java/feign/reactor/client/InterceptorReactiveHttpClient.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,10 @@
1818
*
1919
* @author Sergii Karpenko
2020
*/
21-
public class InterceptorReactiveHttpClient<T> {
21+
public class InterceptorReactiveHttpClient {
2222

23-
public static <T> ReactiveHttpClient<T> intercept(
24-
ReactiveHttpClient<T> reactiveHttpClient,
25-
ReactiveHttpRequestInterceptor interceptor) {
23+
public static ReactiveHttpClient intercept(ReactiveHttpClient reactiveHttpClient,
24+
ReactiveHttpRequestInterceptor interceptor) {
2625
return request -> reactiveHttpClient.executeRequest(interceptor.apply(request));
2726
}
2827

feign-reactor-core/src/main/java/feign/reactor/client/LoggerReactiveHttpClient.java

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -33,26 +33,25 @@
3333
*
3434
* @author Sergii Karpenko
3535
*/
36-
public class LoggerReactiveHttpClient<T> implements ReactiveHttpClient<T> {
36+
public class LoggerReactiveHttpClient implements ReactiveHttpClient {
3737

3838
private final org.slf4j.Logger logger = LoggerFactory.getLogger(LoggerReactiveHttpClient.class);
3939

40-
private final ReactiveHttpClient<T> reactiveClient;
40+
private final ReactiveHttpClient reactiveClient;
4141
private final String methodTag;
4242

43-
public static <T> ReactiveHttpClient<T> log(ReactiveHttpClient<T> reactiveClient,
44-
MethodMetadata methodMetadata) {
45-
return new LoggerReactiveHttpClient<>(reactiveClient, methodMetadata);
43+
public static ReactiveHttpClient log(ReactiveHttpClient reactiveClient, MethodMetadata methodMetadata) {
44+
return new LoggerReactiveHttpClient(reactiveClient, methodMetadata);
4645
}
4746

48-
private LoggerReactiveHttpClient(ReactiveHttpClient<T> reactiveClient,
47+
private LoggerReactiveHttpClient(ReactiveHttpClient reactiveClient,
4948
MethodMetadata methodMetadata) {
5049
this.reactiveClient = reactiveClient;
5150
this.methodTag = methodTag(methodMetadata);
5251
}
5352

5453
@Override
55-
public Mono<ReactiveHttpResponse<T>> executeRequest(ReactiveHttpRequest request) {
54+
public Mono<ReactiveHttpResponse> executeRequest(ReactiveHttpRequest request) {
5655

5756
AtomicLong start = new AtomicLong(-1);
5857
return Mono
@@ -103,7 +102,7 @@ private ReactiveHttpRequest logRequest(
103102
}
104103

105104
private void logResponseHeaders(String feignMethodTag,
106-
ReactiveHttpResponse<?> httpResponse,
105+
ReactiveHttpResponse httpResponse,
107106
long elapsedTime) {
108107
if (logger.isTraceEnabled()) {
109108
logger.trace("[{}] RESPONSE HEADERS\n{}", feignMethodTag,
@@ -129,24 +128,23 @@ private void logResponseBodyAndTime(String feignMethodTag, Object response, long
129128
}
130129
}
131130

132-
private class LoggerReactiveHttpResponse extends DelegatingReactiveHttpResponse<T> {
131+
private class LoggerReactiveHttpResponse extends DelegatingReactiveHttpResponse {
133132

134133
private final AtomicLong start;
135134

136-
private LoggerReactiveHttpResponse(ReactiveHttpResponse<T> response, AtomicLong start) {
135+
private LoggerReactiveHttpResponse(ReactiveHttpResponse response, AtomicLong start) {
137136
super(response);
138137
this.start = start;
139138
}
140139

141140
@Override
142-
public Publisher<T> body() {
143-
144-
Publisher<T> publisher = getResponse().body();
141+
public Publisher<Object> body() {
142+
Publisher<Object> publisher = getResponse().body();
145143

146144
if (publisher instanceof Mono) {
147-
return ((Mono<T>) publisher).doOnNext(responseBodyLogger(start));
145+
return ((Mono<Object>) publisher).doOnNext(responseBodyLogger(start));
148146
} else {
149-
return ((Flux<T>) publisher).doOnNext(responseBodyLogger(start));
147+
return ((Flux<Object>) publisher).doOnNext(responseBodyLogger(start));
150148
}
151149
}
152150

@@ -157,7 +155,7 @@ public Mono<byte[]> bodyData() {
157155
return publisher.doOnNext(responseBodyLogger(start));
158156
}
159157

160-
private <V> Consumer<V> responseBodyLogger(AtomicLong start) {
158+
private Consumer<Object> responseBodyLogger(AtomicLong start) {
161159
return result -> logResponseBodyAndTime(methodTag, result,
162160
System.currentTimeMillis() - start.get());
163161
}
@@ -170,7 +168,7 @@ private static MessageSupplier msg(Supplier<?> supplier) {
170168
static class MessageSupplier {
171169
private Supplier<?> supplier;
172170

173-
public MessageSupplier(Supplier<?> supplier) {
171+
MessageSupplier(Supplier<?> supplier) {
174172
this.supplier = supplier;
175173
}
176174

feign-reactor-core/src/main/java/feign/reactor/client/ReactiveHttpClient.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,16 @@
2222
*
2323
* @author Sergii Karpenko
2424
*/
25-
public interface ReactiveHttpClient<T> {
25+
public interface ReactiveHttpClient {
2626

27-
Mono<ReactiveHttpResponse<T>> executeRequest(ReactiveHttpRequest request);
27+
Mono<ReactiveHttpResponse> executeRequest(ReactiveHttpRequest request);
2828

29-
default Publisher<T> executeRequest(ReactiveHttpRequest request, Type returnPublisherType) {
30-
Mono<ReactiveHttpResponse<T>> response = executeRequest(request);
29+
default Publisher<Object> executeRequest(ReactiveHttpRequest request, Type returnPublisherType) {
30+
Mono<ReactiveHttpResponse> response = executeRequest(request);
3131
if (returnPublisherType == Mono.class) {
32-
return response.flatMap(resp -> (Mono<T>) resp.body());
32+
return response.flatMap(resp -> (Mono<Object>) resp.body());
3333
} else {
34-
return response.flatMapMany(resp -> resp.body());
34+
return response.flatMapMany(ReactiveHttpResponse::body);
3535
}
3636
}
3737
}

feign-reactor-core/src/main/java/feign/reactor/client/ReactiveHttpResponse.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@
2323
*
2424
* @author Sergii Karpenko
2525
*/
26-
public interface ReactiveHttpResponse<T> {
26+
public interface ReactiveHttpResponse {
2727

2828
int status();
2929

3030
Map<String, List<String>> headers();
3131

32-
Publisher<T> body();
32+
Publisher<Object> body();
3333

3434
/**
3535
* used by error decoders

feign-reactor-core/src/main/java/feign/reactor/client/ResponseMappers.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@
2626
*/
2727
public class ResponseMappers {
2828

29-
public static <T> BiFunction<MethodMetadata, ReactiveHttpResponse<T>, ReactiveHttpResponse<T>> ignore404() {
30-
return (MethodMetadata methodMetadata, ReactiveHttpResponse<T> response) -> {
29+
public static <T> BiFunction<MethodMetadata, ReactiveHttpResponse, ReactiveHttpResponse> ignore404() {
30+
return (MethodMetadata methodMetadata, ReactiveHttpResponse response) -> {
3131
if (response.status() == HttpStatus.SC_NOT_FOUND) {
3232
return new DelegatingReactiveHttpResponse<T>(response) {
3333
@Override
@@ -36,7 +36,7 @@ public int status() {
3636
}
3737

3838
@Override
39-
public Publisher<T> body() {
39+
public Publisher body() {
4040
return Mono.empty();
4141
}
4242
};
@@ -45,10 +45,10 @@ public Publisher<T> body() {
4545
};
4646
}
4747

48-
public static <T> ReactiveHttpClient<T> mapResponse(
49-
ReactiveHttpClient<T> reactiveHttpClient,
50-
MethodMetadata methodMetadata,
51-
BiFunction<MethodMetadata, ReactiveHttpResponse<T>, ReactiveHttpResponse<T>> responseMapper) {
48+
public static ReactiveHttpClient mapResponse(
49+
ReactiveHttpClient reactiveHttpClient,
50+
MethodMetadata methodMetadata,
51+
BiFunction<MethodMetadata, ReactiveHttpResponse, ReactiveHttpResponse> responseMapper) {
5252
return request -> reactiveHttpClient.executeRequest(request)
5353
.map(response -> responseMapper.apply(methodMetadata, response));
5454
}

feign-reactor-core/src/main/java/feign/reactor/client/RetryReactiveHttpClient.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,23 +29,23 @@
2929
*
3030
* @author Sergii Karpenko
3131
*/
32-
public class RetryReactiveHttpClient<T> implements ReactiveHttpClient<T> {
32+
public class RetryReactiveHttpClient<T> implements ReactiveHttpClient {
3333

3434
private static final org.slf4j.Logger logger = LoggerFactory
3535
.getLogger(RetryReactiveHttpClient.class);
3636

3737
private final String feignMethodTag;
38-
private final ReactiveHttpClient<T> reactiveClient;
38+
private final ReactiveHttpClient reactiveClient;
3939
private final Function<Flux<Throwable>, Flux<?>> retryFunction;
4040

41-
public static <T> ReactiveHttpClient<T> retry(
42-
ReactiveHttpClient<T> reactiveClient,
41+
public static <T> ReactiveHttpClient retry(
42+
ReactiveHttpClient reactiveClient,
4343
MethodMetadata methodMetadata,
4444
Function<Flux<Throwable>, Flux<Throwable>> retryFunction) {
4545
return new RetryReactiveHttpClient<>(reactiveClient, methodMetadata, retryFunction);
4646
}
4747

48-
private RetryReactiveHttpClient(ReactiveHttpClient<T> reactiveClient,
48+
private RetryReactiveHttpClient(ReactiveHttpClient reactiveClient,
4949
MethodMetadata methodMetadata,
5050
Function<Flux<Throwable>, Flux<Throwable>> retryFunction) {
5151
this.reactiveClient = reactiveClient;
@@ -54,17 +54,17 @@ private RetryReactiveHttpClient(ReactiveHttpClient<T> reactiveClient,
5454
}
5555

5656
@Override
57-
public Publisher<T> executeRequest(ReactiveHttpRequest request, Type returnPublisherType) {
58-
Publisher<T> response = reactiveClient.executeRequest(request, returnPublisherType);
57+
public Publisher<Object> executeRequest(ReactiveHttpRequest request, Type returnPublisherType) {
58+
Publisher<Object> response = reactiveClient.executeRequest(request, returnPublisherType);
5959
if (returnPublisherType == Mono.class) {
60-
return ((Mono<T>) response).retryWhen(retryFunction).onErrorMap(outOfRetries());
60+
return ((Mono<Object>) response).retryWhen(retryFunction).onErrorMap(outOfRetries());
6161
} else {
62-
return ((Flux<T>) response).retryWhen(retryFunction).onErrorMap(outOfRetries());
62+
return ((Flux<Object>) response).retryWhen(retryFunction).onErrorMap(outOfRetries());
6363
}
6464
}
6565

6666
@Override
67-
public Mono<ReactiveHttpResponse<T>> executeRequest(ReactiveHttpRequest request) {
67+
public Mono<ReactiveHttpResponse> executeRequest(ReactiveHttpRequest request) {
6868
return reactiveClient.executeRequest(request);
6969
}
7070

0 commit comments

Comments
 (0)