Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor method signature of MethodHandler.Factory.create #1822

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
7 changes: 3 additions & 4 deletions core/src/main/java/feign/AsyncFeign.java
Expand Up @@ -205,11 +205,10 @@ public AsyncFeign<C> build() {
new AsynchronousMethodHandler.Factory<>(
client, retryer, requestInterceptors,
responseHandler, logger, logLevel,
propagationPolicy, methodInfoResolver);
propagationPolicy, methodInfoResolver,
options, decoder, errorDecoder);
final ParseHandlersByName<C> handlersByName =
new ParseHandlersByName<>(contract, options, encoder,
decoder, queryMapEncoder,
errorDecoder, methodHandlerFactory);
new ParseHandlersByName<>(contract, encoder, queryMapEncoder, methodHandlerFactory);
final ReflectiveFeign<C> feign =
new ReflectiveFeign<>(handlersByName, invocationHandlerFactory, defaultContextSupplier);
return new AsyncFeign<>(feign);
Expand Down
14 changes: 10 additions & 4 deletions core/src/main/java/feign/AsynchronousMethodHandler.java
Expand Up @@ -246,12 +246,18 @@ static class Factory<C> implements MethodHandler.Factory<C> {
private final Logger.Level logLevel;
private final ExceptionPropagationPolicy propagationPolicy;
private final MethodInfoResolver methodInfoResolver;
private final Options options;
private final Decoder decoder;
private final ErrorDecoder errorDecoder;

Factory(AsyncClient<C> client, Retryer retryer, List<RequestInterceptor> requestInterceptors,
AsyncResponseHandler responseHandler,
Logger logger, Logger.Level logLevel,
ExceptionPropagationPolicy propagationPolicy,
MethodInfoResolver methodInfoResolver) {
MethodInfoResolver methodInfoResolver,
Options options,
Decoder decoder,
ErrorDecoder errorDecoder) {
this.client = checkNotNull(client, "client");
this.retryer = checkNotNull(retryer, "retryer");
this.requestInterceptors = checkNotNull(requestInterceptors, "requestInterceptors");
Expand All @@ -260,14 +266,14 @@ static class Factory<C> implements MethodHandler.Factory<C> {
this.logLevel = checkNotNull(logLevel, "logLevel");
this.propagationPolicy = propagationPolicy;
this.methodInfoResolver = methodInfoResolver;
this.options = checkNotNull(options, "options");
this.errorDecoder = checkNotNull(errorDecoder, "errorDecoder");
this.decoder = checkNotNull(decoder, "decoder");
}

public MethodHandler create(Target<?> target,
MethodMetadata md,
RequestTemplate.Factory buildTemplateFromArgs,
Options options,
Decoder decoder,
ErrorDecoder errorDecoder,
C requestContext) {
return new AsynchronousMethodHandler<C>(target, client, retryer, requestInterceptors,
logger, logLevel, md, buildTemplateFromArgs, options, responseHandler,
Expand Down
6 changes: 3 additions & 3 deletions core/src/main/java/feign/Feign.java
Expand Up @@ -203,10 +203,10 @@ public Feign build() {
MethodHandler.Factory<Object> synchronousMethodHandlerFactory =
new SynchronousMethodHandler.Factory(client, retryer, requestInterceptors,
responseInterceptor, logger, logLevel, dismiss404, closeAfterDecode,
propagationPolicy);
propagationPolicy, options, decoder, errorDecoder);
ParseHandlersByName<Object> handlersByName =
new ParseHandlersByName<>(contract, options, encoder, decoder, queryMapEncoder,
errorDecoder, synchronousMethodHandlerFactory);
new ParseHandlersByName<>(contract, encoder, queryMapEncoder,
synchronousMethodHandlerFactory);
return new ReflectiveFeign<>(handlersByName, invocationHandlerFactory, () -> null);
}
}
Expand Down
3 changes: 0 additions & 3 deletions core/src/main/java/feign/InvocationHandlerFactory.java
Expand Up @@ -38,9 +38,6 @@ interface Factory<C> {
MethodHandler create(Target<?> target,
MethodMetadata md,
RequestTemplate.Factory buildTemplateFromArgs,
Request.Options options,
Decoder decoder,
ErrorDecoder errorDecoder,
C requestContext);
}
}
Expand Down
13 changes: 1 addition & 12 deletions core/src/main/java/feign/ReflectiveFeign.java
Expand Up @@ -26,7 +26,6 @@
import java.util.concurrent.CompletableFuture;
import feign.InvocationHandlerFactory.MethodHandler;
import feign.Param.Expander;
import feign.Request.Options;
import feign.codec.*;
import feign.template.UriUtils;

Expand Down Expand Up @@ -122,28 +121,19 @@ public String toString() {
static final class ParseHandlersByName<C> {

private final Contract contract;
private final Options options;
private final Encoder encoder;
private final Decoder decoder;
private final ErrorDecoder errorDecoder;
private final QueryMapEncoder queryMapEncoder;
private final MethodHandler.Factory<C> factory;

ParseHandlersByName(
Contract contract,
Options options,
Encoder encoder,
Decoder decoder,
QueryMapEncoder queryMapEncoder,
ErrorDecoder errorDecoder,
MethodHandler.Factory<C> factory) {
this.contract = contract;
this.options = options;
this.factory = factory;
this.errorDecoder = errorDecoder;
this.queryMapEncoder = queryMapEncoder;
this.encoder = checkNotNull(encoder, "encoder");
this.decoder = checkNotNull(decoder, "decoder");
}

public Map<Method, MethodHandler> apply(Target target, C requestContext) {
Expand Down Expand Up @@ -180,8 +170,7 @@ private MethodHandler createMethodHandler(final Target<?> target,
}

BuildTemplateByResolvingArgs buildTemplate = getBuildTemplate(target, md);
return factory.create(
target, md, buildTemplate, options, decoder, errorDecoder, requestContext);
return factory.create(target, md, buildTemplate, requestContext);
}

private BuildTemplateByResolvingArgs getBuildTemplate(Target target, MethodMetadata md) {
Expand Down
14 changes: 10 additions & 4 deletions core/src/main/java/feign/SynchronousMethodHandler.java
Expand Up @@ -150,11 +150,17 @@ static class Factory implements MethodHandler.Factory<Object> {
private final boolean dismiss404;
private final boolean closeAfterDecode;
private final ExceptionPropagationPolicy propagationPolicy;
private final Options options;
private final Decoder decoder;
private final ErrorDecoder errorDecoder;

Factory(Client client, Retryer retryer, List<RequestInterceptor> requestInterceptors,
ResponseInterceptor responseInterceptor,
Logger logger, Logger.Level logLevel, boolean dismiss404, boolean closeAfterDecode,
ExceptionPropagationPolicy propagationPolicy) {
ExceptionPropagationPolicy propagationPolicy,
Options options,
Decoder decoder,
ErrorDecoder errorDecoder) {
this.client = checkNotNull(client, "client");
this.retryer = checkNotNull(retryer, "retryer");
this.requestInterceptors = checkNotNull(requestInterceptors, "requestInterceptors");
Expand All @@ -164,14 +170,14 @@ static class Factory implements MethodHandler.Factory<Object> {
this.dismiss404 = dismiss404;
this.closeAfterDecode = closeAfterDecode;
this.propagationPolicy = propagationPolicy;
this.options = checkNotNull(options, "options");
this.errorDecoder = checkNotNull(errorDecoder, "errorDecoder");
this.decoder = checkNotNull(decoder, "decoder");
}

public MethodHandler create(Target<?> target,
MethodMetadata md,
RequestTemplate.Factory buildTemplateFromArgs,
Options options,
Decoder decoder,
ErrorDecoder errorDecoder,
Object requestContext) {
return new SynchronousMethodHandler(target, client, retryer, requestInterceptors,
responseInterceptor, logger, logLevel, md, buildTemplateFromArgs, options, decoder,
Expand Down