From 135c8f45a41d38d9623eccf4409ee5119575e4e3 Mon Sep 17 00:00:00 2001 From: Oleh Kurpiak Date: Tue, 16 Feb 2021 15:47:44 +0200 Subject: [PATCH] [Java][native] extend native ApiClient (#8557) --- .../Java/libraries/native/ApiClient.mustache | 52 ++++++++++++++----- .../org/openapitools/client/ApiClient.java | 52 ++++++++++++++----- .../org/openapitools/client/ApiClient.java | 52 ++++++++++++++----- .../org/openapitools/client/ApiClient.java | 52 ++++++++++++++----- 4 files changed, 160 insertions(+), 48 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/native/ApiClient.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/native/ApiClient.mustache index abdea5d8f27..4c915fb3f38 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/native/ApiClient.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/native/ApiClient.mustache @@ -157,8 +157,28 @@ public class ApiClient { * Ctor. */ public ApiClient() { - builder = HttpClient.newBuilder(); - mapper = new ObjectMapper(); + this.builder = createDefaultHttpClientBuilder(); + this.mapper = createDefaultObjectMapper(); + updateBaseUri(getDefaultBaseUri()); + interceptor = null; + readTimeout = null; + responseInterceptor = null; + } + + /** + * Ctor. + */ + public ApiClient(HttpClient.Builder builder, ObjectMapper mapper, String baseUri) { + this.builder = builder; + this.mapper = mapper; + updateBaseUri(baseUri); + interceptor = null; + readTimeout = null; + responseInterceptor = null; + } + + protected ObjectMapper createDefaultObjectMapper() { + ObjectMapper mapper = new ObjectMapper(); mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); mapper.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, false); @@ -168,17 +188,25 @@ public class ApiClient { mapper.disable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE); mapper.registerModule(new JavaTimeModule()); {{#openApiNullable}} - JsonNullableModule jnm = new JsonNullableModule(); - mapper.registerModule(jnm); + mapper.registerModule(new JsonNullableModule()); {{/openApiNullable}} - URI baseURI = URI.create("{{{basePath}}}"); - scheme = baseURI.getScheme(); - host = baseURI.getHost(); - port = baseURI.getPort(); - basePath = baseURI.getRawPath(); - interceptor = null; - readTimeout = null; - responseInterceptor = null; + return mapper; + } + + protected String getDefaultBaseUri() { + return "{{{basePath}}}"; + } + + protected HttpClient.Builder createDefaultHttpClientBuilder() { + return HttpClient.newBuilder(); + } + + public void updateBaseUri(String baseUri) { + URI uri = URI.create(baseUri); + scheme = uri.getScheme(); + host = uri.getHost(); + port = uri.getPort(); + basePath = uri.getRawPath(); } /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/ApiClient.java index ce2f5a68f61..7a8aa96b42d 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/ApiClient.java @@ -162,8 +162,28 @@ public class ApiClient { * Ctor. */ public ApiClient() { - builder = HttpClient.newBuilder(); - mapper = new ObjectMapper(); + this.builder = createDefaultHttpClientBuilder(); + this.mapper = createDefaultObjectMapper(); + updateBaseUri(getDefaultBaseUri()); + interceptor = null; + readTimeout = null; + responseInterceptor = null; + } + + /** + * Ctor. + */ + public ApiClient(HttpClient.Builder builder, ObjectMapper mapper, String baseUri) { + this.builder = builder; + this.mapper = mapper; + updateBaseUri(baseUri); + interceptor = null; + readTimeout = null; + responseInterceptor = null; + } + + protected ObjectMapper createDefaultObjectMapper() { + ObjectMapper mapper = new ObjectMapper(); mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); mapper.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, false); @@ -172,16 +192,24 @@ public class ApiClient { mapper.enable(DeserializationFeature.READ_ENUMS_USING_TO_STRING); mapper.disable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE); mapper.registerModule(new JavaTimeModule()); - JsonNullableModule jnm = new JsonNullableModule(); - mapper.registerModule(jnm); - URI baseURI = URI.create("http://petstore.swagger.io:80/v2"); - scheme = baseURI.getScheme(); - host = baseURI.getHost(); - port = baseURI.getPort(); - basePath = baseURI.getRawPath(); - interceptor = null; - readTimeout = null; - responseInterceptor = null; + mapper.registerModule(new JsonNullableModule()); + return mapper; + } + + protected String getDefaultBaseUri() { + return "http://petstore.swagger.io:80/v2"; + } + + protected HttpClient.Builder createDefaultHttpClientBuilder() { + return HttpClient.newBuilder(); + } + + public void updateBaseUri(String baseUri) { + URI uri = URI.create(baseUri); + scheme = uri.getScheme(); + host = uri.getHost(); + port = uri.getPort(); + basePath = uri.getRawPath(); } /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/ApiClient.java index ce2f5a68f61..7a8aa96b42d 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/ApiClient.java @@ -162,8 +162,28 @@ public class ApiClient { * Ctor. */ public ApiClient() { - builder = HttpClient.newBuilder(); - mapper = new ObjectMapper(); + this.builder = createDefaultHttpClientBuilder(); + this.mapper = createDefaultObjectMapper(); + updateBaseUri(getDefaultBaseUri()); + interceptor = null; + readTimeout = null; + responseInterceptor = null; + } + + /** + * Ctor. + */ + public ApiClient(HttpClient.Builder builder, ObjectMapper mapper, String baseUri) { + this.builder = builder; + this.mapper = mapper; + updateBaseUri(baseUri); + interceptor = null; + readTimeout = null; + responseInterceptor = null; + } + + protected ObjectMapper createDefaultObjectMapper() { + ObjectMapper mapper = new ObjectMapper(); mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); mapper.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, false); @@ -172,16 +192,24 @@ public class ApiClient { mapper.enable(DeserializationFeature.READ_ENUMS_USING_TO_STRING); mapper.disable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE); mapper.registerModule(new JavaTimeModule()); - JsonNullableModule jnm = new JsonNullableModule(); - mapper.registerModule(jnm); - URI baseURI = URI.create("http://petstore.swagger.io:80/v2"); - scheme = baseURI.getScheme(); - host = baseURI.getHost(); - port = baseURI.getPort(); - basePath = baseURI.getRawPath(); - interceptor = null; - readTimeout = null; - responseInterceptor = null; + mapper.registerModule(new JsonNullableModule()); + return mapper; + } + + protected String getDefaultBaseUri() { + return "http://petstore.swagger.io:80/v2"; + } + + protected HttpClient.Builder createDefaultHttpClientBuilder() { + return HttpClient.newBuilder(); + } + + public void updateBaseUri(String baseUri) { + URI uri = URI.create(baseUri); + scheme = uri.getScheme(); + host = uri.getHost(); + port = uri.getPort(); + basePath = uri.getRawPath(); } /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/ApiClient.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/ApiClient.java index ce2f5a68f61..7a8aa96b42d 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/ApiClient.java @@ -162,8 +162,28 @@ public class ApiClient { * Ctor. */ public ApiClient() { - builder = HttpClient.newBuilder(); - mapper = new ObjectMapper(); + this.builder = createDefaultHttpClientBuilder(); + this.mapper = createDefaultObjectMapper(); + updateBaseUri(getDefaultBaseUri()); + interceptor = null; + readTimeout = null; + responseInterceptor = null; + } + + /** + * Ctor. + */ + public ApiClient(HttpClient.Builder builder, ObjectMapper mapper, String baseUri) { + this.builder = builder; + this.mapper = mapper; + updateBaseUri(baseUri); + interceptor = null; + readTimeout = null; + responseInterceptor = null; + } + + protected ObjectMapper createDefaultObjectMapper() { + ObjectMapper mapper = new ObjectMapper(); mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); mapper.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, false); @@ -172,16 +192,24 @@ public class ApiClient { mapper.enable(DeserializationFeature.READ_ENUMS_USING_TO_STRING); mapper.disable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE); mapper.registerModule(new JavaTimeModule()); - JsonNullableModule jnm = new JsonNullableModule(); - mapper.registerModule(jnm); - URI baseURI = URI.create("http://petstore.swagger.io:80/v2"); - scheme = baseURI.getScheme(); - host = baseURI.getHost(); - port = baseURI.getPort(); - basePath = baseURI.getRawPath(); - interceptor = null; - readTimeout = null; - responseInterceptor = null; + mapper.registerModule(new JsonNullableModule()); + return mapper; + } + + protected String getDefaultBaseUri() { + return "http://petstore.swagger.io:80/v2"; + } + + protected HttpClient.Builder createDefaultHttpClientBuilder() { + return HttpClient.newBuilder(); + } + + public void updateBaseUri(String baseUri) { + URI uri = URI.create(baseUri); + scheme = uri.getScheme(); + host = uri.getHost(); + port = uri.getPort(); + basePath = uri.getRawPath(); } /**