From 497170aaa9348c9481a7d3a20edbf9e95552fac8 Mon Sep 17 00:00:00 2001 From: Jens Heyens Date: Tue, 14 Oct 2025 17:26:41 +0200 Subject: [PATCH 1/2] Jersey2/3: Fix a bug where, when using OAuth, the HTTP 401 status code persisted even if the second request after renewing the Bearer access token succeeded --- .../resources/Java/libraries/jersey2/ApiClient.mustache | 8 ++++---- .../resources/Java/libraries/jersey3/ApiClient.mustache | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/ApiClient.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/ApiClient.mustache index 4f818791c06f..59edec001d2d 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/ApiClient.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/ApiClient.mustache @@ -1299,11 +1299,9 @@ public class ApiClient{{#jsr310}} extends JavaTimeFormatter{{/jsr310}} { try { response = sendRequest(method, invocationBuilder, entity); - final int statusCode = response.getStatusInfo().getStatusCode(); - {{#hasOAuthMethods}} // If OAuth is used and a status 401 is received, renew the access token and retry the request - if (authNames != null && statusCode == Status.UNAUTHORIZED.getStatusCode()) { + if (authNames != null && response.getStatusInfo().getStatusCode() == Status.UNAUTHORIZED.getStatusCode()) { for (String authName : authNames) { Authentication authentication = authentications.get(authName); if (authentication instanceof OAuth) { @@ -1317,8 +1315,10 @@ public class ApiClient{{#jsr310}} extends JavaTimeFormatter{{/jsr310}} { } } } - + {{/hasOAuthMethods}} + final int statusCode = response.getStatusInfo().getStatusCode(); + Map> responseHeaders = buildResponseHeaders(response); if (statusCode == Status.NO_CONTENT.getStatusCode()) { diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/ApiClient.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/ApiClient.mustache index 4f818791c06f..68d5f9476bc9 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/ApiClient.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/ApiClient.mustache @@ -1299,11 +1299,9 @@ public class ApiClient{{#jsr310}} extends JavaTimeFormatter{{/jsr310}} { try { response = sendRequest(method, invocationBuilder, entity); - final int statusCode = response.getStatusInfo().getStatusCode(); - {{#hasOAuthMethods}} // If OAuth is used and a status 401 is received, renew the access token and retry the request - if (authNames != null && statusCode == Status.UNAUTHORIZED.getStatusCode()) { + if (authNames != null && response.getStatusInfo().getStatusCode() == Status.UNAUTHORIZED.getStatusCode()) { for (String authName : authNames) { Authentication authentication = authentications.get(authName); if (authentication instanceof OAuth) { @@ -1319,6 +1317,8 @@ public class ApiClient{{#jsr310}} extends JavaTimeFormatter{{/jsr310}} { } {{/hasOAuthMethods}} + final int statusCode = response.getStatusInfo().getStatusCode(); + Map> responseHeaders = buildResponseHeaders(response); if (statusCode == Status.NO_CONTENT.getStatusCode()) { From 42f5befd3d0623b14e3e0e5e932b581a6e976575 Mon Sep 17 00:00:00 2001 From: Jens Heyens Date: Tue, 14 Oct 2025 17:35:07 +0200 Subject: [PATCH 2/2] Jersey2/3: Regenerate samples --- .../src/main/java/org/openapitools/client/ApiClient.java | 6 +++--- .../src/main/java/org/openapitools/client/ApiClient.java | 6 +++--- .../src/main/java/org/openapitools/client/ApiClient.java | 6 +++--- .../src/main/java/org/openapitools/client/ApiClient.java | 6 +++--- .../src/main/java/org/openapitools/client/ApiClient.java | 6 +++--- .../src/main/java/org/openapitools/client/ApiClient.java | 6 +++--- 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/samples/client/petstore/java/jersey2-java8-localdatetime/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/jersey2-java8-localdatetime/src/main/java/org/openapitools/client/ApiClient.java index 61bda21e4f2a..827cc999a461 100644 --- a/samples/client/petstore/java/jersey2-java8-localdatetime/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/petstore/java/jersey2-java8-localdatetime/src/main/java/org/openapitools/client/ApiClient.java @@ -1213,10 +1213,8 @@ public ApiResponse invokeAPI( try { response = sendRequest(method, invocationBuilder, entity); - final int statusCode = response.getStatusInfo().getStatusCode(); - // If OAuth is used and a status 401 is received, renew the access token and retry the request - if (authNames != null && statusCode == Status.UNAUTHORIZED.getStatusCode()) { + if (authNames != null && response.getStatusInfo().getStatusCode() == Status.UNAUTHORIZED.getStatusCode()) { for (String authName : authNames) { Authentication authentication = authentications.get(authName); if (authentication instanceof OAuth) { @@ -1230,6 +1228,8 @@ public ApiResponse invokeAPI( } } } + + final int statusCode = response.getStatusInfo().getStatusCode(); Map> responseHeaders = buildResponseHeaders(response); diff --git a/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/ApiClient.java index 61bda21e4f2a..827cc999a461 100644 --- a/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/ApiClient.java @@ -1213,10 +1213,8 @@ public ApiResponse invokeAPI( try { response = sendRequest(method, invocationBuilder, entity); - final int statusCode = response.getStatusInfo().getStatusCode(); - // If OAuth is used and a status 401 is received, renew the access token and retry the request - if (authNames != null && statusCode == Status.UNAUTHORIZED.getStatusCode()) { + if (authNames != null && response.getStatusInfo().getStatusCode() == Status.UNAUTHORIZED.getStatusCode()) { for (String authName : authNames) { Authentication authentication = authentications.get(authName); if (authentication instanceof OAuth) { @@ -1230,6 +1228,8 @@ public ApiResponse invokeAPI( } } } + + final int statusCode = response.getStatusInfo().getStatusCode(); Map> responseHeaders = buildResponseHeaders(response); diff --git a/samples/client/petstore/java/jersey3/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/jersey3/src/main/java/org/openapitools/client/ApiClient.java index c8b505f0b58e..3ff3205ed5c5 100644 --- a/samples/client/petstore/java/jersey3/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/petstore/java/jersey3/src/main/java/org/openapitools/client/ApiClient.java @@ -1295,10 +1295,8 @@ public ApiResponse invokeAPI( try { response = sendRequest(method, invocationBuilder, entity); - final int statusCode = response.getStatusInfo().getStatusCode(); - // If OAuth is used and a status 401 is received, renew the access token and retry the request - if (authNames != null && statusCode == Status.UNAUTHORIZED.getStatusCode()) { + if (authNames != null && response.getStatusInfo().getStatusCode() == Status.UNAUTHORIZED.getStatusCode()) { for (String authName : authNames) { Authentication authentication = authentications.get(authName); if (authentication instanceof OAuth) { @@ -1313,6 +1311,8 @@ public ApiResponse invokeAPI( } } + final int statusCode = response.getStatusInfo().getStatusCode(); + Map> responseHeaders = buildResponseHeaders(response); if (statusCode == Status.NO_CONTENT.getStatusCode()) { diff --git a/samples/openapi3/client/petstore/java/jersey2-java8-swagger1/src/main/java/org/openapitools/client/ApiClient.java b/samples/openapi3/client/petstore/java/jersey2-java8-swagger1/src/main/java/org/openapitools/client/ApiClient.java index 96e2fb1dc7da..e72125466c4c 100644 --- a/samples/openapi3/client/petstore/java/jersey2-java8-swagger1/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/openapi3/client/petstore/java/jersey2-java8-swagger1/src/main/java/org/openapitools/client/ApiClient.java @@ -1197,10 +1197,8 @@ public ApiResponse invokeAPI( try { response = sendRequest(method, invocationBuilder, entity); - final int statusCode = response.getStatusInfo().getStatusCode(); - // If OAuth is used and a status 401 is received, renew the access token and retry the request - if (authNames != null && statusCode == Status.UNAUTHORIZED.getStatusCode()) { + if (authNames != null && response.getStatusInfo().getStatusCode() == Status.UNAUTHORIZED.getStatusCode()) { for (String authName : authNames) { Authentication authentication = authentications.get(authName); if (authentication instanceof OAuth) { @@ -1214,6 +1212,8 @@ public ApiResponse invokeAPI( } } } + + final int statusCode = response.getStatusInfo().getStatusCode(); Map> responseHeaders = buildResponseHeaders(response); diff --git a/samples/openapi3/client/petstore/java/jersey2-java8-swagger2/src/main/java/org/openapitools/client/ApiClient.java b/samples/openapi3/client/petstore/java/jersey2-java8-swagger2/src/main/java/org/openapitools/client/ApiClient.java index 96e2fb1dc7da..e72125466c4c 100644 --- a/samples/openapi3/client/petstore/java/jersey2-java8-swagger2/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/openapi3/client/petstore/java/jersey2-java8-swagger2/src/main/java/org/openapitools/client/ApiClient.java @@ -1197,10 +1197,8 @@ public ApiResponse invokeAPI( try { response = sendRequest(method, invocationBuilder, entity); - final int statusCode = response.getStatusInfo().getStatusCode(); - // If OAuth is used and a status 401 is received, renew the access token and retry the request - if (authNames != null && statusCode == Status.UNAUTHORIZED.getStatusCode()) { + if (authNames != null && response.getStatusInfo().getStatusCode() == Status.UNAUTHORIZED.getStatusCode()) { for (String authName : authNames) { Authentication authentication = authentications.get(authName); if (authentication instanceof OAuth) { @@ -1214,6 +1212,8 @@ public ApiResponse invokeAPI( } } } + + final int statusCode = response.getStatusInfo().getStatusCode(); Map> responseHeaders = buildResponseHeaders(response); diff --git a/samples/openapi3/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/ApiClient.java b/samples/openapi3/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/ApiClient.java index 85d797394ed7..dda9d3abeca0 100644 --- a/samples/openapi3/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/openapi3/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/ApiClient.java @@ -1295,10 +1295,8 @@ public ApiResponse invokeAPI( try { response = sendRequest(method, invocationBuilder, entity); - final int statusCode = response.getStatusInfo().getStatusCode(); - // If OAuth is used and a status 401 is received, renew the access token and retry the request - if (authNames != null && statusCode == Status.UNAUTHORIZED.getStatusCode()) { + if (authNames != null && response.getStatusInfo().getStatusCode() == Status.UNAUTHORIZED.getStatusCode()) { for (String authName : authNames) { Authentication authentication = authentications.get(authName); if (authentication instanceof OAuth) { @@ -1312,6 +1310,8 @@ public ApiResponse invokeAPI( } } } + + final int statusCode = response.getStatusInfo().getStatusCode(); Map> responseHeaders = buildResponseHeaders(response);