diff --git a/annotation-error-decoder/pom.xml b/annotation-error-decoder/pom.xml index bbbf6311f9..71b7b78e77 100644 --- a/annotation-error-decoder/pom.xml +++ b/annotation-error-decoder/pom.xml @@ -20,7 +20,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT feign-annotation-error-decoder diff --git a/apt-test-generator/pom.xml b/apt-test-generator/pom.xml index 560ac2bba6..89d4a75a6a 100644 --- a/apt-test-generator/pom.xml +++ b/apt-test-generator/pom.xml @@ -20,7 +20,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT io.github.openfeign.experimental diff --git a/benchmark/pom.xml b/benchmark/pom.xml index 6e0f6c19cf..a7df20c71b 100644 --- a/benchmark/pom.xml +++ b/benchmark/pom.xml @@ -20,7 +20,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT feign-benchmark diff --git a/core/pom.xml b/core/pom.xml index f05c04c9c3..0dd1f365f4 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -20,7 +20,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT feign-core @@ -109,6 +109,14 @@ + + org.apache.maven.plugins + maven-compiler-plugin + + 11 + 11 + + diff --git a/core/src/main/java/feign/AsyncFeign.java b/core/src/main/java/feign/AsyncFeign.java index 6733766d78..1ff3b043f6 100644 --- a/core/src/main/java/feign/AsyncFeign.java +++ b/core/src/main/java/feign/AsyncFeign.java @@ -200,7 +200,7 @@ public AsyncFeign internalBuild() { decoder, errorDecoder, dismiss404, - closeAfterDecode, decodeVoid, responseInterceptor), + closeAfterDecode, decodeVoid, responseInterceptorChain()), AsyncResponseHandler.class, capabilities); diff --git a/core/src/main/java/feign/AsyncResponseHandler.java b/core/src/main/java/feign/AsyncResponseHandler.java index 2515e1435e..242c83aeee 100644 --- a/core/src/main/java/feign/AsyncResponseHandler.java +++ b/core/src/main/java/feign/AsyncResponseHandler.java @@ -27,13 +27,11 @@ class AsyncResponseHandler { private final ResponseHandler responseHandler; - AsyncResponseHandler(Level logLevel, Logger logger, Decoder decoder, - ErrorDecoder errorDecoder, boolean dismiss404, boolean closeAfterDecode, boolean decodeVoid, - ResponseInterceptor responseInterceptor) { - this.responseHandler = new ResponseHandler( - logLevel, logger, decoder, - errorDecoder, dismiss404, closeAfterDecode, decodeVoid, - responseInterceptor); + AsyncResponseHandler(Level logLevel, Logger logger, Decoder decoder, ErrorDecoder errorDecoder, + boolean dismiss404, boolean closeAfterDecode, boolean decodeVoid, + ResponseInterceptor.Chain executionChain) { + this.responseHandler = new ResponseHandler(logLevel, logger, decoder, errorDecoder, dismiss404, + closeAfterDecode, decodeVoid, executionChain); } public CompletableFuture handleResponse(String configKey, diff --git a/core/src/main/java/feign/BaseBuilder.java b/core/src/main/java/feign/BaseBuilder.java index e8e0ed1d8b..b30b245bf7 100644 --- a/core/src/main/java/feign/BaseBuilder.java +++ b/core/src/main/java/feign/BaseBuilder.java @@ -35,7 +35,7 @@ public abstract class BaseBuilder, T> implements Clo protected final List requestInterceptors = new ArrayList<>(); - protected ResponseInterceptor responseInterceptor = ResponseInterceptor.DEFAULT; + protected final List responseInterceptors = new ArrayList<>(); protected Logger.Level logLevel = Logger.Level.NONE; protected Contract contract = new Contract.Default(); protected Retryer retryer = new Retryer.Default(); @@ -203,11 +203,23 @@ public B requestInterceptors(Iterable requestInterceptors) { return thisB; } + /** + * Sets the full set of request interceptors for the builder, overwriting any previous + * interceptors. + */ + public B responseInterceptors(Iterable responseInterceptors) { + this.responseInterceptors.clear(); + for (ResponseInterceptor responseInterceptor : responseInterceptors) { + this.responseInterceptors.add(responseInterceptor); + } + return thisB; + } + /** * Adds a single response interceptor to the builder. */ public B responseInterceptor(ResponseInterceptor responseInterceptor) { - this.responseInterceptor = responseInterceptor; + this.responseInterceptors.add(responseInterceptor); return thisB; } @@ -288,4 +300,18 @@ public final T build() { } protected abstract T internalBuild(); + + protected ResponseInterceptor.Chain responseInterceptorChain() { + ResponseInterceptor.Chain endOfChain = + ResponseInterceptor.Chain.DEFAULT; + ResponseInterceptor.Chain executionChain = this.responseInterceptors.stream() + .reduce(ResponseInterceptor::andThen) + .map(interceptor -> interceptor.apply(endOfChain)) + .orElse(endOfChain); + + return (ResponseInterceptor.Chain) Capability.enrich(executionChain, + ResponseInterceptor.Chain.class, capabilities); + } + + } diff --git a/core/src/main/java/feign/Capability.java b/core/src/main/java/feign/Capability.java index 417246bdde..63fae0708b 100644 --- a/core/src/main/java/feign/Capability.java +++ b/core/src/main/java/feign/Capability.java @@ -90,6 +90,10 @@ default ResponseInterceptor enrich(ResponseInterceptor responseInterceptor) { return responseInterceptor; } + default ResponseInterceptor.Chain enrich(ResponseInterceptor.Chain chain) { + return chain; + } + default Logger enrich(Logger logger) { return logger; } diff --git a/core/src/main/java/feign/Feign.java b/core/src/main/java/feign/Feign.java index 8ef8e54e5c..b107af9f8d 100644 --- a/core/src/main/java/feign/Feign.java +++ b/core/src/main/java/feign/Feign.java @@ -205,7 +205,7 @@ public T target(Target target) { public Feign internalBuild() { final ResponseHandler responseHandler = new ResponseHandler(logLevel, logger, decoder, errorDecoder, - dismiss404, closeAfterDecode, decodeVoid, responseInterceptor); + dismiss404, closeAfterDecode, decodeVoid, responseInterceptorChain()); MethodHandler.Factory methodHandlerFactory = new SynchronousMethodHandler.Factory(client, retryer, requestInterceptors, responseHandler, logger, logLevel, propagationPolicy, diff --git a/core/src/main/java/feign/RedirectionInterceptor.java b/core/src/main/java/feign/RedirectionInterceptor.java index d6a2c8bc4e..e8ff3602ad 100755 --- a/core/src/main/java/feign/RedirectionInterceptor.java +++ b/core/src/main/java/feign/RedirectionInterceptor.java @@ -13,6 +13,7 @@ */ package feign; +import java.io.IOException; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.Collection; @@ -26,7 +27,7 @@ */ public class RedirectionInterceptor implements ResponseInterceptor { @Override - public Object aroundDecode(InvocationContext invocationContext) throws Exception { + public Object intercept(InvocationContext invocationContext, Chain chain) throws Exception { Response response = invocationContext.response(); int status = response.status(); Object returnValue = null; @@ -44,7 +45,7 @@ public Object aroundDecode(InvocationContext invocationContext) throws Exception } } if (returnValue == null) { - return invocationContext.proceed(); + return chain.next(invocationContext); } else { response.close(); return returnValue; diff --git a/core/src/main/java/feign/Request.java b/core/src/main/java/feign/Request.java index d8d0478405..b236caa134 100644 --- a/core/src/main/java/feign/Request.java +++ b/core/src/main/java/feign/Request.java @@ -50,6 +50,7 @@ public boolean isWithBody() { } public enum ProtocolVersion { + HTTP_1_0("HTTP/1.0"), HTTP_1_1("HTTP/1.1"), HTTP_2("HTTP/2.0"), MOCK; final String protocolVersion; @@ -66,6 +67,7 @@ public enum ProtocolVersion { public String toString() { return protocolVersion; } + } /** diff --git a/core/src/main/java/feign/ResponseHandler.java b/core/src/main/java/feign/ResponseHandler.java index 05de94444c..b9e1d5876d 100755 --- a/core/src/main/java/feign/ResponseHandler.java +++ b/core/src/main/java/feign/ResponseHandler.java @@ -13,13 +13,13 @@ */ package feign; +import static feign.FeignException.errorReading; +import static feign.Util.ensureClosed; import feign.Logger.Level; import feign.codec.Decoder; import feign.codec.ErrorDecoder; import java.io.IOException; import java.lang.reflect.Type; -import static feign.FeignException.errorReading; -import static feign.Util.ensureClosed; /** * The response handler that is used to provide synchronous support on top of standard response @@ -37,11 +37,11 @@ public class ResponseHandler { private final boolean decodeVoid; - private final ResponseInterceptor responseInterceptor; + private final ResponseInterceptor.Chain executionChain; - public ResponseHandler(Level logLevel, Logger logger, Decoder decoder, - ErrorDecoder errorDecoder, boolean dismiss404, boolean closeAfterDecode, boolean decodeVoid, - ResponseInterceptor responseInterceptor) { + public ResponseHandler(Level logLevel, Logger logger, Decoder decoder, ErrorDecoder errorDecoder, + boolean dismiss404, boolean closeAfterDecode, boolean decodeVoid, + ResponseInterceptor.Chain executionChain) { super(); this.logLevel = logLevel; this.logger = logger; @@ -50,7 +50,7 @@ public ResponseHandler(Level logLevel, Logger logger, Decoder decoder, this.dismiss404 = dismiss404; this.closeAfterDecode = closeAfterDecode; this.decodeVoid = decodeVoid; - this.responseInterceptor = responseInterceptor; + this.executionChain = executionChain; } public Object handleResponse(String configKey, @@ -60,7 +60,7 @@ public Object handleResponse(String configKey, throws Exception { try { response = logAndRebufferResponseIfNeeded(configKey, response, elapsedTime); - return responseInterceptor.aroundDecode( + return executionChain.next( new InvocationContext(configKey, decoder, errorDecoder, dismiss404, closeAfterDecode, decodeVoid, response, returnType)); } catch (final IOException e) { diff --git a/core/src/main/java/feign/ResponseInterceptor.java b/core/src/main/java/feign/ResponseInterceptor.java index 18aa3dd743..30cf61c63b 100755 --- a/core/src/main/java/feign/ResponseInterceptor.java +++ b/core/src/main/java/feign/ResponseInterceptor.java @@ -13,23 +13,63 @@ */ package feign; +import java.io.IOException; + /** * Zero or One {@code ResponseInterceptor} may be configured for purposes such as verify or modify * headers of response, verify the business status of decoded object. Once the interceptor is - * applied, {@link ResponseInterceptor#aroundDecode(InvocationContext)} is called around decode - * method called + * applied, {@link ResponseInterceptor#intercept(InvocationContext, Chain)} is called around decode + * method called import static feign.FeignException.errorReading; import + * feign.codec.DecodeException; import feign.codec.Decoder; import java.io.IOException; import + * java.lang.reflect.Type; import java.util.function.Function; + * */ public interface ResponseInterceptor { - ResponseInterceptor DEFAULT = InvocationContext::proceed; - /** * Called by {@link ResponseHandler} after refreshing the response and wrapped around the whole - * decode process, must either manually invoke {@link InvocationContext#proceed} or manually + * decode process, must either manually invoke {@link Chain#next(InvocationContext)} or manually * create a new response object * * @param invocationContext information surrounding the response being decoded * @return decoded response */ - Object aroundDecode(InvocationContext invocationContext) throws Exception; + Object intercept(InvocationContext invocationContext, Chain chain) throws Exception; + + /** + * Return a new {@link ResponseInterceptor} that invokes the current interceptor first and then + * the one that is passed in. + * + * @param nextInterceptor the interceptor to delegate to after the current + * @return a new interceptor that chains the two + */ + default ResponseInterceptor andThen(ResponseInterceptor nextInterceptor) { + return (ic, chain) -> intercept(ic, + nextContext -> nextInterceptor.intercept(nextContext, chain)); + } + + /** + * Contract for delegation to the rest of the chain. + */ + public interface Chain { + Chain DEFAULT = InvocationContext::proceed; + + /** + * Delegate to the rest of the chain to execute the request. + * + * @param context the request to execute the {@link Chain} . + * @return the response + */ + Object next(InvocationContext context) throws Exception; + } + + /** + * Apply this interceptor to the given {@code Chain} resulting in an intercepted chain. + * + * @param chain the chain to add interception around + * @return a new chain instance + */ + default Chain apply(Chain chain) { + return request -> intercept(request, chain); + } } diff --git a/core/src/main/java/feign/ResponseMapper.java b/core/src/main/java/feign/ResponseMapper.java index 994847b72f..f9ecfc5228 100644 --- a/core/src/main/java/feign/ResponseMapper.java +++ b/core/src/main/java/feign/ResponseMapper.java @@ -21,18 +21,18 @@ * * {@code * new ResponseMapper() { - * @Override - * public Response map(Response response, Type type) { - * try { - * return response - * .toBuilder() - * .body(Util.toString(response.body().asReader()).toUpperCase().getBytes()) - * .build(); - * } catch (IOException e) { - * throw new RuntimeException(e); - * } - * } - * }; + * @Override + * public Response map(Response response, Type type) { + * try { + * return response + * .toBuilder() + * .body(Util.toString(response.body().asReader()).toUpperCase().getBytes()) + * .build(); + * } catch (IOException e) { + * throw new RuntimeException(e); + * } + * } + * }; * } * */ diff --git a/core/src/test/java/feign/BaseBuilderTest.java b/core/src/test/java/feign/BaseBuilderTest.java index b513db302d..8f6f4dc5d2 100644 --- a/core/src/test/java/feign/BaseBuilderTest.java +++ b/core/src/test/java/feign/BaseBuilderTest.java @@ -28,7 +28,7 @@ public class BaseBuilderTest { public void checkEnrichTouchesAllAsyncBuilderFields() throws IllegalArgumentException, IllegalAccessException { test(AsyncFeign.builder().requestInterceptor(template -> { - }), 14); + }).responseInterceptor((ic, c) -> c.next(ic)), 14); } private void test(BaseBuilder, ?> builder, int expectedFieldsCount) @@ -43,6 +43,8 @@ private void test(BaseBuilder, ?> builder, int expectedFieldsCount) field.setAccessible(true); Object mockedValue = field.get(enriched); if (mockedValue instanceof List) { + assertThat((List) mockedValue).withFailMessage("Enriched list missing contents %s", field) + .isNotEmpty(); mockedValue = ((List) mockedValue).get(0); } assertTrue("Field was not enriched " + field, Mockito.mockingDetails(mockedValue) @@ -56,7 +58,7 @@ private void test(BaseBuilder, ?> builder, int expectedFieldsCount) public void checkEnrichTouchesAllBuilderFields() throws IllegalArgumentException, IllegalAccessException { test(Feign.builder().requestInterceptor(template -> { - }), 12); + }).responseInterceptor((ic, c) -> c.next(ic)), 12); } } diff --git a/core/src/test/java/feign/DefaultContractTest.java b/core/src/test/java/feign/DefaultContractTest.java index 1fe3cadf9a..3aac4ce104 100644 --- a/core/src/test/java/feign/DefaultContractTest.java +++ b/core/src/test/java/feign/DefaultContractTest.java @@ -26,8 +26,8 @@ import static org.assertj.core.data.MapEntry.entry; /** - * Tests interfaces defined per {@link Contract.Default} are interpreted into expected - * {@link feign .RequestTemplate template} instances. + * Tests interfaces defined per {@link Contract.Default} are interpreted into expected {@link feign + * .RequestTemplate template} instances. */ public class DefaultContractTest { diff --git a/core/src/test/java/feign/FeignTest.java b/core/src/test/java/feign/FeignTest.java index d839d8ac0a..f82d34ded9 100755 --- a/core/src/test/java/feign/FeignTest.java +++ b/core/src/test/java/feign/FeignTest.java @@ -1326,7 +1326,7 @@ TestInterface target(String url) { class ErrorInterceptor implements ResponseInterceptor { @Override - public Object aroundDecode(InvocationContext invocationContext) throws Exception { + public Object intercept(InvocationContext invocationContext, Chain chain) throws Exception { Response response = invocationContext.response(); if (300 <= response.status()) { if (String.class.equals(invocationContext.returnType())) { @@ -1335,7 +1335,7 @@ public Object aroundDecode(InvocationContext invocationContext) throws Exception return body; } } - return invocationContext.proceed(); + return chain.next(invocationContext); } } } diff --git a/dropwizard-metrics4/pom.xml b/dropwizard-metrics4/pom.xml index 5ee20dee0c..5e38d816ac 100644 --- a/dropwizard-metrics4/pom.xml +++ b/dropwizard-metrics4/pom.xml @@ -19,7 +19,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT feign-dropwizard-metrics4 Feign Dropwizard Metrics4 diff --git a/dropwizard-metrics5/pom.xml b/dropwizard-metrics5/pom.xml index 72e5bf6ff5..c1e3aacbc1 100644 --- a/dropwizard-metrics5/pom.xml +++ b/dropwizard-metrics5/pom.xml @@ -19,7 +19,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT feign-dropwizard-metrics5 Feign Dropwizard Metrics5 diff --git a/example-github-with-coroutine/pom.xml b/example-github-with-coroutine/pom.xml index 64134c78ed..02d2bdbf8f 100644 --- a/example-github-with-coroutine/pom.xml +++ b/example-github-with-coroutine/pom.xml @@ -20,7 +20,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT feign-example-github-with-coroutine diff --git a/example-github/pom.xml b/example-github/pom.xml index 19254695bb..dde9f519f5 100644 --- a/example-github/pom.xml +++ b/example-github/pom.xml @@ -20,7 +20,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT feign-example-github diff --git a/example-wikipedia-with-springboot/pom.xml b/example-wikipedia-with-springboot/pom.xml index 4c5494049c..550e65deb2 100644 --- a/example-wikipedia-with-springboot/pom.xml +++ b/example-wikipedia-with-springboot/pom.xml @@ -20,7 +20,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT feign-example-wikipedia-with-springboot diff --git a/example-wikipedia/pom.xml b/example-wikipedia/pom.xml index 94eae073eb..39f9b4460e 100644 --- a/example-wikipedia/pom.xml +++ b/example-wikipedia/pom.xml @@ -20,7 +20,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT io.github.openfeign diff --git a/googlehttpclient/pom.xml b/googlehttpclient/pom.xml index 1e8bae942b..38783e9ea3 100644 --- a/googlehttpclient/pom.xml +++ b/googlehttpclient/pom.xml @@ -20,7 +20,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT feign-googlehttpclient diff --git a/gson/pom.xml b/gson/pom.xml index a18d01eb3a..69fd07f2db 100644 --- a/gson/pom.xml +++ b/gson/pom.xml @@ -20,7 +20,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT feign-gson diff --git a/hc5/pom.xml b/hc5/pom.xml index 8d2fc8ecf9..a491141152 100644 --- a/hc5/pom.xml +++ b/hc5/pom.xml @@ -20,7 +20,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT feign-hc5 diff --git a/httpclient/pom.xml b/httpclient/pom.xml index 66d5715b95..e6b75bdd26 100644 --- a/httpclient/pom.xml +++ b/httpclient/pom.xml @@ -20,7 +20,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT feign-httpclient diff --git a/hystrix/pom.xml b/hystrix/pom.xml index 59914e7a9a..4b8da12388 100644 --- a/hystrix/pom.xml +++ b/hystrix/pom.xml @@ -20,7 +20,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT feign-hystrix diff --git a/jackson-jaxb/pom.xml b/jackson-jaxb/pom.xml index 1c374121f8..2773d6ee71 100644 --- a/jackson-jaxb/pom.xml +++ b/jackson-jaxb/pom.xml @@ -20,7 +20,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT feign-jackson-jaxb diff --git a/jackson-jr/pom.xml b/jackson-jr/pom.xml index b6bb0b019b..d2bc1e1a11 100644 --- a/jackson-jr/pom.xml +++ b/jackson-jr/pom.xml @@ -20,7 +20,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT feign-jackson-jr diff --git a/jackson/pom.xml b/jackson/pom.xml index 3bef3279dd..f648ca9152 100644 --- a/jackson/pom.xml +++ b/jackson/pom.xml @@ -20,7 +20,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT feign-jackson diff --git a/jakarta/pom.xml b/jakarta/pom.xml index 3b13d7ccea..45a8ebce1e 100644 --- a/jakarta/pom.xml +++ b/jakarta/pom.xml @@ -20,7 +20,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT feign-jakarta diff --git a/java11/pom.xml b/java11/pom.xml index 11cdf59713..6440ebb233 100644 --- a/java11/pom.xml +++ b/java11/pom.xml @@ -19,7 +19,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT feign-java11 diff --git a/jaxb-jakarta/pom.xml b/jaxb-jakarta/pom.xml index 0f75e0bb77..b2bd8be199 100644 --- a/jaxb-jakarta/pom.xml +++ b/jaxb-jakarta/pom.xml @@ -20,7 +20,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT feign-jaxb-jakarta diff --git a/jaxb/pom.xml b/jaxb/pom.xml index 9e9e0a72ce..e485140746 100644 --- a/jaxb/pom.xml +++ b/jaxb/pom.xml @@ -20,7 +20,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT feign-jaxb diff --git a/jaxrs/pom.xml b/jaxrs/pom.xml index b542357f19..e4ef261980 100644 --- a/jaxrs/pom.xml +++ b/jaxrs/pom.xml @@ -20,7 +20,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT feign-jaxrs diff --git a/jaxrs2/pom.xml b/jaxrs2/pom.xml index dd9f79a4c4..8835ebbf9c 100644 --- a/jaxrs2/pom.xml +++ b/jaxrs2/pom.xml @@ -20,7 +20,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT feign-jaxrs2 diff --git a/json/pom.xml b/json/pom.xml index 99dca7b753..488e76cf9a 100644 --- a/json/pom.xml +++ b/json/pom.xml @@ -20,7 +20,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT feign-json diff --git a/kotlin/pom.xml b/kotlin/pom.xml index 544ed3d465..52a40c4002 100644 --- a/kotlin/pom.xml +++ b/kotlin/pom.xml @@ -20,7 +20,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT feign-kotlin diff --git a/kotlin/src/main/java/feign/kotlin/CoroutineFeign.java b/kotlin/src/main/java/feign/kotlin/CoroutineFeign.java index 4e38016e4a..50f3a0e6dd 100644 --- a/kotlin/src/main/java/feign/kotlin/CoroutineFeign.java +++ b/kotlin/src/main/java/feign/kotlin/CoroutineFeign.java @@ -172,7 +172,7 @@ public CoroutineFeign internalBuild() { .queryMapEncoder(queryMapEncoder) .options(options) .requestInterceptors(requestInterceptors) - .responseInterceptor(responseInterceptor) + .responseInterceptors(responseInterceptors) .invocationHandlerFactory(invocationHandlerFactory) .defaultContextSupplier((AsyncContextSupplier) defaultContextSupplier) .methodInfoResolver(methodInfoResolver) diff --git a/micrometer/pom.xml b/micrometer/pom.xml index cef65be72d..1abb10cf0c 100644 --- a/micrometer/pom.xml +++ b/micrometer/pom.xml @@ -19,7 +19,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT feign-micrometer Feign Micrometer diff --git a/mock/pom.xml b/mock/pom.xml index b157a39be5..22bf755f1a 100644 --- a/mock/pom.xml +++ b/mock/pom.xml @@ -20,7 +20,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT feign-mock diff --git a/okhttp/pom.xml b/okhttp/pom.xml index 36508e852d..7bbdbcddb1 100644 --- a/okhttp/pom.xml +++ b/okhttp/pom.xml @@ -20,7 +20,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT feign-okhttp diff --git a/pom.xml b/pom.xml index 1d83ac9235..0806695491 100644 --- a/pom.xml +++ b/pom.xml @@ -19,7 +19,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT pom Feign (Parent) diff --git a/reactive/pom.xml b/reactive/pom.xml index 4c47603d56..234386d1ea 100644 --- a/reactive/pom.xml +++ b/reactive/pom.xml @@ -19,7 +19,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT feign-reactive-wrappers diff --git a/ribbon/pom.xml b/ribbon/pom.xml index 36c4d21541..2796061e21 100644 --- a/ribbon/pom.xml +++ b/ribbon/pom.xml @@ -20,7 +20,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT feign-ribbon diff --git a/sax/pom.xml b/sax/pom.xml index 07a3c68f86..68bd48fe0c 100644 --- a/sax/pom.xml +++ b/sax/pom.xml @@ -20,7 +20,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT feign-sax diff --git a/slf4j/pom.xml b/slf4j/pom.xml index 299861bbd9..e31f59a0ee 100644 --- a/slf4j/pom.xml +++ b/slf4j/pom.xml @@ -20,7 +20,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT feign-slf4j diff --git a/soap-jakarta/pom.xml b/soap-jakarta/pom.xml index 8678200ee5..a37ac7db05 100644 --- a/soap-jakarta/pom.xml +++ b/soap-jakarta/pom.xml @@ -20,7 +20,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT feign-soap-jakarta diff --git a/soap/pom.xml b/soap/pom.xml index 6c5220fb82..7f0c5c2cda 100644 --- a/soap/pom.xml +++ b/soap/pom.xml @@ -20,7 +20,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT feign-soap diff --git a/spring4/pom.xml b/spring4/pom.xml index 1ad7a4fc23..2d95f860c5 100644 --- a/spring4/pom.xml +++ b/spring4/pom.xml @@ -20,7 +20,7 @@ io.github.openfeign parent - 12.5-SNAPSHOT + 13.0-SNAPSHOT feign-spring4
* {@code * new ResponseMapper() { - * @Override - * public Response map(Response response, Type type) { - * try { - * return response - * .toBuilder() - * .body(Util.toString(response.body().asReader()).toUpperCase().getBytes()) - * .build(); - * } catch (IOException e) { - * throw new RuntimeException(e); - * } - * } - * }; + * @Override + * public Response map(Response response, Type type) { + * try { + * return response + * .toBuilder() + * .body(Util.toString(response.body().asReader()).toUpperCase().getBytes()) + * .build(); + * } catch (IOException e) { + * throw new RuntimeException(e); + * } + * } + * }; * } *