Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: spring-cloud/spring-cloud-openfeign
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v4.1.3
Choose a base ref
...
head repository: spring-cloud/spring-cloud-openfeign
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v4.1.4
Choose a head ref

Commits on Jul 10, 2024

  1. Going back to snapshots

    spring-builds committed Jul 10, 2024
    Copy the full SHA
    3d9c5c6 View commit details
  2. Copy the full SHA
    e1f4bfc View commit details

Commits on Jul 22, 2024

  1. Bumping versions

    spring-builds committed Jul 22, 2024
    Copy the full SHA
    eab1283 View commit details

Commits on Sep 4, 2024

  1. Bump com.fasterxml.jackson.dataformat:jackson-dataformat-smile (#1054)

    Bumps [com.fasterxml.jackson.dataformat:jackson-dataformat-smile](https://github.com/FasterXML/jackson-dataformats-binary) from 2.17.1 to 2.17.2.
    - [Commits](FasterXML/jackson-dataformats-binary@jackson-dataformats-binary-2.17.1...jackson-dataformats-binary-2.17.2)
    
    ---
    updated-dependencies:
    - dependency-name: com.fasterxml.jackson.dataformat:jackson-dataformat-smile
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored Sep 4, 2024
    Copy the full SHA
    9047cd0 View commit details
  2. Bump com.google.protobuf:protobuf-java from 3.25.3 to 3.25.4 (#1055)

    Bumps [com.google.protobuf:protobuf-java](https://github.com/protocolbuffers/protobuf) from 3.25.3 to 3.25.4.
    - [Release notes](https://github.com/protocolbuffers/protobuf/releases)
    - [Changelog](https://github.com/protocolbuffers/protobuf/blob/main/protobuf_release.bzl)
    - [Commits](protocolbuffers/protobuf@v3.25.3...v3.25.4)
    
    ---
    updated-dependencies:
    - dependency-name: com.google.protobuf:protobuf-java
      dependency-type: direct:development
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored Sep 4, 2024
    Copy the full SHA
    7cab5a2 View commit details
  3. fix: defaultValue for `spring.cloud.openfeign.circuitbreaker.alphanum…

    …eric-ids.enabled` is true since version 4.0.0 (#1041)
    dowenliu-xyz authored Sep 4, 2024
    Copy the full SHA
    027a7b7 View commit details
  4. Copy the full SHA
    b03516a View commit details
  5. Copy the full SHA
    c0915af View commit details
  6. Bumping versions

    spring-builds committed Sep 4, 2024
    Copy the full SHA
    e9777e5 View commit details

Commits on Sep 5, 2024

  1. Authorize with anonymous principal if principal name is null (#1050)

    The authorizedClientManager.authorize method requires
    a non-null principal name or it will usually throw
    an exception in practice like "principalName cannot be empty".
    
    Using the anonymous principal in this case like for
    a null principal handles the situation more gracefully.
    
    Fixes #1049
    agileknight authored Sep 5, 2024
    Copy the full SHA
    c1988b8 View commit details
  2. Bumping versions

    spring-builds committed Sep 5, 2024
    Copy the full SHA
    4fe08c0 View commit details

Commits on Sep 6, 2024

  1. Bump antora from 3.2.0-alpha.4 to 3.2.0-alpha.6 in /docs (#1061)

    Bumps [antora](https://gitlab.com/antora/antora) from 3.2.0-alpha.4 to 3.2.0-alpha.6.
    - [Changelog](https://gitlab.com/antora/antora/blob/main/CHANGELOG.adoc)
    - [Commits](https://gitlab.com/antora/antora/compare/v3.2.0-alpha.4...v3.2.0-alpha.6)
    
    ---
    updated-dependencies:
    - dependency-name: antora
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored Sep 6, 2024
    Copy the full SHA
    b27e6ec View commit details
  2. Bump @springio/asciidoctor-extensions in /docs (#1064)

    Bumps [@springio/asciidoctor-extensions](https://github.com/spring-io/asciidoctor-extensions) from 1.0.0-alpha.10 to 1.0.0-alpha.13.
    - [Changelog](https://github.com/spring-io/asciidoctor-extensions/blob/main/CHANGELOG.adoc)
    - [Commits](spring-io/asciidoctor-extensions@v1.0.0-alpha.10...v1.0.0-alpha.13)
    
    ---
    updated-dependencies:
    - dependency-name: "@springio/asciidoctor-extensions"
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored Sep 6, 2024
    Copy the full SHA
    d29a6cb View commit details
  3. Bump @springio/antora-extensions from 1.11.1 to 1.14.2 in /docs (#1058)

    Bumps [@springio/antora-extensions](https://github.com/spring-io/antora-extensions) from 1.11.1 to 1.14.2.
    - [Changelog](https://github.com/spring-io/antora-extensions/blob/main/CHANGELOG.adoc)
    - [Commits](spring-io/antora-extensions@v1.11.1...v1.14.2)
    
    ---
    updated-dependencies:
    - dependency-name: "@springio/antora-extensions"
      dependency-type: direct:production
      update-type: version-update:semver-minor
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored Sep 6, 2024
    Copy the full SHA
    4d59160 View commit details
  4. Bump @antora/collector-extension in /docs (#1066)

    ---
    updated-dependencies:
    - dependency-name: "@antora/collector-extension"
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored Sep 6, 2024
    Copy the full SHA
    0333ed1 View commit details
  5. Copy the full SHA
    187034d View commit details

Commits on Sep 25, 2024

  1. Make Content-Encoding configurable (#1071)

    * Make Content-Encoding configurable
    
    A new configuration property was added to make the Content-Encoding
    configurable when using the feign request compression. The default
    values are the same as the previous hardcoded values.
    
    Closes issue 1048
    AndreTeigler authored and OlgaMaciaszek committed Sep 25, 2024
    Copy the full SHA
    362b2a5 View commit details
  2. Regenerate configprops.

    OlgaMaciaszek committed Sep 25, 2024
    Copy the full SHA
    7901ded View commit details
  3. Bump io.github.openfeign:feign-bom from 13.3 to 13.4 (#1085)

    Bumps [io.github.openfeign:feign-bom](https://github.com/openfeign/feign) from 13.3 to 13.4.
    - [Release notes](https://github.com/openfeign/feign/releases)
    - [Changelog](https://github.com/OpenFeign/feign/blob/master/CHANGELOG.md)
    - [Commits](OpenFeign/feign@13.3...13.4)
    
    ---
    updated-dependencies:
    - dependency-name: io.github.openfeign:feign-bom
      dependency-type: direct:production
      update-type: version-update:semver-minor
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored Sep 25, 2024
    Copy the full SHA
    6024de0 View commit details
  4. Bump com.google.protobuf:protobuf-java from 3.25.4 to 3.25.5 (#1089)

    Bumps [com.google.protobuf:protobuf-java](https://github.com/protocolbuffers/protobuf) from 3.25.4 to 3.25.5.
    - [Release notes](https://github.com/protocolbuffers/protobuf/releases)
    - [Changelog](https://github.com/protocolbuffers/protobuf/blob/main/protobuf_release.bzl)
    - [Commits](protocolbuffers/protobuf@v3.25.4...v3.25.5)
    
    ---
    updated-dependencies:
    - dependency-name: com.google.protobuf:protobuf-java
      dependency-type: direct:development
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored Sep 25, 2024
    Copy the full SHA
    76efdca View commit details
  5. Bump @springio/asciidoctor-extensions in /docs (#1093)

    Bumps [@springio/asciidoctor-extensions](https://github.com/spring-io/asciidoctor-extensions) from 1.0.0-alpha.13 to 1.0.0-alpha.14.
    - [Changelog](https://github.com/spring-io/asciidoctor-extensions/blob/main/CHANGELOG.adoc)
    - [Commits](spring-io/asciidoctor-extensions@v1.0.0-alpha.13...v1.0.0-alpha.14)
    
    ---
    updated-dependencies:
    - dependency-name: "@springio/asciidoctor-extensions"
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored Sep 25, 2024
    Copy the full SHA
    f832b10 View commit details

Commits on Sep 27, 2024

  1. Regenerate configprops.

    OlgaMaciaszek committed Sep 27, 2024
    Copy the full SHA
    2755880 View commit details

Commits on Oct 2, 2024

  1. Copy the full SHA
    f288e79 View commit details

Commits on Oct 9, 2024

  1. Fix GH actions setup.

    OlgaMaciaszek committed Oct 9, 2024
    Copy the full SHA
    e7eb6bd View commit details

Commits on Oct 11, 2024

  1. Copy the full SHA
    f6a2984 View commit details
  2. Copy the full SHA
    d314ba8 View commit details

Commits on Oct 15, 2024

  1. Bump @antora/collector-extension in /docs (#1108)

    ---
    updated-dependencies:
    - dependency-name: "@antora/collector-extension"
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored Oct 15, 2024
    Copy the full SHA
    26e403d View commit details
  2. Bump io.vavr:vavr from 0.10.4 to 0.10.5 (#1107)

    Bumps [io.vavr:vavr](https://github.com/vavr-io/vavr) from 0.10.4 to 0.10.5.
    - [Release notes](https://github.com/vavr-io/vavr/releases)
    - [Changelog](https://github.com/vavr-io/vavr/blob/master/RELEASE.md)
    - [Commits](vavr-io/vavr@v0.10.4...v0.10.5)
    
    ---
    updated-dependencies:
    - dependency-name: io.vavr:vavr
      dependency-type: direct:development
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored Oct 15, 2024
    Copy the full SHA
    d11a425 View commit details

Commits on Oct 17, 2024

  1. Copy the full SHA
    013e00c View commit details

Commits on Oct 31, 2024

  1. Copy the full SHA
    84e3530 View commit details

Commits on Nov 12, 2024

  1. Copy the full SHA
    7c17743 View commit details

Commits on Nov 19, 2024

  1. Bump com.fasterxml.jackson.dataformat:jackson-dataformat-smile (#1118)

    Bumps [com.fasterxml.jackson.dataformat:jackson-dataformat-smile](https://github.com/FasterXML/jackson-dataformats-binary) from 2.17.2 to 2.17.3.
    - [Commits](FasterXML/jackson-dataformats-binary@jackson-dataformats-binary-2.17.2...jackson-dataformats-binary-2.17.3)
    
    ---
    updated-dependencies:
    - dependency-name: com.fasterxml.jackson.dataformat:jackson-dataformat-smile
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored Nov 19, 2024
    Copy the full SHA
    6e2e9c1 View commit details
  2. Bump @antora/collector-extension in /docs (#1121)

    ---
    updated-dependencies:
    - dependency-name: "@antora/collector-extension"
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored Nov 19, 2024
    Copy the full SHA
    0646f9f View commit details

Commits on Nov 21, 2024

  1. Copy the full SHA
    bc776a6 View commit details

Commits on Nov 26, 2024

  1. Update pom.xml

    olegz authored Nov 26, 2024
    Copy the full SHA
    301d3f6 View commit details
  2. Copy the full SHA
    9e33893 View commit details
  3. Going back to snapshots

    spring-builds committed Nov 26, 2024
    Copy the full SHA
    bcccd28 View commit details
  4. Copy the full SHA
    12a048e View commit details
  5. Copy the full SHA
    a1b571b View commit details
  6. Bumping versions

    spring-builds committed Nov 26, 2024
    Copy the full SHA
    c31bdee View commit details

Commits on Nov 27, 2024

  1. Copy the full SHA
    402b509 View commit details
Showing with 994 additions and 590 deletions.
  1. +31 −0 .github/dependabot.yml
  2. +2 −2 .github/workflows/maven.yml
  3. +15 −13 docs/modules/ROOT/pages/spring-cloud-openfeign.adoc
  4. +2 −1 docs/modules/ROOT/partials/_configprops.adoc
  5. +4 −4 docs/package.json
  6. +3 −1 docs/pom.xml
  7. +4 −4 pom.xml
  8. +4 −19 spring-cloud-openfeign-core/pom.xml
  9. +16 −9 ...loud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/FeignAutoConfiguration.java
  10. +4 −3 ...openfeign-core/src/main/java/org/springframework/cloud/openfeign/FeignCircuitBreakerTargeter.java
  11. +3 −3 ...ng-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/FeignClientFactory.java
  12. +53 −16 ...loud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/FeignClientFactoryBean.java
  13. +4 −3 ...core/src/main/java/org/springframework/cloud/openfeign/FeignClientMicrometerEnabledCondition.java
  14. +5 −4 ...cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/FeignClientsRegistrar.java
  15. +6 −2 ...e/src/main/java/org/springframework/cloud/openfeign/annotation/CookieValueParameterProcessor.java
  16. +5 −2 ...rc/main/java/org/springframework/cloud/openfeign/annotation/MatrixVariableParameterProcessor.java
  17. +20 −17 ...eign-core/src/main/java/org/springframework/cloud/openfeign/aot/FeignChildContextInitializer.java
  18. +55 −52 ...ava/org/springframework/cloud/openfeign/aot/FeignClientBeanFactoryInitializationAotProcessor.java
  19. +4 −4 ...src/main/java/org/springframework/cloud/openfeign/clientconfig/Http2ClientFeignConfiguration.java
  20. +26 −23 ...src/main/java/org/springframework/cloud/openfeign/clientconfig/HttpClient5FeignConfiguration.java
  21. +26 −4 ...ore/src/main/java/org/springframework/cloud/openfeign/encoding/FeignClientEncodingProperties.java
  22. +11 −2 ...c/main/java/org/springframework/cloud/openfeign/encoding/FeignContentGzipEncodingInterceptor.java
  23. +10 −7 ...c/main/java/org/springframework/cloud/openfeign/loadbalancer/FeignBlockingLoadBalancerClient.java
  24. +7 −2 ...ava/org/springframework/cloud/openfeign/loadbalancer/LoadBalancerResponseStatusCodeException.java
  25. +3 −3 ...nfeign-core/src/main/java/org/springframework/cloud/openfeign/loadbalancer/LoadBalancerUtils.java
  26. +6 −6 ...va/org/springframework/cloud/openfeign/loadbalancer/RetryableFeignBlockingLoadBalancerClient.java
  27. +5 −3 ...core/src/main/java/org/springframework/cloud/openfeign/security/OAuth2AccessTokenInterceptor.java
  28. +12 −4 ...-openfeign-core/src/main/java/org/springframework/cloud/openfeign/support/AbstractFormWriter.java
  29. +4 −4 ...cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/support/SpringEncoder.java
  30. +6 −6 ...d-openfeign-core/src/main/java/org/springframework/cloud/openfeign/support/SpringMvcContract.java
  31. +1 −1 ...ng-cloud-openfeign-core/src/main/resources/META-INF/additional-spring-configuration-metadata.json
  32. +12 −9 ...e/src/test/java/org/springframework/cloud/openfeign/EagerInitFeignClientUsingConfigurerTests.java
  33. +3 −2 ...oud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/EnableFeignClientsTests.java
  34. +35 −30 ...openfeign-core/src/test/java/org/springframework/cloud/openfeign/FeignAutoConfigurationTests.java
  35. +11 −4 ...oud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/FeignClientBuilderTests.java
  36. +3 −3 ...cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/FeignClientCacheTests.java
  37. +1 −1 ...rc/test/java/org/springframework/cloud/openfeign/FeignClientDisabledClientLevelFeaturesTests.java
  38. +1 −1 ...penfeign-core/src/test/java/org/springframework/cloud/openfeign/FeignClientErrorDecoderTests.java
  39. +10 −8 ...ore/src/test/java/org/springframework/cloud/openfeign/FeignClientFactoryBeanIntegrationTests.java
  40. +4 −2 ...loud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/FeignClientFactoryTest.java
  41. +1 −1 ...oud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/FeignClientFactoryTests.java
  42. +9 −9 ...eign-core/src/test/java/org/springframework/cloud/openfeign/FeignClientOverrideDefaultsTests.java
  43. +16 −13 ...feign-core/src/test/java/org/springframework/cloud/openfeign/FeignClientUsingPropertiesTests.java
  44. +1 −1 ...core/src/test/java/org/springframework/cloud/openfeign/FeignClientWithRefreshableOptionsTest.java
  45. +15 −13 ...c/test/java/org/springframework/cloud/openfeign/FeignClientsMicrometerAutoConfigurationTests.java
  46. +5 −5 ...-openfeign-core/src/test/java/org/springframework/cloud/openfeign/FeignClientsRegistrarTests.java
  47. +26 −28 ...cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/FeignCompressionTests.java
  48. +6 −4 ...gn-core/src/test/java/org/springframework/cloud/openfeign/FeignHttp2ClientConfigurationTests.java
  49. +9 −5 ...gn-core/src/test/java/org/springframework/cloud/openfeign/FeignHttpClient5ConfigurationTests.java
  50. +8 −7 ...enfeign-core/src/test/java/org/springframework/cloud/openfeign/FeignOkHttpConfigurationTests.java
  51. +15 −12 ...re/src/test/java/org/springframework/cloud/openfeign/LazyInitFeignClientUsingConfigurerTests.java
  52. +6 −2 spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/OptionsTestClient.java
  53. +3 −2 ...nfeign-core/src/test/java/org/springframework/cloud/openfeign/RefreshableFeignClientUrlTests.java
  54. +1 −1 ...ng-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/SpringDecoderTests.java
  55. +6 −2 spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/UrlTestClient.java
  56. +6 −6 spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/aot/FeignAotTests.java
  57. +1 −1 ...rg/springframework/cloud/openfeign/aot/FeignClientBeanFactoryInitializationAotProcessorTests.java
  58. +1 −1 ...openfeign-core/src/test/java/org/springframework/cloud/openfeign/beans/BeansFeignClientTests.java
  59. +17 −9 ...re/src/test/java/org/springframework/cloud/openfeign/circuitbreaker/AsyncCircuitBreakerTests.java
  60. +2 −2 ...java/org/springframework/cloud/openfeign/circuitbreaker/CircuitBreakerAutoConfigurationTests.java
  61. +1 −1 ...gn-core/src/test/java/org/springframework/cloud/openfeign/circuitbreaker/CircuitBreakerTests.java
  62. +27 −25 ...test/java/org/springframework/cloud/openfeign/circuitbreaker/FallbackSupportFactoryBeanTests.java
  63. +159 −0 ...t/java/org/springframework/cloud/openfeign/encoding/FeignContentGzipEncodingInterceptorTests.java
  64. +16 −12 .../src/test/java/org/springframework/cloud/openfeign/encoding/proto/ProtobufSpringEncoderTests.java
  65. +2 −2 ...loud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/encoding/proto/Request.java
  66. +6 −6 .../test/java/org/springframework/cloud/openfeign/hateoas/FeignHalAutoConfigurationContextTests.java
  67. +2 −2 ...gn-core/src/test/java/org/springframework/cloud/openfeign/invalid/FeignClientValidationTests.java
  68. +12 −12 ...t/java/org/springframework/cloud/openfeign/loadbalancer/FeignBlockingLoadBalancerClientTests.java
  69. +10 −9 ...ava/org/springframework/cloud/openfeign/loadbalancer/FeignLoadBalancerAutoConfigurationTests.java
  70. +27 −27 ...g/springframework/cloud/openfeign/loadbalancer/RetryableFeignBlockingLoadBalancerClientTests.java
  71. +73 −15 ...src/test/java/org/springframework/cloud/openfeign/security/OAuth2AccessTokenInterceptorTests.java
  72. +7 −2 ...t/java/org/springframework/cloud/openfeign/support/AbstractSpringMvcContractIntegrationTests.java
  73. +20 −20 ...ore/src/test/java/org/springframework/cloud/openfeign/support/FeignHttpClientPropertiesTests.java
  74. +1 −1 ...nfeign-core/src/test/java/org/springframework/cloud/openfeign/support/PageJacksonModuleTests.java
  75. +8 −7 ...-openfeign-core/src/test/java/org/springframework/cloud/openfeign/support/SpringEncoderTests.java
  76. +24 −19 ...nfeign-core/src/test/java/org/springframework/cloud/openfeign/support/SpringMvcContractTests.java
  77. +2 −1 ...openfeign-core/src/test/java/org/springframework/cloud/openfeign/valid/ValidFeignClientTests.java
  78. +3 −20 spring-cloud-openfeign-dependencies/pom.xml
  79. +1 −1 spring-cloud-starter-openfeign/pom.xml
  80. +2 −0 src/checkstyle/checkstyle-suppressions.xml
31 changes: 31 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -10,6 +10,11 @@ updates:
target-branch: "4.0.x" # oldest OSS supported branch
schedule:
interval: "weekly"
- package-ecosystem: "github-actions"
directory: "/"
target-branch: "4.1.x"
schedule:
interval: "weekly"
- package-ecosystem: "github-actions"
directory: "/"
target-branch: "main"
@@ -37,6 +42,17 @@ updates:
update-types:
- version-update:semver-major
- version-update:semver-minor
- package-ecosystem: maven
directory: /
schedule:
interval: daily
target-branch: 4.1.x
ignore:
# only upgrade patch versions for maintenance branch
- dependency-name: "*"
update-types:
- version-update:semver-major
- version-update:semver-minor
- package-ecosystem: maven
directory: /
schedule:
@@ -47,3 +63,18 @@ updates:
- dependency-name: "*"
update-types:
- version-update:semver-major
- package-ecosystem: npm
target-branch: docs-build
directory: /
schedule:
interval: weekly
- package-ecosystem: npm
target-branch: main
directory: /docs
schedule:
interval: weekly
- package-ecosystem: npm
target-branch: 4.1.x
directory: /docs
schedule:
interval: weekly
4 changes: 2 additions & 2 deletions .github/workflows/maven.yml
Original file line number Diff line number Diff line change
@@ -5,9 +5,9 @@ name: Build

on:
push:
branches: [ main ]
branches: [ main, 4.1.x ]
pull_request:
branches: [ main ]
branches: [ main, 4.1.x ]

jobs:
build:
28 changes: 15 additions & 13 deletions docs/modules/ROOT/pages/spring-cloud-openfeign.adoc
Original file line number Diff line number Diff line change
@@ -74,6 +74,8 @@ TIP: To use `@EnableFeignClients` annotation on `@Configuration`-annotated-class
or list them explicitly:
`@EnableFeignClients(clients = InventoryServiceFeignClient.class)`.

In order to load Spring Feign client beans in a multi-module setup, you need to specify the packages directly.

WARNING: Since `FactoryBean` objects may be instantiated before the initial context refresh should take place, and the instantiation of Spring Cloud OpenFeign Clients triggers a context refresh, they should not be declared within `FactoryBean` classes.

[[attribute-resolution-mode]]
@@ -88,12 +90,12 @@ TIP: For Spring Cloud Contract test integration, lazy attribute resolution shoul
[[spring-cloud-feign-overriding-defaults]]
=== Overriding Feign Defaults

A central concept in Spring Cloud's Feign support is that of the named client. Each feign client is part of an ensemble of components that work together to contact a remote server on demand, and the ensemble has a name that you give it as an application developer using the `@FeignClient` annotation. Spring Cloud creates a new ensemble as an
A central concept in Spring Cloud's Feign support is that of the named client. Each Feign client is part of an ensemble of components that work together to contact a remote server on demand, and the ensemble has a name that you give it as an application developer using the `@FeignClient` annotation. Spring Cloud creates a new ensemble as an
`ApplicationContext` on demand for each named client using `FeignClientsConfiguration`. This contains (amongst other things) an `feign.Decoder`, a `feign.Encoder`, and a `feign.Contract`.
It is possible to override the name of that ensemble by using the `contextId`
attribute of the `@FeignClient` annotation.

Spring Cloud lets you take full control of the feign client by declaring additional configuration (on top of the `FeignClientsConfiguration`) using `@FeignClient`. Example:
Spring Cloud lets you take full control of the Feign client by declaring additional configuration (on top of the `FeignClientsConfiguration`) using `@FeignClient`. Example:

[source,java,indent=0]
----
@@ -134,7 +136,7 @@ Spring Cloud OpenFeign provides the following beans by default for feign (`BeanT
* `Contract` feignContract: `SpringMvcContract`
* `Feign.Builder` feignBuilder: `FeignCircuitBreaker.Builder`
* `Client` feignClient: If Spring Cloud LoadBalancer is on the classpath, `FeignBlockingLoadBalancerClient` is used.
If none of them is on the classpath, the default feign client is used.
If none of them is on the classpath, the default Feign client is used.

NOTE: `spring-cloud-starter-openfeign` supports `spring-cloud-starter-loadbalancer`. However, as is an optional dependency, you need to make sure it has been added to your project if you want to use it.

@@ -148,7 +150,7 @@ If you can not configure Apache HttpClient 5 by using properties, there is an `H

TIP: Starting with Spring Cloud OpenFeign 4, the Feign Apache HttpClient 4 is no longer supported. We suggest using Apache HttpClient 5 instead.

Spring Cloud OpenFeign _does not_ provide the following beans by default for feign, but still looks up beans of these types from the application context to create the feign client:
Spring Cloud OpenFeign _does not_ provide the following beans by default for feign, but still looks up beans of these types from the application context to create the Feign client:

* `Logger.Level`
* `Retryer`
@@ -221,7 +223,7 @@ spring:
`feignName` in this example refers to `@FeignClient` `value`, that is also aliased with `@FeignClient` `name` and `@FeignClient` `contextId`. In a load-balanced scenario, it also corresponds to the `serviceId` of the server app that will be used to retrieve the instances. The specified classes for decoders, retryer and other ones must have a bean in the Spring context or have a default constructor.


Default configurations can be specified in the `@EnableFeignClients` attribute `defaultConfiguration` in a similar manner as described above. The difference is that this configuration will apply to _all_ feign clients.
Default configurations can be specified in the `@EnableFeignClients` attribute `defaultConfiguration` in a similar manner as described above. The difference is that this configuration will apply to _all_ Feign clients.

If you prefer using configuration properties to configure all `@FeignClient`, you can create configuration properties with `default` feign name.

@@ -245,7 +247,7 @@ If we create both `@Configuration` bean and configuration properties, configurat
It will override `@Configuration` values. But if you want to change the priority to `@Configuration`,
you can change `spring.cloud.openfeign.client.default-to-properties` to `false`.

If we want to create multiple feign clients with the same name or url
If we want to create multiple Feign clients with the same name or url
so that they would point to the same server but each with a different custom configuration then
we have to use `contextId` attribute of the `@FeignClient` in order to avoid name
collision of these configuration beans.
@@ -351,7 +353,7 @@ NOTE: `PROD-SVC` is the name of the service the Clients will be making requests

NOTE: The Feign `Contract` object defines what annotations and values are valid on interfaces. The
autowired `Contract` bean provides supports for SpringMVC annotations, instead of
the default Feign native annotations.
the default Feign native annotations. It is not recommended to mix the Spring MVC annotations and the native Feign annotations together.

You can also use the `Builder`to configure FeignClient not to inherit beans from the parent context.
You can do this by overriding calling `inheritParentContext(false)` on the `Builder`.
@@ -562,7 +564,7 @@ public interface UserClient extends UserService {

WARNING: `@FeignClient` interfaces should not be shared between server and client and annotating `@FeignClient` interfaces with `@RequestMapping` on class level is no longer supported.

[[feign-request/response-compression]]
[[feign-request-response-compression]]
=== Feign request/response compression

You may consider enabling the request or response GZIP compression for your
@@ -585,6 +587,9 @@ spring.cloud.openfeign.compression.request.min-request-size=2048

These properties allow you to be selective about the compressed media types and minimum request threshold length.

When the request matches the mime type set in `spring.cloud.openfeign.compression.request.mime-types` and the size set in `spring.cloud.openfeign.compression.request.min-request-size`, `spring.cloud.openfeign.compression.request.enabled=true` results in compression headers being added to the request.
The functionality of the headers is to signal to the server that a compressed body is expected by the client. It is the responsibility of the server-side app to provide the compressed body based on the headers provided by the client.

TIP: Since the OkHttpClient uses "transparent" compression, that is disabled if the `content-encoding` or `accept-encoding` header is present, we do not enable compression when `feign.okhttp.OkHttpClient` is present on the classpath and `spring.cloud.openfeign.okhttp.enabled` is set to `true`.

[[feign-logging]]
@@ -753,7 +758,7 @@ public class Params {
}
----

The following feign client uses the `Params` class by using the `@SpringQueryMap` annotation:
The following Feign client uses the `Params` class by using the `@SpringQueryMap` annotation:

[source,java,indent=0]
----
@@ -840,13 +845,10 @@ protected interface DemoFeignClient {

[[reactive-support]]
=== Reactive Support
As the https://github.com/OpenFeign/feign[OpenFeign project] does not currently support reactive clients, such as https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/reactive/function/client/WebClient.html[Spring WebClient], neither does Spring Cloud OpenFeign.
As at the time of active development of Spring Cloud OpenFeign, the https://github.com/OpenFeign/feign[OpenFeign project] did not support reactive clients, such as https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/reactive/function/client/WebClient.html[Spring WebClient], such support could not be added to Spring Cloud OpenFeign either.

Since Spring Cloud OpenFeign project is now considered feature-complete, we're not planning on adding support even if it becomes available in the upstream project. We suggest migrating over to https://docs.spring.io/spring-framework/reference/integration/rest-clients.html#rest-http-interface[Spring Interface Clients] instead. Both blocking and reactive stacks are supported there.


Until that is done, we recommend using https://github.com/Playtika/feign-reactive[feign-reactive] for Spring WebClient support.

[[early-initialization-errors]]
==== Early Initialization Errors

3 changes: 2 additions & 1 deletion docs/modules/ROOT/partials/_configprops.adoc
Original file line number Diff line number Diff line change
@@ -65,14 +65,15 @@
|spring.cloud.loadbalancer.subset.size | `+++100+++` | Max subset size of deterministic subsetting.
|spring.cloud.loadbalancer.x-forwarded.enabled | `+++false+++` | To Enable X-Forwarded Headers.
|spring.cloud.openfeign.autoconfiguration.jackson.enabled | `+++true+++` | If true, PageJacksonModule and SortJacksonModule bean will be provided for Jackson page decoding.
|spring.cloud.openfeign.circuitbreaker.alphanumeric-ids.enabled | `+++false+++` | If true, Circuit Breaker ids will only contain alphanumeric characters to allow for configuration via configuration properties.
|spring.cloud.openfeign.circuitbreaker.alphanumeric-ids.enabled | `+++true+++` | If true, Circuit Breaker ids will only contain alphanumeric characters to allow for configuration via configuration properties.
|spring.cloud.openfeign.circuitbreaker.enabled | `+++false+++` | If true, an OpenFeign client will be wrapped with a Spring Cloud CircuitBreaker circuit breaker.
|spring.cloud.openfeign.circuitbreaker.group.enabled | `+++false+++` | If true, an OpenFeign client will be wrapped with a Spring Cloud CircuitBreaker circuit breaker with group.
|spring.cloud.openfeign.client.config | |
|spring.cloud.openfeign.client.decode-slash | `+++true+++` | Feign clients do not encode slash `/` characters by default. To change this behavior, set the `decodeSlash` to `false`.
|spring.cloud.openfeign.client.default-config | `+++default+++` |
|spring.cloud.openfeign.client.default-to-properties | `+++true+++` |
|spring.cloud.openfeign.client.refresh-enabled | `+++false+++` | Enables options value refresh capability for Feign.
|spring.cloud.openfeign.compression.request.content-encoding-types | | The list of content encodings (applicable encodings depend on the used client).
|spring.cloud.openfeign.compression.request.enabled | `+++false+++` | Enables the request sent by Feign to be compressed.
|spring.cloud.openfeign.compression.request.mime-types | `+++[text/xml, application/xml, application/json]+++` | The list of supported mime types.
|spring.cloud.openfeign.compression.request.min-request-size | `+++2048+++` | The minimum threshold content size.
8 changes: 4 additions & 4 deletions docs/package.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
{
"dependencies": {
"antora": "3.2.0-alpha.4",
"antora": "3.2.0-alpha.6",
"@antora/atlas-extension": "1.0.0-alpha.2",
"@antora/collector-extension": "1.0.0-alpha.3",
"@antora/collector-extension": "1.0.0-beta.5",
"@asciidoctor/tabs": "1.0.0-beta.6",
"@springio/antora-extensions": "1.11.1",
"@springio/asciidoctor-extensions": "1.0.0-alpha.10"
"@springio/antora-extensions": "1.14.2",
"@springio/asciidoctor-extensions": "1.0.0-alpha.14"
}
}
4 changes: 3 additions & 1 deletion docs/pom.xml
Original file line number Diff line number Diff line change
@@ -8,7 +8,7 @@
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-openfeign</artifactId>
<version>4.1.3</version>
<version>4.1.4</version>
<relativePath>..</relativePath>
</parent>
<scm>
@@ -30,12 +30,14 @@
<micrometer-docs-generator.inclusionPattern>.*</micrometer-docs-generator.inclusionPattern>
<micrometer-docs-generator.outputPath>${maven.multiModuleProjectDirectory}/docs/modules/ROOT/partials/</micrometer-docs-generator.outputPath>
</properties>
<!--
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>
-->
<build>
<sourceDirectory>src/main/asciidoc</sourceDirectory>
</build>
8 changes: 4 additions & 4 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -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>4.1.3</version>
<version>4.1.4</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>4.1.3</version>
<version>4.1.4</version>
<relativePath/>
</parent>
<scm>
@@ -25,8 +25,8 @@
</scm>
<properties>
<main.basedir>${basedir}</main.basedir>
<jackson.version>2.17.1</jackson.version>
<spring-cloud-commons.version>4.1.4</spring-cloud-commons.version>
<jackson.version>2.17.3</jackson.version>
<spring-cloud-commons.version>4.1.5</spring-cloud-commons.version>

<!-- Plugin versions -->
<maven-eclipse-plugin.version>2.10</maven-eclipse-plugin.version>
23 changes: 4 additions & 19 deletions spring-cloud-openfeign-core/pom.xml
Original file line number Diff line number Diff line change
@@ -6,7 +6,7 @@
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-openfeign</artifactId>
<version>4.1.3</version>
<version>4.1.4</version>
<relativePath>..</relativePath> <!-- lookup parent from repository -->
</parent>
<scm>
@@ -91,23 +91,8 @@
<optional>true</optional>
</dependency>
<dependency>
<groupId>io.github.openfeign.form</groupId>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-form-spring</artifactId>
<exclusions>
<!-- Vulnerable in 3.8.0-->
<exclusion>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</exclusion>
<exclusion>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
</dependency>
<dependency>
<groupId>io.github.openfeign</groupId>
@@ -183,13 +168,13 @@
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>3.25.3</version>
<version>3.25.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.vavr</groupId>
<artifactId>vavr</artifactId>
<version>0.10.4</version>
<version>0.10.5</version>
<scope>test</scope>
</dependency>
<dependency>
Original file line number Diff line number Diff line change
@@ -266,14 +266,20 @@ public okhttp3.OkHttpClient okHttpClient(okhttp3.OkHttpClient.Builder builder, C
int connectTimeout = httpClientProperties.getConnectionTimeout();
boolean disableSslValidation = httpClientProperties.isDisableSslValidation();
Duration readTimeout = httpClientProperties.getOkHttp().getReadTimeout();
List<Protocol> protocols = httpClientProperties.getOkHttp().getProtocols().stream().map(Protocol::valueOf)
.collect(Collectors.toList());
List<Protocol> protocols = httpClientProperties.getOkHttp()
.getProtocols()
.stream()
.map(Protocol::valueOf)
.collect(Collectors.toList());
if (disableSslValidation) {
disableSsl(builder);
}
this.okHttpClient = builder.connectTimeout(connectTimeout, TimeUnit.MILLISECONDS)
.followRedirects(followRedirects).readTimeout(readTimeout).connectionPool(connectionPool)
.protocols(protocols).build();
.followRedirects(followRedirects)
.readTimeout(readTimeout)
.connectionPool(connectionPool)
.protocols(protocols)
.build();
return this.okHttpClient;
}

@@ -415,11 +421,12 @@ public void registerHints(RuntimeHints hints, ClassLoader classLoader) {
if (!ClassUtils.isPresent("feign.Feign", classLoader)) {
return;
}
hints.reflection().registerTypes(
Set.of(TypeReference.of(FeignClientFactoryBean.class),
TypeReference.of(ResponseInterceptor.Chain.class), TypeReference.of(Capability.class)),
hint -> hint.withMembers(MemberCategory.INVOKE_DECLARED_CONSTRUCTORS,
MemberCategory.INVOKE_DECLARED_METHODS, MemberCategory.DECLARED_FIELDS));
hints.reflection()
.registerTypes(
Set.of(TypeReference.of(FeignClientFactoryBean.class),
TypeReference.of(ResponseInterceptor.Chain.class), TypeReference.of(Capability.class)),
hint -> hint.withMembers(MemberCategory.INVOKE_DECLARED_CONSTRUCTORS,
MemberCategory.INVOKE_DECLARED_METHODS, MemberCategory.DECLARED_FIELDS));
}

}
Original file line number Diff line number Diff line change
@@ -108,9 +108,10 @@ private <T> T getFromContext(String fallbackMechanism, String feignClientName, F
}

private FeignCircuitBreaker.Builder builder(String feignClientName, FeignCircuitBreaker.Builder builder) {
return builder.circuitBreakerFactory(circuitBreakerFactory).feignClientName(feignClientName)
.circuitBreakerGroupEnabled(circuitBreakerGroupEnabled)
.circuitBreakerNameResolver(circuitBreakerNameResolver);
return builder.circuitBreakerFactory(circuitBreakerFactory)
.feignClientName(feignClientName)
.circuitBreakerGroupEnabled(circuitBreakerGroupEnabled)
.circuitBreakerNameResolver(circuitBreakerNameResolver);
}

}
Original file line number Diff line number Diff line change
@@ -71,9 +71,9 @@ public <T> T getInstance(String contextName, String beanName, Class<T> type) {
public FeignClientFactory withApplicationContextInitializers(Map<String, Object> applicationContextInitializers) {
Map<String, ApplicationContextInitializer<GenericApplicationContext>> convertedInitializers = new HashMap<>();
applicationContextInitializers.keySet()
.forEach(contextId -> convertedInitializers.put(contextId,
(ApplicationContextInitializer<GenericApplicationContext>) applicationContextInitializers
.get(contextId)));
.forEach(contextId -> convertedInitializers.put(contextId,
(ApplicationContextInitializer<GenericApplicationContext>) applicationContextInitializers
.get(contextId)));
return new FeignClientFactory(convertedInitializers);
}

Loading