diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/ApiClient.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/ApiClient.mustache index 6ac032f4caa4..f60c9acc2666 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/ApiClient.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/ApiClient.mustache @@ -31,6 +31,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.util.StringUtils; +import org.springframework.web.client.HttpClientErrorException; import org.springframework.web.client.HttpServerErrorException; import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestTemplate; @@ -772,20 +773,29 @@ public class ApiClient{{#jsr310}} extends JavaTimeFormatter{{/jsr310}} { try { responseEntity = restTemplate.exchange(requestEntity, returnType); break; - } catch (HttpServerErrorException ex) { - attempts++; - if (attempts < maxAttemptsForRetry) { - try { - Thread.sleep(waitTimeMillis); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); + } catch (HttpServerErrorException | HttpClientErrorException ex) { + if (ex instanceof HttpServerErrorException + || ((HttpClientErrorException) ex) + .getStatusCode() + .equals(HttpStatus.TOO_MANY_REQUESTS)) { + attempts++; + if (attempts < maxAttemptsForRetry) { + try { + Thread.sleep(waitTimeMillis); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } else { + throw ex; } + } else { + throw ex; } } } if (responseEntity == null) { - throw new RestClientException("API returned HttpServerErrorException"); + throw new RestClientException("ResponseEntity is null"); } if (responseEntity.getStatusCode().is2xxSuccessful()) { diff --git a/samples/client/echo_api/java/resttemplate/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/echo_api/java/resttemplate/src/main/java/org/openapitools/client/ApiClient.java index a3598b82e197..b22902e928bd 100644 --- a/samples/client/echo_api/java/resttemplate/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/echo_api/java/resttemplate/src/main/java/org/openapitools/client/ApiClient.java @@ -22,6 +22,7 @@ import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.util.StringUtils; +import org.springframework.web.client.HttpClientErrorException; import org.springframework.web.client.HttpServerErrorException; import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestTemplate; @@ -688,20 +689,29 @@ public ResponseEntity invokeAPI(String path, HttpMethod method, Map ResponseEntity invokeAPI(String path, HttpMethod method, Map ResponseEntity invokeAPI(String path, HttpMethod method, Map ResponseEntity invokeAPI(String path, HttpMethod method, Map ResponseEntity invokeAPI(String path, HttpMethod method, Map ResponseEntity invokeAPI(String path, HttpMethod method, Map ResponseEntity invokeAPI(String path, HttpMethod method, Map