make messageConverters lazy in SpringDecoder and SpringEncoder

fixes gh-129
This commit is contained in:
Spencer Gibb
2015-01-14 09:36:27 -07:00
parent 8fb85f26ea
commit 6e078a88e8
4 changed files with 16 additions and 4 deletions

View File

@@ -258,6 +258,11 @@
<artifactId>bootstrap</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
</dependencies>
</dependencyManagement>

View File

@@ -135,6 +135,10 @@
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>

View File

@@ -17,6 +17,8 @@ import feign.Response;
import feign.codec.DecodeException;
import feign.codec.Decoder;
import javax.inject.Provider;
import static org.springframework.cloud.netflix.feign.FeignUtils.getHttpHeaders;
/**
@@ -25,7 +27,7 @@ import static org.springframework.cloud.netflix.feign.FeignUtils.getHttpHeaders;
public class SpringDecoder implements Decoder {
@Autowired
HttpMessageConverters messageConverters;
Provider<HttpMessageConverters> messageConverters;
public SpringDecoder() {
}
@@ -35,7 +37,7 @@ public class SpringDecoder implements Decoder {
if (type instanceof Class || type instanceof ParameterizedType) {
@SuppressWarnings({ "unchecked", "rawtypes" })
HttpMessageConverterExtractor<?> extractor = new HttpMessageConverterExtractor(
type, messageConverters.getConverters());
type, messageConverters.get().getConverters());
return extractor.extractData(new FeignResponseAdapter(response));
}

View File

@@ -15,6 +15,7 @@ import org.springframework.http.HttpOutputMessage;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import javax.inject.Provider;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
@@ -29,7 +30,7 @@ public class SpringEncoder implements Encoder {
private static final Logger logger = LoggerFactory.getLogger(SpringEncoder.class);
@Autowired
HttpMessageConverters messageConverters;
Provider<HttpMessageConverters> messageConverters;
public SpringEncoder() {
}
@@ -48,7 +49,7 @@ public class SpringEncoder implements Encoder {
requestContentType = MediaType.valueOf(type);
}
for (HttpMessageConverter<?> messageConverter : messageConverters.getConverters()) {
for (HttpMessageConverter<?> messageConverter : messageConverters.get().getConverters()) {
if (messageConverter.canWrite(requestType, requestContentType)) {
if (logger.isDebugEnabled()) {
if (requestContentType != null) {