From b4bb73d390075eb62c60cef84820f76983a57dbf Mon Sep 17 00:00:00 2001 From: Vasiliy Date: Sat, 8 Nov 2025 14:12:15 +0500 Subject: [PATCH 1/2] docs(feign): add detailed javadoc for RequestLine annotation parameters --- core/src/main/java/feign/RequestLine.java | 60 +++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/core/src/main/java/feign/RequestLine.java b/core/src/main/java/feign/RequestLine.java index b9e8ceffd0..5bf7af5d90 100644 --- a/core/src/main/java/feign/RequestLine.java +++ b/core/src/main/java/feign/RequestLine.java @@ -30,9 +30,69 @@ @Retention(RUNTIME) public @interface RequestLine { + /** + * The HTTP request line, including the method and an optional URI template. + *

+ * The string must begin with a valid {@linkplain feign.Request.HttpMethod HTTP method name} (e.g. + * {@linkplain feign.Request.HttpMethod#GET GET}, {@linkplain feign.Request.HttpMethod#POST POST}, + * {@linkplain feign.Request.HttpMethod#PUT PUT}), followed by a space and a URI template. If only + * the HTTP method is specified (e.g. {@code "DELETE"}), the request will use the base URL defined + * for the client. + * + *

+ * Example: + * + *

{@code @RequestLine("GET /repos/{owner}/{repo}")
+   * Repo getRepo(@Param("owner") String owner, @Param("repo") String repo);
+   * }
+ * + * @return the HTTP method and optional URI template for the request. + * @see feign.template.UriTemplate + */ String value(); + /** + * Controls whether percent-encoded forward slashes ({@code %2F}) in expanded path variables are + * decoded back to {@code '/'} before sending the request. + * + *

+ * When {@code true} (the default), any {@code %2F} sequences produced during URI template + * expansion will be replaced with literal slashes, meaning that path variables containing slashes + * will be interpreted as multiple path segments. + * + *

+ * When {@code false}, percent-encoded slashes ({@code %2F}) are preserved in the final URL. This + * is useful when a path variable intentionally includes a slash as part of its value (for + * example, an encoded identifier such as {@code "foo%2Fbar"}). + * + *

+ * Example: + * + *

{@code @RequestLine(value = "GET /projects/{id}", decodeSlash = false)
+   * Project getProject(@Param("id") String encodedId);
+   * }
+ * + * @return {@code true} if encoded slashes should be decoded (default behavior); {@code false} to + * preserve {@code %2F} sequences in the URL. + */ boolean decodeSlash() default true; + /** + * Specifies how collections (e.g. {@link java.util.List List} or arrays) are serialized when + * expanded into the URI template. + *

+ * Determines whether values are represented as exploded parameters (repeated keys) or as a single + * comma-separated value, depending on the chosen {@link feign.CollectionFormat}. + * + *

+ * Example: + *

+ * + * @return the collection serialization format to use when expanding templates. + * @see CollectionFormat + */ CollectionFormat collectionFormat() default CollectionFormat.EXPLODED; } From 350a276b8b3e3186c74b12322b0ebecfb18378b7 Mon Sep 17 00:00:00 2001 From: Vasiliy Date: Sun, 9 Nov 2025 01:03:07 +0500 Subject: [PATCH 2/2] docs(feign): fixup formatting after CI/CD fail --- core/src/main/java/feign/RequestLine.java | 42 ++++++++++------------- 1 file changed, 19 insertions(+), 23 deletions(-) diff --git a/core/src/main/java/feign/RequestLine.java b/core/src/main/java/feign/RequestLine.java index 5bf7af5d90..626c618757 100644 --- a/core/src/main/java/feign/RequestLine.java +++ b/core/src/main/java/feign/RequestLine.java @@ -32,15 +32,14 @@ /** * The HTTP request line, including the method and an optional URI template. - *

- * The string must begin with a valid {@linkplain feign.Request.HttpMethod HTTP method name} (e.g. - * {@linkplain feign.Request.HttpMethod#GET GET}, {@linkplain feign.Request.HttpMethod#POST POST}, - * {@linkplain feign.Request.HttpMethod#PUT PUT}), followed by a space and a URI template. If only - * the HTTP method is specified (e.g. {@code "DELETE"}), the request will use the base URL defined - * for the client. * - *

- * Example: + *

The string must begin with a valid {@linkplain feign.Request.HttpMethod HTTP method name} + * (e.g. {@linkplain feign.Request.HttpMethod#GET GET}, {@linkplain feign.Request.HttpMethod#POST + * POST}, {@linkplain feign.Request.HttpMethod#PUT PUT}), followed by a space and a URI template. + * If only the HTTP method is specified (e.g. {@code "DELETE"}), the request will use the base URL + * defined for the client. + * + *

Example: * *

{@code @RequestLine("GET /repos/{owner}/{repo}")
    * Repo getRepo(@Param("owner") String owner, @Param("repo") String repo);
@@ -55,40 +54,37 @@
    * Controls whether percent-encoded forward slashes ({@code %2F}) in expanded path variables are
    * decoded back to {@code '/'} before sending the request.
    *
-   * 

- * When {@code true} (the default), any {@code %2F} sequences produced during URI template + *

When {@code true} (the default), any {@code %2F} sequences produced during URI template * expansion will be replaced with literal slashes, meaning that path variables containing slashes * will be interpreted as multiple path segments. * - *

- * When {@code false}, percent-encoded slashes ({@code %2F}) are preserved in the final URL. This - * is useful when a path variable intentionally includes a slash as part of its value (for + *

When {@code false}, percent-encoded slashes ({@code %2F}) are preserved in the final URL. + * This is useful when a path variable intentionally includes a slash as part of its value (for * example, an encoded identifier such as {@code "foo%2Fbar"}). * - *

- * Example: + *

Example: * *

{@code @RequestLine(value = "GET /projects/{id}", decodeSlash = false)
    * Project getProject(@Param("id") String encodedId);
    * }
* * @return {@code true} if encoded slashes should be decoded (default behavior); {@code false} to - * preserve {@code %2F} sequences in the URL. + * preserve {@code %2F} sequences in the URL. */ boolean decodeSlash() default true; /** * Specifies how collections (e.g. {@link java.util.List List} or arrays) are serialized when * expanded into the URI template. - *

- * Determines whether values are represented as exploded parameters (repeated keys) or as a single - * comma-separated value, depending on the chosen {@link feign.CollectionFormat}. * - *

- * Example: + *

Determines whether values are represented as exploded parameters (repeated keys) or as a + * single comma-separated value, depending on the chosen {@link feign.CollectionFormat}. + * + *

Example: + * *

    - *
  • {@linkplain CollectionFormat#EXPLODED EXPLODED}: {@code /items?id=1&id=2&id=3}
  • - *
  • {@linkplain CollectionFormat#CSV CSV}: {@code /items?id=1,2,3}
  • + *
  • {@linkplain CollectionFormat#EXPLODED EXPLODED}: {@code /items?id=1&id=2&id=3} + *
  • {@linkplain CollectionFormat#CSV CSV}: {@code /items?id=1,2,3} *
* * @return the collection serialization format to use when expanding templates.