Compare commits

...
Author SHA1 Message Date
buildmaster 0888d9ce8d Update SNAPSHOT to 2.2.1.RELEASE 2019-12-20 12:50:14 +00:00
buildmaster 1bc7542dc5 Bumping versions 2019-12-19 11:37:41 +00:00
kingj 68689182be Changing DefaultGzipDecoder's charset to UTF-8 (#250) 2019-12-16 10:29:21 -05:00
Olga Maciaszek-Sharma d5c176c5f4 Use delegate if absolute url provided. (#264)
Fixes gh-259
Fixes gh-257
2019-12-16 16:02:00 +01:00
buildmaster 38733043ae Bumping versions 2019-11-27 11:37:31 +00:00
buildmaster 1b21e3b639 Bumping versions 2019-11-26 11:37:19 +00:00
buildmaster 14e6806c1c Bumping versions to 2.2.1.BUILD-SNAPSHOT after release 2019-11-26 10:14:04 +00:00
buildmaster dd95dae352 Going back to snapshots 2019-11-26 10:14:04 +00:00
buildmaster c1c211efdb Update SNAPSHOT to 2.2.0.RELEASE 2019-11-26 10:13:18 +00:00
buildmaster ea69c30496 Bumping versions 2019-11-20 11:37:38 +00:00
Ryan Baxter f71b419d8d Update issue templates 2019-11-19 19:46:56 -05:00
Ryan Baxter 35bbb32e03 Create SECURITY.md 2019-11-19 19:46:21 -05:00
Ryan Baxter 1ce5ca1ba8 Add proxyBeanMethods = false to configuration. Fixes #233 2019-11-14 12:42:43 -05:00
Ryan Baxter 59b34b23e9 Merge remote-tracking branch 'origin/2.1.x' 2019-11-13 10:42:48 -05:00
Ryan Baxter f01c46ab2e Use the context id if present in the HystrixTargeter (#247)
* Use the context id if present in the HystrixTargeter.  Fixes #173

* Remove resource class from circleci
2019-11-13 10:41:57 -05:00
buildmaster 6dc78c99c2 Going back to snapshots 2019-11-08 21:54:34 +00:00
69 changed files with 517 additions and 134 deletions
+2 -2
View File
@@ -5,12 +5,12 @@
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-build</artifactId>
<version>2.2.0.RC2</version>
<version>2.2.1.RELEASE</version>
<relativePath></relativePath>
</parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-openfeign</artifactId>
<version>2.2.0.RC2</version>
<version>2.2.1.RELEASE</version>
<packaging>pom</packaging>
<name>Spring Cloud OpenFeign</name>
<description>Spring Cloud OpenFeign</description>
+17
View File
@@ -0,0 +1,17 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
Please provide details of the problem, including the version of Spring Cloud that you
are using.
**Sample**
If possible, please provide a test case or sample application that reproduces
the problem. This makes it much easier for us to diagnose the problem and to verify that
we have fixed it.
+20
View File
@@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.
+5
View File
@@ -0,0 +1,5 @@
# Security Policy
## Reporting a Vulnerability
To report security vulnerabilities, please go to https://pivotal.io/security.
+3 -3
View File
@@ -5,11 +5,11 @@
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-openfeign</artifactId>
<version>2.2.0.RC2</version>
<version>2.2.1.RELEASE</version>
</parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-openfeign-docs</artifactId>
<version>2.2.0.RC2</version>
<version>2.2.1.RELEASE</version>
<packaging>pom</packaging>
<name>Spring Cloud OpenFeign Docs</name>
<description>Spring Cloud Docs</description>
@@ -100,7 +100,7 @@
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.2.0.RC2</version>
<version>2.2.1.RELEASE</version>
<scope>compile</scope>
</dependency>
</dependencies>
+1 -1
View File
@@ -6,7 +6,7 @@
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-openfeign</artifactId>
<version>2.2.0.RC2</version>
<version>2.2.1.RELEASE</version>
</parent>
<artifactId>spring-cloud-openfeign-docs</artifactId>
<packaging>pom</packaging>
@@ -429,13 +429,13 @@ feign.compression.request.min-request-size=2048
These properties allow you to be selective about the compressed media types and minimum request threshold length.
For http clients except OkHttpClient, default gzip decoder can be enabled to decode gzip response in ISO-8859-1 encoding:
For http clients except OkHttpClient, default gzip decoder can be enabled to decode gzip response in UTF-8 encoding:
[source,java]
---
----
feign.compression.response.enabled=true
feign.compression.response.useGzipDecoder=true
---
----
=== Feign logging
+4 -4
View File
@@ -4,14 +4,14 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>spring-cloud-openfeign</artifactId>
<version>2.2.0.RC2</version>
<version>2.2.1.RELEASE</version>
<packaging>pom</packaging>
<name>Spring Cloud OpenFeign</name>
<description>Spring Cloud OpenFeign</description>
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-build</artifactId>
<version>2.2.0.RC2</version>
<version>2.2.1.RELEASE</version>
<relativePath/>
</parent>
<scm>
@@ -26,8 +26,8 @@
<properties>
<main.basedir>${basedir}</main.basedir>
<jackson.version>2.7.3</jackson.version>
<spring-cloud-commons.version>2.2.0.RC2</spring-cloud-commons.version>
<spring-cloud-netflix.version>2.2.0.RC2</spring-cloud-netflix.version>
<spring-cloud-commons.version>2.2.1.RELEASE</spring-cloud-commons.version>
<spring-cloud-netflix.version>2.2.1.RELEASE</spring-cloud-netflix.version>
<!-- Plugin versions -->
<maven-compiler-plugin.version>3.6.1</maven-compiler-plugin.version>
+18 -18
View File
@@ -5,12 +5,12 @@
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-openfeign</artifactId>
<version>2.2.0.RC2</version>
<version>2.2.1.RELEASE</version>
<relativePath>..</relativePath>
</parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-openfeign-core</artifactId>
<version>2.2.0.RC2</version>
<version>2.2.1.RELEASE</version>
<name>Spring Cloud OpenFeign Core</name>
<description>Spring Cloud OpenFeign Core</description>
<url>https://spring.io/spring-cloud/spring-cloud-openfeign/spring-cloud-openfeign-core</url>
@@ -100,54 +100,54 @@
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
<version>2.2.1.RELEASE</version>
<version>2.2.2.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-netflix-ribbon</artifactId>
<version>2.2.0.RC2</version>
<version>2.2.1.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<version>2.2.1.RELEASE</version>
<version>2.2.2.RELEASE</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
<version>2.2.1.RELEASE</version>
<version>2.2.2.RELEASE</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.2.1.RELEASE</version>
<version>2.2.2.RELEASE</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
<version>2.2.1.RELEASE</version>
<version>2.2.2.RELEASE</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-reactor-netty</artifactId>
<version>2.2.1.RELEASE</version>
<version>2.2.2.RELEASE</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-hateoas</artifactId>
<version>2.2.1.RELEASE</version>
<version>2.2.2.RELEASE</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
@@ -161,7 +161,7 @@
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-core</artifactId>
<version>3.3.0.RELEASE</version>
<version>3.3.1.RELEASE</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
@@ -182,20 +182,20 @@
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
<version>2.2.1.RELEASE</version>
<version>2.2.2.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-commons</artifactId>
<version>2.2.0.RC2</version>
<version>2.2.1.RELEASE</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-context</artifactId>
<version>2.2.0.RC2</version>
<version>2.2.1.RELEASE</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
@@ -363,28 +363,28 @@
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure-processor</artifactId>
<version>2.2.1.RELEASE</version>
<version>2.2.2.RELEASE</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<version>2.2.1.RELEASE</version>
<version>2.2.2.RELEASE</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-commons</artifactId>
<version>2.2.1.RELEASE</version>
<version>2.2.3.RELEASE</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-loadbalancer</artifactId>
<version>2.2.0.RC2</version>
<version>2.2.1.RELEASE</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
+1 -1
View File
@@ -6,7 +6,7 @@
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-openfeign</artifactId>
<version>2.2.0.RC2</version>
<version>2.2.1.RELEASE</version>
<relativePath>..</relativePath> <!-- lookup parent from repository -->
</parent>
<artifactId>spring-cloud-openfeign-core</artifactId>
@@ -56,7 +56,7 @@ import org.springframework.context.annotation.Import;
* @author Spencer Gibb
* @author Julien Roy
*/
@Configuration
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(Feign.class)
@EnableConfigurationProperties({ FeignClientProperties.class,
FeignHttpClientProperties.class })
@@ -78,7 +78,7 @@ public class FeignAutoConfiguration {
return context;
}
@Configuration
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(name = "feign.hystrix.HystrixFeign")
protected static class HystrixFeignTargeterConfiguration {
@@ -90,7 +90,7 @@ public class FeignAutoConfiguration {
}
@Configuration
@Configuration(proxyBeanMethods = false)
@ConditionalOnMissingClass("feign.hystrix.HystrixFeign")
protected static class DefaultFeignTargeterConfiguration {
@@ -106,7 +106,7 @@ public class FeignAutoConfiguration {
// ribbon is not on the class path.
// see corresponding configurations in FeignRibbonClientAutoConfiguration
// for load balanced ribbon clients.
@Configuration
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(ApacheHttpClient.class)
@ConditionalOnMissingClass("com.netflix.loadbalancer.ILoadBalancer")
@ConditionalOnMissingBean(CloseableHttpClient.class)
@@ -172,7 +172,7 @@ public class FeignAutoConfiguration {
}
@Configuration
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(OkHttpClient.class)
@ConditionalOnMissingClass("com.netflix.loadbalancer.ILoadBalancer")
@ConditionalOnMissingBean(okhttp3.OkHttpClient.class)
@@ -37,6 +37,7 @@ import org.springframework.beans.BeansException;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.cloud.openfeign.loadbalancer.FeignBlockingLoadBalancerClient;
import org.springframework.cloud.openfeign.ribbon.LoadBalancerFeignClient;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
@@ -282,6 +283,11 @@ class FeignClientFactoryBean
// but ribbon is on the classpath, so unwrap
client = ((LoadBalancerFeignClient) client).getDelegate();
}
if (client instanceof FeignBlockingLoadBalancerClient) {
// not load balancing because we have a url,
// but Spring Cloud LoadBalancer is on the classpath, so unwrap
client = ((FeignBlockingLoadBalancerClient) client).getDelegate();
}
builder.client(client);
}
Targeter targeter = get(context, Targeter.class);
@@ -55,7 +55,7 @@ import org.springframework.format.support.FormattingConversionService;
* @author Dave Syer
* @author Venil Noronha
*/
@Configuration
@Configuration(proxyBeanMethods = false)
public class FeignClientsConfiguration {
@Autowired
@@ -144,7 +144,7 @@ public class FeignClientsConfiguration {
return new PageJacksonModule();
}
@Configuration
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass({ HystrixCommand.class, HystrixFeign.class })
protected static class HystrixFeignConfiguration {
@@ -22,6 +22,8 @@ import feign.hystrix.FallbackFactory;
import feign.hystrix.HystrixFeign;
import feign.hystrix.SetterFactory;
import org.springframework.util.StringUtils;
/**
* @author Spencer Gibb
* @author Erik Kringen
@@ -36,19 +38,19 @@ class HystrixTargeter implements Targeter {
return feign.target(target);
}
feign.hystrix.HystrixFeign.Builder builder = (feign.hystrix.HystrixFeign.Builder) feign;
SetterFactory setterFactory = getOptional(factory.getName(), context,
SetterFactory.class);
String name = StringUtils.isEmpty(factory.getContextId()) ? factory.getName()
: factory.getContextId();
SetterFactory setterFactory = getOptional(name, context, SetterFactory.class);
if (setterFactory != null) {
builder.setterFactory(setterFactory);
}
Class<?> fallback = factory.getFallback();
if (fallback != void.class) {
return targetWithFallback(factory.getName(), context, target, builder,
fallback);
return targetWithFallback(name, context, target, builder, fallback);
}
Class<?> fallbackFactory = factory.getFallbackFactory();
if (fallbackFactory != void.class) {
return targetWithFallbackFactory(factory.getName(), context, target, builder,
return targetWithFallbackFactory(name, context, target, builder,
fallbackFactory);
}
@@ -44,7 +44,7 @@ import org.springframework.context.annotation.Configuration;
* @author Spencer Gibb
* @author Olga Maciaszek-Sharma
*/
@Configuration
@Configuration(proxyBeanMethods = false)
@ConditionalOnMissingBean(CloseableHttpClient.class)
public class HttpClientFeignConfiguration {
@@ -38,7 +38,7 @@ import org.springframework.context.annotation.Configuration;
* @author Spencer Gibb
* @author Olga Maciaszek-Sharma
*/
@Configuration
@Configuration(proxyBeanMethods = false)
@ConditionalOnMissingBean(okhttp3.OkHttpClient.class)
public class OkHttpFeignConfiguration {
@@ -35,7 +35,7 @@ import org.springframework.context.annotation.Configuration;
* @author Jakub Narloch
* @see FeignAcceptGzipEncodingInterceptor
*/
@Configuration
@Configuration(proxyBeanMethods = false)
@EnableConfigurationProperties(FeignClientEncodingProperties.class)
@ConditionalOnClass(Feign.class)
@ConditionalOnBean(Client.class)
@@ -35,7 +35,7 @@ import org.springframework.context.annotation.Configuration;
* @author Jakub Narloch
* @see FeignContentGzipEncodingInterceptor
*/
@Configuration
@Configuration(proxyBeanMethods = false)
@EnableConfigurationProperties(FeignClientEncodingProperties.class)
@ConditionalOnClass(Feign.class)
@ConditionalOnBean(Client.class)
@@ -48,7 +48,7 @@ import static org.springframework.hateoas.MediaTypes.HAL_JSON;
/**
* @author Hector Espert
*/
@Configuration
@Configuration(proxyBeanMethods = false)
@ConditionalOnWebApplication
@ConditionalOnClass(RepresentationModel.class)
@AutoConfigureAfter({ JacksonAutoConfiguration.class,
@@ -30,7 +30,7 @@ import org.springframework.context.annotation.Configuration;
* @author Olga Maciaszek-Sharma
* @since 2.2.0
*/
@Configuration
@Configuration(proxyBeanMethods = false)
class DefaultFeignLoadBalancerConfiguration {
@Bean
@@ -38,7 +38,7 @@ import org.springframework.util.Assert;
* @author Olga Maciaszek-Sharma
* @since 2.2.0
*/
class FeignBlockingLoadBalancerClient implements Client {
public class FeignBlockingLoadBalancerClient implements Client {
private static final Log LOG = LogFactory
.getLog(FeignBlockingLoadBalancerClient.class);
@@ -78,8 +78,7 @@ class FeignBlockingLoadBalancerClient implements Client {
return delegate.execute(newRequest, options);
}
// Visible for tests
Client getDelegate() {
public Client getDelegate() {
return delegate;
}
@@ -45,13 +45,13 @@ import org.springframework.context.annotation.Import;
@AutoConfigureBefore(FeignAutoConfiguration.class)
@AutoConfigureAfter(FeignRibbonClientAutoConfiguration.class)
@EnableConfigurationProperties(FeignHttpClientProperties.class)
@Configuration
@Configuration(proxyBeanMethods = false)
// Order is important here, last should be the default, first should be optional
// see
// https://github.com/spring-cloud/spring-cloud-netflix/issues/2086#issuecomment-316281653
@Import({ HttpClientFeignLoadBalancerConfiguration.class,
OkHttpFeignLoadBalancerConfiguration.class,
DefaultFeignLoadBalancerConfiguration.class })
class FeignLoadBalancerAutoConfiguration {
public class FeignLoadBalancerAutoConfiguration {
}
@@ -37,7 +37,7 @@ import org.springframework.context.annotation.Import;
* @author Olga Maciaszek-Sharma
* @since 2.2.0
*/
@Configuration
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(ApacheHttpClient.class)
@ConditionalOnBean(BlockingLoadBalancerClient.class)
@ConditionalOnProperty(value = "feign.httpclient.enabled", matchIfMissing = true)
@@ -36,7 +36,7 @@ import org.springframework.context.annotation.Import;
* @author Olga Maciaszek-Sharma
* @since 2.2.0
*/
@Configuration
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(OkHttpClient.class)
@ConditionalOnProperty("feign.okhttp.enabled")
@ConditionalOnBean(BlockingLoadBalancerClient.class)
@@ -26,7 +26,7 @@ import org.springframework.context.annotation.Configuration;
/**
* @author Spencer Gibb
*/
@Configuration
@Configuration(proxyBeanMethods = false)
class DefaultFeignLoadBalancedConfiguration {
@Bean
@@ -45,7 +45,7 @@ import org.springframework.context.annotation.Primary;
@ConditionalOnClass({ ILoadBalancer.class, Feign.class })
@ConditionalOnProperty(value = "spring.cloud.loadbalancer.ribbon.enabled",
matchIfMissing = true)
@Configuration
@Configuration(proxyBeanMethods = false)
@AutoConfigureBefore(FeignAutoConfiguration.class)
@EnableConfigurationProperties({ FeignHttpClientProperties.class })
// Order is important here, last should be the default, first should be optional
@@ -33,7 +33,7 @@ import org.springframework.context.annotation.Import;
* @author Spencer Gibb
* @author Olga Maciaszek-Sharma
*/
@Configuration
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(ApacheHttpClient.class)
@ConditionalOnProperty(value = "feign.httpclient.enabled", matchIfMissing = true)
@Import(HttpClientFeignConfiguration.class)
@@ -32,7 +32,7 @@ import org.springframework.context.annotation.Import;
* @author Spencer Gibb
* @author Olga Maciaszek-Sharma
*/
@Configuration
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(OkHttpClient.class)
@ConditionalOnProperty("feign.okhttp.enabled")
@Import(OkHttpFeignConfiguration.class)
@@ -20,12 +20,12 @@ import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.Type;
import java.nio.charset.StandardCharsets;
import java.util.Collection;
import java.util.zip.GZIPInputStream;
import feign.FeignException;
import feign.Response;
import feign.Util;
import feign.codec.Decoder;
import org.springframework.cloud.openfeign.encoding.HttpEncoding;
@@ -72,7 +72,7 @@ public class DefaultGzipDecoder implements Decoder {
try (GZIPInputStream gzipInputStream = new GZIPInputStream(
response.body().asInputStream());
BufferedReader reader = new BufferedReader(
new InputStreamReader(gzipInputStream, Util.ISO_8859_1))) {
new InputStreamReader(gzipInputStream, StandardCharsets.UTF_8))) {
String outputString = "";
String line;
while ((line = reader.readLine()) != null) {
@@ -33,7 +33,7 @@ import org.springframework.context.annotation.Configuration;
*
* @author Jaesik Kim
*/
@Configuration
@Configuration(proxyBeanMethods = false)
@ConditionalOnProperty("feign.compression.response.enabled")
// The OK HTTP client uses "transparent" compression.
// If the accept-encoding header is present, it disables transparent compression
@@ -90,6 +90,18 @@ public class DefaultGzipDecoderTests extends FeignClientFactoryBean {
assertThat(hello).as("null hello didn't match").isEqualTo(null);
}
@Test
public void testCharsetDecompress() {
ResponseEntity<Hello> response = testClient().getUtf8Response();
assertThat(response).as("response was null").isNotNull();
assertThat(response.getStatusCode()).as("wrong status code")
.isEqualTo(HttpStatus.OK);
Hello hello = response.getBody();
assertThat(hello).as("hello was null").isNotNull();
assertThat(hello).as("utf8 hello didn't match")
.isEqualTo(new Hello("안녕하세요 means Hello in Korean"));
}
private static class Hello {
private String message;
@@ -136,9 +148,12 @@ public class DefaultGzipDecoderTests extends FeignClientFactoryBean {
@GetMapping("/nullGzipResponse")
ResponseEntity<Hello> getNullResponse();
@GetMapping("/utf8Response")
ResponseEntity<Hello> getUtf8Response();
}
@Configuration
@Configuration(proxyBeanMethods = false)
@EnableAutoConfiguration
@RestController
@Import(NoSecurityConfiguration.class)
@@ -154,6 +169,11 @@ public class DefaultGzipDecoderTests extends FeignClientFactoryBean {
return ResponseEntity.ok(null);
}
@Override
public ResponseEntity<Hello> getUtf8Response() {
return ResponseEntity.ok(new Hello("안녕하세요 means Hello in Korean"));
}
}
}
@@ -48,7 +48,7 @@ public class EnableFeignClientsSpringDataTests {
.cast(this.feignContext.getInstance("foo", Encoder.class));
}
@Configuration
@Configuration(proxyBeanMethods = false)
@Import({ PropertyPlaceholderAutoConfiguration.class, ArchaiusAutoConfiguration.class,
FeignAutoConfiguration.class })
protected static class PlainConfiguration {
@@ -87,7 +87,7 @@ public class EnableFeignClientsTests {
Feign.Builder.class.cast(this.context.getBeansOfType(Feign.Builder.class).get(0));
}
@Configuration
@Configuration(proxyBeanMethods = false)
@Import({ ArchaiusAutoConfiguration.class, FeignAutoConfiguration.class })
protected static class PlainConfiguration {
@@ -16,14 +16,30 @@
package org.springframework.cloud.openfeign;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import feign.Client;
import feign.InvocationHandlerFactory;
import org.junit.Test;
import org.springframework.boot.test.context.assertj.AssertableApplicationContext;
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.cloud.loadbalancer.blocking.client.BlockingLoadBalancerClient;
import org.springframework.cloud.loadbalancer.config.LoadBalancerAutoConfiguration;
import org.springframework.cloud.loadbalancer.support.LoadBalancerClientFactory;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.test.util.ReflectionTestUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import static org.assertj.core.api.Assertions.assertThat;
import static org.springframework.web.bind.annotation.RequestMethod.GET;
/**
* @author Spencer Gibb
@@ -49,10 +65,74 @@ public class FeignClientFactoryTests {
assertThat(foobar).as("bar was not null").isNull();
}
@Test
public void shouldRedirectToDelegateWhenUrlSet() {
new ApplicationContextRunner().withUserConfiguration(TestConfig.class)
.run(this::defaultClientUsed);
}
@SuppressWarnings({ "unchecked", "ConstantConditions" })
private void defaultClientUsed(AssertableApplicationContext context) {
Proxy target = context.getBean(FeignClientFactoryBean.class).getTarget();
Object invocationHandler = ReflectionTestUtils.getField(target, "h");
Map<Method, InvocationHandlerFactory.MethodHandler> dispatch = (Map<Method, InvocationHandlerFactory.MethodHandler>) ReflectionTestUtils
.getField(invocationHandler, "dispatch");
Method key = new ArrayList<>(dispatch.keySet()).get(0);
Object client = ReflectionTestUtils.getField(dispatch.get(key), "client");
assertThat(client).isInstanceOf(Client.Default.class);
}
private FeignClientSpecification getSpec(String name, Class<?> configClass) {
return new FeignClientSpecification(name, new Class[] { configClass });
}
interface TestType {
@RequestMapping(value = "/", method = GET)
String hello();
}
@Configuration
static class TestConfig {
@Bean
BlockingLoadBalancerClient loadBalancerClient() {
return new BlockingLoadBalancerClient(new LoadBalancerClientFactory());
}
@Bean
FeignContext feignContext() {
FeignContext feignContext = new FeignContext();
feignContext.setConfigurations(
Collections.singletonList(new FeignClientSpecification("test",
new Class[] { LoadBalancerAutoConfiguration.class })));
return feignContext;
}
@Bean
FeignClientProperties feignClientProperties() {
return new FeignClientProperties();
}
@Bean
Targeter targeter() {
return new DefaultTargeter();
}
@Bean
FeignClientFactoryBean feignClientFactoryBean() {
FeignClientFactoryBean feignClientFactoryBean = new FeignClientFactoryBean();
feignClientFactoryBean.setContextId("test");
feignClientFactoryBean.setName("test");
feignClientFactoryBean.setType(TestType.class);
feignClientFactoryBean.setPath("");
feignClientFactoryBean.setUrl("http://some.absolute.url");
return feignClientFactoryBean;
}
}
static class FooConfig {
@Bean
@@ -169,7 +169,7 @@ public class FeignClientOverrideDefaultsTests {
}
@Configuration
@Configuration(proxyBeanMethods = false)
@EnableFeignClients(clients = { FooClient.class, BarClient.class })
@Import({ PropertyPlaceholderAutoConfiguration.class, ArchaiusAutoConfiguration.class,
FeignAutoConfiguration.class })
@@ -153,7 +153,7 @@ public class FeignClientUsingPropertiesTests {
}
@Configuration
@Configuration(proxyBeanMethods = false)
@EnableAutoConfiguration
@RestController
@Import(NoSecurityConfiguration.class)
@@ -107,14 +107,14 @@ public class FeignClientsRegistrarTests {
}
@Configuration
@Configuration(proxyBeanMethods = false)
@EnableAutoConfiguration
@EnableFeignClients(clients = { FeignClientsRegistrarTests.FallbackClient.class })
protected static class FallbackTestConfig {
}
@Configuration
@Configuration(proxyBeanMethods = false)
@EnableAutoConfiguration
@EnableFeignClients(
clients = { FeignClientsRegistrarTests.FallbackFactoryClient.class })
@@ -71,7 +71,7 @@ public class FeignCompressionTests {
});
}
@Configuration
@Configuration(proxyBeanMethods = false)
protected static class PlainConfig {
@Autowired
@@ -129,7 +129,7 @@ public class FeignHttpClientUrlTests {
}
@Configuration
@Configuration(proxyBeanMethods = false)
@EnableAutoConfiguration
@RestController
@EnableFeignClients(clients = { UrlClient.class, BeanUrlClient.class,
@@ -69,13 +69,13 @@ public class FeignLoggerFactoryTests {
context.close();
}
@Configuration
@Configuration(proxyBeanMethods = false)
@Import(FeignClientsConfiguration.class)
protected static class SampleConfiguration1 {
}
@Configuration
@Configuration(proxyBeanMethods = false)
@Import(FeignClientsConfiguration.class)
protected static class SampleConfiguration2 {
@@ -95,7 +95,7 @@ public class FeignLoggerFactoryTests {
}
@Configuration
@Configuration(proxyBeanMethods = false)
@Import(FeignClientsConfiguration.class)
protected static class SampleConfiguration3 {
@@ -215,7 +215,7 @@ public class SpringDecoderTests extends FeignClientFactoryBean {
}
@Configuration
@Configuration(proxyBeanMethods = false)
@EnableAutoConfiguration
@RestController
@Import(NoSecurityConfiguration.class)
@@ -112,7 +112,7 @@ public class FeignClientTests {
assertThat(invocationHandler).as("invocationHandler was null").isNotNull();
}
@Configuration
@Configuration(proxyBeanMethods = false)
@EnableAutoConfiguration
@RestController
@EnableFeignClients
@@ -170,7 +170,7 @@ public class FeignClientTests {
}
@Configuration
@Configuration(proxyBeanMethods = false)
public static class TestDefaultFeignConfig {
}
@@ -83,7 +83,7 @@ public class FeignAcceptEncodingTests {
}
@Configuration
@Configuration(proxyBeanMethods = false)
static class LocalRibbonClientConfiguration {
@Value("${local.server.port}")
@@ -87,7 +87,7 @@ public class FeignContentEncodingTests {
}
@Configuration
@Configuration(proxyBeanMethods = false)
static class LocalRibbonClientConfiguration {
@Value("${local.server.port}")
@@ -95,7 +95,7 @@ public class FeignPageableEncodingTests {
}
@Configuration
@Configuration(proxyBeanMethods = false)
static class LocalRibbonClientConfiguration {
@Value("${local.server.port}")
@@ -31,7 +31,7 @@ import org.springframework.context.annotation.Import;
/**
* @author Daniel Lavoie
*/
@Configuration
@Configuration(proxyBeanMethods = false)
@EnableAutoConfiguration
@EnableFeignClients(clients = UsernameClient.class)
@Import(NoSecurityConfiguration.class)
@@ -122,7 +122,7 @@ public class FeignClientValidationTests {
}
}
@Configuration
@Configuration(proxyBeanMethods = false)
@Import({ FeignAutoConfiguration.class, HttpClientConfiguration.class })
@EnableFeignClients(clients = NameAndServiceIdConfiguration.Client.class)
protected static class NameAndServiceIdConfiguration {
@@ -137,8 +137,7 @@ public class FeignClientValidationTests {
}
@Configuration
@Configuration(proxyBeanMethods = false)
@Import({ FeignAutoConfiguration.class, HttpClientConfiguration.class })
@EnableFeignClients(
clients = { DuplicatedFeignClientNamesConfiguration.FooClient.class,
@@ -163,7 +162,7 @@ public class FeignClientValidationTests {
}
@Configuration
@Configuration(proxyBeanMethods = false)
@Import(FeignAutoConfiguration.class)
@EnableFeignClients(clients = BadHostnameConfiguration.Client.class)
protected static class BadHostnameConfiguration {
@@ -178,7 +177,7 @@ public class FeignClientValidationTests {
}
@Configuration
@Configuration(proxyBeanMethods = false)
@Import(FeignAutoConfiguration.class)
@EnableFeignClients(clients = MissingFallbackConfiguration.Client.class)
protected static class MissingFallbackConfiguration {
@@ -208,7 +207,7 @@ public class FeignClientValidationTests {
}
@Configuration
@Configuration(proxyBeanMethods = false)
@Import(FeignAutoConfiguration.class)
@EnableFeignClients(clients = WrongFallbackTypeConfiguration.Client.class)
protected static class WrongFallbackTypeConfiguration {
@@ -237,7 +236,7 @@ public class FeignClientValidationTests {
}
@Configuration
@Configuration(proxyBeanMethods = false)
@Import(FeignAutoConfiguration.class)
@EnableFeignClients(clients = MissingFallbackFactoryConfiguration.Client.class)
protected static class MissingFallbackFactoryConfiguration {
@@ -267,7 +266,7 @@ public class FeignClientValidationTests {
}
@Configuration
@Configuration(proxyBeanMethods = false)
@Import(FeignAutoConfiguration.class)
@EnableFeignClients(clients = WrongFallbackFactoryTypeConfiguration.Client.class)
protected static class WrongFallbackFactoryTypeConfiguration {
@@ -139,7 +139,7 @@ public class FeignRibbonClientPathTests {
}
@Configuration
@Configuration(proxyBeanMethods = false)
@EnableAutoConfiguration
@RestController
@RequestMapping("/base/path")
@@ -177,7 +177,7 @@ public class FeignRibbonClientPathTests {
}
@Configuration
@Configuration(proxyBeanMethods = false)
public static class LocalRibbonClientConfiguration {
@Value("${local.server.port}")
@@ -95,7 +95,7 @@ public class FeignRibbonClientRetryTests {
}
@Configuration
@Configuration(proxyBeanMethods = false)
@EnableAutoConfiguration
@RestController
@EnableFeignClients(clients = TestClient.class)
@@ -142,7 +142,7 @@ public class FeignRibbonClientRetryTests {
// Load balancer with fixed server list for "local" pointing to localhost
// some bogus servers are thrown in to test retry
@Configuration
@Configuration(proxyBeanMethods = false)
class LocalRibbonClientConfiguration {
@Value("${local.server.port}")
@@ -88,7 +88,7 @@ public class FeignRibbonHttpClientConfigurationTests {
return value;
}
@Configuration
@Configuration(proxyBeanMethods = false)
@EnableAutoConfiguration
static class FeignRibbonHttpClientConfigurationTestsApplication {
@@ -67,7 +67,7 @@ public class FeignRibbonOkHttpClientConfigurationTests {
return value;
}
@Configuration
@Configuration(proxyBeanMethods = false)
@EnableAutoConfiguration
static class FeignRibbonOkHttpClientConfigurationTestsApplication {
@@ -108,7 +108,7 @@ public class LoadBalancerFeignClientOverrideTests {
}
@Configuration
@Configuration(proxyBeanMethods = false)
@EnableFeignClients(clients = { FooClient.class, BarClient.class, BazClient.class })
@EnableAutoConfiguration
protected static class TestConfiguration {
@@ -91,7 +91,7 @@ public class FeignHttpClientPropertiesTests {
return this.context.getBean(FeignHttpClientProperties.class);
}
@Configuration
@Configuration(proxyBeanMethods = false)
@EnableConfigurationProperties
protected static class TestConfiguration {
@@ -169,7 +169,7 @@ public class SpringEncoderTests {
}
@Configuration
@Configuration(proxyBeanMethods = false)
@EnableAutoConfiguration
@RestController
protected static class Application implements TestClient {
@@ -160,7 +160,7 @@ public class ApacheHttpClientConfigurationTests {
}
@Configuration
@Configuration(proxyBeanMethods = false)
static class MyConfig {
@Bean
@@ -20,7 +20,7 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
@Configuration(proxyBeanMethods = false)
public class NoSecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
@@ -33,7 +33,7 @@ import org.springframework.security.provisioning.InMemoryUserDetailsManager;
/**
* @author Spencer Gibb
*/
@Configuration
@Configuration(proxyBeanMethods = false)
@Import({ NoopDiscoveryClientAutoConfiguration.class })
@AutoConfigureBefore(SecurityAutoConfiguration.class)
public class TestAutoConfiguration {
@@ -42,7 +42,7 @@ public class TestAutoConfiguration {
public static final String PASSWORD = "{noop}password";
@Configuration
@Configuration(proxyBeanMethods = false)
@Order(Ordered.HIGHEST_PRECEDENCE)
protected static class TestSecurityConfiguration
extends WebSecurityConfigurerAdapter {
@@ -99,7 +99,7 @@ public class FeignClientNotPrimaryTests {
}
@Configuration
@Configuration(proxyBeanMethods = false)
@EnableAutoConfiguration
@RestController
@EnableFeignClients(clients = { TestClient.class },
@@ -150,7 +150,7 @@ public class FeignClientNotPrimaryTests {
}
@Configuration
@Configuration(proxyBeanMethods = false)
public static class TestDefaultFeignConfig {
@Bean
@@ -161,7 +161,7 @@ public class FeignClientNotPrimaryTests {
}
// Load balancer with fixed server list for "local" pointing to localhost
@Configuration
@Configuration(proxyBeanMethods = false)
public static class LocalRibbonClientConfiguration {
@Value("${local.server.port}")
@@ -699,7 +699,7 @@ public class FeignClientTests {
}
@Configuration
@Configuration(proxyBeanMethods = false)
@EnableAutoConfiguration
@RestController
@EnableFeignClients(clients = { TestClientServiceId.class, TestClient.class,
@@ -924,7 +924,7 @@ public class FeignClientTests {
}
@Configuration
@Configuration(proxyBeanMethods = false)
public static class TestDefaultFeignConfig {
@Bean
@@ -935,7 +935,7 @@ public class FeignClientTests {
}
// Load balancer with fixed server list for "local" pointing to localhost
@Configuration
@Configuration(proxyBeanMethods = false)
public static class LocalRibbonClientConfiguration {
@Value("${local.server.port}")
@@ -64,7 +64,7 @@ public class FeignClientValidationTests {
context.close();
}
@Configuration
@Configuration(proxyBeanMethods = false)
@Import({ FeignAutoConfiguration.class, HttpClientConfiguration.class })
@EnableFeignClients(clients = GoodUrlConfiguration.Client.class)
protected static class GoodUrlConfiguration {
@@ -80,7 +80,7 @@ public class FeignClientValidationTests {
}
@Configuration
@Configuration(proxyBeanMethods = false)
@Import({ FeignAutoConfiguration.class, HttpClientConfiguration.class })
@EnableFeignClients(clients = PlaceholderUrlConfiguration.Client.class)
protected static class PlaceholderUrlConfiguration {
@@ -96,7 +96,7 @@ public class FeignClientValidationTests {
}
@Configuration
@Configuration(proxyBeanMethods = false)
@Import({ FeignAutoConfiguration.class, HttpClientConfiguration.class })
@EnableFeignClients(clients = GoodServiceIdConfiguration.Client.class)
protected static class GoodServiceIdConfiguration {
@@ -137,7 +137,7 @@ public class FeignHttpClientTests {
}
@Configuration
@Configuration(proxyBeanMethods = false)
@EnableAutoConfiguration
@RestController
@EnableFeignClients(clients = { TestClient.class, UserClient.class })
@@ -252,7 +252,7 @@ public class FeignHttpClientTests {
}
// Load balancer with fixed server list for "local" pointing to localhost
@Configuration
@Configuration(proxyBeanMethods = false)
static class LocalRibbonClientConfiguration {
@LocalServerPort
@@ -136,7 +136,7 @@ public class FeignOkHttpTests {
}
@Configuration
@Configuration(proxyBeanMethods = false)
@EnableAutoConfiguration
@RestController
@EnableFeignClients(clients = { TestClient.class, UserClient.class })
@@ -251,7 +251,7 @@ public class FeignOkHttpTests {
}
// Load balancer with fixed server list for "local" pointing to localhost
@Configuration
@Configuration(proxyBeanMethods = false)
static class LocalRibbonClientConfiguration {
@Value("${local.server.port}")
@@ -75,7 +75,7 @@ public class IterableParameterTests {
}
@Configuration
@Configuration(proxyBeanMethods = false)
@EnableAutoConfiguration
@RestController
@EnableFeignClients(clients = TestClient.class)
@@ -64,7 +64,7 @@ public class FeignClientEnvVarTests {
assertThat(hello).as("first hello didn't match").isEqualTo("hello world 1");
}
@Configuration
@Configuration(proxyBeanMethods = false)
@EnableAutoConfiguration
@RestController
@EnableFeignClients(basePackages = { "${basepackage}" })
@@ -80,7 +80,7 @@ public class FeignClientEnvVarTests {
}
// Load balancer with fixed server list for "local" pointing to localhost
@Configuration
@Configuration(proxyBeanMethods = false)
public static class LocalRibbonClientConfiguration {
@Value("${local.server.port}")
@@ -96,7 +96,7 @@ public class FeignClientScanningTests {
}
@Configuration
@Configuration(proxyBeanMethods = false)
@EnableAutoConfiguration
@RestController
@EnableFeignClients // NO clients attribute. That's what this class is testing!
@@ -112,7 +112,7 @@ public class FeignClientScanningTests {
}
// Load balancer with fixed server list for "local" pointing to localhost
@Configuration
@Configuration(proxyBeanMethods = false)
public static class LocalRibbonClientConfiguration {
@Value("${local.server.port}")
@@ -0,0 +1,235 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies-parent</artifactId>
<version>2.2.1.RELEASE</version>
<relativePath></relativePath>
</parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-openfeign-dependencies</artifactId>
<version>2.2.1.RELEASE</version>
<packaging>pom</packaging>
<name>spring-cloud-openfeign-dependencies</name>
<description>Spring Cloud OpenFeign Dependencies</description>
<url>https://projects.spring.io/spring-cloud/spring-cloud-openfeign-dependencies/</url>
<organization>
<name>Pivotal Software, Inc.</name>
<url>https://www.spring.io</url>
</organization>
<licenses>
<license>
<name>Apache License, Version 2.0</name>
<url>https://www.apache.org/licenses/LICENSE-2.0</url>
<comments>Copyright 2014-2015 the original author or authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied.
See the License for the specific language governing permissions and
limitations under the License.</comments>
</license>
</licenses>
<developers>
<developer>
<id>dsyer</id>
<name>Dave Syer</name>
<email>dsyer at pivotal.io</email>
<organization>Pivotal Software, Inc.</organization>
<organizationUrl>https://www.spring.io</organizationUrl>
<roles>
<role>Project lead</role>
</roles>
</developer>
<developer>
<id>sgibb</id>
<name>Spencer Gibb</name>
<email>sgibb at pivotal.io</email>
<organization>Pivotal Software, Inc.</organization>
<organizationUrl>https://www.spring.io</organizationUrl>
<roles>
<role>Project lead</role>
</roles>
</developer>
</developers>
<scm>
<connection>scm:git:git://github.com/spring-cloud/spring-cloud-build.git/spring-cloud-openfeign-dependencies</connection>
<developerConnection>scm:git:ssh://git@github.com/spring-cloud/spring-cloud-build.git/spring-cloud-openfeign-dependencies</developerConnection>
<url>https://github.com/spring-cloud/spring-cloud-build/spring-cloud-openfeign-dependencies</url>
</scm>
<distributionManagement>
<repository>
<id>repo.spring.io</id>
<name>Spring Release Repository</name>
<url>https://repo.spring.io/libs-release-local</url>
</repository>
<snapshotRepository>
<id>repo.spring.io</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/libs-snapshot-local</url>
</snapshotRepository>
<site>
<id>spring-docs</id>
<url>scp://static.springframework.org/var/www/domains/springframework.org/static/htdocs/spring-cloud/docs/spring-cloud-dependencies-parent/2.2.1.RELEASE/spring-cloud-openfeign-dependencies</url>
</site>
<downloadUrl>https://github.com/spring-cloud</downloadUrl>
</distributionManagement>
<properties>
<feign-form.version>3.8.0</feign-form.version>
<feign.version>10.4.0</feign.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-openfeign-core</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-core</artifactId>
<version>${feign.version}</version>
</dependency>
<dependency>
<groupId>io.github.openfeign.form</groupId>
<artifactId>feign-form-spring</artifactId>
<version>${feign-form.version}</version>
</dependency>
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-slf4j</artifactId>
<version>${feign.version}</version>
</dependency>
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-httpclient</artifactId>
<version>${feign.version}</version>
</dependency>
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-hystrix</artifactId>
<version>${feign.version}</version>
</dependency>
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-java8</artifactId>
<version>${feign.version}</version>
</dependency>
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-okhttp</artifactId>
<version>${feign.version}</version>
</dependency>
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-gson</artifactId>
<version>${feign.version}</version>
</dependency>
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-jackson-jaxb</artifactId>
<version>${feign.version}</version>
</dependency>
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-jackson</artifactId>
<version>${feign.version}</version>
</dependency>
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-jaxb</artifactId>
<version>${feign.version}</version>
</dependency>
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-jaxrs</artifactId>
<version>${feign.version}</version>
</dependency>
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-ribbon</artifactId>
<version>${feign.version}</version>
</dependency>
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-sax</artifactId>
<version>${feign.version}</version>
</dependency>
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-mock</artifactId>
<version>${feign.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<profiles>
<profile>
<id>spring</id>
<repositories>
<repository>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/libs-snapshot-local</url>
</repository>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/libs-milestone-local</url>
</repository>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>spring-releases</id>
<name>Spring Releases</name>
<url>https://repo.spring.io/release</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/libs-snapshot-local</url>
</pluginRepository>
<pluginRepository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/libs-milestone-local</url>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
</project>
+2 -2
View File
@@ -6,11 +6,11 @@
<parent>
<artifactId>spring-cloud-dependencies-parent</artifactId>
<groupId>org.springframework.cloud</groupId>
<version>2.2.0.RC2</version>
<version>2.2.1.RELEASE</version>
<relativePath/>
</parent>
<artifactId>spring-cloud-openfeign-dependencies</artifactId>
<version>2.2.0.RC2</version>
<version>2.2.1.RELEASE</version>
<packaging>pom</packaging>
<name>spring-cloud-openfeign-dependencies</name>
<description>Spring Cloud OpenFeign Dependencies</description>
@@ -5,12 +5,12 @@
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-openfeign</artifactId>
<version>2.2.0.RC2</version>
<version>2.2.1.RELEASE</version>
<relativePath>..</relativePath>
</parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.2.0.RC2</version>
<version>2.2.1.RELEASE</version>
<name>Spring Cloud Starter OpenFeign</name>
<description>Spring Cloud Starter OpenFeign</description>
<url>https://projects.spring.io/spring-cloud</url>
@@ -100,25 +100,25 @@
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter</artifactId>
<version>2.2.0.RC2</version>
<version>2.2.1.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-openfeign-core</artifactId>
<version>2.2.0.RC2</version>
<version>2.2.1.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.2.1.RELEASE</version>
<version>5.2.2.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-commons</artifactId>
<version>2.2.0.RC2</version>
<version>2.2.1.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
@@ -148,21 +148,21 @@
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
<version>2.2.0.RC2</version>
<version>2.2.1.RELEASE</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-archaius</artifactId>
<version>2.2.0.RC2</version>
<version>2.2.1.RELEASE</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
<version>2.2.0.RC2</version>
<version>2.2.1.RELEASE</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
+1 -1
View File
@@ -5,7 +5,7 @@
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-openfeign</artifactId>
<version>2.2.0.RC2</version>
<version>2.2.1.RELEASE</version>
<relativePath>..</relativePath>
</parent>
<artifactId>spring-cloud-starter-openfeign</artifactId>